Available only in PRO Edition
Эта функция доступна исключительно в PRO-версии.
Библиотека включает расширение группировки, которое позволяет организовывать задачи на основе любого атрибута задачи.
Чтобы начать работу с этим расширением, убедитесь, что вы его включили, используя метод gantt.plugins.
<!DOCTYPE html>
<html>
<head>
<script src="codebase/dhtmlxgantt.js"></script>
<link href="codebase/dhtmlxgantt.css" rel="stylesheet">
</head>
<body>
gantt.plugins({
grouping: true
});
//ваш код будет здесь
</body>
</html>
Related sample: Tasks grouping
Чтобы сгруппировать задачи на основе определенного критерия, используйте метод groupBy:
var data = {
tasks:[{id:1, priority:1, start_date:"02-04-2020 00:00", ...}, ...]
};
gantt.groupBy({
relation_property: "priority",
groups: [{key:1, label: "High"},{key:2, label: "Normal"},{key:3, label: "Low"}],
group_id: "key",
group_text: "label"
});
Вот разбор параметров:
var data = {
tasks:[{id:1, priority:1, start_date:"02-04-2020 00:00", ...}, ...} };
gantt.groupBy({
relation_property: "priority", ...
});
Этот атрибут также может использоваться для создания многоуровневой структуры групп:
gantt.groupBy({
relation_property: "priority",
groups: [
{key:0, label: "High"},
{key:4, label: "Normal"},
{key:5, label: "Low"},
//многоуровневые группы
{key:1, label: "Give High Attention", "priority":0},
{key:2, label: "Resolve Immediately", "priority":0},
{key:3, label: "Keep For Next Release", "priority":5}
],
group_id: "key",
group_text: "label"
});
gantt.groupBy({
groups: [
{key:1, label: "High"},
{key:2, label: "Normal"},
{key:3, label: "Low"}
],
group_id: "key",
group_text: "label"
});
Некоторые важные замечания:
1. Каждый объект группы должен иметь как минимум два свойства (но может включать больше): идентификатор и текстовую метку, определяемые 'group_id' и 'group_text' соответственно. По умолчанию они установлены как key и label. Вы можете настроить эти параметры (кроме "id") при условии, что они определены в массиве группы.
Избегайте использования "id" в качестве значения, так как Gantt создает виртуальные групповые задачи во время группировки и присваивает им 'group_id' и 'group_text'. Группированные задачи будут иметь свойства 'key' и 'value' по умолчанию. Изменение идентификаторов задач по умолчанию может нарушить структуру дерева.
2. Элементы группы добавляются в набор данных как элементы типа 'project' с включенным свойством 'readonly'. Они могут быть идентифицированы по свойству '$virtual' и обрабатываться как обычные элементы данных:
gantt.templates.task_class=function(start, end, task){
if(task.$virtual)
return "summary-bar";
};
3. Оригинальные задачи типа 'project' не будут отображаться в режиме группировки, но останутся доступными через API.
Учтите, что группа по умолчанию включает задачи, которые не подходят для других групп. Однако она не будет включать задачи с relation_property, установленным как значение строка|число.
Чтобы снять группировку, вызовите метод groupBy с аргументом false:
Сброс текущей группировки
gantt.groupBy(false);
Когда группы используются в нескольких элементах на странице, вы можете избежать повторения, определив группы как именованную коллекцию.
gantt.serverList("priority", [
{key:1, label: "High"},
{key:2, label: "Normal"},
{key:3, label: "Low"}
]);
gantt.groupBy({
groups: gantt.serverList("priority"),
relation_property: "priority",
group_id: "key",
group_text: "label"
});
По умолчанию оригинальная структура дерева Gantt скрыта в режиме группировки, и все задачи рассматриваются как дочерние элементы первого уровня в их соответствующих группах.
Чтобы сохранить оригинальную структуру подзадач в группах, включите настройку save_tree_structure:
gantt.groupBy({
groups: [
{ key: 1, label: "Ilona" },
{ key: 2, label: "John" },
{ key: 3, label: "Mike" }
],
relation_property: "owner",
group_id: "key",
group_text: "label",
default_group_label: "Not Assigned",
save_tree_structure: true /* ! */
});
Related sample: Save tree structure when grouping tasks
К началу