@daypilot/daypilot-lite-angular
Version:
DayPilot Lite for Angular
102 lines • 11.3 kB
JavaScript
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 DayPilotSchedulerComponent {
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.Scheduler(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;
}
}
DayPilotSchedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: DayPilotSchedulerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
DayPilotSchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: DayPilotSchedulerComponent, selector: "daypilot-scheduler", 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: DayPilotSchedulerComponent, decorators: [{
type: Component,
args: [{
selector: 'daypilot-scheduler',
template: `
<div id='{{id}}'></div>`,
styles: [``]
}]
}], propDecorators: { viewChange: [{
type: Output
}], events: [{
type: Input
}], config: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlsb3Qtc2NoZWR1bGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RheXBpbG90L2RheXBpbG90LWxpdGUtYW5ndWxhci9zcmMvbGliL2RheXBpbG90LXNjaGVkdWxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQVcsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLFFBQVEsQ0FBQzs7QUFRckMsTUFBTSxPQUFPLDBCQUEwQjtJQU52QztRQVNZLGVBQVUsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDN0UsV0FBTSxHQUF5QixFQUFFLENBQUM7UUFFbkMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0Qyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFekIsUUFBRyxHQUFXLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0tBNkU3RDtJQTNFQyxJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJ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LENBQUMsRUFBRSxDQUFDO2lCQUNiOzhCQUlXLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0UsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBEb0NoZWNrLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF5UGlsb3R9IGZyb20gXCIuL2NvcmUvZGF5cGlsb3QtY29yZVwiO1xuaW1wb3J0IHtvcHRIYXNoLCByYW5kfSBmcm9tIFwiLi91dGlsXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RheXBpbG90LXNjaGVkdWxlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBpZD0ne3tpZH19Jz48L2Rpdj5gLFxuICBzdHlsZXM6IFtgYF1cbn0pXG5leHBvcnQgY2xhc3MgRGF5UGlsb3RTY2hlZHVsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgRG9DaGVjayB7XG5cbiAgcHVibGljIGNvbnRyb2whOiBEYXlQaWxvdC5TY2hlZHVsZXI7XG4gIEBPdXRwdXQoKSB2aWV3Q2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF5UGlsb3QuRGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERheVBpbG90LkRhdGU+KCk7XG4gIEBJbnB1dCgpIGV2ZW50czogRGF5UGlsb3QuRXZlbnREYXRhW10gPSBbXTtcbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XG4gIHByaXZhdGUgX3JlcXVlc3RVcGRhdGVGdWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3JlcXVlc3RVcGRhdGVFdmVudHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVxdWVzdFZpZXdDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaGFzaE9wdGlvbnM6IHN0cmluZyA9IFwiXCI7XG4gIHByaXZhdGUgX2hhc2hFdmVudHM6IHN0cmluZyA9IFwiXCI7XG5cbiAgcHJpdmF0ZSBfaWQ6IHN0cmluZyA9IFwiZHBfXCIgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHJhbmQoKTtcblxuICBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lkO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgICBsZXQgZHAgPSBuZXcgRGF5UGlsb3QuU2NoZWR1bGVyKHRoaXMuaWQpO1xuICAgIHRoaXMuY29udHJvbCA9IGRwO1xuICAgIHRoaXMudXBkYXRlT3B0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVxdWVzdFVwZGF0ZUZ1bGwgPSBmYWxzZTsgLy8gY29uZmlnIGp1c3QgbG9hZGVkIGFuZCBjYWxsaW5nIGluaXQoKSwgbm8gbmVlZCB0byBjYWxsIHVwZGF0ZSBhZ2FpblxuICAgIHRoaXMuX3JlcXVlc3RVcGRhdGVFdmVudHMgPSBmYWxzZTsgLy8gY29uZmlnIGp1c3QgbG9hZGVkIGFuZCBjYWxsaW5nIGluaXQoKSwgbm8gbmVlZCB0byBjYWxsIHVwZGF0ZSBhZ2FpblxuICAgIGRwLmluaXQoKTtcbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUV2ZW50cygpO1xuICAgIGlmICh0aGlzLl9yZXF1ZXN0VXBkYXRlRnVsbCkge1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZSgpO1xuICAgICAgdGhpcy5fcmVxdWVzdFVwZGF0ZUZ1bGwgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3JlcXVlc3RVcGRhdGVFdmVudHMgPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5fcmVxdWVzdFVwZGF0ZUV2ZW50cykge1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZSh7IFwiZXZlbnRzXCI6IHRoaXMuZXZlbnRzIH0pO1xuICAgICAgdGhpcy5fcmVxdWVzdFVwZGF0ZUV2ZW50cyA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcmVxdWVzdFZpZXdDaGFuZ2UpIHtcbiAgICAgIHRoaXMuX3JlcXVlc3RWaWV3Q2hhbmdlID0gZmFsc2U7XG4gICAgICBsZXQgYXJnczogYW55ID0ge307XG4gICAgICB0aGlzLnZpZXdDaGFuZ2UuZW1pdChhcmdzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc3Bvc2UoKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sLmRpc3Bvc2UoKTtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdGhpcy5jb250cm9sID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgbGV0IGhhc2ggPSBvcHRIYXNoKHRoaXMuY29uZmlnKTtcbiAgICBpZiAoaGFzaCAhPT0gdGhpcy5faGFzaE9wdGlvbnMpIHtcbiAgICAgIGxldCBkcCA9IHRoaXMuY29udHJvbCBhcyBhbnk7XG4gICAgICBkcC5pbnRlcm5hbC5sb2FkT3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gICAgICB0aGlzLl9yZXF1ZXN0VXBkYXRlRnVsbCA9IHRydWU7XG4gICAgICB0aGlzLl9yZXF1ZXN0Vmlld0NoYW5nZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuX2hhc2hPcHRpb25zID0gaGFzaDtcblxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVFdmVudHMoKTogdm9pZCB7XG4gICAgbGV0IGhhc2ggPSBvcHRIYXNoKHRoaXMuZXZlbnRzKTtcbiAgICBpZiAoaGFzaCAhPT0gdGhpcy5faGFzaEV2ZW50cykge1xuICAgICAgbGV0IGRwID0gdGhpcy5jb250cm9sO1xuICAgICAgaWYgKGRwKSB7XG4gICAgICAgIGRwLmV2ZW50cy5saXN0ID0gdGhpcy5ldmVudHM7XG4gICAgICB9XG4gICAgICB0aGlzLl9yZXF1ZXN0VXBkYXRlRXZlbnRzID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5faGFzaEV2ZW50cyA9IGhhc2g7XG4gIH1cbn1cbiJdfQ==