устанавливает рабочее время для диаграммы Ганта
config | object | объект конфигурации временного интервала |
gantt.config.work_time = true;
//обновляет рабочие часы для рабочих дней с ["8:00-17:00"] на ["9:00-18:00"]
gantt.setWorkTime({ hours:["9:00-18:00"] });
//отмечает все пятницы как нерабочие дни
gantt.setWorkTime({ day:5, hours:false });
//корректирует рабочие часы для пятниц и суббот
// с ["8:00-17:00"] на ["8:00-12:00"]
gantt.setWorkTime({day : 5, hours : ["8:00-12:00"]});
gantt.setWorkTime({day : 6, hours : ["8:00-12:00"]});
//обозначает 31 марта как рабочий день
gantt.setWorkTime({date : new Date(2013, 2, 31)});
//устанавливает 1 января как выходной день
gantt.setWorkTime({date:new Date(2013,0,1), hours:false})
//определяет рабочее время как два интервала: 8:30-12:00, 13:00-17:00 (с перерывом на обед)
gantt.setWorkTime({hours : ["8:30-12:00", "13:00-17:00"]})
Этот метод работает только если включён work_time. В противном случае вызов игнорируется.
По умолчанию рабочее время настроено следующим образом:
Этот метод позволяет изменить эти настройки.
Объект конфигурации может содержать следующие свойства:
Свойство | Описание |
---|---|
day | число, обозначающее день недели [0 (Воскресенье) - 6 (Суббота)]. Обратите внимание, что можно задать только один день за раз. |
|
|
date | конкретная дата, которая будет установлена как рабочий день или выходной |
|
|
hours | массив рабочих часов, указанных в виде интервалов 'от'-'до'. 'false' обозначает выходной день, 'true' (по умолчанию) применяет часы по умолчанию (["8:00-17:00"]) |
|
|
customWeeks | объект, задающий разные правила рабочего времени для отдельных периодов. Объект может содержать пары ключ:значение, где ключ — название временного интервала, а значение — объект с атрибутами:
|
|
При указании свойства hours в объекте конфигурации setWorkTime интервалы должны быть перечислены от раннего времени к позднему. Если интервалы заданы в обратном порядке, некоторые из них могут быть проигнорированы. Например, интервалы после 18:00
будут отброшены в таком случае:
// пример неправильных настроек
gantt.setWorkTime({day : 5, hours : ["16:00-18:00", "14:00-15:00", "08:00-10:00"]});
gantt.setWorkTime({day : 5, hours : ["16:00-18:00", "00:00-04:00", "05:00-06:00"]});
Чтобы корректно задать часы ночной смены, их следует разбить на два дня:
Например:
gantt.setWorkTime({day : 5, hours : ["16:00-18:00"]});
gantt.setWorkTime({day : 6, hours : ["00:00-04:00", "05:00-06:00"]});
Каждый последующий вызов этого метода для одной и той же даты перезапишет предыдущую настройку рабочего времени:
gantt.setWorkTime({hours:["8:00-12:00"]});
gantt.setWorkTime({hours:["13:00-17:00"]});
// итоговое рабочее время будет 13:00-17:00,
// а не объединение обоих интервалов
Невозможно задать правила рабочего времени, полностью исключающие все рабочие дни или часы. Например, следующие вызовы не сработают:
gantt.setWorkTime({ day: 0, hours: [] });
gantt.setWorkTime({ day: 1, hours: [] });
gantt.setWorkTime({ day: 2, hours: [] });
gantt.setWorkTime({ day: 3, hours: [] });
gantt.setWorkTime({ day: 4, hours: [] });
gantt.setWorkTime({ day: 5, hours: [] });
gantt.setWorkTime({ day: 6, hours: [] });
В таких случаях Gantt проигнорирует вызов для одного из рабочих дней, и он останется с рабочими часами.
Если попытаться вычислить ближайшее рабочее время или длительность от даты с такими настройками, валидной даты или длительности не будет найдено. По сути, такая конфигурация календаря неэффективна. Даже если для конкретных дат заданы рабочие часы, расчёты будут корректны только внутри диапазонов, содержащих рабочие дни и часы. Вычисления вне этих диапазонов могут привести к ошибкам или отсутствию результата.
Чтобы создать календарь, где некоторые месяцы или годы полностью нерабочие, используйте опцию customWeeks метода setWorkTime(). Для определения рабочих дней и часов в нужном диапазоне необходимо:
Пример:
gantt.setWorkTime({ date: new Date(2025, 3, 10), hours: ["8:00-12:00"] })
gantt.setWorkTime({ date: new Date(2025, 3, 11), hours: ["13:00-17:00"] })
gantt.setWorkTime({
customWeeks: {
period1: {
from: new Date(2025, 3, 1),
to: new Date(2025, 3, 10),
hours: false,
},
period2: {
from: new Date(2025, 3, 12),
to: new Date(2025, 5, 1),
hours: false,
},
}
});
Related sample: Использование customWeeks
для установки всех дней календаря выходными