UNPKG

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.34 kB
import { BehaviorSubject } from "rxjs"; export class ZoomsHandler { get activeZoom() { return this._activeZoom$.value; } get zooms() { return this._zooms; } constructor(zooms) { this._activeZoom$ = new BehaviorSubject(null); this.activeZoom$ = this._activeZoom$.asObservable(); this.setZooms(zooms); } setZooms(zooms) { this._zooms = (zooms ?? []).map((item, index) => ({ ...item, index })); this._activeZoom$.next(this.getLastZoom()); } getFirstZoom() { return this._zooms[0]; } getLastZoom() { return this._zooms[this._zooms.length - 1]; } zoomIn() { let newZoomIndex = this.activeZoom.index + 1; const lastZoomIndex = this.getLastZoom().index; if (newZoomIndex > lastZoomIndex) { newZoomIndex = lastZoomIndex; } this.changeActiveZoom(this._zooms[newZoomIndex]); } zoomOut() { let newZoomIndex = this.activeZoom.index - 1; const firstZoomIndex = this.getFirstZoom().index; if (newZoomIndex < firstZoomIndex) { newZoomIndex = firstZoomIndex; } this.changeActiveZoom(this._zooms[newZoomIndex]); } changeActiveZoom(zoom) { if (zoom) { this._activeZoom$.next(this._zooms[this._findZoomIndex(zoom)]); } } isZoomActive(zoom) { return this._findZoomIndex(zoom) === this.activeZoom.index; } _findZoomIndex(zoom) { return this._zooms.findIndex(i => i.columnWidth === zoom.columnWidth && i.viewMode === zoom.viewMode); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbXMtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY2FsZW5kYXItdGltZWxpbmUvc3JjL2xpYi96b29tcy1oYW5kbGVyL3pvb21zLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUluRCxNQUFNLE9BQU8sWUFBWTtJQU12QixJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksS0FBZ0M7UUFacEMsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBeUIsSUFBSSxDQUFDLENBQUM7UUFFekUsZ0JBQVcsR0FBdUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQVdqRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBZ0M7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDL0MsSUFBSSxZQUFZLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDakMsWUFBWSxHQUFHLGFBQWEsQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM3QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2pELElBQUksWUFBWSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLFlBQVksR0FBRyxjQUFjLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQTZCO1FBQzVDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQTZCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUM3RCxDQUFDO0lBRU8sY0FBYyxDQUFDLElBQTZCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSVRpbWVsaW5lWm9vbSwgVGltZWxpbmVWaWV3TW9kZSB9IGZyb20gXCIuLi9tb2RlbHMvem9vbVwiO1xyXG5pbXBvcnQgeyBJSW5kZXhlZFpvb20sIElab29tc0hhbmRsZXIgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgWm9vbXNIYW5kbGVyPFZpZXdNb2RlID0gVGltZWxpbmVWaWV3TW9kZT4gaW1wbGVtZW50cyBJWm9vbXNIYW5kbGVyPFZpZXdNb2RlPiB7XHJcbiAgcHJpdmF0ZSBfem9vbXM6IElJbmRleGVkWm9vbTxWaWV3TW9kZT5bXTtcclxuICBwcml2YXRlIF9hY3RpdmVab29tJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUluZGV4ZWRab29tPFZpZXdNb2RlPj4obnVsbCk7XHJcblxyXG4gIGFjdGl2ZVpvb20kOiBPYnNlcnZhYmxlPElJbmRleGVkWm9vbTxWaWV3TW9kZT4+ID0gdGhpcy5fYWN0aXZlWm9vbSQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIGdldCBhY3RpdmVab29tKCk6IElJbmRleGVkWm9vbTxWaWV3TW9kZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVpvb20kLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHpvb21zKCk6IElJbmRleGVkWm9vbTxWaWV3TW9kZT5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fem9vbXM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcih6b29tczogSVRpbWVsaW5lWm9vbTxWaWV3TW9kZT5bXSkge1xyXG4gICAgdGhpcy5zZXRab29tcyh6b29tcyk7XHJcbiAgfVxyXG5cclxuICBzZXRab29tcyh6b29tczogSVRpbWVsaW5lWm9vbTxWaWV3TW9kZT5bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fem9vbXMgPSAoem9vbXMgPz8gW10pLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7Li4uaXRlbSwgaW5kZXh9KSk7XHJcbiAgICB0aGlzLl9hY3RpdmVab29tJC5uZXh0KHRoaXMuZ2V0TGFzdFpvb20oKSk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXJzdFpvb20oKTogSUluZGV4ZWRab29tPFZpZXdNb2RlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fem9vbXNbMF07XHJcbiAgfVxyXG5cclxuICBnZXRMYXN0Wm9vbSgpOiBJSW5kZXhlZFpvb208Vmlld01vZGU+IHtcclxuICAgIHJldHVybiB0aGlzLl96b29tc1t0aGlzLl96b29tcy5sZW5ndGggLSAxXTtcclxuICB9XHJcblxyXG4gIHpvb21JbigpOiB2b2lkIHtcclxuICAgIGxldCBuZXdab29tSW5kZXggPSB0aGlzLmFjdGl2ZVpvb20uaW5kZXggKyAxO1xyXG4gICAgY29uc3QgbGFzdFpvb21JbmRleCA9IHRoaXMuZ2V0TGFzdFpvb20oKS5pbmRleDtcclxuICAgIGlmIChuZXdab29tSW5kZXggPiBsYXN0Wm9vbUluZGV4KSB7XHJcbiAgICAgIG5ld1pvb21JbmRleCA9IGxhc3Rab29tSW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VBY3RpdmVab29tKHRoaXMuX3pvb21zW25ld1pvb21JbmRleF0pO1xyXG4gIH1cclxuXHJcbiAgem9vbU91dCgpOiB2b2lkIHtcclxuICAgIGxldCBuZXdab29tSW5kZXggPSB0aGlzLmFjdGl2ZVpvb20uaW5kZXggLSAxO1xyXG4gICAgY29uc3QgZmlyc3Rab29tSW5kZXggPSB0aGlzLmdldEZpcnN0Wm9vbSgpLmluZGV4O1xyXG4gICAgaWYgKG5ld1pvb21JbmRleCA8IGZpcnN0Wm9vbUluZGV4KSB7XHJcbiAgICAgIG5ld1pvb21JbmRleCA9IGZpcnN0Wm9vbUluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlQWN0aXZlWm9vbSh0aGlzLl96b29tc1tuZXdab29tSW5kZXhdKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUFjdGl2ZVpvb20oem9vbTogSVRpbWVsaW5lWm9vbTxWaWV3TW9kZT4pOiB2b2lkIHtcclxuICAgIGlmICh6b29tKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVpvb20kLm5leHQodGhpcy5fem9vbXNbdGhpcy5fZmluZFpvb21JbmRleCh6b29tKV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNab29tQWN0aXZlKHpvb206IElUaW1lbGluZVpvb208Vmlld01vZGU+KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmluZFpvb21JbmRleCh6b29tKSA9PT0gdGhpcy5hY3RpdmVab29tLmluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmluZFpvb21JbmRleCh6b29tOiBJVGltZWxpbmVab29tPFZpZXdNb2RlPik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fem9vbXMuZmluZEluZGV4KGkgPT4gaS5jb2x1bW5XaWR0aCA9PT0gem9vbS5jb2x1bW5XaWR0aCAmJiBpLnZpZXdNb2RlID09PSB6b29tLnZpZXdNb2RlKTtcclxuICB9XHJcbn1cclxuIl19