angular-calendar-timeline
Version:
A timeline for angular that shows events on a timeline board in different modes: days, weeks, and months.
48 lines • 7.38 kB
JavaScript
export class DateHelpers {
static generateDateId(date) {
return `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}-${date.getHours()}-${date.getMinutes()}`;
}
static lastDayOfMonth(date) {
const dateWithLastDayOfMonth = new Date(date);
dateWithLastDayOfMonth.setMonth(dateWithLastDayOfMonth.getMonth() + 1);
dateWithLastDayOfMonth.setDate(0);
return dateWithLastDayOfMonth;
}
static getDaysInMonth(date) {
return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();
}
static firstMondayOfMonth(date) {
const firstDay = new Date(new Date(date).setDate(1));
const monday = DateHelpers.firstDayOfWeek(firstDay);
return monday.getMonth() === date.getMonth() ? monday : new Date(monday.setDate(monday.getDate() + 7));
}
static firstDayOfWeek(date) {
date = new Date(date);
const first = date.getDate() - date.getDay() + 1;
return new Date(new Date(date).setDate(first));
}
static lastDayOfWeek(date) {
date = new Date(date);
const dayOfWeek = date.getDay();
const diffToSunday = (dayOfWeek === 0) ? 0 : 7 - dayOfWeek;
date.setDate(date.getDate() + diffToSunday);
return date;
}
static dayBeginningTime(day) {
day = new Date(day);
day.setHours(0, 0, 0, 0);
return day;
}
static dayEndingTime(day) {
day = new Date(day);
day.setHours(23, 59, 59, 999);
return day;
}
}
export var MillisecondsToTime;
(function (MillisecondsToTime) {
MillisecondsToTime[MillisecondsToTime["Minute"] = 60000] = "Minute";
MillisecondsToTime[MillisecondsToTime["Day"] = 86400000] = "Day";
MillisecondsToTime[MillisecondsToTime["Week"] = 604800000] = "Week";
})(MillisecondsToTime || (MillisecondsToTime = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jYWxlbmRhci10aW1lbGluZS9zcmMvbGliL2hlbHBlcnMvZGF0ZS1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBVTtRQUM5QixPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO0lBQzlHLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQWU7UUFDbkMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkUsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxDLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBVTtRQUM5QixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBVTtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBELE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQWU7UUFDbkMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWpELE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBZTtRQUNsQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFFNUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQVM7UUFDL0IsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFTO1FBQzVCLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBSVg7QUFKRCxXQUFZLGtCQUFrQjtJQUM1QixtRUFBa0IsQ0FBQTtJQUNsQixnRUFBYyxDQUFBO0lBQ2QsbUVBQWlDLENBQUE7QUFDbkMsQ0FBQyxFQUpXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFJN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0ZUhlbHBlcnMge1xyXG4gIHN0YXRpYyBnZW5lcmF0ZURhdGVJZChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7ZGF0ZS5nZXRNb250aCgpfS0ke2RhdGUuZ2V0RGF0ZSgpfS0ke2RhdGUuZ2V0SG91cnMoKX0tJHtkYXRlLmdldE1pbnV0ZXMoKX1gO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGxhc3REYXlPZk1vbnRoKGRhdGU6IERhdGVJbnB1dCk6IERhdGUge1xyXG4gICAgY29uc3QgZGF0ZVdpdGhMYXN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgZGF0ZVdpdGhMYXN0RGF5T2ZNb250aC5zZXRNb250aChkYXRlV2l0aExhc3REYXlPZk1vbnRoLmdldE1vbnRoKCkgKyAxKTtcclxuICAgIGRhdGVXaXRoTGFzdERheU9mTW9udGguc2V0RGF0ZSgwKTtcclxuXHJcbiAgICByZXR1cm4gZGF0ZVdpdGhMYXN0RGF5T2ZNb250aDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXREYXlzSW5Nb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDApLmdldERhdGUoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmaXJzdE1vbmRheU9mTW9udGgoZGF0ZTogRGF0ZSk6IERhdGUge1xyXG4gICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZShuZXcgRGF0ZShkYXRlKS5zZXREYXRlKDEpKTtcclxuICAgIGNvbnN0IG1vbmRheSA9IERhdGVIZWxwZXJzLmZpcnN0RGF5T2ZXZWVrKGZpcnN0RGF5KTtcclxuXHJcbiAgICByZXR1cm4gbW9uZGF5LmdldE1vbnRoKCkgPT09IGRhdGUuZ2V0TW9udGgoKSA/IG1vbmRheSA6IG5ldyBEYXRlKG1vbmRheS5zZXREYXRlKG1vbmRheS5nZXREYXRlKCkgKyA3KSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZmlyc3REYXlPZldlZWsoZGF0ZTogRGF0ZUlucHV0KTogRGF0ZSB7XHJcbiAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBjb25zdCBmaXJzdCA9IGRhdGUuZ2V0RGF0ZSgpIC0gZGF0ZS5nZXREYXkoKSArIDE7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKGRhdGUpLnNldERhdGUoZmlyc3QpKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBsYXN0RGF5T2ZXZWVrKGRhdGU6IERhdGVJbnB1dCk6IERhdGUge1xyXG4gICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgY29uc3QgZGF5T2ZXZWVrID0gZGF0ZS5nZXREYXkoKTtcclxuICAgIGNvbnN0IGRpZmZUb1N1bmRheSA9IChkYXlPZldlZWsgPT09IDApID8gMCA6IDcgLSBkYXlPZldlZWs7XHJcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkaWZmVG9TdW5kYXkpO1xyXG5cclxuICAgIHJldHVybiBkYXRlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRheUJlZ2lubmluZ1RpbWUoZGF5OiBEYXRlKTogRGF0ZSB7XHJcbiAgICBkYXkgPSBuZXcgRGF0ZShkYXkpO1xyXG4gICAgZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG5cclxuICAgIHJldHVybiBkYXk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGF5RW5kaW5nVGltZShkYXk6IERhdGUpOiBEYXRlIHtcclxuICAgIGRheSA9IG5ldyBEYXRlKGRheSk7XHJcbiAgICBkYXkuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcclxuXHJcbiAgICByZXR1cm4gZGF5O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGVudW0gTWlsbGlzZWNvbmRzVG9UaW1lIHtcclxuICBNaW51dGUgPSAxMDAwICogNjAsXHJcbiAgRGF5ID0gODY0MDAwMDAsXHJcbiAgV2VlayA9IE1pbGxpc2Vjb25kc1RvVGltZS5EYXkgKiA3XHJcbn1cclxuIl19