Перейти к основному содержимому

setWorkTime

Description

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

setWorkTime: Calendar['setWorkTime']

Parameters

  • config - (required) object - объект конфигурации временного промежутка

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

//устанавливает рабочее время как 2 периода: 8:30-12:00, 13:00-17:00 (для учета обеда)
gantt.setWorkTime({hours : ["8:30-12:00", "13:00-17:00"]})

Details

заметка

Метод имеет смысл только если work_time установлен в 'true'. В противном случае метод будет проигнорирован.

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

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

Метод используется для изменения настроек по умолчанию.

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

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

Свойство

Описание

day номер дня недели [0 (Sunday) - 6 (Saturday)]. Примечание: можно установить только 1 день за раз
//делает все понедельники выходными
gantt.setWorkTime({ day:1, hours:false });
date конкретная дата, которую нужно установить как рабочий день или выходной
//делает конкретную дату выходной
gantt.setWorkTime({date:new Date(2013,0,1), hours:false})
hours массив рабочих часов в виде пар 'от'-'до'.
'false' значение означает выходной, 'true' (default value) применяет часы по умолчанию (["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' (default value) применяет часы по умолчанию (["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
hours: ["9:00-13:00", "14:00-16:00"],
days: [ 1, 1, 1, 1, 0, 0, 0]
}
}
});

Setting working time hours for the night shift

Настройка времени работы для атрибута 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 пропустит применение метода к одному из рабочих дней, и в календаре останутся рабочие часы.

Если вы попытаетесь рассчитать ближайшее рабочее время или продолжительность от какой-либо даты, не будет ни такой даты, ни продолжительности.
Это означает, что настройка такого календаря не имеет смысла. Даже если вы установите определённые даты с рабочими часами, это не будет работать корректно, так как 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,
},

}
});

Change log

  • свойство customWeeks добавлено в v7.1;
  • формат свойства hours конфигурации изменён в версии 7.0.
Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.