@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
82 lines • 8.14 kB
JavaScript
import { Injectable } from '@angular/core';
import { DashboardOriginatorService } from './dashboard-originator.service';
import { DashboardCaretakerService } from './dashboard-caretaker.service';
import * as i0 from "@angular/core";
import * as i1 from "./dashboard-originator.service";
import * as i2 from "./dashboard-caretaker.service";
/**
* Facade for implementation of Memento design pattern (caretaker, originator). Responsible for undo/redo feature
* during edit mode of dashboard.
*/
export class DashboardEditModeService {
get undoButtonDisabled() {
return this.caretaker.undoStackLength === 0;
}
/**
* Current dashboard change name for undo button title.
*/
get changeToUndoName() {
return this.originator.currentStateName;
}
/**
* Redo stack latest item for defining redo button disable state and its title.
*/
get redoStackLastItem() {
return this.caretaker.redoStackLastItem;
}
constructor(originator, caretaker) {
this.originator = originator;
this.caretaker = caretaker;
}
/**
* Initializes dashboard children state on edit mode start.
* @param state Dashboard children initial state.
*/
init(state) {
this.originator.initState(state);
}
/**
* Saves current state for further undo actions and sets new dashboard children state.
* @param state Dashboard children updated state.
*/
newState(state) {
this.caretaker.backup();
this.originator.setState(state);
}
/**
* Returns copy of current state.
*/
getCurrentState() {
return this.originator.getState();
}
/**
* Reverts last dashboard children change.
* @returns Current state of dashboard children after reverting last change.
*/
undo() {
return this.caretaker.undo();
}
/**
* Applies previously undone change.
* @returns Current state of dashboard children after applying previously undone change.
*/
redo() {
return this.caretaker.redo();
}
/**
* Resets dashboard children state to initial one and returns initial state.
* @returns Initial state of dashboard children.
*/
reset() {
return this.caretaker.reset();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardEditModeService, deps: [{ token: i1.DashboardOriginatorService }, { token: i2.DashboardCaretakerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardEditModeService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DashboardEditModeService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.DashboardOriginatorService }, { type: i2.DashboardCaretakerService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWVkaXQtbW9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvbWVtZW50by9kYXNoYm9hcmQtZWRpdC1tb2RlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUUxRTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRDs7T0FFRztJQUNILElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMxQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDMUMsQ0FBQztJQUVELFlBQ1UsVUFBc0MsRUFDdEMsU0FBb0M7UUFEcEMsZUFBVSxHQUFWLFVBQVUsQ0FBNEI7UUFDdEMsY0FBUyxHQUFULFNBQVMsQ0FBMkI7SUFDM0MsQ0FBQztJQUNKOzs7T0FHRztJQUNILElBQUksQ0FBQyxLQUE2QjtRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLEtBQTZCO1FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDOytHQTlEVSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzs0RkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGFzaGJvYXJkT3JpZ2luYXRvclNlcnZpY2UgfSBmcm9tICcuL2Rhc2hib2FyZC1vcmlnaW5hdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2FyZXRha2VyU2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLWNhcmV0YWtlci5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkcmVuU3RhdGUgfSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG4vKipcbiAqIEZhY2FkZSBmb3IgaW1wbGVtZW50YXRpb24gb2YgTWVtZW50byBkZXNpZ24gcGF0dGVybiAoY2FyZXRha2VyLCBvcmlnaW5hdG9yKS4gUmVzcG9uc2libGUgZm9yIHVuZG8vcmVkbyBmZWF0dXJlXG4gKiBkdXJpbmcgZWRpdCBtb2RlIG9mIGRhc2hib2FyZC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkRWRpdE1vZGVTZXJ2aWNlIHtcbiAgZ2V0IHVuZG9CdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXJldGFrZXIudW5kb1N0YWNrTGVuZ3RoID09PSAwO1xuICB9XG4gIC8qKlxuICAgKiBDdXJyZW50IGRhc2hib2FyZCBjaGFuZ2UgbmFtZSBmb3IgdW5kbyBidXR0b24gdGl0bGUuXG4gICAqL1xuICBnZXQgY2hhbmdlVG9VbmRvTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9yaWdpbmF0b3IuY3VycmVudFN0YXRlTmFtZTtcbiAgfVxuICAvKipcbiAgICogUmVkbyBzdGFjayBsYXRlc3QgaXRlbSBmb3IgZGVmaW5pbmcgcmVkbyBidXR0b24gZGlzYWJsZSBzdGF0ZSBhbmQgaXRzIHRpdGxlLlxuICAgKi9cbiAgZ2V0IHJlZG9TdGFja0xhc3RJdGVtKCk6IERhc2hib2FyZENoaWxkcmVuU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmNhcmV0YWtlci5yZWRvU3RhY2tMYXN0SXRlbTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3JpZ2luYXRvcjogRGFzaGJvYXJkT3JpZ2luYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXJldGFrZXI6IERhc2hib2FyZENhcmV0YWtlclNlcnZpY2VcbiAgKSB7fVxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgZGFzaGJvYXJkIGNoaWxkcmVuIHN0YXRlIG9uIGVkaXQgbW9kZSBzdGFydC5cbiAgICogQHBhcmFtIHN0YXRlIERhc2hib2FyZCBjaGlsZHJlbiBpbml0aWFsIHN0YXRlLlxuICAgKi9cbiAgaW5pdChzdGF0ZTogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZSkge1xuICAgIHRoaXMub3JpZ2luYXRvci5pbml0U3RhdGUoc3RhdGUpO1xuICB9XG4gIC8qKlxuICAgKiBTYXZlcyBjdXJyZW50IHN0YXRlIGZvciBmdXJ0aGVyIHVuZG8gYWN0aW9ucyBhbmQgc2V0cyBuZXcgZGFzaGJvYXJkIGNoaWxkcmVuIHN0YXRlLlxuICAgKiBAcGFyYW0gc3RhdGUgRGFzaGJvYXJkIGNoaWxkcmVuIHVwZGF0ZWQgc3RhdGUuXG4gICAqL1xuICBuZXdTdGF0ZShzdGF0ZTogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZSkge1xuICAgIHRoaXMuY2FyZXRha2VyLmJhY2t1cCgpO1xuICAgIHRoaXMub3JpZ2luYXRvci5zZXRTdGF0ZShzdGF0ZSk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgY29weSBvZiBjdXJyZW50IHN0YXRlLlxuICAgKi9cbiAgZ2V0Q3VycmVudFN0YXRlKCk6IERhc2hib2FyZENoaWxkcmVuU3RhdGUge1xuICAgIHJldHVybiB0aGlzLm9yaWdpbmF0b3IuZ2V0U3RhdGUoKTtcbiAgfVxuICAvKipcbiAgICogUmV2ZXJ0cyBsYXN0IGRhc2hib2FyZCBjaGlsZHJlbiBjaGFuZ2UuXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgc3RhdGUgb2YgZGFzaGJvYXJkIGNoaWxkcmVuIGFmdGVyIHJldmVydGluZyBsYXN0IGNoYW5nZS5cbiAgICovXG4gIHVuZG8oKTogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuY2FyZXRha2VyLnVuZG8oKTtcbiAgfVxuICAvKipcbiAgICogQXBwbGllcyBwcmV2aW91c2x5IHVuZG9uZSBjaGFuZ2UuXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgc3RhdGUgb2YgZGFzaGJvYXJkIGNoaWxkcmVuIGFmdGVyIGFwcGx5aW5nIHByZXZpb3VzbHkgdW5kb25lIGNoYW5nZS5cbiAgICovXG4gIHJlZG8oKTogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuY2FyZXRha2VyLnJlZG8oKTtcbiAgfVxuICAvKipcbiAgICogUmVzZXRzIGRhc2hib2FyZCBjaGlsZHJlbiBzdGF0ZSB0byBpbml0aWFsIG9uZSBhbmQgcmV0dXJucyBpbml0aWFsIHN0YXRlLlxuICAgKiBAcmV0dXJucyBJbml0aWFsIHN0YXRlIG9mIGRhc2hib2FyZCBjaGlsZHJlbi5cbiAgICovXG4gIHJlc2V0KCk6IERhc2hib2FyZENoaWxkcmVuU3RhdGUge1xuICAgIHJldHVybiB0aGlzLmNhcmV0YWtlci5yZXNldCgpO1xuICB9XG59XG4iXX0=