angular-calendar-timeline
Version:
A timeline for angular that shows events on a timeline board in different modes: days, weeks, and months.
35 lines • 5.44 kB
JavaScript
import { __decorate } from "tslib";
import { DatesCacheDecorator } from '../helpers/cache';
import { DateHelpers, MillisecondsToTime } from "../helpers/date-helpers";
import { BaseViewModeAdaptor } from "./base-view-mode-adaptor";
export class WeeksViewModeAdaptor extends BaseViewModeAdaptor {
getUniqueColumnsWithinRange(start, end) {
const monday = DateHelpers.firstDayOfWeek(start);
const last = DateHelpers.lastDayOfWeek(end);
return Math.round(this.getDurationInColumns(monday, last));
}
getDurationInColumns(startDate, endDate) {
return Math.abs((startDate.getTime() - endDate.getTime()) / MillisecondsToTime.Week);
}
addColumnToDate(date, weeks) {
const newDate = new Date(date);
newDate.setDate(date.getDate() + (7 * weeks));
newDate.setHours(newDate.getHours() + (((weeks / 7) % 1) * 24));
return newDate;
}
getBeginningDateOfColumn(date) {
const start = DateHelpers.firstDayOfWeek(new Date(date));
return DateHelpers.dayBeginningTime(start);
}
getEndingDateOfColumn(date) {
const end = DateHelpers.lastDayOfWeek(new Date(date));
return DateHelpers.dayEndingTime(end);
}
}
__decorate([
DatesCacheDecorator()
], WeeksViewModeAdaptor.prototype, "getUniqueColumnsWithinRange", null);
__decorate([
DatesCacheDecorator()
], WeeksViewModeAdaptor.prototype, "getDurationInColumns", null);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla3Mtdmlldy1tb2RlLWFkYXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNhbGVuZGFyLXRpbWVsaW5lL3NyYy9saWIvdmlldy1tb2RlLWFkYXB0b3Ivd2Vla3Mtdmlldy1tb2RlLWFkYXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBRTNELDJCQUEyQixDQUFDLEtBQVcsRUFBRSxHQUFTO1FBQ2hELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFHRCxvQkFBb0IsQ0FBQyxTQUFlLEVBQUUsT0FBYTtRQUNqRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFVLEVBQUUsS0FBYTtRQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhFLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFVO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV6RCxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBVTtRQUM5QixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEQsT0FBTyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQS9CQztJQURDLG1CQUFtQixFQUFFO3VFQU1yQjtBQUdEO0lBREMsbUJBQW1CLEVBQUU7Z0VBR3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZXNDYWNoZURlY29yYXRvciB9IGZyb20gJy4uL2hlbHBlcnMvY2FjaGUnO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVycywgTWlsbGlzZWNvbmRzVG9UaW1lIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGF0ZS1oZWxwZXJzXCI7XHJcbmltcG9ydCB7IEJhc2VWaWV3TW9kZUFkYXB0b3J9IGZyb20gXCIuL2Jhc2Utdmlldy1tb2RlLWFkYXB0b3JcIjtcclxuaW1wb3J0IHsgSVZpZXdNb2RlQWRhcHRvciB9IGZyb20gXCIuLi9tb2RlbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBXZWVrc1ZpZXdNb2RlQWRhcHRvciBleHRlbmRzIEJhc2VWaWV3TW9kZUFkYXB0b3IgaW1wbGVtZW50cyBJVmlld01vZGVBZGFwdG9yIHtcclxuICBARGF0ZXNDYWNoZURlY29yYXRvcigpXHJcbiAgZ2V0VW5pcXVlQ29sdW1uc1dpdGhpblJhbmdlKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbW9uZGF5ID0gRGF0ZUhlbHBlcnMuZmlyc3REYXlPZldlZWsoc3RhcnQpO1xyXG4gICAgY29uc3QgbGFzdCA9IERhdGVIZWxwZXJzLmxhc3REYXlPZldlZWsoZW5kKTtcclxuXHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLmdldER1cmF0aW9uSW5Db2x1bW5zKG1vbmRheSwgbGFzdCkpO1xyXG4gIH1cclxuXHJcbiAgQERhdGVzQ2FjaGVEZWNvcmF0b3IoKVxyXG4gIGdldER1cmF0aW9uSW5Db2x1bW5zKHN0YXJ0RGF0ZTogRGF0ZSwgZW5kRGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gTWF0aC5hYnMoKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgLSBlbmREYXRlLmdldFRpbWUoKSkgLyBNaWxsaXNlY29uZHNUb1RpbWUuV2Vlayk7XHJcbiAgfVxyXG5cclxuICBhZGRDb2x1bW5Ub0RhdGUoZGF0ZTogRGF0ZSwgd2Vla3M6IG51bWJlcik6IERhdGUge1xyXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgbmV3RGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgKDcgKiB3ZWVrcykpO1xyXG4gICAgbmV3RGF0ZS5zZXRIb3VycyhuZXdEYXRlLmdldEhvdXJzKCkgKyAoKCh3ZWVrcyAvIDcpICUgMSkgKiAyNCkpO1xyXG5cclxuICAgIHJldHVybiBuZXdEYXRlO1xyXG4gIH1cclxuXHJcbiAgZ2V0QmVnaW5uaW5nRGF0ZU9mQ29sdW1uKGRhdGU6IERhdGUpOiBEYXRlIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZUhlbHBlcnMuZmlyc3REYXlPZldlZWsobmV3IERhdGUoZGF0ZSkpO1xyXG5cclxuICAgIHJldHVybiBEYXRlSGVscGVycy5kYXlCZWdpbm5pbmdUaW1lKHN0YXJ0KTtcclxuICB9XHJcblxyXG4gIGdldEVuZGluZ0RhdGVPZkNvbHVtbihkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICBjb25zdCBlbmQgPSBEYXRlSGVscGVycy5sYXN0RGF5T2ZXZWVrKG5ldyBEYXRlKGRhdGUpKTtcclxuXHJcbiAgICByZXR1cm4gRGF0ZUhlbHBlcnMuZGF5RW5kaW5nVGltZShlbmQpO1xyXG4gIH1cclxufVxyXG4iXX0=