mergeCalendars

kombiniert mehrere Arbeitskalender zu einem einzigen Kalender

void mergeCalendars(Calendar[] | Calendar calendars, [Calendar calendar2] );
calendarsCalendar[] | Calendarentweder ein Array von Kalenderobjekten oder ein einzelnes Kalenderobjekt
calendar2Calendaroptional, ein zweites 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]
    }
});
 
// Übergabe eines Arrays von Kalendern zum Zusammenführen
const joinedCalendar = gantt.mergeCalendars([
    gantt.getCalendar(mikeCalendarId),
    gantt.getCalendar(johnCalendarId)
]);

Details

Sie können auch mehrere Kalenderobjekte als separate Parameter an die Methode mergeCalendars übergeben:

// Kalender als separate Argumente übergeben
const joinedCalendar = gantt.mergeCalendars(
    gantt.getCalendar(mikeCalendarId),
    gantt.getCalendar(johnCalendarId)
);

Funktionsweise des Zusammenführens von Kalendern

Beim Zusammenführen von Kalendern werden die Arbeitstage des resultierenden Kalenders ermittelt, indem geprüft wird, ob jeder Tag in allen zusammengeführten Kalendern ein Arbeitstag ist (unter Verwendung einer logischen UND-Operation (&&)):

// kalender 1 + kalender 2 = zusammengeführter kalender;
 
// Fall 1: 
// Arbeitstag (1/wahr) + Arbeitstag (1/wahr) = Arbeitstag (1/wahr);
 
// Fall 2: 
// Arbeitstag (1/wahr) + kein Arbeitstag (0/falsch) = kein Arbeitstag (0/falsch);
 
// Fall 3: 
// kein Arbeitstag (0/falsch) + kein Arbeitstag (0/falsch) = kein Arbeitstag (0/falsch);

Beispiel mit zwei Kalendern:

  • Der erste Kalender hat Arbeitstage am Montag und Mittwoch:
const calendar1Id = gantt.addCalendar({
    id: "calendar1",
    worktime: {
        days: [ 0, 1, 0, 1, 0, 0, 0 ]
    }
});
  • Der zweite Kalender hat Arbeitstage am Montag, Dienstag und Donnerstag:
const calendar2Id = gantt.addCalendar({
    id: "calendar2",
    worktime: {
        days: [ 0, 1, 1, 0, 1, 0, 0 ]
    }
});

Das Zusammenführen dieser Kalender:

const joinedCalendar = gantt.mergeCalendars([
    gantt.getCalendar(calendar1Id),
    gantt.getCalendar(calendar2Id)
]);

ergibt einen Kalender, bei dem nur Montag ein Arbeitstag ist:

// Tage: [ 0, 1, 0, 1, 0, 0, 0 ]
 
// +
 
// Tage: [ 0, 1, 1, 0, 1, 0, 0 ]
 
// =
 
// Tage: [ 0, 1, 0, 0, 0, 0, 0 ]

Verwandtes Beispiel: Gantt. Merge work calendars (via mergeCalendars() method)

Die Zusammenführungslogik berücksichtigt keine customWeeks.

See also
Change log

hinzugefügt in v7.0

Zurück nach oben