Emit Auto items only at group level, not top-level settings

Real DCS files place SelectedItemAuto and OrderItemAuto exclusively
inside StructureItem elements (groups, tables, charts), never at the
top-level settings. Added -skipAuto switch to Emit-Selection and
Emit-Order, applied at settings level.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-02-11 12:48:52 +03:00
parent 4594c74d21
commit 7e587b9a3e
2 changed files with 14 additions and 10 deletions
@@ -910,7 +910,7 @@ function Emit-GroupTemplates {
# === Settings Variants === # === Settings Variants ===
function Emit-Selection { function Emit-Selection {
param($items, [string]$indent) param($items, [string]$indent, [switch]$skipAuto)
if (-not $items -or $items.Count -eq 0) { return } if (-not $items -or $items.Count -eq 0) { return }
@@ -918,7 +918,9 @@ function Emit-Selection {
foreach ($item in $items) { foreach ($item in $items) {
if ($item -is [string]) { if ($item -is [string]) {
if ($item -eq "Auto") { if ($item -eq "Auto") {
X "$indent`t<dcsset:item xsi:type=`"dcsset:SelectedItemAuto`"/>" if (-not $skipAuto) {
X "$indent`t<dcsset:item xsi:type=`"dcsset:SelectedItemAuto`"/>"
}
} else { } else {
X "$indent`t<dcsset:item xsi:type=`"dcsset:SelectedItemField`">" X "$indent`t<dcsset:item xsi:type=`"dcsset:SelectedItemField`">"
X "$indent`t`t<dcsset:field>$(Esc-Xml $item)</dcsset:field>" X "$indent`t`t<dcsset:field>$(Esc-Xml $item)</dcsset:field>"
@@ -1053,7 +1055,7 @@ function Emit-Filter {
} }
function Emit-Order { function Emit-Order {
param($items, [string]$indent) param($items, [string]$indent, [switch]$skipAuto)
if (-not $items -or $items.Count -eq 0) { return } if (-not $items -or $items.Count -eq 0) { return }
@@ -1061,7 +1063,9 @@ function Emit-Order {
foreach ($item in $items) { foreach ($item in $items) {
if ($item -is [string]) { if ($item -is [string]) {
if ($item -eq "Auto") { if ($item -eq "Auto") {
X "$indent`t<dcsset:item xsi:type=`"dcsset:OrderItemAuto`"/>" if (-not $skipAuto) {
X "$indent`t<dcsset:item xsi:type=`"dcsset:OrderItemAuto`"/>"
}
} else { } else {
$parts = $item -split '\s+' $parts = $item -split '\s+'
$field = $parts[0] $field = $parts[0]
@@ -1409,9 +1413,9 @@ function Emit-SettingsVariants {
$s = $v.settings $s = $v.settings
# Selection # Selection (Auto items only belong at group level, not top-level settings)
if ($s.selection) { if ($s.selection) {
Emit-Selection -items $s.selection -indent "`t`t`t" Emit-Selection -items $s.selection -indent "`t`t`t" -skipAuto
} }
# Filter # Filter
@@ -1419,9 +1423,9 @@ function Emit-SettingsVariants {
Emit-Filter -items $s.filter -indent "`t`t`t" Emit-Filter -items $s.filter -indent "`t`t`t"
} }
# Order # Order (Auto items only belong at group level, not top-level settings)
if ($s.order) { if ($s.order) {
Emit-Order -items $s.order -indent "`t`t`t" Emit-Order -items $s.order -indent "`t`t`t" -skipAuto
} }
# OutputParameters # OutputParameters
+2 -2
View File
@@ -420,7 +420,7 @@
``` ```
- Строка → `SelectedItemField` - Строка → `SelectedItemField`
- `"Auto"``SelectedItemAuto` - `"Auto"``SelectedItemAuto` (только на уровне группировок; на верхнем уровне settings игнорируется)
- Объект с `field`/`title``SelectedItemField` с `lwsTitle` - Объект с `field`/`title``SelectedItemField` с `lwsTitle`
### filter ### filter
@@ -498,7 +498,7 @@
- `"Field"``OrderItemField`, `orderType=Asc` - `"Field"``OrderItemField`, `orderType=Asc`
- `"Field desc"``OrderItemField`, `orderType=Desc` - `"Field desc"``OrderItemField`, `orderType=Desc`
- `"Field asc"``OrderItemField`, `orderType=Asc` - `"Field asc"``OrderItemField`, `orderType=Asc`
- `"Auto"``OrderItemAuto` - `"Auto"``OrderItemAuto` (только на уровне группировок; на верхнем уровне settings игнорируется)
### outputParameters ### outputParameters