mergeCalendars

mehrere Arbeitskalender zu einem zusammenführen

void mergeCalendars(Calendar[] | Calendar calendars, [Calendar calendar2] );
calendarsCalendar[] | Calendarein Array von Kalenderobjekten oder das erste Kalenderobjekt
calendar2Calendaroptional, das zweite Kalenderobjekt

Example

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

Details

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

Logik zum Zusammenführen von Kalendern

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:

  • den ersten mit Arbeitstagen: Montag und Mittwoch:
const calendar1Id = gantt.addCalendar({
    id: "calendar1",
    worktime: {
        days: [ 0, 1, 0, 1, 0, 0, 0 ]
    }
});
  • den zweiten mit Arbeitstagen: Montag, Dienstag und Donnerstag:
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.

See also
Change log

hinzugefügt in v7.0

Zurück nach oben