Type parameters
Hierarchy
- WorkSchedule
Properties
cycle
Рабочий цикл.
Цикл — упорядоченный список с настройками дней, который применяется циклически к календарным дням, начиная с даты начала работы по данному рабочему графику.
Недельный цикл представляет собой массив из семи элементов с настройками каждого дня недели.
Элемент с индексом 0
— это воскресенье, с индексом 1
— понедельник и т. д.
Пример настройки рабочего графика с недельным циклом: график «Пятидневка».
const workSchedule: WorkSchedule<'weekly'> = {
type: 'weekly',
cycle: [],
};
for (let i = 0; i <= 6; i++ ) {
const daySettings: CalendarDaySettings = {
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, // Это не праздничный день
};
switch (i) {
// Воскресенье (выходной)
case 0:
daySettings.isWorkingDay = false;
daySettings.isHolidayDay = false;
daySettings.description = 'Воскресенье';
break;
// понедельник
case 1:
daySettings.description = 'Понедельник';
break;
// вторник
case 2:
daySettings.description = 'Вторник';
break;
// среда
case 3:
daySettings.description = 'Среда';
break;
// четверг
case 4:
daySettings.description = 'Четверг';
break;
// пятница
case 5:
daySettings.description = 'Пятница';
break;
// суббота (выходной)
case 6:
daySettings.isWorkingDay = false;
daySettings.isHolidayDay = false;
daySettings.description = 'Суббота';
break;
default:
throw new Error('incorrect day index');
}
workSchedule.cycle.push(daySettings);
}
Произвольный цикл может представлять собой массив из любого количества элементов. Элемент с индексом 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
— произвольный.
Рабочий график