Zum Hauptinhalt springen

Daten laden

dhtmlxScheduler kann Daten in mehreren Formaten laden. Die meisten Anwendungen verwenden JSON. iCalendar (.ics) und XML werden ebenfalls zur Kompatibilität oder für Import-Szenarien unterstützt.

Verwandte Anleitungen

Daten aus einem Inline-Datensatz laden

Um Daten aus einem Inline-Datensatz zu laden, verwenden Sie die parse() Methode:

scheduler.init("scheduler_here", new Date(2027, 4, 1), "month");
...
scheduler.parse([
{ id: "1", text: "Meeting", start_date: "2027-05-11 14:00", end_date: "2027-05-11 17:00" },
{ id: "2", text: "Conference", start_date: "2027-05-15 12:00", end_date: "2027-05-18 19:00" },
{ id: "3", text: "Interview", start_date: "2027-05-24 09:00", end_date: "2027-05-24 10:00" }
]);

Verwandte Beispiele

Verwandte API

Verwandte Anleitungen

Daten aus einer Datei laden

Um Daten aus einer Datei zu laden, verwenden Sie die load() Methode:

scheduler.init("scheduler_here", new Date(2027, 4, 1), "month");
...
scheduler.load("data.json"); // loading data from a file

Verwandte Beispiele

Verwandte API

Verwandte Anleitungen

Daten aus dem Backend laden

Laden Sie Daten von Ihrem Backend, indem Sie einen REST-Endpunkt bereitstellen, der Scheduler-Ereignisse im JSON-Format zurückgibt.

  • Die serverseitige Implementierung hängt von Ihrem Stack ab. Beispielsweise können Sie in Node.js eine Route hinzufügen, die Ereignisdaten zurückgibt:
app.get("/data", async (request, response) => {
const events = await db.event.find().toArray();
response.json(events);
});
  • Auf der Client-Seite rufen Sie load() mit der Daten-URL auf:
scheduler.init("scheduler_here", new Date(2027, 4, 1), "month");
scheduler.load("/data");
Hinweis

Für das Speichern von Änderungen zurück an den Server verwenden Sie createDataProcessor(). Siehe Serverseitige Integration.

Verwandte API

Verwandte Anleitungen

Daten aus mehreren Quellen laden

Um Daten aus mehreren Quellen zu laden, rufen Sie die benötigten Endpunkte ab und kombinieren Sie die Ergebnisse, bevor Sie parse() aufrufen:

Promise.all([
fetch("/api/events").then((response) => response.json()),
fetch("/api/holidays").then((response) => response.json())
]).then(([events, holidays]) => {
scheduler.parse([...events, ...holidays]);
});

Verwandte API

Verwandte Anleitungen

Daten-Eigenschaften

Obligatorische Eigenschaften

Damit korrekt geparst werden kann, muss jedes Ereignis die folgenden Eigenschaften enthalten:

  • id - (string|number) eine eindeutige Ereignis-ID
  • start_date - (date|string) das Startdatum des Ereignisses
  • end_date - (date|string) das Enddatum des Ereignisses
  • text - (string) der Titel/ die Beschreibung des Ereignisses

Das Standard-Datumsformat für JSON- und XML-Daten ist '%Y-%m-%d %H:%i' (siehe die Datumsformat-Spezifikation)

Um es zu ändern, verwenden Sie die Konfigurationsoption date_format.

scheduler.config.date_format = "%Y-%m-%d %H:%i";
...
scheduler.init("scheduler_here", new Date(2027, 4, 18), "week");

Benutzerdefinierte Eigenschaften

Sie sind nicht auf die oben aufgeführten Pflicht-Eigenschaften beschränkt und können beliebige benutzerdefinierte Eigenschaften zu Dateneinträgen hinzufügen. Zusätzliche Daten-Eigenschaften werden als Strings geparst und auf der Client-Seite geladen, wo Sie sie nach Bedarf verwenden können.

Siehe Beispiele von Daten mit benutzerdefinierten Eigenschaften hier

Verwandte API

Verwandte Anleitungen

Datenbankstruktur

Wenn Sie eine Datenbank einrichten, ergibt sich die erwartete Struktur für Scheduler-Ereignisse wie folgt:

  • events table - spezifiziert Scheduler-Ereignisse
  • id - (string/int/guid) die Ereignis-ID. Primärschlüssel, automatisch inkrementiert.
  • start_date - (DateTime) das Startdatum des Ereignisses, nicht nullable.
  • end_date - (DateTime) das Enddatum des Ereignisses, nicht nullable.
  • text - (string) die Beschreibung einer Aufgabe.

Wenn Sie wiederkehrende Ereignisse haben, fügen Sie folgende Felder hinzu:

  • rrule - (string) Wiederholungsregel im RFC-5545-Format
  • duration - (number) Dauer jeder Vorkommnis in Sekunden
  • recurring_event_id - (string/int/guid) übergeordnete Serien-ID für geänderte/gelöschte Vorkommnisse
  • original_start - (DateTime) ursprüngliches Startdatum des bearbeiteten/gelöschten Vorkommens
  • deleted - (boolean) markiert gelöschte Vorkommnisse

Sie können beliebige zusätzliche Spalten definieren, sie können auf den Client geladen und der client-seitigen API zur Verfügung gestellt werden.

Verwandte Guides

Dynamisches Laden

Standardmäßig lädt dhtmlxScheduler alle Daten auf einmal. Das kann problematisch werden, wenn Sie große Ereignis-Sammlungen verwenden. In solchen Situationen können Sie den dynamischen Ladevorgang verwenden und Daten schrittweise laden, die erforderlich sind, um den aktuell sichtbaren Bereich des Schedulers auszufüllen.

Technik

Um das dynamische Laden zu aktivieren, rufen Sie die setLoadMode() Methode auf:

scheduler.setLoadMode("month");
scheduler.load("/api/events");

Als Parameter nimmt die Methode den Lademodus, der die Größe der zu ladenden Daten definiert: day, week, month oder year.

Zum Beispiel, wenn Sie den Modus 'week' festlegen, wird der Scheduler Daten nur für die aktuelle Woche anfordern und die verbleibenden bei Bedarf nachladen.

Wie Lade-Modi funktionieren

Die vordefinierten Lade-Modi legen das Intervall fest, in dem Daten innerhalb des gesetzten Zeitraums geladen werden. Zum Beispiel öffnen Sie die Wochenansicht des Timers für folgende Daten: von 2027-02-02 bis 2027-02-09. Je nach gewähltem Modus verläuft das dynamische Laden folgendermaßen:

  • für den "day"-Modus
scheduler.setLoadMode("day");

Der Scheduler wird Daten pro Tag anfordern, z. B. von 2027-02-02 bis 2027-02-09.

  • für den "month"-Modus
scheduler.setLoadMode("month");

Der Scheduler wird Daten nach ganzen Monaten anfordern, z. B. von 2027-02-01 bis 2027-03-01.

  • für den "year"-Modus
scheduler.setLoadMode("year");

Der Scheduler wird Daten nach ganzen Jahren anfordern, z. B. von 2027-01-01 bis 2028-01-01.

In jedem Fall wird das angeforderte Intervall nicht kleiner als das gerenderte Intervall sein.

Das Lade-Intervall definiert:

  • die Häufigkeit der dynamischen Ladeaufrufe

Je größer das Lade-Intervall, desto geringer die Frequenz der Aufrufe für das dynamische Laden. Der Scheduler speichert den bereits geladenen Datenanteil im Speicher und wiederholt keinen Aufruf dafür.

  • die Dauer der Bearbeitung einer einzelnen Anfrage

Je größer das Lade-Intervall, desto länger wird eine Anfrage bearbeitet, da mehr Daten auf einmal geladen werden.

Anfrage

Generierte Anfragen sehen wie folgt aus:

/api/events?from=DATEHERE&to=DATEHERE

-Wobei DATEHERE ein gültiger Datumswert im von der load_date Option definierten Format ist.*

Verwandte API

Lade-Spinner

Wenn Sie mit großen Datenmengen arbeiten, ist es sinnvoll, den Lade-Spinner anzuzeigen. Er zeigt dem Benutzer, dass die Anwendung tatsächlich etwas tut.

Um den Lade-Spinner für den Scheduler zu aktivieren, setzen Sie die Eigenschaft show_loading auf true.

scheduler.config.show_loading = true;
...
scheduler.init("scheduler_here", new Date(2027, 4, 10), "month");
Hinweis

Um das Spinner-Bild zu ändern - ersetzen Sie 'imgs/loading.gif' durch Ihr eigenes Bild.

Daten laden mit Timeline- und Units-Abschnitten vom Server

Beim Laden von Daten in die Ansichten Timeline und Units müssen Sie ein Array von Abschnitten festlegen, die in die Ansichten geladen werden.

Um Daten zu laden, die Timeline- und Units-Abschnitte vom Backend enthalten, müssen Sie eine erweiterte Konfiguration implementieren:

  • während der Initialisierung der Timeline-Ansicht sollten Sie anstelle eines sections-Arrays die serverList() Methode verwenden und den Namen einer Sammlung als Argument übergeben:
scheduler.createTimelineView({
....
y_unit: scheduler.serverList("sections"),
...
});
  • um Daten in den Scheduler zu laden, verwenden Sie die load() Methode:
scheduler.load("data.json");

Wenn Sie Daten manuell abrufen (zum Beispiel, um Kopfzeilen hinzuzufügen), können Sie denselben Payload an parse() übergeben:

fetch("/api/timeline")
.then((response) => response.json())
.then((payload) => scheduler.parse(payload, "json"));
  • während der Implementierung der Scheduler-Datenantwort im Backend verwenden Sie folgendes Format:
data.json
{
"data":[
{
"id":"1",
"start_date":"2027-03-02 00:00:00",
"end_date":"2027-03-04 00:00:00",
"text":"dblclick me!",
"type":"1"
},
{
"id":"2",
"start_date":"2027-03-09 00:00:00",
"end_date":"2027-03-11 00:00:00",
"text":"and me!",
"type":"2"
},
{
"id":"3",
"start_date":"2027-03-16 00:00:00",
"end_date":"2027-03-18 00:00:00",
"text":"and me too!",
"type":"3"
},
{
"id":"4",
"start_date":"2027-03-02 08:00:00",
"end_date":"2027-03-02 14:10:00",
"text":"Type 2 event",
"type":"2"
}
],
"collections": {
"sections":[
{"value":"1","label":"Simple"},
{"value":"2","label":"Complex"},
{"value":"3","label":"Unknown"}
]
}
}

In dem obigen Beispiel enthält das "data"-Array Kalenderereignisse, und der Hash "collections" enthält Sammlungen, die über die serverList() Methode referenziert werden können.

Verwandte API

Verwandte Guides

  • Timeline-Ansicht
  • Units-Ansicht
Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.