angular-calendar-scheduler
Version:
This project provide a scheduler view component for [mattlewis92/angular-calendar](https://github.com/mattlewis92/angular-calendar).
58 lines • 11.4 kB
JavaScript
import { MINUTES_IN_HOUR } from '../scheduler/utils/calendar-scheduler-utils';
export function addPeriod(dateAdapter, period, date, amount) {
return {
day: dateAdapter.addDays,
week: dateAdapter.addWeeks,
month: dateAdapter.addMonths
}[period](date, amount);
}
export function subPeriod(dateAdapter, period, date, amount) {
return {
day: dateAdapter.subDays,
week: dateAdapter.subWeeks,
month: dateAdapter.subMonths
}[period](date, amount);
}
export function startOfPeriod(dateAdapter, period, date) {
return {
day: dateAdapter.startOfDay,
week: dateAdapter.startOfWeek,
month: dateAdapter.startOfMonth
}[period](date);
}
export function endOfPeriod(dateAdapter, period, date) {
return {
day: dateAdapter.endOfDay,
week: dateAdapter.endOfWeek,
month: dateAdapter.endOfMonth
}[period](date);
}
export const trackByDayOrEvent = (index, event) => (event.event.id ? event.event.id : event.event);
export const trackByHourColumn = (index, day) => day.hours[0] ? day.hours[0].segments[0].date.toISOString() : day;
export const trackByHour = (index, hour) => hour.segments[0].date.toISOString();
export const trackByHourSegment = (index, segment) => segment.date.toISOString();
export function getMinimumEventHeightInMinutes(hourSegments, hourSegmentHeight) {
return (MINUTES_IN_HOUR / (hourSegments * hourSegmentHeight)) * hourSegmentHeight;
}
export function getDefaultEventEnd(dateAdapter, event, minimumMinutes) {
return event.end ? event.end : dateAdapter.addMinutes(event.start, minimumMinutes);
}
export function roundToNearest(amount, precision) {
return Math.round(amount / precision) * precision;
}
export function getMinutesMoved(movedY, hourSegments, hourSegmentHeight, eventSnapSize) {
const draggedInPixelsSnapSize = roundToNearest(movedY, eventSnapSize || hourSegmentHeight);
const pixelAmountInMinutes = MINUTES_IN_HOUR / (hourSegments * hourSegmentHeight);
return draggedInPixelsSnapSize * pixelAmountInMinutes;
}
export function isDraggedWithinPeriod(newStart, newEnd, period) {
const end = newEnd || newStart;
return ((period.start <= newStart && newStart <= period.end) ||
(period.start <= end && end <= period.end));
}
export function shouldFireDroppedEvent(dropEvent, date, calendarId) {
return (dropEvent.dropData &&
dropEvent.dropData.event &&
dropEvent.dropData.calendarId !== calendarId);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWNhbGVuZGFyLXNjaGVkdWxlci8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvY29tbW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU5RSxNQUFNLFVBQVUsU0FBUyxDQUFDLFdBQXdCLEVBQUUsTUFBb0IsRUFBRSxJQUFVLEVBQUUsTUFBYztJQUNoRyxPQUFPO1FBQ0gsR0FBRyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1FBQ3hCLElBQUksRUFBRSxXQUFXLENBQUMsUUFBUTtRQUMxQixLQUFLLEVBQUUsV0FBVyxDQUFDLFNBQVM7S0FDL0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsV0FBd0IsRUFBRSxNQUFvQixFQUFFLElBQVUsRUFBRSxNQUFjO0lBQ2hHLE9BQU87UUFDSCxHQUFHLEVBQUUsV0FBVyxDQUFDLE9BQU87UUFDeEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxRQUFRO1FBQzFCLEtBQUssRUFBRSxXQUFXLENBQUMsU0FBUztLQUMvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxXQUF3QixFQUFFLE1BQW9CLEVBQUUsSUFBVTtJQUNwRixPQUFPO1FBQ0gsR0FBRyxFQUFFLFdBQVcsQ0FBQyxVQUFVO1FBQzNCLElBQUksRUFBRSxXQUFXLENBQUMsV0FBVztRQUM3QixLQUFLLEVBQUUsV0FBVyxDQUFDLFlBQVk7S0FDbEMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxXQUF3QixFQUFFLE1BQW9CLEVBQUUsSUFBVTtJQUNs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TyxDQUNILFNBQVMsQ0FBQyxRQUFRO1FBQ2xCLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSztRQUN4QixTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQy9DLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIFNjaGVkdWxlclZpZXdQZXJpb2QsXHJcbiAgICBTY2hlZHVsZXJWaWV3RXZlbnQsXHJcbiAgICBTY2hlZHVsZXJWaWV3RGF5LFxyXG4gICAgQ2FsZW5kYXJTY2hlZHVsZXJFdmVudCxcclxuICAgIFNjaGVkdWxlclZpZXdIb3VyLFxyXG4gICAgU2NoZWR1bGVyVmlld0hvdXJTZWdtZW50XHJcbn0gZnJvbSAnLi4vc2NoZWR1bGVyL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgICBEYXlWaWV3SG91clxyXG59IGZyb20gJ2NhbGVuZGFyLXV0aWxzJztcclxuaW1wb3J0IHtcclxuICAgIENhbGVuZGFyVmlldyxcclxuICAgIERhdGVBZGFwdGVyXHJcbn0gZnJvbSAnYW5ndWxhci1jYWxlbmRhcic7XHJcbmltcG9ydCB7IE1JTlVURVNfSU5fSE9VUiB9IGZyb20gJy4uL3NjaGVkdWxlci91dGlscy9jYWxlbmRhci1zY2hlZHVsZXItdXRpbHMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFBlcmlvZChkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXIsIHBlcmlvZDogQ2FsZW5kYXJWaWV3LCBkYXRlOiBEYXRlLCBhbW91bnQ6IG51bWJlcik6IERhdGUge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBkYXk6IGRhdGVBZGFwdGVyLmFkZERheXMsXHJcbiAgICAgICAgd2VlazogZGF0ZUFkYXB0ZXIuYWRkV2Vla3MsXHJcbiAgICAgICAgbW9udGg6IGRhdGVBZGFwdGVyLmFkZE1vbnRoc1xyXG4gICAgfVtwZXJpb2RdKGRhdGUsIGFtb3VudCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzdWJQZXJpb2QoZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyLCBwZXJpb2Q6IENhbGVuZGFyVmlldywgZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIpOiBEYXRlIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF5OiBkYXRlQWRhcHRlci5zdWJEYXlzLFxyXG4gICAgICAgIHdlZWs6IGRhdGVBZGFwdGVyLnN1YldlZWtzLFxyXG4gICAgICAgIG1vbnRoOiBkYXRlQWRhcHRlci5zdWJNb250aHNcclxuICAgIH1bcGVyaW9kXShkYXRlLCBhbW91bnQpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZlBlcmlvZChkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXIsIHBlcmlvZDogQ2FsZW5kYXJWaWV3LCBkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGRheTogZGF0ZUFkYXB0ZXIuc3RhcnRPZkRheSxcclxuICAgICAgICB3ZWVrOiBkYXRlQWRhcHRlci5zdGFydE9mV2VlayxcclxuICAgICAgICBtb250aDogZGF0ZUFkYXB0ZXIuc3RhcnRPZk1vbnRoXHJcbiAgICB9W3BlcmlvZF0oZGF0ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbmRPZlBlcmlvZChkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXIsIHBlcmlvZDogQ2FsZW5kYXJWaWV3LCBkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGRheTogZGF0ZUFkYXB0ZXIuZW5kT2ZEYXksXHJcbiAgICAgICAgd2VlazogZGF0ZUFkYXB0ZXIuZW5kT2ZXZWVrLFxyXG4gICAgICAgIG1vbnRoOiBkYXRlQWRhcHRlci5lbmRPZk1vbnRoXHJcbiAgICB9W3BlcmlvZF0oZGF0ZSk7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY29uc3QgdHJhY2tCeURheU9yRXZlbnQgPSAoaW5kZXg6IG51bWJlciwgZXZlbnQ6IFNjaGVkdWxlclZpZXdFdmVudCApID0+XHJcbiAgICAoZXZlbnQuZXZlbnQuaWQgPyBldmVudC5ldmVudC5pZCA6IGV2ZW50LmV2ZW50KTtcclxuXHJcbmV4cG9ydCBjb25zdCB0cmFja0J5SG91ckNvbHVtbiA9IChpbmRleDogbnVtYmVyLCBkYXk6IFNjaGVkdWxlclZpZXdEYXkpID0+XHJcbiAgICBkYXkuaG91cnNbMF0gPyBkYXkuaG91cnNbMF0uc2VnbWVudHNbMF0uZGF0ZS50b0lTT1N0cmluZygpIDogZGF5O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyYWNrQnlIb3VyID0gKGluZGV4OiBudW1iZXIsIGhvdXI6IERheVZpZXdIb3VyIHwgU2NoZWR1bGVyVmlld0hvdXIpID0+XHJcbiAgICBob3VyLnNlZ21lbnRzWzBdLmRhdGUudG9JU09TdHJpbmcoKTtcclxuXHJcbmV4cG9ydCBjb25zdCB0cmFja0J5SG91clNlZ21lbnQgPSAoaW5kZXg6IG51bWJlciwgc2VnbWVudDogU2NoZWR1bGVyVmlld0hvdXJTZWdtZW50KSA9PlxyXG4gICAgc2VnbWVudC5kYXRlLnRvSVNPU3RyaW5nKCk7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pbmltdW1FdmVudEhlaWdodEluTWludXRlcyhob3VyU2VnbWVudHM6IG51bWJlciwgaG91clNlZ21lbnRIZWlnaHQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIChNSU5VVEVTX0lOX0hPVVIgLyAoaG91clNlZ21lbnRzICogaG91clNlZ21lbnRIZWlnaHQpKSAqIGhvdXJTZWdtZW50SGVpZ2h0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEV2ZW50RW5kKGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlciwgZXZlbnQ6IENhbGVuZGFyU2NoZWR1bGVyRXZlbnQsIG1pbmltdW1NaW51dGVzOiBudW1iZXIpOiBEYXRlIHtcclxuICAgIHJldHVybiBldmVudC5lbmQgPyBldmVudC5lbmQgOiBkYXRlQWRhcHRlci5hZGRNaW51dGVzKGV2ZW50LnN0YXJ0LCBtaW5pbXVtTWludXRlcyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvTmVhcmVzdChhbW91bnQ6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQoYW1vdW50IC8gcHJlY2lzaW9uKSAqIHByZWNpc2lvbjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pbnV0ZXNNb3ZlZChtb3ZlZFk6IG51bWJlciwgaG91clNlZ21lbnRzOiBudW1iZXIsIGhvdXJTZWdtZW50SGVpZ2h0OiBudW1iZXIsIGV2ZW50U25hcFNpemU6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBjb25zdCBkcmFnZ2VkSW5QaXhlbHNTbmFwU2l6ZSA9IHJvdW5kVG9OZWFyZXN0KG1vdmVkWSwgZXZlbnRTbmFwU2l6ZSB8fCBob3VyU2VnbWVudEhlaWdodCk7XHJcbiAgICBjb25zdCBwaXhlbEFtb3VudEluTWludXRlcyA9IE1JTlVURVNfSU5fSE9VUiAvIChob3VyU2VnbWVudHMgKiBob3VyU2VnbWVudEhlaWdodCk7XHJcbiAgICByZXR1cm4gZHJhZ2dlZEluUGl4ZWxzU25hcFNpemUgKiBwaXhlbEFtb3VudEluTWludXRlcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzRHJhZ2dlZFdpdGhpblBlcmlvZChuZXdTdGFydDogRGF0ZSwgbmV3RW5kOiBEYXRlLCBwZXJpb2Q6IFNjaGVkdWxlclZpZXdQZXJpb2QpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGVuZCA9IG5ld0VuZCB8fCBuZXdTdGFydDtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgKHBlcmlvZC5zdGFydCA8PSBuZXdTdGFydCAmJiBuZXdTdGFydCA8PSBwZXJpb2QuZW5kKSB8fFxyXG4gICAgICAgIChwZXJpb2Quc3RhcnQgPD0gZW5kICYmIGVuZCA8PSBwZXJpb2QuZW5kKVxyXG4gICAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEZpcmVEcm9wcGVkRXZlbnQoZHJvcEV2ZW50OiB7IGRyb3BEYXRhPzogeyBldmVudD86IENhbGVuZGFyU2NoZWR1bGVyRXZlbnQ7IGNhbGVuZGFySWQ/OiBzeW1ib2wgfSB9LCBkYXRlOiBEYXRlLCBjYWxlbmRhcklkOiBzeW1ib2wpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgZHJvcEV2ZW50LmRyb3BEYXRhICYmXHJcbiAgICAgICAgZHJvcEV2ZW50LmRyb3BEYXRhLmV2ZW50ICYmXHJcbiAgICAgICAgZHJvcEV2ZW50LmRyb3BEYXRhLmNhbGVuZGFySWQgIT09IGNhbGVuZGFySWRcclxuICAgICk7XHJcbn1cclxuIl19