.. _gantt_frame: Gantt ~~~~~~~~~~~~~~~~~~~~ .. underconstruction:: Статья будет изменяться и дополняться по мере реализации функционала .. seealso:: 1. `Основная статья в Global 1 `_ 2. :java:type:`pojo-класс` 3. :ref:`Метаданные Oracle` 4. :xsd:class:`Метаданные Postgres` 5. :ref:`События диаграммы Ганта` 6. :java:type:`gtk API - CoreGanttView` Глоссарий ^^^^^^^^^ **Временная шкала** - :term:`Таймлайн` - :term:`Единица измерения времени` - :term:`Описатель единицы измерения времени` - :term:`Описатель представления времени` - :term:`Формат единицы измерения времени` - :term:`Уровень шкалы <Уровень шкалы диаграммы Гантта>` - :term:`Шкала <Шкала диаграммы Гантта>` - :term:`Схема шкал <Схема шкал диаграммы Гантта>` - :term:`Схема форматов <Схема форматов единиц измерения времени>` - :term:`Интервал <Интервал диаграммы Гантта>` - :term:`Отображаемый интервал <Отображаемый интервал диаграммы Гантта>` - :term:`Фактический интервал <Фактический интервал диаграммы Гантта>` - :term:`Сколлапсированный интервал <Сколлапсированный интервал диаграммы Гантта>` **Диаграмма Гантта** - :term:`Элемент <Элемент диаграммы Гантта>` - :term:`Связь <Связь диаграммы Гантта>` - :term:`Вертикальная линия <Вертикальная линия диаграммы Гантта>` - :term:`Регион <Регион диаграммы Гантта>` Древовидный список ^^^^^^^^^^^^^^^^^^ - В основе фрейма лежит дерево .. _gantt_timeline: Временная шкала ^^^^^^^^^^^^^^^ **Характеристики** - Отображает временную ленту - Лента имеет 2 уровня шкалы .. note:: В Global1 временная шкала может иметь от 1 до 3 уровней - На каждом уровне отображаются временные отметки с подписями - Шкала меняется при масштабировании таймлайна **Схемы** .. attention:: В Global3 схемы не реализованы - Набор возможных шкал задаётся :ref:`схемой шкал ` - Формат подписей к временным отметкам задаётся :ref:`схемой форматов ` - Схемы комбинируются между собой для получения результирующей схемы, подробнее: :ref:`gantt_result_schema` **Настройка** .. attention:: В Global3 настройка уровней шкал не реализована - Набор уровней шкал настраивается: - При открытии фрейма свойством :btk:frameprop:`Gantt.Timeline.LevelsCount` - Из скрипта свойством :pas:attr:`TbtkTimeline.LevelsCount` - Схему шкал и схему форматов можно изменить с помощью скриптового свойства :pas:attr:`TbtkGantt.ScalesSchema` **Масштабирование** - При открытии диаграммы отображаемый интервал подбирается так, чтобы все элементы были видны на экране - При изменении отображаемого интервала подбирается наиболее оптимальная шкала из схемы шкал Диаграмма Гантта ^^^^^^^^^^^^^^^^ .. _gantt_element: Элемент ''''''' **Характеристики** - Определяется в узлах дерева - Поддерживается наследование (копирование элементов из подузлов) - Элементы могут объединяться связями - Пользователь может взаимодействовать с элементами **Определение** - Элемент определяется набором :ref:`параметров элемента ` - Способ определения задаётся свойством фрейма :btk:frameprop:`Gantt.Style`. В зависимости от способа, элементы задаются следующим образом: - В одном узле один элемент, параметры в разных атрибутах - ``ID`` — :btk:frameprop:`Gantt.ItemIDFieldName` - ``StartDate`` — :btk:frameprop:`Gantt.BeginDateFieldName` - ``StopDate`` — :btk:frameprop:`Gantt.EndDateFieldName` - ``Style`` — :btk:frameprop:`Gantt.ItemStyleFieldName` - ``Color`` — :btk:frameprop:`Gantt.ItemColorFieldName` - ``Caption`` — :btk:frameprop:`Gantt.ItemCaptionFieldName` - ``Progress`` — :btk:frameprop:`Gantt.ProgressFieldName` - Остальные — :btk:frameprop:`Gantt.ItemParamsFieldName` - В одном узле несколько элементов, параметры в одном атрибуте - Все параметры — :btk:frameprop:`Gantt.ItemsDataFieldName` **Наследование** .. attention:: В Global3 наследование элементов не реализовано - Элементы узлов-потомков копируются в узел-предок, если в нём нет элементов - Скопированные элементы имеют стиль узла-предка из свойства :btk:frameprop:`Gantt.ItemStyleFieldName` - Наследование настраивается свойством :btk:frameprop:`Gantt.CopyNodesToParent` (по умолчанию включено) **Ограничение элемента** .. attention:: В Global3 перемещение и изменение границ элемента не реализованы - Фактическое ограничение — интервал, в котором можно перемещать и изменять размеры элемента. Определяется параметрами ``StartDateConstraint``, ``StopDateConstraint`` - Визуальное ограничение — интервал, который отображается пунктиром вокруг элемента. Определяется параметрами ``StartDateLimit``, ``StopDateLimit`` - Отображение визуального ограничения настраивается свойством :btk:frameprop:`Gantt.DrawingItemsConstraint` **Пользовательское взаимодействие с элементом** 1. Перемещение .. attention:: В Global3 перемещение элементов не реализовано - В рамках фактического ограничения элемента - Включается свойством :btk:frameprop:`Gantt.EnableMoving` для всех элементов - Отключается параметром ``MovingEnable`` для отдельных элементов 2. Изменение размеров .. attention:: В Global3 изменение размеров элементов не реализовано - В рамках фактического ограничения элемента - Включается свойством :btk:frameprop:`Gantt.EnableResizing` для всех элементов - Отключается параметром ``ResizingEnable`` для отдельных элементов 3. Выделение .. attention:: В Global3 не реализовано множественное выделение элементов с помощью Ctrl - Производится левой кнопкой мыши - Выделенные элементы подсвечиваются синим цветом - Недоступно для элементов, скопированных в предка - При выделении: - В переменную выборки **IDFocusedItem#** пишется ``ID`` элемента, если выделен элемент, иначе **null** - Вызывается операция :btk:event:`OnFocusedItemChanged` 4. Выпадающее меню .. attention:: В Global3 выпадающее меню для элементов не реализовано - Вызывается щелчком правой кнопкой мыши по элементу - Пункты меню формируются из операций-наследников операции **GanttPopupMenu** 5. Двойной клик .. attention:: В Global3 нет обработки двойного клика - Если существует операция :btk:event:`OnDoubleClick`, то вызывается она - В противном случае вызывается первая операция контекстного меню .. _gantt_link: Связь ''''' **Характеристики** - Однонаправленная - Отображается в виде стрелки - Устанавливается от одного элемента к другому - Может соединяться с началом или концом элемента **Определение** - Определяется набором :ref:`параметров связи ` - Параметры связей задаются в атрибуте, заданном свойством :btk:frameprop:`Gantt.LinkFieldName` **Пользовательское взаимодействие** .. attention:: В Global3 пользовательское взаимодействие со связями не реализовано 1. Добавление связей мышью - Возможность включается свойством :btk:frameprop:`Gantt.EnableLinking` - Порядок действий: 1. Зажать правую кнопку на одном элементе, отжать на другом элементе 2. Возникает всплывающее окно выбора ``Direction`` (отключается свойством :btk:frameprop:`Gantt.EnableMenuOnLinkCreate`) 3. Вызывается операция :btk:event:`OnLinkCreate` 2. Удаление связей мышью - Порядок действий: 1. Правой кнопкой на связи — "Удалить связь" 2. Перед удалением вызывается операция :btk:event:`OnLinkDelete` .. _gantt_date_line_highlight: Визуальное выделение дат ''''''''''''''''''''''''' .. attention:: В Global3 не реализовано выделение произвольных дат, можно выделить только текущую дату **Заданная дата** - Можно выделить конкретные даты с помощью вертикальных линий - Подробнее о настройке вертикальных линий из скрипта: :ref:`gantt_script_vlines` **Выделенная дата** - Помечается треугольником на временной шкале - Отображение линии включается свойством :btk:frameprop:`Gantt.ShowSelectedDate` - Визуальные характеристики линии настраиваются скриптом: :ref:`gantt_script_selecteddate` **Текущая дата** - Отображение линии включается свойством :btk:frameprop:`Gantt.ShowCurrentDate` - Визуальные характеристики лини настраиваются скриптом: :ref:`gantt_script_currentdate` Визуальное выделение интервала '''''''''''''''''''''''''''''' Осуществляется при помощи регионов. - Регион визуально выделяет временной интервал сверху донизу - Добавляется из скрипта: :ref:`gantt_script_regions` Настройка отображения ''''''''''''''''''''' **Настройки** 1. Отображение вертикальных полос напротив отметок нижнего уровня шкалы - Отключается свойством :btk:frameprop:`Gantt.DrawGridLines` .. attention:: В Global3 не реализовано данное свойство 2. Чересстрочная раскраска - Отключается свойством :btk:frameprop:`Gantt.DrawLines` .. attention:: В Global3 не реализовано данное свойство 3. Подсветка дней .. attention:: В Global3 не реализована подсветка дней - Выходные дни недели: :btk:frameprop:`Gantt.RestDays`, :btk:frameprop:`Gantt.RestDaysColor` и :ref:`скрипт ` - Рабочие дни (перекрывают выходные): :ref:`скрипт ` - Праздничные дни: :btk:frameprop:`Gantt.HighLightHolidays`, :btk:frameprop:`Gantt.HoliDaysColor` и :ref:`скрипт ` 4. Темы интерфейса .. attention:: В Global3 не реализована поддержка тем интерфейса При отрисовке Диаграммы Гантта используются свойства темы интерфейса. .. _gantt_element_spec: Формат задания параметров элемента ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _gantt_element_param_list: Список параметров ''''''''''''''''' +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Полное имя | Сокр. имя | По умолчанию | Описание | +=====================================+===================+============================+============================================================================================================================================================================================================================================+ | CaptionWordWrap | CWW | false | Флаг отвечающий за функционал переноса слов. | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 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 | Стиль элемента (:pas:class:`TbtkGanttItemStyle`). Определяет форму элемента на диаграмме. | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Color | CO | $009600 (тёмно-зелёный) | Цвет элемента (:pas:class:`TColor`). | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | FillStyle | Fill | bsSolid | Задаёт шаблон заливки (:pas:class:`TBrushStyle`). Подробно: :pas:class:`TbtkGanttItem.FillStyle` | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 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**. | | | | | | | | | | Применяется к элементам стиля: :pas:class:`TbtkGanttItemStyle.gisSquare`, :pas:class:`TbtkGanttItemStyle.gisPipe`, :pas:class:`TbtkGanttItemStyle.gisRectangle`, | | | | | :pas:class:`TbtkGanttItemStyle.gisCircle`, :pas:class:`TbtkGanttItemStyle.gisDiamond`. | | | | | | | | | | Минимальная высота в пискелях для ``gisSquare``, ``gisPipe``,``gisRectangle`` равна **5**; для ``gisCircle``, ``gisDiamond`` - **10**. | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | BorderStyle | BS | psSolid | Стиль границы (:pas:class:`TPenStyle`). | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | BorderColor | BC | $000000 (чёрный) | Цвет границы (:pas:class:`TColor`). | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Center | CR | 50 | Задает центр фигуры по вертикали в процентах от высоты строки (**0-100%**), т.е., центру строки соответствует значение **50%**. | | | | | Использование данного параметра с параметром Height позволяет расположить несколько элементов на одной линии без их взаимного перекрытия. | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | MovingEnable | ME | 1 | Позволяет отключить возможность перемещения элемента с помощью мыши. | | | | | Влияет только если свойство :btk:frameprop:`Gantt.EnableMoving` установлено в **True**. | | | | | **1** — перемещение элемента разрешено; | | | | | **0** — перемещение элемента запрещено. | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ResizingEnable | RE | 1 | Управляет возможностью изменения размеров элемента с помощью мыши. | | | | | Влияет только если свойство :btk:frameprop:`Gantt.EnableResizing` установлено в **True**. | | | | | **1** — изменение размера разрешено; | | | | | **0** — изменение размера запрещено. | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | StartDateLimit | STL | null | Визуальное ограничение на минимальное значение положения левой границы элемента (левая граница изменения размера или перемещения элемента). | | | | | Ограничение отображается пунктиром в зависимости от свойства :btk:frameprop:`Gantt.DrawingItemsConstraint`. | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | StopDateLimit | SPL | null | Визуальное ограничение на максимальное значение положения правой границы элемента (правая граница изменения размера или перемещения элемента). | | | | | Ограничение отображается пунктиром в зависимости от свойства :btk:frameprop:`Gantt.DrawingItemsConstraint`. | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | StartDateConstraint | STC | null | Фактическое ограничение на максимальное значение положения левой границы элемента (левая граница изменения размера или перемещения элемента). | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | StopDateConstraint | SPC | null | Фактическое ограничение на максимальное значение положения правой границы элемента (правая граница изменения размера или перемещения элемента). | +-------------------------------------+-------------------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Актуальный формат ''''''''''''''''' .. code-block:: none :caption: Формат строки {Параметр}={значение};{Параметр}={значение}|{Параметр}={значение};{Параметр}={значение} - ``=`` — разделитель имени параметра и значения; - ``;`` — разделитель параметров; - ``|`` — разделитель элементов. При задании параметра можно использовать его полное или сокращённое имя. .. seealso:: :ref:`gantt_element_param_list` .. code-block:: none :caption: Пример задания двух процессов в одной линии 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; Устаревший формат ''''''''''''''''' .. warning:: Формат оставлен для совместимости. Использовать его не рекомендуется. .. code-block:: none :caption: Формат строки ID;StartDate;StopDate;Style;Color;Caption;FontColor|ID;StartDate;StopDate;Style;Color;Caption;FontColor - ``;`` — разделитель параметров; - ``|`` — разделитель элементов. Параметры передаются в фиксированном порядке, имя параметра не указывается. Первые три параметра являются обязательными. Даты задаются в формате ``dd.mm.yyyy hh:mm:ss``. .. code-block:: none :caption: Пример 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 .. _gantt_link_spec: Формат задания связей между элементами ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _gantt_link_param_list: Список параметров ''''''''''''''''' +----------------+-------------+--------------+----------------------------------------------------------------------------------------------------+ | Полное имя | Сокр. имя | По умолчанию | Описание | +================+=============+==============+====================================================================================================+ | FromID | FROM | Нет | Идентификатор элемента, от которого начинается линия. | +----------------+-------------+--------------+----------------------------------------------------------------------------------------------------+ | ToID | TO | Нет | Идентификатор элемента, к которому приходит линия. | +----------------+-------------+--------------+----------------------------------------------------------------------------------------------------+ | Direction | D | asEndBegin | Направление (:pas:class:`TbtkGanttLinkDirection`). | +----------------+-------------+--------------+----------------------------------------------------------------------------------------------------+ | Style | S | psSolid | Стиль (:pas:class:`TPenStyle`). | | | | | Все стили кроме **psSolid** и **psClear** работают только если толщина не превышает **1**. | +----------------+-------------+--------------+----------------------------------------------------------------------------------------------------+ | Thickness | T | 1 | Толщина в пикселях. | +----------------+-------------+--------------+----------------------------------------------------------------------------------------------------+ | Color | C | $000000 | Цвет. | | | | (чёрный) | Можно задавать как в числовом формате :pas:class:`TColor`, так и с использованием констант | | | | | (**ClBlack, ClWhite, ClRed, ClYellow, ClGreen, ClBlue** и др.) | +----------------+-------------+--------------+----------------------------------------------------------------------------------------------------+ Новый формат '''''''''''' .. code-block:: none :caption: Формат строки {Параметр}={значение};{Параметр}={значение}|{Параметр}={значение};{Параметр}={значение} - ``=`` — разделитель имени параметра и значения; - ``;`` — разделитель параметров; - ``|`` — разделитель элементов. При задании параметра можно использовать его полное или сокращённое имя. Перечень параметров с описанием представлен в таблице ниже. .. seealso:: :ref:`gantt_link_param_list`. .. code-block:: none :caption: Пример FROM=1212322001;TO=1212324001;D=asEndBegin;T=3;S=psDot;C=$0000FF Старый формат ''''''''''''' .. code-block:: none :caption: Формат строки FromID;ToID;Direction|FromID;ToID;Direction - ``;`` — разделитель параметров; - ``|`` — разделитель элементов. :ref:`Параметры ` передаются в фиксированном порядке, имя параметра не указывается. .. code-block:: none :caption: Пример 1212322001;1212324001;asBeginBegin|1212323001;1212325001;asBeginEnd|1212324001;1212326001 Формат задания схем таймлайна ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. attention:: В Global3 схемы не реализованы .. _yaml-format: YAML-документ ''''''''''''' **Поле** - Представляется в виде ключа и значения в формате ``ключ: значение`` - Ключ регистрозависимый - Значение регистронезависимое - Текстовые значения можно заключать в кавычки, двойные ``"`` или одинарные ``'`` **Список** - Как правило содержит однотипные элементы - Все пункты списка находятся на одном уровне вложенности и предваряются дефисом ``-`` **Вложенность** - Уровень вложенности увеличивается парой пробелов - Если на той же строке после ключа не указано значение, то значением считаются последующие строки с большим уровнем вложенности **Комментарий** - Комментарий начинается с ``#`` и продолжается до конца строки **Пример** .. code-block:: yaml - timeline_time_units_format_schema: meta: version: 1.0 locale: 'ru_RU' level_top: tuYear: formats: - "yyyy 'год'" - "yyyy 'г'" - "yyyy" align: Left .. _gantt_timeline_file_format: Файл схем временной шкалы ''''''''''''''''''''''''' - Записывается в :ref:`YAML-формате ` - Содержит :ref:`схемы формата ` и :ref:`схемы шкал ` в виде списка - Названия схем задаются маленькими латинскими буквами, цифрами и ``_`` (без пробелов) .. code-block:: yaml :caption: Пример файла - timeline_time_units_format_schema: <Схема форматов единиц измерения времени> - timeline_scales_schema: <Схема шкал таймлайна> .. seealso:: Установить для таймлайна файл схем временной шкалы можно с помощью свойства :pas:attr:`TbtkGantt.ScalesSchema` .. _gantt_format_schema: Схема форматов единиц значения времени '''''''''''''''''''''''''''''''''''''' **Характеристики** - Записывается в :ref:`YAML-формате ` - Описывает форматы отображения единиц измерения времени на всех возможных уровнях шкалы **Задание форматов** - Уровни описываются от верхнего к нижнему (level_top, level_middle, level_bottom) - Описание единицы времени состоит из списка форматов ``formats`` и выравнивания надписи ``align`` - Можно задать индивидуальное описание единицы времени каждого уровня - Форматы задаются в соответствии с :ref:`форматом даты "Бизнес Технологии" ` - Форматы должны быть упорядочены от наиболее длинной к наиболее короткой форме записи единицы времени **Наследование** - Описания единиц времени наследуются от верхних уровней к нижним: если формат или выравнивание не задано, оно копируется из вышестоящего уровня **Значения по умолчанию** - Значение формата по умолчанию: ``dd.mm.yy HH:mm`` - Значения выравнивания по умолчанию: - Для уровней ``level_top``, ``level_middle`` — ``Left`` - Для уровня ``level_bottom`` — ``Center`` .. code-block:: yaml :caption: Пример схемы форматов с пояснениями - timeline_time_units_format_schema: # Название схемы форматов # Общая информация о схеме meta: version: <версия> # Версия. Например, 1.0 locale: <локаль> # Локаль. Например, 'ru_RU' # Информация о верхнем уровне level_top: : # Описание форматов единицы времени 1 на верхнем уровне formats: # Форматы указываются списком: - - align: # Выравнивание надписи на интервале. Возможные значения: Above, Left, Center, Right : # Описание форматов единицы времени 2 на верхнем уровне <Описание> <...> # Информация о среднем уровне level_middle: : # Описание форматов единицы времени 1 на среднем уровне formats: - align: <...> # Информация о нижнем уровне level_bottom: {} # Уровень не содержит элементов, все описания форматов будут скопированы из вышестоящего уровня level_middle .. seealso:: :ref:`Схема форматов по умолчанию ` .. _gantt_scales_schema: Схема шкал '''''''''' **Характеристики** - Записывается в :ref:`YAML-формате ` - Описывает возможные шкалы с заданным числом уровней (:pas:class:`TbtkScaleLevelCount`) - Каждый уровень каждой шкалы задаётся :term:`описателем единицы измерения времени <Описатель единицы измерения времени>`. Также можно напрямую задать формат и выравнивание, они используются при генерации результирующей схемы. .. seealso:: :ref:`gantt_result_schema` .. code-block:: yaml :caption: Пример схемы шкал с пояснениями - 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;' # Формат, заданный напрямую .. seealso:: :ref:`Схема шкал по умолчанию ` .. _gantt_result_schema: Результирующая схема шкал ''''''''''''''''''''''''' Результирующая схема шкал получается путём комбинации :ref:`схемы шкал ` со :ref:`схемой форматов `. Каждая шкала из схемы шкал копируется в результирующую схему несколько раз, чтобы содержать каждое возможное значение формата единицы времени на каждом из своих уровней. Значение формата единицы времени в любом уровне шкалы можно задать напрямую при его описании в схеме шкал. Если же оно не задано, то возможные форматы берутся из схемы форматов для данной единицы измерения времени на данном уровне шкалы. При этом шкала копируется несколько раз, так, чтобы содержать каждое из возможных значений формата. .. seealso:: :ref:`Пример построения результирующей схемы шкал ` Считать результирующую схему можно с помощью свойства :pas:attr:`TbtkGantt.ScalesSchema` .. _gantt_active_scale_schema: Схема активной шкалы '''''''''''''''''''' **Характеристики** - Записывается в :ref:`YAML-формате ` - Описывает активную шкалу после открытия фрейма - Может не совпадать с какой-либо шкалой из схемы шкал .. _gantt_active_scale_schema_example: .. code-block:: yaml :caption: Пример схемы активной шкалы - 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 Примеры ^^^^^^^ Запросы и методы '''''''''''''''' В примере используется класс с коллекцией. Класс содержит данные с древовидной структурой, в коллекции хранятся даты начала и окончания процессов. .. code-block:: sql :caption: Запрос для режима, когда в одном узле может быть только один элемент. 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 .. code-block:: sql :caption: Запрос для режима, когда в одном узле могут быть несколько элементов. 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 .. code-block:: sql :caption: Функции 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; .. _gantt_format_schema_default: Схема форматов '''''''''''''' .. code-block:: yaml :caption: Схема форматов по умолчанию - 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 .. _gantt_scales_schema_default: Схема шкал '''''''''' .. code-block:: yaml :caption: Схема шкал по умолчанию - 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 .. _gantt_result_schema_example: Результирующая схема шкал ''''''''''''''''''''''''' .. code-block:: yaml :caption: Схема форматов - 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 .. code-block:: yaml :caption: Схема шкал - timeline_scales_schema: meta: version: 1.0 locale: 'ru_RU' levels: slcMiddle scales: - - time_unit: tuYear - - time_unit: tuMonth format: MMM .. code-block:: yaml :caption: Результирующая схема - 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