Manchmal ist es notwendig, die spezialisierte Logik von dhtmlxGantt unabhängig vom eigentlichen Gantt-Diagramm zu nutzen. Zum Beispiel:
Um diese Szenarien abzudecken, gibt es einen separaten Build von dhtmlxGantt, der auf der Serverseite in einer Node.js-Umgebung ausgeführt werden kann.
Die Node.js-Version von dhtmlxGantt umfasst dieselben Funktionen wie die Commercial-, Enterprise- und Ultimate-Pakete. Dazu gehört die Gantt.getGanttInstance-Methode, die es Ihnen ermöglicht, eine neue Gantt-Instanz zu erstellen.
Das Node.js-Servermodul für dhtmlxGantt ist ein Zusatzpaket zur clientseitigen Version von Gantt. Sie können den Node.js-Build als zusätzliche Option erwerben, wenn Sie Gantt unter einer kommerziellen Lizenz kaufen (Individual, Commercial, Enterprise). Die Ultimate-Lizenz enthält es bereits.
Wenn Sie die Hauptbibliothek von dhtmlxGantt bereits gekauft haben, kann das Node.js-Modul separat erworben werden. Nach dem Kauf erhalten Sie einen Link zum Herunterladen der serverseitigen Version.
Das Node.js-Paket für dhtmlxGantt folgt demselben Versionierungsschema wie die Browserpakete. Zum Beispiel ist v7.0.0 die erste Version des Gantt Node.js-Pakets.
Es wird empfohlen, dieselbe Version der Gantt-Bibliothek sowohl auf der Client- als auch auf der Serverseite zu verwenden.
Um dhtmlxGantt für Node.js in Ihr Projekt einzubinden, können Sie es als lokales Paket installieren:
"dependencies": {
"@dhtmlx/gantt-node": "file:../../gantt_7.0.0_node"
...
}
Alternativ können Sie dhtmlxgantt.node.js
direkt in Ihrem Code importieren:
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("Folgende Aufgaben wurden automatisch geplant:");
console.table(updatedTasks.map((taskId) => {
return {
id: taskId,
text: this.getTask(taskId).text
};
}));
},
onParse: function() {
console.log("Geladene Daten:")
console.table(this.serialize().data);
},
onGanttReady: () => {
console.log("dhtmlxGantt läuft im Backend");
}
}
});
console.table(gantt.serialize());
Die Node.js-Version von dhtmlxGantt bietet dieselbe Kern-API wie die Browserversion. Allerdings sind einige clientseitige Methoden entweder nicht verfügbar oder funktionieren in der Serverumgebung nicht:
gantt.message
, gantt.alert
und gantt.confirm
sind undefiniert.gantt.ajax
-API, gantt.load und die standardmäßigen dataProcessor-Routings nicht funktionieren. Stattdessen sollten Sie gantt.parse und benutzerdefinierte Routen für den dataProcessor verwenden.Die Evaluierungsversion von dhtmlxGantt für Node.js hat ein Limit von 75 Aufgaben oder Verknüpfungen. Wenn Sie versuchen, mehr zu laden, werden nur die ersten 75 Elemente verarbeitet.