setzt die Arbeitszeit für das Gantt-Diagramm
config | object | das Konfigurationsobjekt für einen Zeitraum |
gantt.config.work_time = true;
// aktualisiert die Arbeitszeiten für Arbeitstage von ["8:00-17:00"] auf ["9:00-18:00"]
gantt.setWorkTime({ hours:["9:00-18:00"] });
// markiert alle Freitage als arbeitsfreie Tage
gantt.setWorkTime({ day:5, hours:false });
// passt die Arbeitszeiten für Freitage und Samstage an
// von ["8:00-17:00"] auf ["8:00-12:00"]
gantt.setWorkTime({day : 5, hours : ["8:00-12:00"]});
gantt.setWorkTime({day : 6, hours : ["8:00-12:00"]});
// definiert den 31. März als Arbeitstag
gantt.setWorkTime({date : new Date(2013, 2, 31)});
// setzt den 1. Januar als arbeitsfreien Tag
gantt.setWorkTime({date:new Date(2013,0,1), hours:false})
// definiert die Arbeitszeit als zwei Intervalle: 8:30-12:00, 13:00-17:00 (Pausenzeit inklusive)
gantt.setWorkTime({hours : ["8:30-12:00", "13:00-17:00"]})
Diese Methode wirkt nur, wenn work_time aktiviert ist. Andernfalls wird sie ignoriert.
Standardmäßig sind die Arbeitszeiten wie folgt eingestellt:
Diese Methode ermöglicht es, diese Standardwerte anzupassen.
Das Konfigurationsobjekt kann folgende Eigenschaften enthalten:
Eigenschaft | Beschreibung |
---|---|
day | die Zahl, die einen Wochentag repräsentiert [0 (Sonntag) - 6 (Samstag)]. Es kann jeweils nur ein Tag gesetzt werden. |
|
|
date | ein bestimmtes Datum, das als Arbeitstag oder freier Tag definiert wird |
|
|
hours | ein Array von Arbeitszeiten, angegeben als 'von'-'bis' Intervalle. 'false' definiert den Tag als arbeitsfrei, während 'true' (Standard) die Standardzeiten (["8:00-17:00"]) anwendet |
|
|
customWeeks | ein Objekt, das unterschiedliche Arbeitszeitregeln für verschiedene Zeiträume definiert. Das Objekt kann Schlüssel-Wert-Paare enthalten, wobei key der Name eines Zeitraums ist und value ein Objekt mit folgenden Attributen:
|
|
Wenn Sie das Attribut hours im setWorkTime Konfigurationsobjekt angeben, sollten die Intervalle von früh nach spät aufgelistet werden. Werden sie in absteigender Reihenfolge angegeben, können einige Intervalle ignoriert werden. Zum Beispiel werden Intervalle nach 18:00
im folgenden Fall ignoriert:
// falsches Einstellungsbeispiel
gantt.setWorkTime({day : 5, hours : ["16:00-18:00", "14:00-15:00", "08:00-10:00"]});
gantt.setWorkTime({day : 5, hours : ["16:00-18:00", "00:00-04:00", "05:00-06:00"]});
Um Nachtschichtzeiten korrekt anzugeben, sollten diese auf zwei Tage verteilt werden:
Beispiel:
gantt.setWorkTime({day : 5, hours : ["16:00-18:00"]});
gantt.setWorkTime({day : 6, hours : ["00:00-04:00", "05:00-06:00"]});
Jeder weitere Aufruf dieser Methode für dasselbe Datum überschreibt die vorherige Einstellung der Arbeitszeit:
gantt.setWorkTime({hours:["8:00-12:00"]});
gantt.setWorkTime({hours:["13:00-17:00"]});
// die endgültige Arbeitszeit ist 13:00-17:00,
// nicht eine Kombination beider Intervalle
Es ist nicht möglich, Arbeitszeitregeln zu setzen, die alle Arbeitstage oder Arbeitsstunden ausschließen. Zum Beispiel funktionieren folgende Einstellungen nicht:
gantt.setWorkTime({ day: 0, hours: [] });
gantt.setWorkTime({ day: 1, hours: [] });
gantt.setWorkTime({ day: 2, hours: [] });
gantt.setWorkTime({ day: 3, hours: [] });
gantt.setWorkTime({ day: 4, hours: [] });
gantt.setWorkTime({ day: 5, hours: [] });
gantt.setWorkTime({ day: 6, hours: [] });
In solchen Fällen ignoriert Gantt den Methodenaufruf für einen der Arbeitstage, sodass dieser weiterhin Arbeitszeiten hat.
Wenn Sie versuchen, die nächste Arbeitszeit oder Dauer von einem Datum mit solchen Einstellungen zu berechnen, wird kein gültiges Datum oder Dauer gefunden. Im Grunde ist eine solche Kalenderkonfiguration wirkungslos. Selbst wenn bestimmte Daten Arbeitszeiten haben, funktionieren Berechnungen nur korrekt innerhalb von Bereichen mit Arbeitstagen und -zeiten. Berechnungen außerhalb dieser Bereiche können Fehler oder keine Ergebnisse liefern.
Um einen Kalender zu erstellen, bei dem einige Monate oder Jahre vollständig arbeitsfrei sind, verwenden Sie die customWeeks-Option von setWorkTime(). Um Arbeitstage und -zeiten innerhalb des notwendigen Bereichs zu definieren, sollten Sie:
Beispiel:
gantt.setWorkTime({ date: new Date(2025, 3, 10), hours: ["8:00-12:00"] })
gantt.setWorkTime({ date: new Date(2025, 3, 11), hours: ["13:00-17:00"] })
gantt.setWorkTime({
customWeeks: {
period1: {
from: new Date(2025, 3, 1),
to: new Date(2025, 3, 10),
hours: false,
},
period2: {
from: new Date(2025, 3, 12),
to: new Date(2025, 5, 1),
hours: false,
},
}
});
Related sample: Verwendung von customWeeks
, um alle Tage im Kalender als arbeitsfrei zu markieren