mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-02 16:20:54 +03:00
feat(skd): user-settings + axis-viewMode + use=false на StructureItemTable/Chart
Раньше для StructureItemTable читали только viewMode/userSettingID/
userSettingPresentation/itemsViewMode, а для StructureItemChart — вовсе
ничего из user-settings. Также не поддерживали axis-level режим
доступности секций (columnsViewMode/rowsViewMode/pointsViewMode/
seriesViewMode) и use=false на самих table/chart.
Расширено:
- table: + use=false, + columnsViewMode, + rowsViewMode
- chart: + use=false, + viewMode, + userSettingID, + userSettingPresentation,
+ itemsViewMode, + pointsViewMode, + seriesViewMode
Все эти атрибуты эмитятся платформой как direct children самой item-ноды
после rows/columns (table) или points/series (chart). DSL — простые поля
прямо на table/chart-объекте (как у table уже было для viewMode/etc).
Sample30 total: 729 → 620 строк diff (-109).
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# skd-compile v1.95 — Compile 1C DCS from JSON
|
||||
# skd-compile v1.96 — Compile 1C DCS from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import json
|
||||
@@ -2456,6 +2456,10 @@ def emit_structure_item(lines, item, indent, short_group=False):
|
||||
elif item_type == 'table':
|
||||
lines.append(f'{indent}<dcsset:item xsi:type="dcsset:StructureItemTable">')
|
||||
|
||||
# use=false — отключённая таблица
|
||||
if item.get('use') is False:
|
||||
lines.append(f'{indent}\t<dcsset:use>false</dcsset:use>')
|
||||
|
||||
if item.get('name'):
|
||||
lines.append(f'{indent}\t<dcsset:name>{esc_xml(str(item["name"]))}</dcsset:name>')
|
||||
|
||||
@@ -2480,6 +2484,11 @@ def emit_structure_item(lines, item, indent, short_group=False):
|
||||
emit_conditional_appearance(lines, item['conditionalAppearance'], f'{indent}\t')
|
||||
if item.get('outputParameters'):
|
||||
emit_output_parameters(lines, item['outputParameters'], f'{indent}\t')
|
||||
# columnsViewMode / rowsViewMode — axis-level режим доступности
|
||||
if item.get('columnsViewMode'):
|
||||
lines.append(f'{indent}\t<dcsset:columnsViewMode>{esc_xml(str(item["columnsViewMode"]))}</dcsset:columnsViewMode>')
|
||||
if item.get('rowsViewMode'):
|
||||
lines.append(f'{indent}\t<dcsset:rowsViewMode>{esc_xml(str(item["rowsViewMode"]))}</dcsset:rowsViewMode>')
|
||||
# viewMode / userSettingID / userSettingPresentation / itemsViewMode на самой таблице
|
||||
if item.get('viewMode'):
|
||||
lines.append(f'{indent}\t<dcsset:viewMode>{esc_xml(str(item["viewMode"]))}</dcsset:viewMode>')
|
||||
@@ -2496,6 +2505,10 @@ def emit_structure_item(lines, item, indent, short_group=False):
|
||||
elif item_type == 'chart':
|
||||
lines.append(f'{indent}<dcsset:item xsi:type="dcsset:StructureItemChart">')
|
||||
|
||||
# use=false — отключённая диаграмма
|
||||
if item.get('use') is False:
|
||||
lines.append(f'{indent}\t<dcsset:use>false</dcsset:use>')
|
||||
|
||||
if item.get('name'):
|
||||
lines.append(f'{indent}\t<dcsset:name>{esc_xml(str(item["name"]))}</dcsset:name>')
|
||||
|
||||
@@ -2523,6 +2536,22 @@ def emit_structure_item(lines, item, indent, short_group=False):
|
||||
if item.get('outputParameters'):
|
||||
emit_output_parameters(lines, item['outputParameters'], f'{indent}\t')
|
||||
|
||||
# pointsViewMode / seriesViewMode — axis-level режим доступности
|
||||
if item.get('pointsViewMode'):
|
||||
lines.append(f'{indent}\t<dcsset:pointsViewMode>{esc_xml(str(item["pointsViewMode"]))}</dcsset:pointsViewMode>')
|
||||
if item.get('seriesViewMode'):
|
||||
lines.append(f'{indent}\t<dcsset:seriesViewMode>{esc_xml(str(item["seriesViewMode"]))}</dcsset:seriesViewMode>')
|
||||
# viewMode / userSettingID / userSettingPresentation / itemsViewMode на самой диаграмме
|
||||
if item.get('viewMode'):
|
||||
lines.append(f'{indent}\t<dcsset:viewMode>{esc_xml(str(item["viewMode"]))}</dcsset:viewMode>')
|
||||
if item.get('userSettingID'):
|
||||
gid = new_uuid() if str(item['userSettingID']) == 'auto' else str(item['userSettingID'])
|
||||
lines.append(f'{indent}\t<dcsset:userSettingID>{esc_xml(gid)}</dcsset:userSettingID>')
|
||||
if item.get('userSettingPresentation'):
|
||||
emit_mltext(lines, f'{indent}\t', 'dcsset:userSettingPresentation', item['userSettingPresentation'])
|
||||
if item.get('itemsViewMode'):
|
||||
lines.append(f'{indent}\t<dcsset:itemsViewMode>{esc_xml(str(item["itemsViewMode"]))}</dcsset:itemsViewMode>')
|
||||
|
||||
lines.append(f'{indent}</dcsset:item>')
|
||||
|
||||
elif item_type == 'nestedObject':
|
||||
|
||||
Reference in New Issue
Block a user