Цикл — это упорядоченный список с настройками дней, который применяется к календарным дням, начиная
с даты начала работы по данному графику.
Недельный цикл представляет собой массив из семи элементов с настройками каждого дня недели.
Элемент с индексом 0 — это воскресенье, с индексом 1 — понедельник и т. д.
Пример настройки рабочего графика с недельным циклом: график «Пятидневка».
const workSchedule: WorkSchedule<'weekly'> = {
type: 'weekly',
cycle: [
{
isWorkingDay: false,
description: "Воскресенье"
},
{
useDefault: true,
description: "Понедельник"
},
{
useDefault: true,
description: "Вторник"
},
{
useDefault: true,
description: "Среда"
},
{
useDefault: true,
description: "Четверг"
},
{
useDefault: true,
description: "Пятница"
},
{
isWorkingDay: false,
description: "Суббота"
},
],
defaultDaySettings: {
startAt: new TTime(9, 0, 0, 0), // Рабочий день начинается в 9:00endAt: new TTime(18, 0, 0, 0), // Рабочий день заканчивается в 18:00breaks: [ // В течение дня есть один перерыв с 12:00 до 13:00
{
startAt: new TTime(12, 0, 0, 0),
endAt: new TTime(13, 0, 0, 0),
description: 'Перерыв на обед',
},
];
isWorkingDay: true, // Это рабочий деньisHolidayDay: false, // Это не праздничный день
}
};
Произвольный цикл может представлять собой массив из любого количества элементов. Элемент с индексом 0
содержит настройки дня, соответствующего дате начала работы по данному графику.
Такой цикл может использоваться, например, для настройки посменного рабочего графика типа «сутки через двое».
Пример посменного графика работы: график «Сутки через двое».
Рабочая смена начинается в 7:00 утра и заканчивается в 6:59 следующего календарного дня.
const workSchedule: WorkSchedule<'custom'> = {
type: 'custom',
cycle: [],
};
// Рабочая смена длится 24 часа (с получасовым перерывом) и затрагивает два календарных дня
workSchedule.cycle.push({
startAt: new TTime(7, 0, 0, 0), // Рабочий день начинается в 7:00endAt: new TTime(23, 59, 59, 999), // Рабочий день заканчивается в 23:59breaks: [ // В течение дня есть один перерыв с 15:00 до 15:30
{
startAt: new TTime(15, 0, 0, 0),
endAt: new TTime(15, 30, 0, 0),
},
],
isWorkingDay: true, // Это рабочий деньisHolidayDay: false, // Это не праздничный день
});
workSchedule.cycle.push({
startAt: new TTime(0, 0, 0, 0), // Рабочий день начинается в 00:00endAt: new TTime(6, 59, 59, 999), // Рабочий день заканчивается в 06:59isWorkingDay: true, // Это рабочий деньisHolidayDay: false, // Это не праздничный день
});
// настройки выходного дня
workSchedule.cycle.push({
startAt: new TTime(0, 0, 0, 0), // Выходной день начинается в 00:00endAt: new TTime(23, 59, 59, 999), // Выходной день заканчивается в 23:59isWorkingDay: false, // Это не рабочий деньisHolidayDay: false, // Это не праздничный день
});
Поле используется для определения настроек обычного рабочего дня.
Изначально поле создаётся с настройками по умолчанию следующего вида:
{
startAt: new TTime(9, 0, 0, 0), // Рабочий день начинается в 9:00endAt: new TTime(18, 0, 0, 0), // Рабочий день заканчивается в 18:00breaks: [ // В течение дня есть один перерыв с 12:00 до 13:00
{
startAt: new TTime(12, 0, 0, 0),
endAt: new TTime(13, 30, 0, 0),
},
],
isWorkingDay: true, // Это рабочий деньisHolidayDay: false, // Это не праздничный день
}
Примечание:
поле всегда будет заполнено.
Оно оставлено необязательным для обратной совместимости.
type
type:T
Тип рабочего графика: weekly — недельный, custom — произвольный.
Рабочий график
Type parameters
T: WorkScheduleType
D: CalendarScheduleDaySettings | NotWorkDaySettings | UseDefaultDaySettings
Hierarchy
Properties
cycle
Рабочий цикл.
Цикл — это упорядоченный список с настройками дней, который применяется к календарным дням, начиная с даты начала работы по данному графику.
Недельный цикл представляет собой массив из семи элементов с настройками каждого дня недели. Элемент с индексом
0— это воскресенье, с индексом1— понедельник и т. д.Пример настройки рабочего графика с недельным циклом: график «Пятидневка».
const workSchedule: WorkSchedule<'weekly'> = { type: 'weekly', cycle: [ { isWorkingDay: false, description: "Воскресенье" }, { useDefault: true, description: "Понедельник" }, { useDefault: true, description: "Вторник" }, { useDefault: true, description: "Среда" }, { useDefault: true, description: "Четверг" }, { useDefault: true, description: "Пятница" }, { isWorkingDay: false, description: "Суббота" }, ], defaultDaySettings: { startAt: new TTime(9, 0, 0, 0), // Рабочий день начинается в 9:00 endAt: new TTime(18, 0, 0, 0), // Рабочий день заканчивается в 18:00 breaks: [ // В течение дня есть один перерыв с 12:00 до 13:00 { startAt: new TTime(12, 0, 0, 0), endAt: new TTime(13, 0, 0, 0), description: 'Перерыв на обед', }, ]; isWorkingDay: true, // Это рабочий день isHolidayDay: false, // Это не праздничный день } };Произвольный цикл может представлять собой массив из любого количества элементов. Элемент с индексом
0содержит настройки дня, соответствующего дате начала работы по данному графику. Такой цикл может использоваться, например, для настройки посменного рабочего графика типа «сутки через двое».Пример посменного графика работы: график «Сутки через двое». Рабочая смена начинается в 7:00 утра и заканчивается в 6:59 следующего календарного дня.
const workSchedule: WorkSchedule<'custom'> = { type: 'custom', cycle: [], }; // Рабочая смена длится 24 часа (с получасовым перерывом) и затрагивает два календарных дня workSchedule.cycle.push({ startAt: new TTime(7, 0, 0, 0), // Рабочий день начинается в 7:00 endAt: new TTime(23, 59, 59, 999), // Рабочий день заканчивается в 23:59 breaks: [ // В течение дня есть один перерыв с 15:00 до 15:30 { startAt: new TTime(15, 0, 0, 0), endAt: new TTime(15, 30, 0, 0), }, ], isWorkingDay: true, // Это рабочий день isHolidayDay: false, // Это не праздничный день }); workSchedule.cycle.push({ startAt: new TTime(0, 0, 0, 0), // Рабочий день начинается в 00:00 endAt: new TTime(6, 59, 59, 999), // Рабочий день заканчивается в 06:59 isWorkingDay: true, // Это рабочий день isHolidayDay: false, // Это не праздничный день }); // настройки выходного дня workSchedule.cycle.push({ startAt: new TTime(0, 0, 0, 0), // Выходной день начинается в 00:00 endAt: new TTime(23, 59, 59, 999), // Выходной день заканчивается в 23:59 isWorkingDay: false, // Это не рабочий день isHolidayDay: false, // Это не праздничный день });Optional defaultDaySettings
Настройки стандартного рабочего дня.
Поле используется для определения настроек обычного рабочего дня. Изначально поле создаётся с настройками по умолчанию следующего вида:
{ startAt: new TTime(9, 0, 0, 0), // Рабочий день начинается в 9:00 endAt: new TTime(18, 0, 0, 0), // Рабочий день заканчивается в 18:00 breaks: [ // В течение дня есть один перерыв с 12:00 до 13:00 { startAt: new TTime(12, 0, 0, 0), endAt: new TTime(13, 30, 0, 0), }, ], isWorkingDay: true, // Это рабочий день isHolidayDay: false, // Это не праздничный день }Примечание: поле всегда будет заполнено. Оно оставлено необязательным для обратной совместимости.
type
Тип рабочего графика:
weekly— недельный,custom— произвольный.