Appearance
Settings: настройки Ганта и календаря
Settings — отдельные записи с именем, типом и значением, которые Гант и календарь загружают из API. Через них можно изменить, например, подпись поля в подсказке, цвет стрелки или часовой пояс. JSON приложения задаёт состав и поведение панелей; записи Settings в него не добавляют.
Выбрать параметр
- Найдите нужную настройку в справочнике Ганта или справочнике календаря. Проверьте допустимые значения и условия применения.
- Если справочник указывает полное имя Settings, используйте его целиком. К пути свойства Ганта добавьте
schedule.:appSettings.timezoneстанетschedule.appSettings.timezone. Справочник календаря уже содержит полные имена, напримерcalendar.settings.timezone; второй префикс не нужен. - Выберите тип и значение по таблице ниже, затем создайте запись в редакторе Settings или через API.
Общая запись действует на все панели соответствующего компонента, которые используют этот API. Личное переопределение меняет значение для текущего пользователя.
Где вводить настройки
Откройте приложение администрирования с разделом Параметры в Core Apps. Нужны доступ к этому приложению и права на изменение Settings в API. Название и адрес приложения задаёт ваша конфигурация MES.
Для прямой работы с API используйте пример запроса.
Если приложения для Settings ещё нет
Если отдельного приложения для Settings ещё нет, администратор может использовать эту конфигурацию приложения:
json
{
"version": "1.0.0",
"panel": {
"id": "settings-admin",
"type": "coreApps",
"app": "settings"
}
}Настройку самого приложения описывает руководство Core Apps. Этот JSON выбирает интерфейс Settings; права пользователя определяет API.
Пример: изменить подпись номера заказа
Найдите в списке
schedule.operationTooltipConfig.[workOrder.number].label. Если глобальная запись уже есть, откройте её и измените значение. Если её нет, выберите Действия → Создать параметр.Для новой записи заполните форму:
Поле формы Значение Системное имя schedule.operationTooltipConfig.[workOrder.number].labelТип данных Строка— код0Значение Заказ в расписанииОписание Подпись номера заказа в подсказке операцииПерекрываемая? Выключено для этого примера Сохраните форму. После успешного сохранения редактор откроет карточку записи. Если появится ошибка, исправьте её и повторите сохранение.
Перезагрузите страницу приложения с Гантом и откройте расписание. Наведите указатель на операцию, у которой есть номер заказа. Если поле
workOrder.numberне скрыто, его подпись в подсказке станет «Заказ в расписании».
Вводите текст без обрамляющих кавычек. Новая запись из этой формы получает scope: "global" и isArray: false. Пример предполагает, что для того же имени нет пользовательского переопределения; ограничения областей описаны ниже.
Создание через API
Для того же примера отправьте POST /settings в API вашей среды с обычной авторизацией. Тело запроса — массив, даже когда создаётся одна запись:
json
[
{
"scope": "global",
"name": "schedule.operationTooltipConfig.[workOrder.number].label",
"description": "Подпись номера заказа в подсказке операции",
"dataType": 0,
"isArray": false,
"overridable": false,
"value": "Заказ в расписании"
}
]Здесь явно выбраны параметры примера; это не серверные значения по умолчанию. Для изменения существующей записи редактор использует PUT /settings, тоже с массивом в теле. Форма редактирования меняет значение и описание; dataType, isArray и overridable в ней заново не выбираются.
Как составить имя Settings
| Компонент | Префикс | Пример полного имени |
|---|---|---|
Гант, @mes/aps | schedule. | schedule.appSettings.timezone |
Календарь, @mes/aps-calendar | calendar. | calendar.settings.timezone |
При создании компонента панель запрашивает записи через POST /settings/find, снимает префикс и собирает объект из оставшегося пути. Например, schedule.appSettings.timezone со строкой UTC становится appSettings.timezone в конфигурации Ганта.
Точки разделяют вложенные свойства. Если точка входит в само имя поля, заключите это имя в квадратные скобки:
text
schedule.operationTooltipConfig.[workOrder.number].label
schedule.flowArrowTooltipConfig.[fromOp.name].labelВ первом примере workOrder.number — одно имя поля. Для его label и order нужны две отдельные записи. Сохранение всего объекта как строки JSON их не заменяет: загрузчик настроек графиков не разбирает такую строку в объект.
Готовые значения для отдельных записей
Как выбрать тип записи
| Значение | Тип в редакторе | dataType API |
|---|---|---|
| Подпись, шаблон, локаль, часовой пояс, текст CSS | Строка | 0 |
| Целый номер порядка, число ступеней или размер | Целое число | 1 |
| Число, у которого может быть дробная часть | Дробное число | 2 |
| Дата и время ISO, например начальная дата Calendar | Дата и время | 3 |
| Включение или выключение | Логический | 4 |
Цвет hex, например #1565C0 | Цвет | 9 |
Для названий цветов или rgb(...) используйте строку: редактор проверяет тип «Цвет» как hex. Тип «Целое число» подходит только для целых значений; «Дробное число» сохраняет дробную часть.
Все примеры — скалярные записи с isArray: false. В форме выбирается название типа, в API передаётся числовой dataType. Названия задач ведут к справочным страницам параметров на английском.
| Задача | name | Тип / dataType | value |
|---|---|---|---|
| Часовой пояс Ганта | schedule.appSettings.timezone | Строка / 0 | UTC |
| Часовой пояс календаря | calendar.settings.timezone | Строка / 0 | UTC |
| Подпись номера заказа | schedule.operationTooltipConfig.[workOrder.number].label | Строка / 0 | Заказ в расписании |
| Порядок поля номера заказа | schedule.operationTooltipConfig.[workOrder.number].order | Целое число / 1 | 20 |
| Подпись исходной операции на стрелке | schedule.flowArrowTooltipConfig.[fromOp.name].label | Строка / 0 | Исходная операция |
| Цвет выделенных стрелок последовательности | schedule.appSettings.drawPreferences.highlightedArrowColorDefault | Цвет / 9 | #1565C0 |
Значения этих записей в API передаются строками, например "value": "20"; загрузчик графика преобразует целое число по dataType. Вместо UTC можно указать корректное IANA-имя, например Europe/Moscow. Условия применения часового пояса, подсказок и выделенных стрелок описаны в руководствах панелей.
Область действия и переопределения
scope принимает global или user. Общая форма редактора создаёт глобальную запись. Включите у неё Перекрываемая?, чтобы пользователь мог открыть её карточку и создать своё переопределение с другим значением.
Флажок Перекрываемая? (overridable) задаётся при создании глобальной записи; при обычном редактировании форма сохраняет текущее значение. Чтобы изменить этот флаг существующей записи, отправьте PUT /settings: массив с scope: "global", name, description, value и новым overridable. Если меняете только флаг, сохраните описание и значение из глобальной строки ответа POST /settings/find, а не из личного переопределения.
Для одного имени персональная запись user имеет приоритет над global, независимо от порядка записей в ответе API. Это соответствует эффективному значению GET /settings/{name}. Без персональной записи действует глобальная. Удаление своего переопределения возвращает глобальное значение.
Выключение Перекрываемая? запрещает новые переопределения, но не удаляет существующее. Если ваше переопределение осталось у такой записи, редактор покажет сообщение и кнопку Удалить своё переопределение. Подтвердите удаление, чтобы перейти на глобальное значение.
В именах нет ID панели, приложения или расписания. Панели Ганта запрашивают schedule.*, а календари — calendar.* для текущего API-пользователя. Это не настройка только одной выбранной диаграммы.
Логические значения
В редакторе выбирайте тип Логический и задавайте значение переключателем. При прямом запросе API используйте dataType: 4: строка "true" включает флаг, "false" — выключает.
Например, schedule.operationTooltipConfig.name.hidden с типом 4 и значением "true" скрывает поле названия операции. Значение "false" показывает его снова, если поле настроено и присутствует в данных. Для schedule.showConstraints и schedule.showMaterialConstraints также действуют условия открытия панелей Ганта.
Пустые строки и составные значения
Для пустой подписи используйте API с явным "value": "". Редактор Settings сериализует пустое текстовое поле как null, что отличается от пустой строки. Например, пустой schedule.operationInfoConfig.name.label выводит только название операции без подписи и двоеточия.
Объекты задаются отдельными записями для конечных свойств, как в примерах label и order. Загрузчик графиков не разбирает строки JSON с объектами или массивами. Служебные массивы и состояние компонента через Settings задавать не нужно; соответствующие ограничения указаны в справочниках.
Если существующая запись содержит массив логических значений, редактор покажет сохранённое значение и запретит сохранение: редактор этого типа поддерживает только одно значение. Для приложения, которое поддерживает массивы, изменяйте такую запись через Settings API. Гант и календарь такие массивы из Settings не читают.
Когда применяется изменение
Гант и календарь читают Settings при создании своих компонентов. После сохранения записи перезагрузите страницу целевого приложения, чтобы оно запросило настройки заново. Для Ганта откройте расписание, для календаря — выберите объект. Сохранение параметра само по себе не запрашивает данные расписания или объекта.
Если результат отличается от ожидаемого, проверьте полный ключ, тип и значение в ответе POST /settings/find для того же пользователя. Для подсказок также важны наличие поля в данных и его настройка hidden.
Выполнить пример с подписью в демо
Для входа в демо используйте логин demo и пароль demo.
Создайте запись подписи из примера выше, затем откройте диаграмму и нажмите кнопку с календарём Открыть Gantt в строке заказа, чтобы загрузить его расписание. Простое выделение строки расписание не открывает:
Открыть демо ГантаНаведите указатель на операцию: подсказка покажет новую подпись номера заказа. Демо хранит записи в памяти сервера и применяет schedule.* и calendar.* к своим графикам. Чтобы вернуть исходную подпись, удалите созданную запись в Settings, перезагрузите страницу Ганта и снова нажмите Открыть Gantt в строке заказа. Подсказка снова покажет «Заказ». Перезапуск демо-сервера также восстанавливает исходные записи. Данные демо отделены от вашего окружения MES.
Связанные руководства
- Настройки и возможности Ганта.
- Полный справочник настроек компонента Ганта.
- Преобразование значений подсказок через
valueMap. - Справочник настроек календаря.
- Справочник отдельных параметров, на английском.
BPMN настраивается через request и graph.* в JSON панели — см. руководство BPMN.