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

defaultDaySettings: 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, 30, 0, 0),
         },
     ],
     isWorkingDay: true,  // Это рабочий день
     isHolidayDay: false, // Это не праздничный день
}

Примечание: Поле всегда будет заполнено. Поле оставлено необязательным для обратной совместимости.

type

type: T

Тип рабочего графика: weekly — недельный, custom — произвольный.