UNPKG

angular-calendar-scheduler

Version:

This project provide a scheduler view component for [mattlewis92/angular-calendar](https://github.com/mattlewis92/angular-calendar).

61 lines 11.4 kB
import { CalendarDateFormatter } from 'angular-calendar'; export class SchedulerDateFormatter extends CalendarDateFormatter { /** * The time formatting down the left hand side of the day view */ dayViewHour({ date, locale }) { return new Intl.DateTimeFormat(locale, { hour: 'numeric', minute: 'numeric' }).format(date); } weekViewTitle({ date, locale }) { // http://generatedcontent.org/post/59403168016/esintlapi const year = new Intl.DateTimeFormat(locale, { year: 'numeric' }).format(date); const month = new Intl.DateTimeFormat(locale, { month: 'short' }).format(date); // var firstDay: number = date.getDate() - date.getDay() + 1; // First day is the day of the month - the day of the week let firstDay = date.getDate(); if (date.getDay() === 0) { firstDay += 1; } let lastDay = firstDay + 6; // last day is the first day + 6 let firstDayMonth = month; let lastDayMonth = month; let firstDayYear = year; let lastDayYear = year; if (firstDay < 1) { const prevMonthDate = new Date(date.getFullYear(), date.getMonth() - 1); firstDayMonth = new Intl.DateTimeFormat(locale, { month: 'short' }).format(prevMonthDate); const daysInPrevMonth = this.daysInMonth(prevMonthDate); let i = 0; let prevMonthDay = daysInPrevMonth; for (i = 0; i < Math.abs(firstDay); i++) { prevMonthDay--; } firstDay = prevMonthDay; const prevMonthYear = new Intl.DateTimeFormat(locale, { year: 'numeric' }).format(prevMonthDate); if (Number(prevMonthYear) < Number(year)) { firstDayYear = prevMonthYear; } } const daysInMonth = this.daysInMonth(date); if (lastDay > daysInMonth) { const nextMonthDate = new Date(date.getFullYear(), date.getMonth() + 1); lastDayMonth = new Intl.DateTimeFormat(locale, { month: 'short' }).format(nextMonthDate); let i = 0; let nextMonthDay = 0; for (i = 0; i < (lastDay - daysInMonth); i++) { nextMonthDay++; } lastDay = nextMonthDay; const nextMonthYear = new Intl.DateTimeFormat(locale, { year: 'numeric' }).format(nextMonthDate); if (Number(nextMonthYear) > Number(year)) { lastDayYear = nextMonthYear; } } return `${firstDay}` + (firstDayMonth !== lastDayMonth ? ' ' + firstDayMonth : '') + (firstDayYear !== lastDayYear ? ' ' + firstDayYear : '') + ` - ${lastDay} ${lastDayMonth} ${lastDayYear}`; } daysInMonth(anyDateInMonth) { return new Date(anyDateInMonth.getFullYear(), anyDateInMonth.getMonth() + 1, 0).getDate(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLWRhdGUtZm9ybWF0dGVyLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1jYWxlbmRhci1zY2hlZHVsZXIvIiwic291cmNlcyI6WyJtb2R1bGVzL3NjaGVkdWxlci9mb3JtYXR0ZXJzL3NjaGVkdWxlci1kYXRlLWZvcm1hdHRlci5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFFOUUsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHFCQUFxQjtJQUU3RDs7T0FFRztJQUNJLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQXVCO1FBQ3BELE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFTSxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUF1QjtRQUN0RCx5REFBeUQ7UUFDekQsTUFBTSxJQUFJLEdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RixNQUFNLEtBQUssR0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZGLHdIQUF3SDtRQUN4SCxJQUFJLFFBQVEsR0FBVyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsSUFBSSxDQUFDLENBQUM7U0FD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Q3hELE1BQU0sT0FBTyxJQUFJLFlBQVksSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRU8sV0FBVyxDQUFDLGNBQW9CO1FBQ3BDLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FsZW5kYXJEYXRlRm9ybWF0dGVyLCBEYXRlRm9ybWF0dGVyUGFyYW1zIH0gZnJvbSAnYW5ndWxhci1jYWxlbmRhcic7XHJcblxyXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVyRGF0ZUZvcm1hdHRlciBleHRlbmRzIENhbGVuZGFyRGF0ZUZvcm1hdHRlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGltZSBmb3JtYXR0aW5nIGRvd24gdGhlIGxlZnQgaGFuZCBzaWRlIG9mIHRoZSBkYXkgdmlld1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGF5Vmlld0hvdXIoeyBkYXRlLCBsb2NhbGUgfTogRGF0ZUZvcm1hdHRlclBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJ251bWVyaWMnIH0pLmZvcm1hdChkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgd2Vla1ZpZXdUaXRsZSh7IGRhdGUsIGxvY2FsZSB9OiBEYXRlRm9ybWF0dGVyUGFyYW1zKTogc3RyaW5nIHtcclxuICAgICAgICAvLyBodHRwOi8vZ2VuZXJhdGVkY29udGVudC5vcmcvcG9zdC81OTQwMzE2ODAxNi9lc2ludGxhcGlcclxuICAgICAgICBjb25zdCB5ZWFyOiBzdHJpbmcgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pLmZvcm1hdChkYXRlKTtcclxuICAgICAgICBjb25zdCBtb250aDogc3RyaW5nID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnc2hvcnQnIH0pLmZvcm1hdChkYXRlKTtcclxuXHJcbiAgICAgICAgLy8gdmFyIGZpcnN0RGF5OiBudW1iZXIgPSBkYXRlLmdldERhdGUoKSAtIGRhdGUuZ2V0RGF5KCkgKyAxOyAvLyBGaXJzdCBkYXkgaXMgdGhlIGRheSBvZiB0aGUgbW9udGggLSB0aGUgZGF5IG9mIHRoZSB3ZWVrXHJcbiAgICAgICAgbGV0IGZpcnN0RGF5OiBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuICAgICAgICBpZiAoZGF0ZS5nZXREYXkoKSA9PT0gMCkge1xyXG4gICAgICAgICAgICBmaXJzdERheSArPSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxhc3REYXk6IG51bWJlciA9IGZpcnN0RGF5ICsgNjsgLy8gbGFzdCBkYXkgaXMgdGhlIGZpcnN0IGRheSArIDZcclxuXHJcbiAgICAgICAgbGV0IGZpcnN0RGF5TW9udGg6IHN0cmluZyA9IG1vbnRoO1xyXG4gICAgICAgIGxldCBsYXN0RGF5TW9udGg6IHN0cmluZyA9IG1vbnRoO1xyXG5cclxuICAgICAgICBsZXQgZmlyc3REYXlZZWFyOiBzdHJpbmcgPSB5ZWFyO1xyXG4gICAgICAgIGxldCBsYXN0RGF5WWVhcjogc3RyaW5nID0geWVhcjtcclxuXHJcbiAgICAgICAgaWYgKGZpcnN0RGF5IDwgMSkge1xyXG4gICAgICAgICAgICBjb25zdCBwcmV2TW9udGhEYXRlOiBEYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgLSAxKTtcclxuICAgICAgICAgICAgZmlyc3REYXlNb250aCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ3Nob3J0JyB9KS5mb3JtYXQocHJldk1vbnRoRGF0ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRheXNJblByZXZNb250aDogbnVtYmVyID0gdGhpcy5kYXlzSW5Nb250aChwcmV2TW9udGhEYXRlKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBpOiBudW1iZXIgPSAwO1xyXG4gICAgICAgICAgICBsZXQgcHJldk1vbnRoRGF5OiBudW1iZXIgPSBkYXlzSW5QcmV2TW9udGg7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBNYXRoLmFicyhmaXJzdERheSk7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgcHJldk1vbnRoRGF5LS07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmlyc3REYXkgPSBwcmV2TW9udGhEYXk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwcmV2TW9udGhZZWFyOiBzdHJpbmcgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pLmZvcm1hdChwcmV2TW9udGhEYXRlKTtcclxuICAgICAgICAgICAgaWYgKE51bWJlcihwcmV2TW9udGhZZWFyKSA8IE51bWJlcih5ZWFyKSkge1xyXG4gICAgICAgICAgICAgICAgZmlyc3REYXlZZWFyID0gcHJldk1vbnRoWWVhcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGF5c0luTW9udGg6IG51bWJlciA9IHRoaXMuZGF5c0luTW9udGgoZGF0ZSk7XHJcbiAgICAgICAgaWYgKGxhc3REYXkgPiBkYXlzSW5Nb250aCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0TW9udGhEYXRlOiBEYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgKyAxKTtcclxuICAgICAgICAgICAgbGFzdERheU1vbnRoID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnc2hvcnQnIH0pLmZvcm1hdChuZXh0TW9udGhEYXRlKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBpOiBudW1iZXIgPSAwO1xyXG4gICAgICAgICAgICBsZXQgbmV4dE1vbnRoRGF5OiBudW1iZXIgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGxhc3REYXkgLSBkYXlzSW5Nb250aCk7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbmV4dE1vbnRoRGF5Kys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGFzdERheSA9IG5leHRNb250aERheTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRNb250aFllYXI6IHN0cmluZyA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSkuZm9ybWF0KG5leHRNb250aERhdGUpO1xyXG4gICAgICAgICAgICBpZiAoTnVtYmVyKG5leHRNb250aFllYXIpID4gTnVtYmVyKHllYXIpKSB7XHJcbiAgICAgICAgICAgICAgICBsYXN0RGF5WWVhciA9IG5leHRNb250aFllYXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBgJHtmaXJzdERheX1gICsgKGZpcnN0RGF5TW9udGggIT09IGxhc3REYXlNb250aCA/ICcgJyArIGZpcnN0RGF5TW9udGggOiAnJykgK1xyXG4gICAgICAgICAgICAoZmlyc3REYXlZZWFyICE9PSBsYXN0RGF5WWVhciA/ICcgJyArIGZpcnN0RGF5WWVhciA6ICcnKSArXHJcbiAgICAgICAgICAgIGAgLSAke2xhc3REYXl9ICR7bGFzdERheU1vbnRofSAke2xhc3REYXlZZWFyfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkYXlzSW5Nb250aChhbnlEYXRlSW5Nb250aDogRGF0ZSk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGFueURhdGVJbk1vbnRoLmdldEZ1bGxZZWFyKCksIGFueURhdGVJbk1vbnRoLmdldE1vbnRoKCkgKyAxLCAwKS5nZXREYXRlKCk7XHJcbiAgICB9XHJcbn1cclxuIl19