Datenmodell
Gantt arbeitet mit zwei Hauptrepräsentationen von Aufgaben- und Verknüpfungsdaten:
- Serialisierte: JSON-kompatible Strukturen mit Datumsangaben als Strings, verwendet in Serverantworten, gespeicherten JSON-Dateien und DataProcessor-Austausch
- Laufzeit: client-seitige Objekte mit
Date-Feldern und berechneten$-präfixierten Eigenschaften, zurückgegeben von Methoden wie gantt.getTask() und gantt.getLink()
Wenn Sie Gantt Daten bereitstellen (statt sie zurückzulesen), können Datumsfelder entweder ein Date-Objekt oder einen string enthalten. Der Typ TaskInput erfasst diese nachsichtige Eingabeform, damit Sie sich nicht auf Task oder SerializedTask festlegen müssen für Daten, die Sie erstellen oder im Anwendungszustand halten.
Das kanonische Top-Level-Payload, das an gantt.parse() übergeben wird, ist GanttData.
Zentrale Laufzeit- und serialisierte Typen werden von @dhx/gantt exportiert. Wrapper-Pakete exportieren und verwenden diese Typen in ihren öffentlichen APIs erneut, aber die genaue API-Oberfläche der Eigenschaften unterscheidet sich je nach Wrapper.
Datenlebenszyklus
Daten durchlaufen zwei Transformationen:
- Laden: serialisierte Aufgaben- und Link-Daten werden an
gantt.parse()odergantt.load()übergeben. Gantt wandelt Datumsstrings inDate-Objekte um und fügt berechnete$-präfixierte Felder hinzu, wodurch Laufzeit-ObjekteTaskundLinkentstehen. - Speichern: wenn Änderungen über den DataProcessor an den Server gesendet werden, werden Datumsangaben wieder in Strings serialisiert und temporäre
$-präfixierte Felder entfernt.
Siehe Data Loading und Server-Side Integration für Verhaltensdetails.
SerializedTask
Die JSON-kompatible Task-Form. Datumsfelder sind Strings, sodass dieses Objekt sicher durch JSON.stringify() / JSON.parse() durchlaufen werden kann.
interface SerializedTask {
id?: string | number;
start_date?: string;
end_date?: string;
duration?: number;
text?: any;
type?: string;
parent?: string | number;
progress?: number;
open?: boolean;
auto_scheduling?: boolean;
unscheduled?: boolean;
constraint_date?: string;
constraint_type?: string;
deadline?: string;
color?: string;
textColor?: string;
progressColor?: string;
bar_height?: number;
row_height?: number;
hide_bar?: boolean;
baselines?: SerializedBaseline[];
calendar_id?: string | number;
editable?: boolean;
readonly?: boolean;
render?: string;
resource?: string[];
rollup?: boolean;
target?: string;
[customProperty: string]: any;
}
Für eine sinnvolle geplante Aufgabe in serialized JSON geben Sie eine der gültigen Planungskombinationen an:
start_date+durationstart_date+end_dateduration+end_date
Wenn unscheduled: true, können Datumsangaben weggelassen werden.
Für detaillierte Beschreibungen der Eigenschaften siehe Task Properties.