Иногда возникает необходимость использовать специализированную логику dhtmlxGantt отдельно от самого диаграммы Ганта. Например:
Для решения этих задач существует отдельная сборка dhtmlxGantt, предназначенная для работы на серверной стороне в среде Node.js.
Версия dhtmlxGantt для Node.js включает те же функции, что и в коммерческих, корпоративных и максимальных пакетах. Это включает метод Gantt.getGanttInstance, который позволяет создать новый экземпляр Gantt.
Серверный модуль для dhtmlxGantt на Node.js является дополнительным пакетом к клиентской версии Gantt. Вы можете приобрести сборку Node.js в качестве дополнительной опции при покупке Gantt по любой коммерческой лицензии (Индивидуальной, Коммерческой, Корпоративной). Лицензия Ultimate уже включает её.
Если вы уже приобрели основную библиотеку dhtmlxGantt, модуль Node.js можно приобрести отдельно. После покупки вы получите ссылку для загрузки серверной версии.
Пакет Node.js для dhtmlxGantt следует той же схеме версионирования, что и браузерные пакеты. Например, версия v7.0.0 является первой версией пакета Gantt для 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("Следующие задачи были автоматически запланированы:");
console.table(updatedTasks.map((taskId) => {
return {
id: taskId,
text: this.getTask(taskId).text
};
}));
},
onParse: function() {
console.log("Загруженные данные:")
console.table(this.serialize().data);
},
onGanttReady: () => {
console.log("Запуск dhtmlxGantt на серверной стороне");
}
}
});
console.table(gantt.serialize());
Версия dhtmlxGantt для Node.js предлагает тот же основной API, что и браузерная версия. Однако некоторые клиентские методы недоступны или не будут работать в серверной среде:
gantt.message
, gantt.alert
и gantt.confirm
, будут неопределены.gantt.ajax
, gantt.load и маршруты по умолчанию для dataProcessor не будут работать. Вместо этого следует использовать gantt.parse и пользовательскую маршрутизацию для dataProcessor.Оценочная версия dhtmlxGantt для Node.js имеет ограничение в 75 задач или связей. Если вы попытаетесь загрузить больше, будут обработаны только первые 75 элементов.