diff --git a/.claude/skills/mxl-compile/SKILL.md b/.claude/skills/mxl-compile/SKILL.md index cad11986..38a2150b 100644 --- a/.claude/skills/mxl-compile/SKILL.md +++ b/.claude/skills/mxl-compile/SKILL.md @@ -46,15 +46,15 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-compile.ps1" -J Ниже — всё, что нужно для типового макета. Остальное лежит по файлу на задачу, читать нужно только свой: -| Задача | Файл | -|---|---| -| Свойство стиля вне частых: отступ, защита, узор, маска, формат редактирования | `reference/style-properties.md` | -| Область, не описываемая диапазоном строк; свои ширины колонок у части документа | `reference/layout.md` | -| Колонтитулы, ориентация, поля, масштаб | `reference/print.md` | -| Картинка, фигура или надпись поверх сетки; картинка в ячейке | `reference/drawings.md` | -| Ячейки для ввода данных пользователем | `reference/input-cells.md` | -| Сворачиваемые группы строк или колонок | `reference/groups.md` | -| Всплывающая подсказка у ячейки | `reference/notes.md` | +| Задача | Ключи | Файл | +|---|---|---| +| Свойство стиля вне частых: отступ, защита, узор, маска, поведение при выводе | — | `reference/style-properties.md` | +| Область, не описываемая диапазоном строк; свои ширины колонок у части документа | `namedAreas`, `columnSets`, `columnSet` | `reference/layout.md` | +| Колонтитулы, ориентация, поля, масштаб | `header`, `footer`, `printSettings` | `reference/print.md` | +| Картинка, фигура или надпись поверх сетки; картинка в ячейке | `pictures`, `drawings`, `pictureParameter` | `reference/drawings.md` | +| Ячейки для ввода данных пользователем | `valueType`, `controlType`, `value` | `reference/input-cells.md` | +| Сворачиваемые группы строк или колонок | `rowGroups`, `columnGroups` | `reference/groups.md` | +| Всплывающая подсказка у ячейки | `note` | `reference/notes.md` | ## Пример diff --git a/.claude/skills/mxl-compile/reference/drawings.md b/.claude/skills/mxl-compile/reference/drawings.md index 782914e9..2d035c07 100644 --- a/.claude/skills/mxl-compile/reference/drawings.md +++ b/.claude/skills/mxl-compile/reference/drawings.md @@ -47,3 +47,26 @@ картинки (по флажку «прозрачный фон» Конфигуратор берёт её правый нижний пиксель). Одну запись `pictures` могут использовать несколько рисунков — данные в макете не дублируются. + +## Картинка в ячейке + +Картинка бывает не только поверх сетки, но и внутри ячейки — тогда её задаёт стиль, а сама +картинка берётся из той же палитры `pictures`: + +```json +{ + "columns": 2, + "pictures": { "стоп": { "ref": "v8ui:Стоп48" } }, + "styles": { "значок": { "picIndex": 1, "picHorizontalAlignment": "Center", + "picVerticalAlignment": "Center", "textPosition": "Bottom" } }, + "areas": [{ "rows": [ + [{ "style": "значок", "text": "удалить", "pictureParameter": "Удалить" }] + ]}] +} +``` + +- `picIndex` — номер записи в `pictures`, считая с единицы в порядке объявления; +- `picHorizontalAlignment`, `picVerticalAlignment`, `pictureSizeMode`, `textPosition` — как + картинка стоит в ячейке и где относительно неё текст (значения — в `style-properties.md`); +- `pictureParameter` — ключ самой ЯЧЕЙКИ, а не стиля: имя параметра, которым картинку + подставляют из кода, как `param` подставляет текст. С текстом ячейки уживается. diff --git a/.claude/skills/mxl-compile/reference/print.md b/.claude/skills/mxl-compile/reference/print.md index 96962575..95fb48a1 100644 --- a/.claude/skills/mxl-compile/reference/print.md +++ b/.claude/skills/mxl-compile/reference/print.md @@ -51,3 +51,9 @@ `blackAndWhite`, `printerName`, `paper`, `paperSource`, `pageWidth`, `pageHeight`, `duplexType`, `pagePlacementAlternation`, `firstPageNumber`. Незнакомый ключ — ошибка. Порядок в объекте не важен: компилятор пишет свойства в том порядке, что и платформа. + +## Чего в DSL нет + +Область печати и повторение области при печати (шапка на каждой странице) не описываются: +эти настройки задаются в Конфигураторе и при пересборке чужого макета теряются. Если задача +требует именно их — правьте макет в Конфигураторе, а не через DSL. diff --git a/.claude/skills/mxl-decompile/SKILL.md b/.claude/skills/mxl-decompile/SKILL.md index a232571b..30447934 100644 --- a/.claude/skills/mxl-decompile/SKILL.md +++ b/.claude/skills/mxl-decompile/SKILL.md @@ -43,6 +43,21 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-decompile.ps1" Формат JSON на выходе — тот же DSL, что принимает `/mxl-compile`; его описание живёт в навыке `/mxl-compile`. +## Формы, которые встречаются только в разобранном макете + +Их пишет декомпилятор, чтобы ничего не потерять; для авторинга они не нужны, но в чужом +макете попадаются: + +| Запись | Значение | +|---|---| +| `"rowStyle": { "style": "имя", "apply": "row" }` | Стиль строки лёг ТОЛЬКО на саму строку. `"cells"` — только на ячейки, `"both"` (умолчание при обычной записи именем) — на то и другое | +| `"controlType": "none"` | У ячейки-поля ввода элемент управления не задан вовсе | +| `"valueType": ""` | Ячейка содержит значение, но тип не ограничен | +| `"columnSet": ""` | У области нет привязки к колоночной раскладке | +| `"pictures": { "имя": {} }` | Запись палитры без картинки | + +Компилятор принимает их обратно как есть — правя такой JSON, эти ключи можно не трогать. + ## Что нужно знать о пересборке Правка через DSL — это полная перегенерация макета, а не точечное изменение XML. Поэтому diff --git a/docs/mxl-dsl-spec.md b/docs/mxl-dsl-spec.md index 1bf08d16..69271f59 100644 --- a/docs/mxl-dsl-spec.md +++ b/docs/mxl-dsl-spec.md @@ -438,6 +438,29 @@ Одну запись `pictures` могут использовать несколько рисунков — данные в макете не дублируются. +## Картинка в ячейке + +Картинка бывает не только поверх сетки, но и внутри ячейки — тогда её задаёт стиль, а сама +картинка берётся из той же палитры `pictures`: + +```json +{ + "columns": 2, + "pictures": { "стоп": { "ref": "v8ui:Стоп48" } }, + "styles": { "значок": { "picIndex": 1, "picHorizontalAlignment": "Center", + "picVerticalAlignment": "Center", "textPosition": "Bottom" } }, + "areas": [{ "rows": [ + [{ "style": "значок", "text": "удалить", "pictureParameter": "Удалить" }] + ]}] +} +``` + +- `picIndex` — номер записи в `pictures`, считая с единицы в порядке объявления; +- `picHorizontalAlignment`, `picVerticalAlignment`, `pictureSizeMode`, `textPosition` — как + картинка стоит в ячейке и где относительно неё текст (значения — в разделе «Полный список свойств стиля»); +- `pictureParameter` — ключ самой ЯЧЕЙКИ, а не стиля: имя параметра, которым картинку + подставляют из кода, как `param` подставляет текст. С текстом ячейки уживается. + ## `rowStyle` — оформление строки Стиль применяется ко ВСЕЙ ширине строки: позиции без явных ячеек получают тот же стиль. Так в табличных строках получаются сплошные рамки. Он же становится оформлением самой строки — именно так платформа хранит строку, оформленную целиком.