UNPKG

@daypilot/daypilot-lite-angular

Version:

DayPilot Lite for Angular

102 lines 11.3 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { DayPilot } from "./core/daypilot-core"; import { optHash, rand } from "./util"; import * as i0 from "@angular/core"; export class DayPilotCalendarComponent { constructor() { this.viewChange = new EventEmitter(); this.events = []; this._requestUpdateFull = false; this._requestUpdateEvents = false; this._requestViewChange = false; this._hashOptions = ""; this._hashEvents = ""; this._id = "dp_" + new Date().getTime() + rand(); } get id() { return this._id; } ngOnInit() { } ngOnDestroy() { this.dispose(); } ngAfterViewInit() { this.dispose(); let dp = new DayPilot.Calendar(this.id); this.control = dp; this.updateOptions(); this.updateEvents(); this._requestUpdateFull = false; // config just loaded and calling init(), no need to call update again this._requestUpdateEvents = false; // config just loaded and calling init(), no need to call update again dp.init(); } ngDoCheck() { if (!this.control) { return; } this.updateOptions(); this.updateEvents(); if (this._requestUpdateFull) { this.control.update(); this._requestUpdateFull = false; this._requestUpdateEvents = false; } else if (this._requestUpdateEvents) { this.control.update({ "events": this.events }); this._requestUpdateEvents = false; } if (this._requestViewChange) { this._requestViewChange = false; let args = {}; this.viewChange.emit(args); } } dispose() { if (this.control) { this.control.dispose(); //@ts-ignore this.control = null; } } updateOptions() { let hash = optHash(this.config); if (hash !== this._hashOptions) { let dp = this.control; dp.internal.loadOptions(this.config); this._requestUpdateFull = true; this._requestViewChange = true; } this._hashOptions = hash; } updateEvents() { let hash = optHash(this.events); if (hash !== this._hashEvents) { let dp = this.control; if (dp) { dp.events.list = this.events; } this._requestUpdateEvents = true; } this._hashEvents = hash; } } DayPilotCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: DayPilotCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); DayPilotCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: DayPilotCalendarComponent, selector: "daypilot-calendar", inputs: { events: "events", config: "config" }, outputs: { viewChange: "viewChange" }, ngImport: i0, template: ` <div id='{{id}}'></div>`, isInline: true, styles: [""] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: DayPilotCalendarComponent, decorators: [{ type: Component, args: [{ selector: 'daypilot-calendar', template: ` <div id='{{id}}'></div>`, styles: [``] }] }], propDecorators: { viewChange: [{ type: Output }], events: [{ type: Input }], config: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlsb3QtY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF5cGlsb3QvZGF5cGlsb3QtbGl0ZS1hbmd1bGFyL3NyYy9saWIvZGF5cGlsb3QtY2FsZW5kYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7O0FBUXJDLE1BQU0sT0FBTyx5QkFBeUI7SUFOdEM7UUFTWSxlQUFVLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQzdFLFdBQU0sR0FBeUIsRUFBRSxDQUFDO1FBRW5DLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCLFFBQUcsR0FBVyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztLQTZFN0Q7SUEzRUMsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxD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QUFDLEVBQUUsQ0FBQztpQkFDYjs4QkFJVyxVQUFVO3NCQUFuQixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRG9DaGVjaywgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RheVBpbG90fSBmcm9tIFwiLi9jb3JlL2RheXBpbG90LWNvcmVcIjtcbmltcG9ydCB7b3B0SGFzaCwgcmFuZH0gZnJvbSBcIi4vdXRpbFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXlwaWxvdC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBpZD0ne3tpZH19Jz48L2Rpdj5gLFxuICBzdHlsZXM6IFtgYF1cbn0pXG5leHBvcnQgY2xhc3MgRGF5UGlsb3RDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBEb0NoZWNrIHtcblxuICBwdWJsaWMgY29udHJvbCE6IERheVBpbG90LkNhbGVuZGFyO1xuICBAT3V0cHV0KCkgdmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPERheVBpbG90LkRhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXlQaWxvdC5EYXRlPigpO1xuICBASW5wdXQoKSBldmVudHM6IERheVBpbG90LkV2ZW50RGF0YVtdID0gW107XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBwcml2YXRlIF9yZXF1ZXN0VXBkYXRlRnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXF1ZXN0VXBkYXRlRXZlbnRzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3JlcXVlc3RWaWV3Q2hhbmdlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2hhc2hPcHRpb25zOiBzdHJpbmcgPSBcIlwiO1xuICBwcml2YXRlIF9oYXNoRXZlbnRzOiBzdHJpbmcgPSBcIlwiO1xuXG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgPSBcImRwX1wiICsgbmV3IERhdGUoKS5nZXRUaW1lKCkgKyByYW5kKCk7XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwb3NlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwb3NlKCk7XG4gICAgbGV0IGRwID0gbmV3IERheVBpbG90LkNhbGVuZGFyKHRoaXMuaWQpO1xuICAgIHRoaXMuY29udHJvbCA9IGRwO1xuICAgIHRoaXMudXBkYXRlT3B0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVxdWVzdFVwZGF0ZUZ1bGwgPSBmYWxzZTsgLy8gY29uZmlnIGp1c3QgbG9hZGVkIGFuZCBjYWxsaW5nIGluaXQoKSwgbm8gbmVlZCB0byBjYWxsIHVwZGF0ZSBhZ2FpblxuICAgIHRoaXMuX3JlcXVlc3RVcGRhdGVFdmVudHMgPSBmYWxzZTsgLy8gY29uZmlnIGp1c3QgbG9hZGVkIGFuZCBjYWxsaW5nIGluaXQoKSwgbm8gbmVlZCB0byBjYWxsIHVwZGF0ZSBhZ2FpblxuICAgIGRwLmluaXQoKTtcbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUV2ZW50cygpO1xuICAgIGlmICh0aGlzLl9yZXF1ZXN0VXBkYXRlRnVsbCkge1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZSgpO1xuICAgICAgdGhpcy5fcmVxdWVzdFVwZGF0ZUZ1bGwgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3JlcXVlc3RVcGRhdGVFdmVudHMgPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5fcmVxdWVzdFVwZGF0ZUV2ZW50cykge1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZSh7IFwiZXZlbnRzXCI6IHRoaXMuZXZlbnRzIH0pO1xuICAgICAgdGhpcy5fcmVxdWVzdFVwZGF0ZUV2ZW50cyA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcmVxdWVzdFZpZXdDaGFuZ2UpIHtcbiAgICAgIHRoaXMuX3JlcXVlc3RWaWV3Q2hhbmdlID0gZmFsc2U7XG4gICAgICBsZXQgYXJnczogYW55ID0ge307XG4gICAgICB0aGlzLnZpZXdDaGFuZ2UuZW1pdChhcmdzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc3Bvc2UoKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sLmRpc3Bvc2UoKTtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdGhpcy5jb250cm9sID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgbGV0IGhhc2ggPSBvcHRIYXNoKHRoaXMuY29uZmlnKTtcbiAgICBpZiAoaGFzaCAhPT0gdGhpcy5faGFzaE9wdGlvbnMpIHtcbiAgICAgIGxldCBkcCA9IHRoaXMuY29udHJvbCBhcyBhbnk7XG4gICAgICBkcC5pbnRlcm5hbC5sb2FkT3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gICAgICB0aGlzLl9yZXF1ZXN0VXBkYXRlRnVsbCA9IHRydWU7XG4gICAgICB0aGlzLl9yZXF1ZXN0Vmlld0NoYW5nZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuX2hhc2hPcHRpb25zID0gaGFzaDtcblxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVFdmVudHMoKTogdm9pZCB7XG4gICAgbGV0IGhhc2ggPSBvcHRIYXNoKHRoaXMuZXZlbnRzKTtcbiAgICBpZiAoaGFzaCAhPT0gdGhpcy5faGFzaEV2ZW50cykge1xuICAgICAgbGV0IGRwID0gdGhpcy5jb250cm9sO1xuICAgICAgaWYgKGRwKSB7XG4gICAgICAgIGRwLmV2ZW50cy5saXN0ID0gdGhpcy5ldmVudHM7XG4gICAgICB9XG4gICAgICB0aGlzLl9yZXF1ZXN0VXBkYXRlRXZlbnRzID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5faGFzaEV2ZW50cyA9IGhhc2g7XG4gIH1cbn1cbiJdfQ==