Swimlanes
Обзор Swimlane
Swimlane представляет собой прямоугольный элемент Diagram, состоящий из ячеек (или дорожек), расположенных вертикально или горизонтально. Каждая ячейка (type: "$sgroup") может включать дочерние элементы, такие как фигуры или Groups.
Swimlanes доступны только в режиме по умолчанию для Diagram/Diagram Editor (type: "default").
Swimlanes помогут визуализировать любой процесс (бизнес-процесс, производственный, сервисный или любой другой) или его отдельные части от начала до конца.
Создание Swimlanes
Чтобы создать Swimlane, укажите type: "$swimlane" и определите структуру layout объекта Swimlane при подготовке набора данных для загрузки в Diagram:
const data = [
// настройка swimlane
{
type: "$swimlane",
height: 500,
width: 850,
// layout swimlane должен содержать не менее одной ячейки
layout: [
[1] // ячейка с id:"1" и type:"$sgroup"
]
}
];
// инициализация Diagram
const diagram = new dhx.Diagram("diagram_container");
diagram.data.parse(data);
Приведённый выше пример кода показывает простейшую конфигурацию Swimlane с настройками по умолчанию (т.е. без заголовка и подзаголовка).
Структура Swimlane
Структура Swimlane может быть весьма разной. Она определяется через свойство конфигурации layout объекта Swimlane. Это свойство позволяет располагать ячейки Swimlane по строкам и столбцам.
Всё, что нужно сделать - указать массив с матрицей в качестве значения этого свойства. Матрица может быть как одним массивом:
// swimlane с 3 столбцами
layout: [
[1, 2, 3]
]
так и набором массивов, разделённых запятыми:
// swimlane с 2 строками и 3 столбцами
layout: [
[1, 2, 3],
[4, 5, 6]
]
где:
- каждая ячейка в layout имеет уникальный номер;
- количество массивов определяет количество строк (если массивов несколько, количество ячеек должно быть одинаковым во всех массивах);
- количество ячеек в массиве определяет количество столбцов.
Свойства объекта Swimlane
Ознакомьтесь с полным списком свойств конфигурации объекта Swimlane, чтобы иметь возможность создавать различные Swimlanes с разными настройками в зависимости от ваших потребностей.
Настройка ячейки Swimlane
При инициализации Swimlane на странице id ячейки Swimlane, а также её конфигурация, генерируются автоматически. Чтобы изменить конфигурацию ячейки по умолчанию, создайте объект ячейки, который должен включать атрибуты type: "$sgroup" и id, и укажите в нём необходимые настройки конфигурации:
const data = [
// настройка swimlane
{
type: "$swimlane",
id: "main",
height: 500,
width: 850,
layout: [
[1, 2, 3]
]
},
// настройка ячейки swimlane
{
type: "$sgroup",
id: 3,
style: {
fill: "#D4DAE4"
}
}
];
Свойства объекта ячейки
Ознакомьтесь с полным списком свойств конфигурации ячейки Swimlane.
Группировка ячеек
Если для каждой ячейки указан уникальный номер, все ячейки будут отрисованы с границами:
layout: [
[1, 2, 3],
[4, 5, 6]
]
При необходимости вы можете сгруппировать диапазон ячеек и убрать границу(ы) между ними. Для этого выберите любую ячейку из диапазона и замените уникальные номера ячейки(ек) из диапазона номером этой ячейки.
Ниже приведён пример группировки первых двух ячеек, расположенных в первой строке:
layout: [
[1, 1, 3],
[4, 5, 6]
]
Результат будет выглядеть следующим образом:
Ниже приведён пример группировки ячеек, расположенных во втором столбце:
layout: [
[1, 2, 3],
[4, 2, 6]
]
Результат:
Связанный пример: Редактор Diagram. Режим по умолчанию. Настройка столбцов и строк в Swimlanes
Размеры Swimlane и её ячеек
Размер Swimlane определяется атрибутами конфигурации width и height Swimlane.
const data = [
// настройка swimlane
{
type: "$swimlane",
id: "main",
height: 500,
width: 850,
layout: [
[1, 2, 3]
]
}
];
Ширина ячейки
Ширина ячейки зависит от ширины Swimlane, количества столбцов и высоты левого/правого заголовка и подзаголовка Swimlane. Например:
const data = [
{
type: "$swimlane",
id: "main",
height: 500,
width: 830,
layout: [
// 3 столбца
[1, 2, 3]
],
header: {
position: "left",
height: 40
},
subHeaderRows: {
enable: true,
position: "left",
height: 40
}
}
];
Ширина каждой ячейки может быть рассчитана как (830-40-40)/3 = 250.
Высо та ячейки
Высота ячейки зависит от высоты Swimlane, количества строк и высоты верхнего/нижнего заголовка и подзаголовка Swimlane. Например:
const data = [
{
type: "$swimlane",
id: "main",
height: 500,
width: 830,
layout: [
// 2 строки
[1, 2, 3],
[4, 5, 6]
],
header: {
position: "top",
height: 40
},
subHeaderCols: {
enable: true,
position: "top",
height: 40
}
}
];
Высота каждой ячейки может быть рассчитана как (500-40-40)/2 = 210.