Иногда возникает необходимость использовать специализированную логику dhtmlxGantt отдельно от самого диаграммы Gantt, например:
Для поддержки таких сценариев доступна отдельная сборка dhtmlxGantt, которая работает на сервере в среде Node.js.
DHTMLX Gantt для Node.js предоставляет те же возможности, что и Commercial/Enterprise/Ultimate пакеты, включая доступ к методу Gantt.getGanttInstance для создания новых экземпляров Gantt.
Серверный модуль Node.js для DHTMLX Gantt является дополнением к клиентской версии. Его можно добавить за дополнительную плату при покупке Gantt по любой коммерческой лицензии (Individual, Commercial, Enterprise). Лицензия Ultimate включает этот модуль по умолчанию.
Если у вас уже есть основная библиотека dhtmlxGantt, модуль Node.js можно приобрести отдельно, после чего будет предоставлена ссылка на серверную версию.
Пакет Node.js для dhtmlxGantt использует ту же схему нумерации версий, что и браузерные пакеты (например, v7.0.0 — первая версия для Node.js).
Рекомендуется использовать одинаковые версии библиотек Gantt на клиентской и серверной сторонах.
Пакет dhtmlxGantt для Node.js можно установить локально:
"dependencies": {
"@dhtmlx/gantt-node": "file:../../gantt_7.0.0_node"
...
}
Также можно импортировать dhtmlxgantt.node.js напрямую в коде, как показано ниже:
import { Gantt } from "@dhtmlx/gantt-node";
const gantt = Gantt.getGanttInstance({
plugins:{
auto_scheduling: true,
},
config: {
work_time: true,
duration_unit: "hour",
auto_scheduling: true,
auto_scheduling_strict: true,
auto_scheduling_initial: false
},
data: {
tasks: [
{ id: 1, text: "Project #1", type: "project", parent: 0 },
{ id: 2, start_date: "05-04-2020 00:00", text: "Task #1", duration: 1,
parent: 1, type: "task" },
{ id: 3, start_date: "05-04-2020 00:00", text: "Task #2", duration: 3,
parent: 1, type: "task" },
{ id: 4, start_date: "05-04-2020 00:00", text: "Task #3", duration: 3,
parent: 1, type: "task" },
{ id: 5, start_date: "05-04-2020 00:00", text: "Task #4", duration: 3,
parent: 1, type: "task" },
{ id: 6, start_date: "05-04-2020 00:00", text: "Task #5", duration: 1,
parent: 1, type: "task" }
],
links: [
{ id: 1, source: 1, target: 2, type: "0" },
{ id: 2, source: 2, target: 3, type: "0" },
{ id: 3, source: 3, target: 4, type: "0" },
{ id: 4, source: 4, target: 5, type: "0" },
{ id: 5, source: 5, target: 6, type: "0" }
]
},
events:{
onAfterAutoSchedule: function(taskId, updatedTasks) {
console.log("Following tasks were auto scheduled:");
console.table(updatedTasks.map((taskId) => {
return {
id: taskId,
text: this.getTask(taskId).text
};
}));
},
onParse: function() {
console.log("Loaded data:")
console.table(this.serialize().data);
},
onGanttReady: () => {
console.log("Running dhtmlxGantt on the backend");
}
}
});
console.table(gantt.serialize());
Версия dhtmlxGantt для Node.js предоставляет тот же основной API, что и браузерная версия.
Однако некоторые клиентские методы недоступны или не функционируют в серверной библиотеке, в том числе:
Оценочная версия dhtmlxGantt для Node.js имеет ограниченный функционал: загрузка до 75 задач или связей. Если будет загружен больший объём данных, обработаны будут только первые 75 элементов.