1.2.2. Диаграмма Гантта

Класс фрейма:

class btkFrame.TbtkLookUpGanttTreeTabFrame

1.2.2.2. Древовидный список

  • В основе фрейма лежит дерево

1.2.2.3. Временная шкала

Характеристики
  • Отображает временную ленту
  • Лента имеет от 1 до 3 уровней шкалы
  • На каждом уровне отображаются временные отметки с подписями
  • Шкала меняется при масштабировании таймлайна
Схемы
Настройка
  • Набор уровней шкал настраивается:
  • Схему шкал и схему форматов можно изменить с помощью скриптового свойства TbtkGantt.ScalesSchema
Масштабирование
  • При открытии диаграммы отображаемый интервал подбирается так, чтобы все элементы были видны на экране
  • При изменении отображаемого интервала подбирается наиболее оптимальная шкала из схемы шкал

1.2.2.4. Диаграмма Гантта

1.2.2.4.1. Элемент

Характеристики
  • Определяется в узлах дерева
  • Поддерживается наследование (копирование элементов из подузлов)
  • Элементы могут объединяться связями
  • Пользователь может взаимодействовать с элементами
Определение
Наследование
  • Элементы узлов-потомков копируются в узел-предок, если в нём нет элементов
  • Скопированные элементы имеют стиль узла-предка из свойства Gantt.ItemStyleFieldName
  • Наследование настраивается свойством Gantt.CopyNodesToParent (по умолчанию включено)
Ограничение элемента
  • Фактическое ограничение — интервал, в котором можно перемещать и изменять размеры элемента. Определяется параметрами StartDateConstraint, StopDateConstraint
  • Визуальное ограничение — интервал, который отображается пунктиром вокруг элемента. Определяется параметрами StartDateLimit, StopDateLimit
  • Отображение визуального ограничения настраивается свойством Gantt.DrawingItemsConstraint
Пользовательское взаимодействие с элементом
  1. Перемещение
  • В рамках фактического ограничения элемента
  • Включается свойством Gantt.EnableMoving для всех элементов
  • Отключается параметром MovingEnable для отдельных элементов
  1. Изменение размеров
  • В рамках фактического ограничения элемента
  • Включается свойством Gantt.EnableResizing для всех элементов
  • Отключается параметром ResizingEnable для отдельных элементов
  1. Выделение
  • Производится левой кнопкой мыши
  • Выделенные элементы подсвечиваются синим цветом
  • Недоступно для элементов, скопированных в предка
  • Доступно множественное выделение с помощью Ctrl
  • При выделении:
    • В переменную выборки IDFocusedItem# пишется ID элемента, если выделен элемент, иначе null
    • Вызывается операция OnFocusedItemChanged
  1. Выпадающее меню
  • Вызывается щелчком правой кнопкой мыши по элементу
  • Пункты меню формируются из операций-наследников операции GanttPopupMenu
  1. Двойной клик
  • Если существует операция OnDoubleClick, то вызывается она
  • В противном случае вызывается первая операция контекстного меню

1.2.2.4.3. Визуальное выделение дат

Заданная дата
  • Можно выделить конкретные даты с помощью вертикальных линий
  • Подробнее о настройке вертикальных линий из скрипта: Вертикальные линии
Выделенная дата
  • Помечается треугольником на временной шкале
  • Отображение линии включается свойством Gantt.ShowSelectedDate
  • Визуальные характеристики линии настраиваются скриптом: Выделенная дата
Текущая дата
  • Отображение линии включается свойством Gantt.ShowCurrentDate
  • Визуальные характеристики лини настраиваются скриптом: Текущая дата

1.2.2.4.4. Визуальное выделение интервала

Осуществляется при помощи регионов.
  • Регион визуально выделяет временной интервал сверху донизу
  • Добавляется из скрипта: Регионы

1.2.2.4.5. Настройка отображения

Настройки
  1. Отображение вертикальных полос напротив отметок нижнего уровня шкалы
  1. Чересстрочная раскраска
  1. Подсветка дней
  1. Темы интерфейса
При отрисовке Диаграммы Гантта используются свойства темы интерфейса. Список свойств темы интерфейса

Changed in version Global: 5.0 Реализована поддержка тем интерфейса.

1.2.2.5. Формат задания параметров элементов

1.2.2.5.1. Список параметров

Полное имя Сокр. имя По умолчанию Описание
ID ID Нет Идентификатор элемента.
StartDate (Обязательный) STD Нет Дата начала процесса (dd.mm.yyyy или dd.mm.yyyy hh:mm:ss).
StopDate (Обязательный) SPD Нет Дата окончания процесса (dd.mm.yyyy или dd.mm.yyyy hh:mm:ss).
Style ST gisPipe Стиль элемента (TbtkGanttItemStyle). Определяет форму элемента на диаграмме.
Color CO $009600 (тёмно-зелёный) Цвет элемента (TColor).
FillStyle Fill bsSolid Задаёт шаблон заливки (TBrushStyle).
Progress P -1 Определяет степень выполнения задачи от 0 до 100. Если прогресс не задан или отрицателен, индикатор прогресса не отрисовывается. Отображается на элементе в виде полоски в процентном соотношении от ширины элемента.
ProgressColor PC $0000FF (красный) Цвет индикатора прогресса выполнения задачи.
ProgressWidth PW 20 Ширина полосы прогресса выполнения задачи. Указывается в процентах от ширины элемента диаграммы. Не учитывается для элементов диаграммы типов gisLine, gisLineWEnd, gisSpan.
Caption C ‘’ Текст элемента, отображаемый на диаграмме.
CaptionPos CP cpInside Положение текста элемента, относительно элемента. cpLeft — слева от элемента; cpInside — на элементе; cpRight — справа от элемента.
CaptionAlignment CA taCenter Выравнивание текста элемента. Флаг имеет смысл только при расположении текста на элементе. taLeftJustify — выравнивание по левому краю элемента; taCenter — выравнивание по центру; taRightJustify — выравнивание по правому краю элемента.
CaptionVertAlignment CVA taVCenter Выравнивание текста элемента по вертикальной оси. taTopJustify — по верхнему краю; taVCenter — по центру; taBottomJustify — по нижнему краю.
CaptionCrop CC False Флаг, указывающий, что текст элемента не должен выходить за границы элемента. Флаг имеет смысл только при расположении текста на элементе. True — обрезать текст; False — не обрезать текст (в этом случае текст может быть длиннее самого элемента).
FontName FN   Системное имя шрифта.
FontStyle FS ‘’ Стиль шрифта. fsBold — жирный; fsItalic — наклонный; fsUnderLine — подчёркнутый; fsStrikeOut — зачёркнутый. Значение параметра может содержать любые комбинации возможных значений, разделённые запятой ,. Пример: FontStyle=fsBold,fsItalic,fsUnderLine;.
FontSize FSZ 10 Размер шрифта.
FontColor FC $000000 (чёрный) Цвет шрифта.
Hint H ‘’ Текст всплывающей подсказки, отображаемой при наведении курсора мыши на элемент.
Width W 100 Ширина элемента в процентах. Задается пропорционально высоте, диапазон значения не ограничен. Например, значение ширины в 200% задает ширину равную 2*Height(pixel). Ширину следует задавать элементам, расположение которых зависит только от параметра StartDate (круг, прямоугольник и ромб). Если высота равна 100%, то установка значения параметра в 200% задаст ширину в два раза больше высоты строки, т.к. высота 100% соответствует высоте строки.
Height HT 100 Высота элемента в процентах. Максимальная высота 100, равная высоте строки, минимальная 10.
BorderStyle BS psSolid Стиль границы (TPenStyle).
BorderColor BC $000000 (чёрный) Цвет границы (TColor).
Center CR 50 Задает центр фигуры по вертикали в процентах от высоты строки (0-100%), т.е., центру строки соответствует значение 50%. Использование данного параметра с параметром Height позволяет расположить несколько элементов на одной линии без их взаимного перекрытия.
MovingEnable ME 1 Позволяет отключить возможность перемещения элемента с помощью мыши. Влияет только если свойство Gantt.EnableMoving установлено в True. 1 — перемещение элемента разрешено; 0 — перемещение элемента запрещено.
ResizingEnable RE 1 Управляет возможностью изменения размеров элемента с помощью мыши. Влияет только если свойство Gantt.EnableResizing установлено в True. 1 — изменение размера разрешено; 0 — изменение размера запрещено.
StartDateLimit STL null Визуальное ограничение на минимальное значение положения левой границы элемента (левая граница изменения размера или перемещения элемента). Ограничение отображается пунктиром в зависимости от свойства Gantt.DrawingItemsConstraint.
StopDateLimit SPL null Визуальное ограничение на максимальное значение положения правой границы элемента (правая граница изменения размера или перемещения элемента). Ограничение отображается пунктиром в зависимости от свойства Gantt.DrawingItemsConstraint.
StartDateConstraint STC null Фактическое ограничение на максимальное значение положения левой границы элемента (левая граница изменения размера или перемещения элемента).
StopDateConstraint SPC null Фактическое ограничение на максимальное значение положения правой границы элемента (правая граница изменения размера или перемещения элемента).

1.2.2.5.2. Актуальный формат

Формат строки
{Параметр}={значение};{Параметр}={значение}|{Параметр}={значение};{Параметр}={значение}
  • = — разделитель имени параметра и значения;
  • ; — разделитель параметров;
  • | — разделитель элементов.

При задании параметра можно использовать его полное или сокращённое имя.

Пример задания двух процессов в одной линии
ID=1215170001; Std=10.11.2006; Spd=14.11.2006; Style=gisPipe; Color=$008000;
Progress=0; ProgressColor=$800000;
Caption=Субпроцесс № 1-3-1; CaptionPos=cpInside; CaptionAlignment=taRightJustify; CVA=taVCenter; CaptionCrop=True;
FontName=Arial; FontStyle=; FontSize=8; FontColor=$0000FF;
Hint=Всплывающая подсказка для элемента;
Center=25; Height=50;
|ID=1215170002; Std=12.11.2006; Spd=16.11.2006; Style=gisPipe; Color=$FF8E00;
Progress=0;ProgressColor=$80046D;
Caption=Субпроцесс № 1-3-1; CaptionPos=cpInside; CaptionAlignment=taRightJustify; CVA=taVCenter; CaptionCrop=True;
FontName=Arial; FontStyle=; FontSize=8; FontColor=$0000FF;
Hint=Всплывающая подсказка для элемента;
Center=75; Height=50;

1.2.2.5.3. Устаревший формат

Warning

Формат оставлен для совместимости. Использовать его не рекомендуется.

Формат строки
ID;StartDate;StopDate;Style;Color;Caption;FontColor|ID;StartDate;StopDate;Style;Color;Caption;FontColor
  • ; — разделитель параметров;
  • | — разделитель элементов.

Параметры передаются в фиксированном порядке, имя параметра не указывается.

Первые три параметра являются обязательными.

Даты задаются в формате dd.mm.yyyy hh:mm:ss.

Пример
1212319001; 01.11.2006 12:11:00; 02.11.2006 12:11:00; gisLineWEnd; $008000; Текст; $FF0000 |
1212390001; 05.11.2006 12:11:00; 06.11.2006 12:11:00; gisLineWEnd; $008000; Текст2; $0000FF

1.2.2.7. Формат задания схем таймлайна

1.2.2.7.1. YAML-документ

Поле
  • Представляется в виде ключа и значения в формате ключ: значение
  • Ключ регистрозависимый
  • Значение регистронезависимое
  • Текстовые значения можно заключать в кавычки, двойные " или одинарные '
Список
  • Как правило содержит однотипные элементы
  • Все пункты списка находятся на одном уровне вложенности и предваряются дефисом -
Вложенность
  • Уровень вложенности увеличивается парой пробелов
  • Если на той же строке после ключа не указано значение, то значением считаются последующие строки с большим уровнем вложенности
Комментарий
  • Комментарий начинается с # и продолжается до конца строки
Пример
- timeline_time_units_format_schema:
    meta:
      version: 1.0
      locale: 'ru_RU'
    level_top:
      tuYear:
        formats:
        - "yyyy 'год'"
        - "yyyy 'г'"
        - "yyyy"
        align: Left

1.2.2.7.2. Файл схем временной шкалы

Пример файла
- timeline_time_units_format_schema:
    <Схема форматов единиц измерения времени>
- timeline_scales_schema:
    <Схема шкал таймлайна>

See also

Установить для таймлайна файл схем временной шкалы можно с помощью свойства TbtkGantt.ScalesSchema

1.2.2.7.3. Схема форматов единиц значения времени

Характеристики
  • Записывается в YAML-формате
  • Описывает форматы отображения единиц измерения времени на всех возможных уровнях шкалы
Задание форматов
  • Уровни описываются от верхнего к нижнему (level_top, level_middle, level_bottom)
  • Описание единицы времени состоит из списка форматов formats и выравнивания надписи align
  • Можно задать индивидуальное описание единицы времени каждого уровня
  • Форматы задаются в соответствии с форматом даты “Бизнес Технологии”
  • Форматы должны быть упорядочены от наиболее длинной к наиболее короткой форме записи единицы времени
Наследование
  • Описания единиц времени наследуются от верхних уровней к нижним: если формат или выравнивание не задано, оно копируется из вышестоящего уровня
Значения по умолчанию
  • Значение формата по умолчанию: dd.mm.yy HH:mm
  • Значения выравнивания по умолчанию:
    • Для уровней level_top, level_middleLeft
    • Для уровня level_bottomCenter
Пример схемы форматов с пояснениями
- timeline_time_units_format_schema: # Название схемы форматов

    # Общая информация о схеме
    meta:
      version: <версия> # Версия. Например, 1.0
      locale: <локаль>  # Локаль. Например, 'ru_RU'

    # Информация о верхнем уровне
    level_top:
      <tuЕдиницаВремени1>: # Описание форматов единицы времени 1 на верхнем уровне
        formats: # Форматы указываются списком:
        - <Format1_1>
        - <Format1_2>
        align: <Align1TopLevel> # Выравнивание надписи на интервале. Возможные значения: Above, Left, Center, Right
      <tuЕдиницаВремени2>: # Описание форматов единицы времени 2 на верхнем уровне
        <Описание>
      <...>

    # Информация о среднем уровне
    level_middle:
      <tuЕдиницаВремени1>: # Описание форматов единицы времени 1 на среднем уровне
        formats:
        - <Format1_3>
        align: <Align1MiddleLevel>
      <...>

    # Информация о нижнем уровне
    level_bottom: {} # Уровень не содержит элементов, все описания форматов будут скопированы из вышестоящего уровня level_middle

1.2.2.7.4. Схема шкал

Характеристики
Пример схемы шкал с пояснениями
- timeline_scales_schema: # Название схемы форматов

    # Общая информация
    meta:
      version: <версия> # Версия. Например, 1.0
      locale: <локаль>  # Локаль. Например, 'ru_RU'
      levels: <уровни>  # Число уровней шкалы. Например, slcMiddleBottomTop

    # Список шкал
    # Каждая шкала содержит число пунктов, соответствующих числу уровней шкалы. Пункты описывают заданные уровни от верхнего к нижнему
    scales:
    # Шкала 1: на верхнем уровне отметки ставятся каждый день, на среднем каждый час, на нижнем каждую минуту
    - - time_unit: tuDay
      - time_unit: tuHour
      - time_unit: tuMinute

    # Шкала 2: идентична шкале 1, но отметки на нижнем уровне ставятся с интервалом в 10 минут
    - - time_unit: tuDay
      - time_unit: tuHour
      - time_unit: tuMinute
        interval: 10

    # Шкала 3: на верхнем уровне отметки раз в месяц, на среднем раз в неделю, на нижнем раз в день.
    - - time_unit: tuMonth
      - time_unit: tuWeek
      - time_unit: tuDay
        format: 'ddd;ddd_shortness=1;' # Формат, заданный напрямую

1.2.2.7.5. Результирующая схема шкал

Результирующая схема шкал получается путём комбинации схемы шкал со схемой форматов.

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

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

See also

Пример построения результирующей схемы шкал

Считать результирующую схему можно с помощью свойства TbtkGantt.ScalesSchema

1.2.2.7.6. Схема активной шкалы

Характеристики
  • Записывается в YAML-формате
  • Описывает активную шкалу после открытия фрейма
  • Может не совпадать с какой-либо шкалой из схемы шкал
Пример схемы активной шкалы
- timeline_scale_schema:
    meta:
      version: 1.0
      locale: 'ru_RU'
      levels: slcMiddleBottomTop
    scale:
    - time_unit: tuWeek
      format: dd.MMM.yyyy
    - time_unit: tuDay
      format: ddd dd.MMM.yyyy
    - time_unit: tuHour
      format: HH:mm

1.2.2.8. Примеры

1.2.2.8.1. Запросы и методы

В примере используется класс с коллекцией. Класс содержит данные с древовидной структурой, в коллекции хранятся даты начала и окончания процессов.

Запрос для режима, когда в одном узле может быть только один элемент.
select
 t.*,
 Decode(bisRoot, 1, utl_raw.CAST_TO_BINARY_INTEGER('80'),
 Decode(bHasChild, 0, utl_raw.CAST_TO_BINARY_INTEGER('8000'),
 utl_raw.CAST_TO_BINARY_INTEGER('800000'))) as nItemColor,
 Decode(bisRoot, 1, 'gisPipe', Decode(bHasChild, 0, 'gisLineWEnd', 'gisSpan')) as sItemStyle
 from (
 select
 t.ID,
 t.idParent, GanttExtAPI.GetidParent_HL(t.idParent) as idParent_HL,
 t.sCAPTION,
 t.idClass,
 gc.id as idItem,
 gc.dDateBegin,
 gc.dDateEnd,
 GanttextcollectAPI.GetLinks(gc.id) sLinks,
 (Select nvl(max(1),0)
 from GanttExt
 where idParent = t.id) bHasChild,
 Decode(t.idParent, null, 1, 0) bisRoot,
 'Текст' as sItemText
 from GanttExt t, Ganttextcollect gc
 where t.id = gc.IDGanttExt(+)
 ) t
Запрос для режима, когда в одном узле могут быть несколько элементов.
select
 t.*,
 Decode(bisRoot, 1, utl_raw.CAST_TO_BINARY_INTEGER('80'),
 Decode(bHasChild, 0, utl_raw.CAST_TO_BINARY_INTEGER('8000'),
 utl_raw.CAST_TO_BINARY_INTEGER('800000'))) as nItemColor,
 Decode(bisRoot, 1, 'gisPipe', Decode(bHasChild, 0, 'gisLineWEnd', 'gisSpan')) as sItemStyle,
 GanttextcollectAPI.GetItemsAsString(t.id, bisRoot, bHasChild) sItemsData
 from (
 select
 t.ID,
 t.idParent, GanttExtAPI.GetidParent_HL(t.idParent) as idParent_HL,
 t.sCAPTION,
 t.idClass,
 ''as sLinks'',
 (Select
 nvl(max(1),0)
 from GanttExt
 where idParent = t.id) bHasChild,
 Decode(t.idParent, null, 1, 0) bisRoot
 from GanttExt t
 ) t
Функции API типов, использованных в запросе.
static function GetItemsAsString(idpLine in number, bpHasChild in number, bpIsRoot in number) return varchar2 as
  res varchar2 (4000);
  tempRes varchar2 (4000);
 begin
   res :=;
   *for cr in
   (select gc.* from ganttextcollect gc
   where gc.IDGanttExt = idpLine)
   loop
     tempRes := to_char(cr.id) || ';' || to_char(cr.ddatebegin, 'dd.mm.yyyy hh:mm:ss') || ';' || to_char(cr.ddateend, 'dd.mm.yyyy hh:mm:ss');
     if bpisRoot = 1 then
      tempRes := tempRes || '; gisPipe;$8000';
     else
       beginif bpHasChild = 0 then
        tempRes := tempRes || ';gisLineWEnd;$80*';
       else
        tempRes := tempRes || ';gisSpan;$800000';
       end if;
       end;
     end if;

     tempRes := tempRes || ';Текст';
     if res is null then
      res := tempRes;
     else res := res || ' | ' ||tempRes;
     end if;
    end loop;
   return res;
  end;

static function GetLinks(idpSelf in number) return varchar2 as
  res varchar2 (4000);
begin
  if idpSelf is not null then
    res := to_char(idpSelf)|| ';' || '1212324001'; /*для примера здесь прописан идентификатор объекта, в реальном случае здесь будет более сложная логика*/
  else
    res := ;
  end if;
end;

1.2.2.8.2. Схема форматов

Схема форматов по умолчанию
- timeline_time_units_format_schema:
    meta:
      version: 1.0
      locale: 'ru_RU'
    level_top:
      tuYear:
        formats:
        - yyyy 'год'
        - yyyy 'г'
        - yyyy
        align: Left
      tuHalfYear:
        formats:
        - Q'-е полугодие,' yyyy
        - "'П-'Q, yyyy"
        align: Left
      tuQuarter:
        formats:
        - "'Кв. 'q yyyy"
        align: Left
      tuMonth:
        formats:
        - MMMM yyyy
        - MMM yyyy
        align: Left
      tuDecade:
        formats:
        #- "'Декада' D yyyy"
        - dd MMM yyyy
        align: Left
      tuWeek:
        formats:
        #- "'Нед.'ww yyyy"
        - dd MMM yyyy
        align: Left
      tuDay:
        formats:
        - ddd dd MMM "'"yy
        align: Left
      tuHour:
        formats:
        #- HH
        #- HH час
        - HH 'час' ddd dd.MM
        align: Left
      tuMinute:
        formats:
        #- mm
        - hh:mm ddd dd.MM
        align: Left
      tuSecond:
        formats:
        #- ss
        - hh:mm:ss
    level_middle: {}
    level_bottom:
      tuYear:
        align: Center
      tuHalfYear:
        formats:
        - "'П'Q"
        align: Center
      tuQuarter:
        formats:
        - "'К'q"
        align: Center
      tuMonth:
        formats:
        - MMM
        align: Center
      tuDecade:
        align: Center
      tuWeek:
        #formats:
        #- ww
        align: Center
      tuDay:
        formats:
        - ddd
        align: Center
      tuHour:
        formats:
        - HH
        align: Center
      tuMinute:
        formats:
        - mm
        align: Center
      tuSecond:
        formats:
        - ss
        align: Center

1.2.2.8.3. Схема шкал

Схема шкал по умолчанию
- timeline_scales_schema:
    meta:
      version: 1.0
      locale: 'ru_RU'
      levels: slcMiddleBottomTop
    scales:
    - - time_unit: tuDay
      - time_unit: tuHour
      - time_unit: tuMinute

    - - time_unit: tuDay
      - time_unit: tuHour
      - time_unit: tuMinute
        interval: 5

    - - time_unit: tuDay
      - time_unit: tuHour
      - time_unit: tuMinute
        interval: 15

    - - time_unit: tuWeek
      - time_unit: tuDay
      - time_unit: tuHour

    - - time_unit: tuWeek
      - time_unit: tuDay
      - time_unit: tuHour
        interval: 2

    - - time_unit: tuWeek
      - time_unit: tuDay
      - time_unit: tuHour
        interval: 6

    - - time_unit: tuWeek
      - time_unit: tuDay
      - time_unit: tuHour
        interval: 12

    - - time_unit: tuMonth
      - time_unit: tuWeek
      - time_unit: tuDay
        format: 'ddd;ddd_shortness=1;'

    - - time_unit: tuQuarter
      - time_unit: tuMonth
      - time_unit: tuDay

    - - time_unit: tuQuarter
      - time_unit: tuMonth
      - time_unit: tuDay
        format: dd
        interval: 2

    - - time_unit: tuQuarter
      - time_unit: tuMonth
      - time_unit: tuDay
        format: dd
        interval: 3

    - - time_unit: tuQuarter
      - time_unit: tuMonth
      - time_unit: tuDay
        format: dd
        interval: 7

    - - time_unit: tuYear
      - time_unit: tuMonth
      - time_unit: tuDay
        format: dd
        interval: 7

    - - time_unit: tuYear
      - time_unit: tuQuarter
      - time_unit: tuMonth

    - - time_unit: tuYear
      - time_unit: tuHalfYear
      - time_unit: tuMonth

    - - time_unit: tuYear
        interval: 10
      - time_unit: tuYear
      - time_unit: tuHalfYear

1.2.2.8.4. Результирующая схема шкал

Схема форматов
- timeline_time_units_format_schema:
    meta:
      version: 1.0
      locale: 'ru_RU'
    level_top:
      tuYear:
        formats:
        - yyyy 'год'
        - yyyy 'г'
        - yyyy
        align: Left
      tuMonth:
        formats:
        - MMMM
        - MMM yy
        align: Right
Схема шкал
- timeline_scales_schema:
    meta:
      version: 1.0
      locale: 'ru_RU'
      levels: slcMiddle
    scales:
    - - time_unit: tuYear
    - - time_unit: tuMonth
        format: MMM
Результирующая схема
- timeline_calculated_scales_schema:
    meta:
      version: 1.0
      locale: 'ru_RU'
      levels: slcMiddle
    scales:
    - - time_unit: tuYear
        format: yyyy 'год'
    - - time_unit: tuYear
        format: yyyy 'г'
    - - time_unit: tuYear
        format: yyyy
    - - time_unit: tuMonth
        format: MMM