Управление элементами
Вы можете управлять элементами Diagram с помощью Diagram Editor. В этой статье рассматривается, как управлять элементами DHTMLX Diagram через API компонента.
Обзор
Эта статья содержит разделы, посвящённые следующим темам:
- как автоматически располагать фигуры в иерархическом порядке;
- как выполнять ряд операций с элементами, в частности:
- добавлять/обновлять/удалять элементы;
- проверять существование элемента в диаграмме и получать его;
- выбирать элемент;
- прокручивать к нужному элементу, чтобы сделать его видимым на экране, если в диаграмме много элементов;
- разворачивать/сворачивать элементы;
- находить элементы, соответствующие определённым критериям;
- фильтровать диаграмму, чтобы отображать определённые элементы;
- как управлять перетаскиванием дочерних элементов группы;
- как работать с дорожкой и её ячейками, а именно:
- устанавливать/ сбрасывать активную дорожку;
- получать тип подзаголовка дорожки;
- добавлять/удалять/перемещать столбец/строку;
- получать id/индекс ячейки и проверять, какие действия можно выполнить над ячейкой.
Автоматическая расстановка фигур
Библиотека предоставляет возможность реализовать автоматическое размещение для фигур и соединителей диаграммы, инициализированной в режиме по умолчанию. Автоматическое размещение позволяет:
- сразу располагать связанные фигуры в симметричном порядке;
- располагать данные, загруженные в формате JSON или полученные с сервера, в иерархической структуре.
Чтобы выполнить автоматическое размещение, используйте метод autoPlace(). Метод может принимать один параметр:
config— (object) необязательный, объект с настройками конфигурации автоматического размещения. Объект может содержать следующие свойства:mode— (string) необязательный, режим соединения фигур,"direct"(по умолчанию) или"edges"graphPadding— (number) необязательный, задаёт расстояние между несвязанными диаграммами, по умолчанию 200placeMode— (string) необязательный, задаёт режим размещения фигур,"orthogonal"(по умолчанию) или"radial"itemPadding— (number) необязательный, минимальный отступ между элементами (минимальное значение — 1), по умолчанию 20levelPadding— (number) необязательный, минимальный отступ между уровнями иерархии (минимальное значение — 1), по умолчанию 20
Метод autoPlace() работает только в режиме диаграммы по умолчанию и только для фигур. Автоматическое размещение не работает, если вы используете группы или дорожки.
const diagram = new dhx.Diagram("diagram_container");
diagram.data.parse(data);
diagram.autoPlace({
mode: "edges",
graphPadding: 100,
placeMode: "radial",
itemPadding: 10,
levelPadding: 10
});
Связанный пример: Diagram. Режим по умолчанию. Автоматическое размещение
Если не передать параметр в метод, будут применен ы настройки по умолчанию.
const diagram = new dhx.Diagram("diagram_container");
diagram.data.parse(data);
diagram.autoPlace();
Также есть возможность настроить параметры автоматического размещения с помощью конфигурационной опции autoplacement компонента Diagram и применения метода autoPlace(). В приведённом ниже примере показано, как сгенерировать и расположить радиальный набор данных с помощью автоматического размещения.
const diagram = new dhx.Diagram("diagram_container", {
scale: 0.3,
autoplacement: {
placeMode: "radial",
mode: "direct"
}
});
diagram.data.parse(getNodes(120, 5));
diagram.autoPlace({
itemPadding: 10,
levelPadding: 10,
graphPadding: 100,
});

Связанный пример: Diagram. Режим по умолчанию. Расположение сгенерированного радиального набора данных с помощью автоматического размещения
Добавление элемента
Чтобы добавить новый элемент в диаграмму, примените метод add() объекта data.
diagram.data.add({ id: "3.2", text: "New Item", parent: "3" });
Например, мы добавили новый объект фигуры со следующими атрибутами:
id— (string|number) уникальный id фигурыtext— (string) текст, который будет отображаться в фигуреparent— (string|number) id родительской фигуры
Вы можете просмотреть все доступные свойства объектов фигур в разделе API.
Связанный пример: Diagram. Данные. Добавление/удаление элемента
Получение элемента
Вы можете получить объект элемента, передав его id в метод getItem() объекта data. Например:
const shape = diagram.data.getItem(1);
После получения элемента вы можете обращаться к его исходным свойствам следующим образом:
const shape = diagram.data.getItem(1);
const text = shape.text;
Получение id элемента
Если id элемента неизвестен, вы можете использовать метод getId(), чтобы получить его. Метод принимает индекс элемента в качестве параметра:
const id = diagram.data.getId(0); // -> возвращает "1"
Получение индекса элемента
Вы можете получить индекс элемента, передав его id в метод getIndex():
const id = diagram.data.getIndex("1"); // -> возвращает 0