mehrere Arbeitskalender zu einem zusammenführen
calendars | Calendar[] | Calendar | ein Array von Kalenderobjekten oder das erste Kalenderobjekt |
calendar2 | Calendar | optional, das zweite Kalenderobjekt |
const johnCalendarId = gantt.addCalendar({
worktime: {
hours: ["0:00-24:00"],
days: [0, 1, 1, 1, 1, 1, 0]
}
});
const mikeCalendarId = gantt.addCalendar({
worktime: {
hours: ["8:00-12:00", "13:00-17:00"],
days: [0, 1, 1, 1, 1, 1, 0]
}
});
// Ein Array von Kalendern als Argument übergeben
const joinedCalendar = gantt.mergeCalendars([
gantt.getCalendar(mikeCalendarId),
gantt.getCalendar(johnCalendarId)
]);
Sie können auch eine Menge von Kalenderobjekten als Parameter der mergeCalendars-Methode angeben:
// Kalender als Argumente übergeben
const joinedCalendar = gantt.mergeCalendars(
gantt.getCalendar(mikeCalendarId),
gantt.getCalendar(johnCalendarId)
);
Beim Zusammenführen von Kalendern gilt folgende Logik - der Wochentag im neuen Kalender wird nur dann als Arbeitstag (1/wahr) betrachtet, wenn er in allen zusammengeführten Kalendern ein Arbeitstag ist (Logisches UND (&&)):
// kalender 1 + kalender 2 = zusammengeführter kalender;
// Fall 1:
// Arbeitstag (1/wahr) + Arbeitstag (1/wahr) = Arbeitstag (1/wahr);
// Fall 2:
// Arbeitstag (1/wahr) + Nicht-Arbeitstag (0/falsch) = Nicht-Arbeitstag (0/falsch);
// Fall 3:
// Nicht-Arbeitstag (0/falsch) + Nicht-Arbeitstag (0/falsch) = Nicht-Arbeitstag (0/falsch);
Wenn wir also zwei Kalender haben:
const calendar1Id = gantt.addCalendar({
id: "calendar1",
worktime: {
days: [ 0, 1, 0, 1, 0, 0, 0 ]
}
});
const calendar2Id = gantt.addCalendar({
id: "calendar2",
worktime: {
days: [ 0, 1, 1, 0, 1, 0, 0 ]
}
});
Wenn die Kalender zusammengeführt werden:
const joinedCalendar = gantt.mergeCalendars([
gantt.getCalendar(calendar1Id),
gantt.getCalendar(calendar2Id)
]);
erhalten wir einen neuen Kalender mit Arbeitstagen nur an Montagen:
// days: [ 0, 1, 0, 1, 0, 0, 0 ]
// +
// days: [ 0, 1, 1, 0, 1, 0, 0 ]
// =
// days: [ 0, 1, 0, 0, 0, 0, 0 ]
Verwandtes Beispiel: Gantt. Arbeitskalender zusammenführen (über mergeCalendars() Methode)
Die Logik berücksichtigt keine customWeeks.
hinzugefügt in v7.0
Zurück nach oben