Verwendung von Gantt auf dem Server

Manchmal ist es notwendig, die spezialisierte Logik von dhtmlxGantt unabhängig vom eigentlichen Gantt-Diagramm zu nutzen. Zum Beispiel:

  • Wenn Aufgaben aus anderen Quellen (wie einer mobilen App) aktualisiert werden und eine automatische Planung erforderlich ist, um die Zeitplanung der zugehörigen Aufgaben anzupassen.
  • Wenn mehrere Benutzer gleichzeitig an derselben App arbeiten und es notwendig ist, den Zeitplan zu synchronisieren und zu validieren.
  • Wenn Berechnungen oder Zeitplananalysen serverseitig durchgeführt werden müssen.

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.

Nutzungsbedingungen

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.

Versionierung

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.

Hinzufügen der Bibliothek zu Ihrem Projekt

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());

Einschränkungen

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:

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.

Zurück nach oben