UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

87 lines 8.98 kB
import { Injectable } from '@angular/core'; import { DashboardOriginatorService } from './dashboard-originator.service'; import * as i0 from "@angular/core"; import * as i1 from "./dashboard-originator.service"; /** * Caretaker is responsible for undo and redo functionalities. */ export class DashboardCaretakerService { /** * Current undo stack length for defining undo button disable state. */ get undoStackLength() { return this.undoStack.length; } /** * Redo stack latest item for defining redo button disable state and its' title. */ get redoStackLastItem() { return this.redoStack[this.redoStack.length - 1]; } constructor(originator) { this.originator = originator; /** * List of dashboard children changes. * @private */ this.undoStack = []; /** * List of dashboard children changes that were undone and can be redone back. * @private */ this.redoStack = []; } /** * Adds current dashboard children state to undo stack and clears redo stack. */ backup() { this.undoStack.push(this.originator.getState()); this.redoStack = []; } /** * Reverts last dashboard children change and puts it in redo stack. * @returns Current state of dashboard children after reverting last change. */ undo() { if (!this.undoStack.length) { return; } const memento = this.undoStack.pop(); this.redoStack.push(this.originator.getState()); this.originator.setState(memento); return memento; } /** * Applies previously undone change. * @returns Current state of dashboard children after applying previously undone change. */ redo() { if (!this.redoStack.length) { return; } this.undoStack.push(this.originator.getState()); const memento = this.redoStack.pop(); this.originator.setState(memento); return memento; } /** * Clears both undo and redo stack, sets current state as initial state and returns initial state. * @returns Initial state of dashboard children. */ reset() { const initialItem = this.undoStack[0] || this.originator.getState(); this.undoStack = []; this.redoStack = []; this.originator.initState(initialItem); return initialItem; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardCaretakerService, deps: [{ token: i1.DashboardOriginatorService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardCaretakerService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardCaretakerService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.DashboardOriginatorService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNhcmV0YWtlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvbWVtZW50by9kYXNoYm9hcmQtY2FyZXRha2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBRTVFOztHQUVHO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQzs7T0FFRztJQUNILElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFDRDs7T0FFRztJQUNILElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBWUQsWUFBb0IsVUFBc0M7UUFBdEMsZUFBVSxHQUFWLFVBQVUsQ0FBNEI7UUFYMUQ7OztXQUdHO1FBQ0ssY0FBUyxHQUE2QixFQUFFLENBQUM7UUFDakQ7OztXQUdHO1FBQ0ssY0FBUyxHQUE2QixFQUFFLENBQUM7SUFFWSxDQUFDO0lBQzlEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNEOzs7T0FHRztJQUNILElBQUk7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXJDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxLQUFLO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7K0dBdEVVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRnhCLE1BQU07OzRGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZHJlblN0YXRlIH0gZnJvbSAnLi4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgRGFzaGJvYXJkT3JpZ2luYXRvclNlcnZpY2UgfSBmcm9tICcuL2Rhc2hib2FyZC1vcmlnaW5hdG9yLnNlcnZpY2UnO1xuXG4vKipcbiAqIENhcmV0YWtlciBpcyByZXNwb25zaWJsZSBmb3IgdW5kbyBhbmQgcmVkbyBmdW5jdGlvbmFsaXRpZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZENhcmV0YWtlclNlcnZpY2Uge1xuICAvKipcbiAgICogQ3VycmVudCB1bmRvIHN0YWNrIGxlbmd0aCBmb3IgZGVmaW5pbmcgdW5kbyBidXR0b24gZGlzYWJsZSBzdGF0ZS5cbiAgICovXG4gIGdldCB1bmRvU3RhY2tMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy51bmRvU3RhY2subGVuZ3RoO1xuICB9XG4gIC8qKlxuICAgKiBSZWRvIHN0YWNrIGxhdGVzdCBpdGVtIGZvciBkZWZpbmluZyByZWRvIGJ1dHRvbiBkaXNhYmxlIHN0YXRlIGFuZCBpdHMnIHRpdGxlLlxuICAgKi9cbiAgZ2V0IHJlZG9TdGFja0xhc3RJdGVtKCk6IERhc2hib2FyZENoaWxkcmVuU3RhdGUge1xuICAgIHJldHVybiB0aGlzLnJlZG9TdGFja1t0aGlzLnJlZG9TdGFjay5sZW5ndGggLSAxXTtcbiAgfVxuICAvKipcbiAgICogTGlzdCBvZiBkYXNoYm9hcmQgY2hpbGRyZW4gY2hhbmdlcy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgdW5kb1N0YWNrOiBEYXNoYm9hcmRDaGlsZHJlblN0YXRlW10gPSBbXTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgZGFzaGJvYXJkIGNoaWxkcmVuIGNoYW5nZXMgdGhhdCB3ZXJlIHVuZG9uZSBhbmQgY2FuIGJlIHJlZG9uZSBiYWNrLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZWRvU3RhY2s6IERhc2hib2FyZENoaWxkcmVuU3RhdGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3JpZ2luYXRvcjogRGFzaGJvYXJkT3JpZ2luYXRvclNlcnZpY2UpIHt9XG4gIC8qKlxuICAgKiBBZGRzIGN1cnJlbnQgZGFzaGJvYXJkIGNoaWxkcmVuIHN0YXRlIHRvIHVuZG8gc3RhY2sgYW5kIGNsZWFycyByZWRvIHN0YWNrLlxuICAgKi9cbiAgYmFja3VwKCk6IHZvaWQge1xuICAgIHRoaXMudW5kb1N0YWNrLnB1c2godGhpcy5vcmlnaW5hdG9yLmdldFN0YXRlKCkpO1xuICAgIHRoaXMucmVkb1N0YWNrID0gW107XG4gIH1cbiAgLyoqXG4gICAqIFJldmVydHMgbGFzdCBkYXNoYm9hcmQgY2hpbGRyZW4gY2hhbmdlIGFuZCBwdXRzIGl0IGluIHJlZG8gc3RhY2suXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgc3RhdGUgb2YgZGFzaGJvYXJkIGNoaWxkcmVuIGFmdGVyIHJldmVydGluZyBsYXN0IGNoYW5nZS5cbiAgICovXG4gIHVuZG8oKTogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnVuZG9TdGFjay5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWVtZW50byA9IHRoaXMudW5kb1N0YWNrLnBvcCgpO1xuICAgIHRoaXMucmVkb1N0YWNrLnB1c2godGhpcy5vcmlnaW5hdG9yLmdldFN0YXRlKCkpO1xuXG4gICAgdGhpcy5vcmlnaW5hdG9yLnNldFN0YXRlKG1lbWVudG8pO1xuICAgIHJldHVybiBtZW1lbnRvO1xuICB9XG4gIC8qKlxuICAgKiBBcHBsaWVzIHByZXZpb3VzbHkgdW5kb25lIGNoYW5nZS5cbiAgICogQHJldHVybnMgQ3VycmVudCBzdGF0ZSBvZiBkYXNoYm9hcmQgY2hpbGRyZW4gYWZ0ZXIgYXBwbHlpbmcgcHJldmlvdXNseSB1bmRvbmUgY2hhbmdlLlxuICAgKi9cbiAgcmVkbygpOiBEYXNoYm9hcmRDaGlsZHJlblN0YXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMucmVkb1N0YWNrLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMub3JpZ2luYXRvci5nZXRTdGF0ZSgpKTtcbiAgICBjb25zdCBtZW1lbnRvID0gdGhpcy5yZWRvU3RhY2sucG9wKCk7XG5cbiAgICB0aGlzLm9yaWdpbmF0b3Iuc2V0U3RhdGUobWVtZW50byk7XG4gICAgcmV0dXJuIG1lbWVudG87XG4gIH1cbiAgLyoqXG4gICAqIENsZWFycyBib3RoIHVuZG8gYW5kIHJlZG8gc3RhY2ssIHNldHMgY3VycmVudCBzdGF0ZSBhcyBpbml0aWFsIHN0YXRlIGFuZCByZXR1cm5zIGluaXRpYWwgc3RhdGUuXG4gICAqIEByZXR1cm5zIEluaXRpYWwgc3RhdGUgb2YgZGFzaGJvYXJkIGNoaWxkcmVuLlxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgY29uc3QgaW5pdGlhbEl0ZW0gPSB0aGlzLnVuZG9TdGFja1swXSB8fCB0aGlzLm9yaWdpbmF0b3IuZ2V0U3RhdGUoKTtcbiAgICB0aGlzLnVuZG9TdGFjayA9IFtdO1xuICAgIHRoaXMucmVkb1N0YWNrID0gW107XG4gICAgdGhpcy5vcmlnaW5hdG9yLmluaXRTdGF0ZShpbml0aWFsSXRlbSk7XG4gICAgcmV0dXJuIGluaXRpYWxJdGVtO1xuICB9XG59XG4iXX0=