Appearance
Шкала времени и масштаб
Настройки компонента @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
Значения точности
| Значение | Деление | Значение | Деление | Значение | Деление |
|---|---|---|---|---|---|
| 0 | 10 лет | 15 | 5 дней | 30 | 150 минут |
| 1 | 5 лет | 16 | 4 дня | 31 | 2 часа |
| 2 | 3 года | 17 | 3 дня | 32 | 90 минут |
| 3 | 2 года | 18 | 2 дня | 33 | 1 час |
| 4 | 1 год | 19 | 1 день | 34 | 45 минут |
| 5 | 6 месяцев | 20 | 21 час | 35 | 30 минут |
| 6 | 5 месяцев | 21 | 18 часов | 36 | 25 минут |
| 7 | 4 месяца | 22 | 15 часов | 37 | 20 минут |
| 8 | 3 месяца | 23 | 12 часов | 38 | 15 минут |
| 9 | 2 месяца | 24 | 8 часов | 39 | 10 минут |
| 10 | 1 месяц | 25 | 6 часов | 40 | 5 минут |
| 11 | 3 недели | 26 | 5 часов | 41 | 4 минуты |
| 12 | 2 недели | 27 | 4 часа | 42 | 3 минуты |
| 13 | 7 дней | 28 | 210 минут | 43 | 2 минуты |
| 14 | 6 дней | 29 | 3 часа | 44 | 1 минута |
Год считается как 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 }
}