Skip to content

Шкала времени и масштаб ​

English · Русский

Настройки компонента @mes/aps@1.23.0. В MES имена записей Settings начинаются с schedule.; см. как заполнить запись.

Как график выбирает масштаб по горизонтали и высоту строк по вертикали, и что из этого можно задать настройками.

Как устроен горизонтальный масштаб ​

Масштаб по горизонтали задаётся точностью: длительностью одного деления шкалы времени. Точность выражается целым числом от 0 (одно деление = 10 лет) до 44 (одно деление = 1 минута); полный список ниже. Ширина деления в пикселях считается из точности и базовой ширины barSettings.initialWidth.

При загрузке данных график выполняет подгонку: подбирает точность и ширину деления, стремясь вместить всё расписание в видимую область, и записывает результат в конфигурацию поверх переданных значений. Поэтому:

  • precision после подгонки заменяется выбранной точностью; его начальное значение не фиксирует масштаб загруженного расписания. Для подгонки нужны непустой временной диапазон и положительная ширина поля.
  • barSettings.initialWidth тоже перезаписывается результатом, но до этого используется как нижняя граница базовой ширины при подборе масштаба. Поэтому исходное значение влияет на подгонку.
  • appSettings.availableZoomLevels — диапазон ползунка масштаба. Подгонка заменяет его списком от подобранной точности до 44, то есть график не даёт отдалить масштаб грубее начальной подгонки. Задавать не нужно; пустой массив без данных прячет ползунок.

Если расписание не помещается даже на самом грубом шаге при минимальной ширине деления, подгонка оставляет этот шаг; всё расписание сразу видно не будет.

barSettings.initialWidth ​

Нижняя граница базовой ширины деления при начальной подгонке. Чем больше значение, тем меньше делений может поместиться в поле и тем более крупный временной шаг может выбрать график. После подгонки ключ хранит рассчитанную ширину и используется в последующих расчётах масштаба.

  • Тип: положительное число, пиксели
  • По умолчанию: 40
  • Взаимодействие: верхнюю границу задаёт barSettings.maxInitialWidth; задавайте её не меньше initialWidth.

barSettings.maxInitialWidth ​

Верхняя граница базовой ширины деления при подгонке. Для очень короткого расписания подгонка стремится растянуть деления; эта настройка не даёт базовой ширине стать больше указанной.

Это предел базовой ширины, а не ширины деления на экране. Ширина деления на экране равна базовой ширине, умноженной на 1.05 в степени точности; её текущее значение хранит barSettings.baseWidth, задавать его не нужно. Например, если maxInitialWidth и initialWidth равны 40, базовая ширина равна 40, а деление при точности 19 (один день) занимает на экране около 101 пикселя.

  • Тип: число, пиксели
  • По умолчанию: 240

Значения точности ​

ЗначениеДелениеЗначениеДелениеЗначениеДеление
010 лет155 дней30150 минут
15 лет164 дня312 часа
23 года173 дня3290 минут
32 года182 дня331 час
41 год191 день3445 минут
56 месяцев2021 час3530 минут
65 месяцев2118 часов3625 минут
74 месяца2215 часов3720 минут
83 месяца2312 часов3815 минут
92 месяца248 часов3910 минут
101 месяц256 часов405 минут
113 недели265 часов414 минуты
122 недели274 часа423 минуты
137 дней28210 минут432 минуты
146 дней293 часа441 минута

Год считается как 365 дней, месяц как 30 дней. Формат подписи деления зависит от точности: при ru-RU для минут и часов «дд.мм.гг чч:мм», для дней и недель «дд.мм.гг», для месяцев «месяц год», для лет «год». Локаль подписи задаётся на странице локали и часового пояса.

Вертикальный масштаб ​

По вертикали масштаб — это высота строки оборудования (и отдельно высота строки в панели ограничений). Высота здесь — высота одного уровня строки: у оборудования с finite: false операции, пересекающиеся по времени, раскладываются по нескольким уровням, и строка выше в число уровней раз. Ползунок вертикального масштаба переключает высоту по лестнице значений, которую график строит из трёх настроек. Лестница пересчитывается при загрузке данных и изменении размера области. Её нижняя ступень — наибольшая высота строки, при которой все строки оборудования помещаются в область, но не меньше minSize и не больше верхней ступени; если строк много, на нижней ступени видны не все. Верхняя ступень — maxSize, но не больше высоты области.

precisionYGantt.minSize ​

Нижняя граница высоты одного уровня строки оборудования при построении лестницы масштабов. Если высота области меньше этого значения, верхняя граница ограничивается самой областью, и рассчитанная высота может оказаться ниже minSize. При достаточной высоте области настройка не даёт сжать строки ниже указанного значения.

  • Тип: число, пиксели
  • По умолчанию: 20
  • Ограничение: читается один раз при создании графика.

precisionYGantt.maxSize ​

Наибольшая высота одного уровня строки оборудования в пикселях. Дополнительно ограничивается высотой самой области.

  • Тип: число, пиксели
  • По умолчанию: 500
  • Ограничение: читается один раз при создании графика.

precisionYGantt.steps ​

Число ступеней лестницы, то есть число положений ползунка вертикального масштаба. Значение меньше 2 приводит к ошибке при построении лестницы.

  • Тип: целое число, не меньше 2
  • По умолчанию: 60
  • Ограничение: читается один раз при создании графика.

precisionYConstraints.minSize, precisionYConstraints.maxSize, precisionYConstraints.steps ​

То же для строк в панелях ограничений. Одна лестница и одно положение ползунка общие для панели вторичных ограничений и панели движения материалов.

  • По умолчанию: 70, 380, 8
  • Особенность: панель вторичных ограничений строит лестницу по своему списку, а движение материалов — по списку материальных ограничений. Обе записывают результат в precisionYConstraints.array и используют zoomYConstraints; раздельных настроек масштаба для них нет. При пустом списке новая лестница не строится, сохраняется прежний или исходный массив.

Что задавать не нужно ​

  • precisionYGantt.array, precisionYConstraints.array — сама лестница; график строит её из minSize, maxSize и steps и перезаписывает переданное значение.
  • barSettings.ganttHeight, barSettings.constraintsHeight — текущая высота строки; заменяется значением ступени лестницы при первом же применении масштаба.
  • zoomYGantt, zoomYConstraints — текущее положение ползунка; сбрасывается при изменении списка оборудования. zoomY не используется.
  • barSettings.baseWidth — текущая ширина деления; пересчитывается при каждом изменении масштаба.

Пример ​

Нижняя граница высоты строк 30 пикселей при достаточной высоте поля, ползунок из 20 положений, базовая ширина делений при подгонке не больше 160 пикселей:

json
{
  "precisionYGantt": { "minSize": 30, "steps": 20 },
  "barSettings": { "maxInitialWidth": 160 }
}