Перейти к основному содержимому

addLinkLayer

информация

Эта функция доступна только в PRO-версии.

Description

Отображает дополнительный слой с кастомными элементами для связей в области timeline

addLinkLayer: (func: AdditionalLinkLayer['LinkLayerRender'] | AdditionalLinkLayer['LinkLayerConfig']) => string

Parameters

  • func - (required) LinkLayerRender | LinkLayerConfig - функция рендера или объект конфигурации

Returns

  • layerId - (string) - DOM-элемент, представляющий слой, который будет отображён

Example

gantt.attachEvent("onGanttReady", function () {
const link_types = ["FS", "SS", "FF", "SF"]
gantt.addLinkLayer(function (link) {
const node = gantt.getLinkNode(link.id);
if (node){
const el = document.createElement('div');
el.className = 'link_layer';
el.style.left = (node.childNodes[2].offsetLeft + 20) + 'px'
el.style.top = (node.childNodes[2].offsetTop - 6) + 'px'
el.innerHTML = link_types[link.type];
return el;
}
return false;
});
});

Details

Аргумент может иметь один из следующих типов:

  • linkLayerRender (link, timeline, config, viewport): HTMLElement|boolean|void - функция, которая принимает объект связи и возвращает DOM-элемент для отображения в слое.

    • link - (Link) - объект связи
    • timeline? - (any) - необязательно, представление timeline
    • config? - (GanttConfigOptions) - необязательно, объект конфигурации Gantt
    • viewport? - (LayerViewport) - необязательно, объект viewport
  • linkLayerConfig - (object) - объект конфигурации для дополнительного слоя связей, со следующими свойствами:

    • id? - (string | number) - необязательно, ID слоя
    • renderer - (object) - обязательно, объект, отвечающий за рендеринг элементов слоя
      • render - (LinkLayerRender) - функция, возвращающая HTML-элемент для рендера
      • update? - (Function): void - необязательно, функция для обновления отрендеренных HTML-элементов
        • link - (Link) - объект связи
        • node - (HTMLElement) - контейнер отрендеренного узла
        • timeline? - (any) - необязательно, представление timeline
        • config? - (GanttConfigOptions) - необязательно, объект конфигурации Gantt
        • viewport? - (LayerViewport) - необязательно, объект viewport
      • onrender? - (Function): void - необязательно, вызывается после завершения рендера, полезно для рендера нативных компонентов (например, с помощью ReactDOM.render)
        • link - (Link) - объект связи
        • node - (HTMLElement) - контейнер отрендеренного узла
        • view? - (any) - необязательно, ячейка layout, куда добавлен слой (по умолчанию: timeline)
      • getRectangle? - (Function): { left: number, top: number, height: number, width: number } | void - необязательно, возвращает координаты прямоугольника viewport
        • link - (Link) - объект связи
        • view? - (any) - необязательно, ячейка layout, куда добавлен слой (по умолчанию: timeline)
        • config? - (GanttConfigOptions) - необязательно, объект конфигурации Gantt
        • gantt? - (GanttStatic) - необязательно, экземпляр Gantt
      • getVisibleRange - (Function): {start: number, end: number} | undefined | void - необязательно, возвращает объект видимого диапазона
        • gantt? - (GanttStatic) - необязательно, экземпляр Gantt
        • view? - (any) - необязательно, ячейка layout, куда добавлен слой (по умолчанию: timeline)
        • config? - (GanttConfigOptions) - необязательно, объект конфигурации Gantt
        • datastore? - (any) - необязательно, объект хранилища связей
        • viewport? - (LayerViewport) - необязательно, объект viewport
    • container? - (HTMLElement) - необязательно, контейнер для слоя
    • topmost? - (boolean) - необязательно, если true, элемент слоя будет отображаться поверх связи
    • filter? - (Function): boolean - необязательно, функция, которая принимает объект связи и возвращает false, чтобы пропустить рендеринг для этой связи
      • link - (Link) - объект связи
  • Имейте в виду, что кастомные слои будут очищены после повторного вызова gantt.init

  • Также вызов gantt.resetLayout() сбросит кастомные слои. Чтобы они оставались видимыми, необходимо повторно применить gantt.addLinkLayer после вызова resetLayout.