mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-28 23:51:03 +03:00
feat(form-compile): группировка колонок таблицы (ColumnGroup)
Новый DSL-ключ columnGroup со значением-ориентацией horizontal/vertical/inCell для элемента <ColumnGroup> внутри columns таблицы. Поддерживает вложение, showTitle/showInHeader/width, тихие синонимы ColumnGroup и ГруппаКолонок. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
f3466e19fd
commit
4f9d9aee97
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.19 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.20 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -1853,6 +1853,8 @@ function Emit-Element {
|
||||
"UsualGroup" = "group"
|
||||
"Группа" = "group"
|
||||
"ОбычнаяГруппа" = "group"
|
||||
"ColumnGroup" = "columnGroup"
|
||||
"ГруппаКолонок" = "columnGroup"
|
||||
"Pages" = "pages"
|
||||
"ГруппаСтраниц" = "pages"
|
||||
"Page" = "page"
|
||||
@@ -1876,7 +1878,7 @@ function Emit-Element {
|
||||
$typeKey = $null
|
||||
$xmlTag = $null
|
||||
|
||||
foreach ($key in @("group","input","check","radio","label","labelField","table","pages","page","button","picture","picField","calendar","cmdBar","popup")) {
|
||||
foreach ($key in @("columnGroup","group","input","check","radio","label","labelField","table","pages","page","button","picture","picField","calendar","cmdBar","popup")) {
|
||||
if ($el.$key -ne $null) {
|
||||
$typeKey = $key
|
||||
break
|
||||
@@ -1891,8 +1893,10 @@ function Emit-Element {
|
||||
# Validate known keys — warn about typos and unknown properties
|
||||
$knownKeys = @{
|
||||
# type keys
|
||||
"group"=1;"input"=1;"check"=1;"radio"=1;"label"=1;"labelField"=1;"table"=1;"pages"=1;"page"=1
|
||||
"group"=1;"columnGroup"=1;"input"=1;"check"=1;"radio"=1;"label"=1;"labelField"=1;"table"=1;"pages"=1;"page"=1
|
||||
"button"=1;"picture"=1;"picField"=1;"calendar"=1;"cmdBar"=1;"popup"=1
|
||||
# columnGroup-specific
|
||||
"showInHeader"=1
|
||||
# radio-specific
|
||||
"radioButtonType"=1;"choiceList"=1;"columnsCount"=1
|
||||
# naming & binding
|
||||
@@ -1939,6 +1943,7 @@ function Emit-Element {
|
||||
|
||||
switch ($typeKey) {
|
||||
"group" { Emit-Group -el $el -name $name -id $id -indent $indent }
|
||||
"columnGroup" { Emit-ColumnGroup -el $el -name $name -id $id -indent $indent }
|
||||
"input" { Emit-Input -el $el -name $name -id $id -indent $indent }
|
||||
"check" { Emit-Check -el $el -name $name -id $id -indent $indent }
|
||||
"radio" { Emit-Radio -el $el -name $name -id $id -indent $indent }
|
||||
@@ -2060,6 +2065,48 @@ function Emit-Group {
|
||||
X "$indent</UsualGroup>"
|
||||
}
|
||||
|
||||
function Emit-ColumnGroup {
|
||||
param($el, [string]$name, [int]$id, [string]$indent)
|
||||
|
||||
X "$indent<ColumnGroup name=`"$name`" id=`"$id`">"
|
||||
$inner = "$indent`t"
|
||||
|
||||
Emit-Title -el $el -name $name -indent $inner
|
||||
|
||||
# Group orientation (horizontal / vertical / inCell — последнее только здесь)
|
||||
$groupVal = "$($el.columnGroup)"
|
||||
$orientation = switch ($groupVal) {
|
||||
"horizontal" { "Horizontal" }
|
||||
"vertical" { "Vertical" }
|
||||
"inCell" { "InCell" }
|
||||
default { $null }
|
||||
}
|
||||
if ($orientation) { X "$inner<Group>$orientation</Group>" }
|
||||
|
||||
if ($el.showTitle -eq $false) { X "$inner<ShowTitle>false</ShowTitle>" }
|
||||
if ($null -ne $el.showInHeader) {
|
||||
$shVal = if ($el.showInHeader) { "true" } else { "false" }
|
||||
X "$inner<ShowInHeader>$shVal</ShowInHeader>"
|
||||
}
|
||||
if ($el.width) { X "$inner<Width>$($el.width)</Width>" }
|
||||
|
||||
Emit-CommonFlags -el $el -indent $inner
|
||||
|
||||
# Companion: ExtendedTooltip
|
||||
Emit-Companion -tag "ExtendedTooltip" -name "${name}РасширеннаяПодсказка" -indent $inner
|
||||
|
||||
# Children
|
||||
if ($el.children -and $el.children.Count -gt 0) {
|
||||
X "$inner<ChildItems>"
|
||||
foreach ($child in $el.children) {
|
||||
Emit-Element -el $child -indent "$inner`t"
|
||||
}
|
||||
X "$inner</ChildItems>"
|
||||
}
|
||||
|
||||
X "$indent</ColumnGroup>"
|
||||
}
|
||||
|
||||
function Emit-Input {
|
||||
param($el, [string]$name, [int]$id, [string]$indent)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user