angular-calendar-timeline
Version:
A timeline for angular that shows events on a timeline board in different modes: days, weeks, and months.
58 lines • 8.81 kB
JavaScript
import { __decorate } from "tslib";
import { Injectable } from "@angular/core";
import { DateHelpers } from "../helpers/date-helpers";
import { DatesCacheDecorator } from "../helpers/cache";
import * as i0 from "@angular/core";
export class BaseScaleGenerator {
constructor() {
this._config = this._getConfig();
this.formatter = this._config.formatter;
}
getStartDate(itemsBuilder) {
if (this._config.getStartDate) {
return this._config.getStartDate(itemsBuilder);
}
const firstItem = itemsBuilder.getFirstItem(false);
const now = Date.now();
const firstItemTime = new Date(firstItem?.startDate ?? now).getTime();
return this._validateStartDate(firstItemTime < now ? firstItemTime : now);
}
getEndDate(itemsBuilder) {
if (this._config.getEndDate) {
return this._config.getEndDate(itemsBuilder);
}
const lastItem = itemsBuilder.getLastItem(false);
const now = Date.now();
const lastItemDate = new Date(lastItem?.endDate ?? now);
return this._validateEndDate(lastItemDate.getTime() < now ? now : lastItemDate);
}
generateScale(startDate, endDate) {
let currentDate = new Date(startDate);
const endTime = endDate.getTime();
const columns = [];
while (currentDate.getTime() <= endTime) {
const date = new Date(currentDate);
columns.push({
id: DateHelpers.generateDateId(date),
date: date,
index: this._getColumnIndex(date),
groups: this._generateGroups(date),
});
currentDate = this._getNextColumnDate(currentDate);
}
return {
startDate,
endDate,
columns
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseScaleGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseScaleGenerator }); }
}
__decorate([
DatesCacheDecorator()
], BaseScaleGenerator.prototype, "generateScale", null);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseScaleGenerator, decorators: [{
type: Injectable
}], ctorParameters: () => [], propDecorators: { generateScale: [] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zY2FsZS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNhbGVuZGFyLXRpbWVsaW5lL3NyYy9saWIvc2NhbGUtZ2VuZXJhdG9yL2Jhc2Utc2NhbGUtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFVQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHdkQsTUFBTSxPQUFnQixrQkFBa0I7SUFLdEM7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQzFDLENBQUM7SUFjTSxZQUFZLENBQUMsWUFBNEI7UUFDOUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFdEUsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sVUFBVSxDQUFDLFlBQTRCO1FBQzVDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRXhELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUdELGFBQWEsQ0FBQyxTQUFlLEVBQUUsT0FBYTtRQUMxQyxJQUFJLFdBQVcsR0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBVyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUMsTUFBTSxPQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxPQUFPLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLEVBQUUsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDcEMsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUNqQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7YUFDbkMsQ0FBQyxDQUFDO1lBRUgsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsT0FBTztZQUNMLFNBQVM7WUFDVCxPQUFPO1lBQ1AsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDOytHQXBFbUIsa0JBQWtCO21IQUFsQixrQkFBa0I7O0FBK0N0QztJQURDLG1CQUFtQixFQUFFO3VEQXNCckI7NEZBcEVtQixrQkFBa0I7a0JBRHZDLFVBQVU7d0RBZ0RULGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERhdGVJbnB1dCxcclxuICBJSXRlbXNJdGVyYXRvcixcclxuICBJU2NhbGUsXHJcbiAgSVNjYWxlQ29sdW1uLFxyXG4gIElTY2FsZUZvcm1hdHRlcixcclxuICBJU2NhbGVHZW5lcmF0b3IsXHJcbiAgSVNjYWxlR2VuZXJhdG9yQ29uZmlnLFxyXG4gIElTY2FsZUdyb3VwXHJcbn0gZnJvbSBcIi4uL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGF0ZUhlbHBlcnMgfSBmcm9tIFwiLi4vaGVscGVycy9kYXRlLWhlbHBlcnNcIjtcclxuaW1wb3J0IHsgRGF0ZXNDYWNoZURlY29yYXRvciB9IGZyb20gXCIuLi9oZWxwZXJzL2NhY2hlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2NhbGVHZW5lcmF0b3IgaW1wbGVtZW50cyBJU2NhbGVHZW5lcmF0b3Ige1xyXG4gIHByb3RlY3RlZCBfY29uZmlnOiBJU2NhbGVHZW5lcmF0b3JDb25maWc7XHJcblxyXG4gIHB1YmxpYyBmb3JtYXR0ZXI6IElTY2FsZUZvcm1hdHRlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoKTtcclxuICAgIHRoaXMuZm9ybWF0dGVyID0gdGhpcy5fY29uZmlnLmZvcm1hdHRlcjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfZ2V0Q29uZmlnKCk6IElTY2FsZUdlbmVyYXRvckNvbmZpZztcclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IF92YWxpZGF0ZVN0YXJ0RGF0ZShzdGFydERhdGU6IERhdGVJbnB1dCk6IERhdGU7XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfdmFsaWRhdGVFbmREYXRlKGVuZERhdGU6IERhdGVJbnB1dCk6IERhdGU7XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfZ2VuZXJhdGVHcm91cHMoZGF0ZTogRGF0ZSk6IElTY2FsZUdyb3VwW107XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfZ2V0Q29sdW1uSW5kZXgoZGF0ZTogRGF0ZSk6IG51bWJlcjtcclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9nZXROZXh0Q29sdW1uRGF0ZShkYXRlOiBEYXRlKTogRGF0ZTtcclxuXHJcbiAgcHVibGljIGdldFN0YXJ0RGF0ZShpdGVtc0J1aWxkZXI6IElJdGVtc0l0ZXJhdG9yKTogRGF0ZSB7XHJcbiAgICBpZiAodGhpcy5fY29uZmlnLmdldFN0YXJ0RGF0ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fY29uZmlnLmdldFN0YXJ0RGF0ZShpdGVtc0J1aWxkZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpcnN0SXRlbSA9IGl0ZW1zQnVpbGRlci5nZXRGaXJzdEl0ZW0oZmFsc2UpO1xyXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgIGNvbnN0IGZpcnN0SXRlbVRpbWUgPSBuZXcgRGF0ZShmaXJzdEl0ZW0/LnN0YXJ0RGF0ZSA/PyBub3cpLmdldFRpbWUoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVTdGFydERhdGUoZmlyc3RJdGVtVGltZSA8IG5vdyA/IGZpcnN0SXRlbVRpbWUgOiBub3cpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEVuZERhdGUoaXRlbXNCdWlsZGVyOiBJSXRlbXNJdGVyYXRvcik6IERhdGUge1xyXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5nZXRFbmREYXRlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9jb25maWcuZ2V0RW5kRGF0ZShpdGVtc0J1aWxkZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxhc3RJdGVtID0gaXRlbXNCdWlsZGVyLmdldExhc3RJdGVtKGZhbHNlKTtcclxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XHJcbiAgICBjb25zdCBsYXN0SXRlbURhdGUgPSBuZXcgRGF0ZShsYXN0SXRlbT8uZW5kRGF0ZSA/PyBub3cpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZUVuZERhdGUobGFzdEl0ZW1EYXRlLmdldFRpbWUoKSA8IG5vdyA/IG5vdyA6IGxhc3RJdGVtRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBARGF0ZXNDYWNoZURlY29yYXRvcigpXHJcbiAgZ2VuZXJhdGVTY2FsZShzdGFydERhdGU6IERhdGUsIGVuZERhdGU6IERhdGUpOiBJU2NhbGUge1xyXG4gICAgbGV0IGN1cnJlbnREYXRlOiBEYXRlID0gbmV3IERhdGUoc3RhcnREYXRlKTtcclxuICAgIGNvbnN0IGVuZFRpbWU6IG51bWJlciA9IGVuZERhdGUuZ2V0VGltZSgpO1xyXG4gICAgY29uc3QgY29sdW1uczogSVNjYWxlQ29sdW1uW10gPSBbXTtcclxuICAgIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRUaW1lKCkgPD0gZW5kVGltZSkge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoY3VycmVudERhdGUpO1xyXG4gICAgICBjb2x1bW5zLnB1c2goe1xyXG4gICAgICAgIGlkOiBEYXRlSGVscGVycy5nZW5lcmF0ZURhdGVJZChkYXRlKSxcclxuICAgICAgICBkYXRlOiBkYXRlLFxyXG4gICAgICAgIGluZGV4OiB0aGlzLl9nZXRDb2x1bW5JbmRleChkYXRlKSxcclxuICAgICAgICBncm91cHM6IHRoaXMuX2dlbmVyYXRlR3JvdXBzKGRhdGUpLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGN1cnJlbnREYXRlID0gdGhpcy5fZ2V0TmV4dENvbHVtbkRhdGUoY3VycmVudERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHN0YXJ0RGF0ZSxcclxuICAgICAgZW5kRGF0ZSxcclxuICAgICAgY29sdW1uc1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19