@progress/kendo-angular-scheduler
Version:
Kendo UI Scheduler Angular - Outlook or Google-style angular scheduler calendar. Full-featured and customizable embedded scheduling from the creator developers trust for professional UI components.
61 lines (60 loc) • 2.58 kB
JavaScript
/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { intersects, toUTCDate, toUTCDateTime } from '../utils';
import { sortTasksByTime } from '../../common/util';
import { addDays } from '@progress/kendo-date-math';
/**
* @hidden
*/
export const createTasks = (periodStart, periodEnd, items, ranges) => {
const tasks = [];
const utcStart = toUTCDateTime(periodStart);
const utcEnd = toUTCDateTime(periodEnd);
for (let index = 0; index < items.length; index++) {
const item = items[index];
const data = {};
const startTime = item.start.toUTCDate();
const end = item.end;
const endTime = (item.end.getTime() !== end.getTime() ? end.addDays(1) : end).toUTCDate();
if (intersects(startTime, endTime, utcStart, utcEnd)) {
for (let rangeIdx = 0; rangeIdx < ranges.length; rangeIdx++) {
const range = ranges[rangeIdx];
const rangeStart = toUTCDate(range);
const rangeEnd = toUTCDate(addDays(range, 1));
if (intersects(startTime, endTime, rangeStart, rangeEnd)) {
const task = {
index,
startTime: startTime > rangeStart ? startTime : rangeStart,
endTime: endTime < rangeEnd ? endTime : rangeEnd,
start: item.start,
end: item.end,
event: item.event,
isAllDay: item.event.isAllDay,
rangeIndex: rangeIdx,
data: data
};
task.head = endTime > rangeEnd && startTime > rangeStart;
task.tail = startTime < rangeStart && endTime < rangeEnd;
task.mid = endTime > rangeEnd && startTime < rangeStart;
task.isMultiDay = task.head || task.mid || task.tail;
tasks.push(task);
}
}
}
}
return sortTasksByTime(tasks);
};
/**
* @hidden
*/
export const noop = (_) => { };
/**
* @hidden
*/
export const yearEnd = (year) => new Date(year, 11, 31, 23, 59, 59, 999);
/**
* @hidden
*/
export const yearStart = (year) => new Date(year, 0, 1, 0, 0, 0, 0);