setWorkTime

устанавливает рабочее время для диаграммы Ганта

void setWorkTime(object config);
configobjectобъект конфигурации временного интервала

Example

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"]})

Related samples

Details

Этот метод работает только если включён work_time. В противном случае вызов игнорируется.

По умолчанию рабочее время настроено следующим образом:

  • Рабочие дни: с понедельника по пятницу.
  • Рабочие часы: 08:00 - 17:00.

Этот метод позволяет изменить эти настройки.

Свойства объекта конфигурации

Объект конфигурации может содержать следующие свойства:

Свойство Описание
day число, обозначающее день недели [0 (Воскресенье) - 6 (Суббота)]. Обратите внимание, что можно задать только один день за раз.
//отмечает все понедельники как нерабочие дни
gantt.setWorkTime({ day:1, hours:false });
date конкретная дата, которая будет установлена как рабочий день или выходной
//отмечает конкретную дату как выходной
gantt.setWorkTime({date:new Date(2013,0,1), hours:false})
hours массив рабочих часов, указанных в виде интервалов 'от'-'до'.
'false' обозначает выходной день, 'true' (по умолчанию) применяет часы по умолчанию (["8:00-17:00"])
//устанавливает рабочие часы для пятниц с 8:00 до 12:00
gantt.setWorkTime({day : 5, hours : ["8:00-12:00"]});
customWeeks объект, задающий разные правила рабочего времени для отдельных периодов.
Объект может содержать пары ключ:значение, где ключ — название временного интервала, а значение — объект с атрибутами:
  • from - (Date) обязательное, дата начала периода
  • to - (Date) обязательное, дата окончания периода
  • hours - (array) массив рабочих часов в виде интервалов 'от'-'до'.
    'false' — выходной, 'true' (по умолчанию) — часы по умолчанию (["8:00-17:00"])
  • days - (array) массив из 7 элементов, обозначающих дни недели (0 - воскресенье, 6 - суббота), где 1/true — рабочий день, 0/false — выходной.
//изменяет рабочие часы на зимние месяцы
gantt.setWorkTime({
    customWeeks: {
        winter: {
            from: new Date(2018, 11, 1), // 1 декабря 2018
            to: new Date(2019, 2, 1), // 1 марта 2019, 00:00
            hours: ["9:00-13:00", "14:00-16:00"],
            days: [ 1, 1, 1, 1, 0, 0, 0]
        }
    }
});

Установка рабочих часов для ночной смены

При указании свойства 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"]});

Чтобы корректно задать часы ночной смены, их следует разбить на два дня:

  • в пределах 24 часов первого дня
  • в пределах 24 часов следующего дня

Например:

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 для установки всех дней календаря выходными

See also
Change log
  • свойство customWeeks добавлено в версии 7.1;
  • формат свойства hours в конфиге изменён в версии 7.0.
К началу