объединяет несколько рабочих календарей в один
calendars | Calendar[] | Calendar | либо массив объектов календарей, либо один объект календаря |
calendar2 | Calendar | необязательный параметр, второй объект календаря |
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]
}
});
// передаем массив календарей для объединения
const joinedCalendar = gantt.mergeCalendars([
gantt.getCalendar(mikeCalendarId),
gantt.getCalendar(johnCalendarId)
]);
Вы также можете передать несколько объектов календарей как отдельные параметры в метод mergeCalendars:
// передаем календари как отдельные аргументы
const joinedCalendar = gantt.mergeCalendars(
gantt.getCalendar(mikeCalendarId),
gantt.getCalendar(johnCalendarId)
);
При объединении календарей рабочие дни итогового календаря определяются на основе проверки, является ли каждый день рабочим во всех объединяемых календарях (используется логическая операция AND (&&)):
// календарь 1 + календарь 2 = объединенный календарь;
// Случай 1:
// рабочий день (1/true) + рабочий день (1/true) = рабочий день (1/true);
// Случай 2:
// рабочий день (1/true) + нерабочий день (0/false) = нерабочий день (0/false);
// Случай 3:
// нерабочий день (0/false) + нерабочий день (0/false) = нерабочий день (0/false);
Например, даны два календаря:
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 ]
}
});
Объединение этих календарей:
const joinedCalendar = gantt.mergeCalendars([
gantt.getCalendar(calendar1Id),
gantt.getCalendar(calendar2Id)
]);
даст календарь, в котором рабочим днем будет только понедельник:
// дни: [ 0, 1, 0, 1, 0, 0, 0 ]
// +
// дни: [ 0, 1, 1, 0, 1, 0, 0 ]
// =
// дни: [ 0, 1, 0, 0, 0, 0, 0 ]
Связанный пример: Gantt. Merge work calendars (via mergeCalendars() method)
Логика объединения не учитывает customWeeks.
добавлено в v7.0
К началу