Skip to content

Settings: настройки Ганта и календаря ​

English · Русский

Settings — отдельные записи с именем, типом и значением, которые Гант и календарь загружают из API. Через них можно изменить, например, подпись поля в подсказке, цвет стрелки или часовой пояс. JSON приложения задаёт состав и поведение панелей; записи Settings в него не добавляют.

Выбрать параметр ​

  1. Найдите нужную настройку в справочнике Ганта или справочнике календаря. Проверьте допустимые значения и условия применения.
  2. Если справочник указывает полное имя Settings, используйте его целиком. К пути свойства Ганта добавьте schedule.: appSettings.timezone станет schedule.appSettings.timezone. Справочник календаря уже содержит полные имена, например calendar.settings.timezone; второй префикс не нужен.
  3. Выберите тип и значение по таблице ниже, затем создайте запись в редакторе 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.

Пример: изменить подпись номера заказа ​

  1. Найдите в списке schedule.operationTooltipConfig.[workOrder.number].label. Если глобальная запись уже есть, откройте её и измените значение. Если её нет, выберите Действия → Создать параметр.

  2. Для новой записи заполните форму:

    Поле формыЗначение
    Системное имяschedule.operationTooltipConfig.[workOrder.number].label
    Тип данныхСтрока — код 0
    ЗначениеЗаказ в расписании
    ОписаниеПодпись номера заказа в подсказке операции
    Перекрываемая?Выключено для этого примера
  3. Сохраните форму. После успешного сохранения редактор откроет карточку записи. Если появится ошибка, исправьте её и повторите сохранение.

  4. Перезагрузите страницу приложения с Гантом и откройте расписание. Наведите указатель на операцию, у которой есть номер заказа. Если поле 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/apsschedule.schedule.appSettings.timezone
Календарь, @mes/aps-calendarcalendar.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Тип / dataTypevalue
Часовой пояс Гантаschedule.appSettings.timezoneСтрока / 0UTC
Часовой пояс календаряcalendar.settings.timezoneСтрока / 0UTC
Подпись номера заказаschedule.operationTooltipConfig.[workOrder.number].labelСтрока / 0Заказ в расписании
Порядок поля номера заказаschedule.operationTooltipConfig.[workOrder.number].orderЦелое число / 120
Подпись исходной операции на стрелке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.

Открыть демо редактора Settings

Создайте запись подписи из примера выше, затем откройте диаграмму и нажмите кнопку с календарём Открыть Gantt в строке заказа, чтобы загрузить его расписание. Простое выделение строки расписание не открывает:

Открыть демо Ганта

Наведите указатель на операцию: подсказка покажет новую подпись номера заказа. Демо хранит записи в памяти сервера и применяет schedule.* и calendar.* к своим графикам. Чтобы вернуть исходную подпись, удалите созданную запись в Settings, перезагрузите страницу Ганта и снова нажмите Открыть Gantt в строке заказа. Подсказка снова покажет «Заказ». Перезапуск демо-сервера также восстанавливает исходные записи. Данные демо отделены от вашего окружения MES.

Связанные руководства ​

BPMN настраивается через request и graph.* в JSON панели — см. руководство BPMN.