angular-calendar-timeline
Version:
A timeline for angular that shows events on a timeline board in different modes: days, weeks, and months.
52 lines • 7.85 kB
JavaScript
import { BaseScaleGenerator } from './base-scale-generator';
import { DateHelpers } from "../helpers/date-helpers";
import { inject, Injectable, InjectionToken } from "@angular/core";
import { MonthScaleFormatter } from "../formatters/month-scale-formatter";
import * as i0 from "@angular/core";
export const MONTH_SCALE_GENERATOR_CONFIG = new InjectionToken('Month scale config');
const DefaultConfig = {
formatter: new MonthScaleFormatter(),
};
export class DefaultMonthScaleGenerator extends BaseScaleGenerator {
_getConfig() {
return { ...DefaultConfig, ...inject(MONTH_SCALE_GENERATOR_CONFIG, {}) };
}
_validateStartDate(startDate) {
const newDate = new Date(startDate);
const countOfEmptyYearsBefore = 1;
newDate.setDate(1);
newDate.setMonth(0);
newDate.setFullYear(newDate.getFullYear() - countOfEmptyYearsBefore);
return newDate;
}
_validateEndDate(endDate) {
const newDate = DateHelpers.lastDayOfMonth(endDate);
const countOfEmptyYearsAfter = 1;
newDate.setMonth(11);
newDate.setFullYear(newDate.getFullYear() + countOfEmptyYearsAfter);
return newDate;
}
_generateGroups(date) {
date = new Date(date.getFullYear(), 1, 0, 0, 0, 0, 0);
return [{ date, id: DateHelpers.generateDateId(date), coverageInPercents: 100 }];
}
_getColumnIndex(date) {
return date.getMonth() + 1;
}
_getNextColumnDate(date) {
return new Date(date.setMonth(date.getMonth() + 1));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultMonthScaleGenerator, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultMonthScaleGenerator }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultMonthScaleGenerator, decorators: [{
type: Injectable
}] });
export class MonthScaleGenerator extends DefaultMonthScaleGenerator {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonthScaleGenerator, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonthScaleGenerator }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonthScaleGenerator, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtc2NhbGUtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jYWxlbmRhci10aW1lbGluZS9zcmMvbGliL3NjYWxlLWdlbmVyYXRvci9tb250aC1zY2FsZS1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFMUUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQXdCLG9CQUFvQixDQUFDLENBQUM7QUFFNUcsTUFBTSxhQUFhLEdBQTBCO0lBQzNDLFNBQVMsRUFBRSxJQUFJLG1CQUFtQixFQUFFO0NBQ3JDLENBQUE7QUFHRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsa0JBQWtCO0lBQ3RELFVBQVU7UUFDbEIsT0FBTyxFQUFDLEdBQUcsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixFQUFFLEVBQUUsQ0FBQyxFQUFDLENBQUM7SUFDekUsQ0FBQztJQUVTLGtCQUFrQixDQUFDLFNBQW9CO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxPQUFrQjtRQUMzQyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztRQUVwRSxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRVMsZUFBZSxDQUFDLElBQVU7UUFDbEMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFUyxlQUFlLENBQUMsSUFBVTtRQUNsQyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVTLGtCQUFrQixDQUFDLElBQVU7UUFDckMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7K0dBbkNVLDBCQUEwQjttSEFBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOztBQXdDWCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsMEJBQTBCOytHQUF0RCxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VTY2FsZUdlbmVyYXRvciB9IGZyb20gJy4vYmFzZS1zY2FsZS1nZW5lcmF0b3InO1xyXG5pbXBvcnQgeyBEYXRlSW5wdXQsIElTY2FsZUdlbmVyYXRvciwgSVNjYWxlR2VuZXJhdG9yQ29uZmlnLCBJU2NhbGVHcm91cCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IERhdGVIZWxwZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGF0ZS1oZWxwZXJzXCI7XHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNb250aFNjYWxlRm9ybWF0dGVyIH0gZnJvbSBcIi4uL2Zvcm1hdHRlcnMvbW9udGgtc2NhbGUtZm9ybWF0dGVyXCI7XHJcblxyXG5leHBvcnQgY29uc3QgTU9OVEhfU0NBTEVfR0VORVJBVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJU2NhbGVHZW5lcmF0b3JDb25maWc+KCdNb250aCBzY2FsZSBjb25maWcnKTtcclxuXHJcbmNvbnN0IERlZmF1bHRDb25maWc6IElTY2FsZUdlbmVyYXRvckNvbmZpZyA9IHtcclxuICBmb3JtYXR0ZXI6IG5ldyBNb250aFNjYWxlRm9ybWF0dGVyKCksXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRNb250aFNjYWxlR2VuZXJhdG9yIGV4dGVuZHMgQmFzZVNjYWxlR2VuZXJhdG9yIGltcGxlbWVudHMgSVNjYWxlR2VuZXJhdG9yIHtcclxuICBwcm90ZWN0ZWQgX2dldENvbmZpZygpOiBJU2NhbGVHZW5lcmF0b3JDb25maWcge1xyXG4gICAgcmV0dXJuIHsuLi5EZWZhdWx0Q29uZmlnLCAuLi5pbmplY3QoTU9OVEhfU0NBTEVfR0VORVJBVE9SX0NPTkZJRywge30pfTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfdmFsaWRhdGVTdGFydERhdGUoc3RhcnREYXRlOiBEYXRlSW5wdXQpOiBEYXRlIHtcclxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG4gICAgY29uc3QgY291bnRPZkVtcHR5WWVhcnNCZWZvcmUgPSAxO1xyXG4gICAgbmV3RGF0ZS5zZXREYXRlKDEpO1xyXG4gICAgbmV3RGF0ZS5zZXRNb250aCgwKTtcclxuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIobmV3RGF0ZS5nZXRGdWxsWWVhcigpIC0gY291bnRPZkVtcHR5WWVhcnNCZWZvcmUpO1xyXG5cclxuICAgIHJldHVybiBuZXdEYXRlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF92YWxpZGF0ZUVuZERhdGUoZW5kRGF0ZTogRGF0ZUlucHV0KTogRGF0ZSB7XHJcbiAgICBjb25zdCBuZXdEYXRlID0gRGF0ZUhlbHBlcnMubGFzdERheU9mTW9udGgoZW5kRGF0ZSk7XHJcbiAgICBjb25zdCBjb3VudE9mRW1wdHlZZWFyc0FmdGVyID0gMTtcclxuICAgIG5ld0RhdGUuc2V0TW9udGgoMTEpO1xyXG4gICAgbmV3RGF0ZS5zZXRGdWxsWWVhcihuZXdEYXRlLmdldEZ1bGxZZWFyKCkgKyBjb3VudE9mRW1wdHlZZWFyc0FmdGVyKTtcclxuXHJcbiAgICByZXR1cm4gbmV3RGF0ZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfZ2VuZXJhdGVHcm91cHMoZGF0ZTogRGF0ZSk6IElTY2FsZUdyb3VwW10ge1xyXG4gICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMSwgMCwgMCwgMCwgMCwgMCk7XHJcbiAgICByZXR1cm4gW3tkYXRlLCBpZDogRGF0ZUhlbHBlcnMuZ2VuZXJhdGVEYXRlSWQoZGF0ZSksIGNvdmVyYWdlSW5QZXJjZW50czogMTAwfV07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2dldENvbHVtbkluZGV4KGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2dldE5leHRDb2x1bW5EYXRlKGRhdGU6IERhdGUpOiBEYXRlIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIDEpKTtcclxuICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1vbnRoU2NhbGVHZW5lcmF0b3IgZXh0ZW5kcyBEZWZhdWx0TW9udGhTY2FsZUdlbmVyYXRvciB7XHJcbn1cclxuIl19