Skip to content

Преобразования настроек диаграммы Ганта ​

Используйте это руководство, когда значения в подсказках диаграммы Ганта нужно форматировать через настройки schedule.*.

Что можно настроить ​

Для полей подсказки можно напрямую задать label, template, hidden и order.

С transform панель работает иначе: API настроек хранит данные, а не исполняемый JavaScript. Поэтому перед вызовом createConfig(...) для @mes/aps панель преобразует только безопасные декларативные дескрипторы.

В @mes/aps@1.23.0 необязательные разделы подсказок ограничений, поставок и стрелок зависимостей остаются пустыми, если их нет в настройках. Панель сохраняет это поведение. Форматирование даты добавляется только для явно указанного поддерживаемого поля ограничения, поставки или стрелки последовательности. Само наличие форматтера не делает поле видимым.

Например, следующие настройки включают только дату и количество поставки:

text
schedule.supplyTooltipConfig.date.label = "Дата поставки"
schedule.supplyTooltipConfig.date.order = 1
schedule.supplyTooltipConfig.quantity.label = "Доступно"
schedule.supplyTooltipConfig.quantity.order = 2

Панель добавляет преобразование даты к date, сохраняет заданные метаданные и не добавляет остальные поля поставки. Для полей ограничений действует то же правило.

Поддерживаемый дескриптор valueMap ​

Сейчас панель поддерживает transform.type = valueMap в разделах:

  • operationTooltipConfig;
  • constraintsTooltipConfig;
  • supplyTooltipConfig;
  • flowArrowTooltipConfig;
  • supplyArrowTooltipConfig;
  • producerArrowTooltipConfig.

После useSettingsFind().mapSettings({ prefix: 'schedule' }) настройки имеют следующую вложенную форму:

json
{
  "operationTooltipConfig": {
    "late": {
      "label": "Опаздывает",
      "transform": {
        "type": "valueMap",
        "values": {
          "true": "Да",
          "false": "Нет"
        },
        "fallback": "Не задано"
      }
    }
  }
}

Те же значения в API настроек:

text
schedule.operationTooltipConfig.late.label = "Опаздывает"
schedule.operationTooltipConfig.late.transform.type = "valueMap"
schedule.operationTooltipConfig.late.transform.values.true = "Да"
schedule.operationTooltipConfig.late.transform.values.false = "Нет"
schedule.operationTooltipConfig.late.transform.fallback = "Не задано"

schedule.operationTooltipConfig.locked.label = "Заблокирована"
schedule.operationTooltipConfig.locked.transform.type = "valueMap"
schedule.operationTooltipConfig.locked.transform.values.true = "Да"
schedule.operationTooltipConfig.locked.transform.values.false = "Нет"

Правила сопоставления ​

  • Ключ сопоставляется со строковым представлением исходного значения.
  • Для логических значений используются ключи true и false.
  • Для Date используется строка в формате ISO 8601.
  • Если подходящего ключа нет, преобразование возвращает fallback, когда он задан.

Ограничения ​

  • Строки наподобие (value) => value ? 'Да' : 'Нет' остаются обычными данными и не выполняются.
  • Неподдерживаемые типы дескрипторов transform игнорируются.
  • Пути настроек с сегментами __proto__, prototype или constructor отклоняются до построения объекта.
  • Форматирование даты выполняет отдельный слой панели и только для явно настроенных полей ограничений, поставок и поддерживаемых полей fromOp.* / toOp.* стрелки последовательности.

Демонстрация ​

Локальное приложение local-gantt-transform-demo показывает это поведение для подсказок операции. Его данные не содержат ответ зависимостей, поэтому оно не подтверждает преобразования подсказок стрелок.