объединяет несколько рабочих календарей в один
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)
);
При объединении календарей применяется следующая логика - день недели в новом календаре будет считаться рабочим днем (1/true) только если он является рабочим днем во всех объединенных календарях (логическое И (&&)):
// календарь 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. Объединение рабочих календарей (через метод mergeCalendars())
Логика не учитывает customWeeks.
добавлено в v7.0
К началу