ngx-dynamic-dashboard
Version:
an dashboard lib for angular 10
50 lines • 6.17 kB
JavaScript
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
export class OptionsService {
constructor() {
this.optionsCollectionName = 'dashboardOptions';
this.defaultOptions = {
'enableHover': false,
'displayGadgetOptionsInSideBar': false
};
this.globalOptionsChangeEventSubject = new Subject();
}
getBoardOptions() {
let databaseOptions = JSON.parse(localStorage.getItem(this.optionsCollectionName));
if (databaseOptions == null) {
this.persistDefautBoardOptions();
return this.defaultOptions;
}
else {
return databaseOptions;
}
}
setBoardOptions(options) {
/**
* Todo this will need to change to support the update to individual options. Currently there is only one
* option but once there is more than one this method must change to take the input and update just that
* property of the options object.
*/
localStorage.removeItem(this.optionsCollectionName);
/**
* Raise an event to listeners, primarily the gadgets, when the global options change. The listeners can use
* the event to change their behavior
*/
this.globalOptionsChangeEventSubject.next(options);
return localStorage.setItem(this.optionsCollectionName, JSON.stringify(options));
}
/**
* The gadget-base can use this method to subscribe to events that are created when the global options change.
*/
listenForGlobalOptionsChanges() {
return this.globalOptionsChangeEventSubject.asObservable();
}
persistDefautBoardOptions() {
localStorage.setItem(this.optionsCollectionName, JSON.stringify(this.defaultOptions));
}
}
OptionsService.decorators = [
{ type: Injectable }
];
OptionsService.ctorParameters = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvYmVubGkvd29ya3NwYWNlcy9uZ3gtZHluYW1pYy1kYXNoYm9hcmQtZnJhbWV3b3JrL3Byb2plY3RzL25neC1keW5hbWljLWRhc2hib2FyZC9zcmMvIiwic291cmNlcyI6WyJkYXNoYm9hcmQvY29uZmlndXJhdGlvbi90YWItb3B0aW9ucy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUl6QyxNQUFNLE9BQU8sY0FBYztJQVV2QjtRQVJBLDBCQUFxQixHQUFHLGtCQUFrQixDQUFDO1FBQzNDLG1CQUFjLEdBQUc7WUFDYixhQUFhLEVBQUUsS0FBSztZQUNwQiwrQkFBK0IsRUFBRSxLQUFLO1NBQ3pDLENBQUM7UUFFTSxvQ0FBK0IsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUczRSxDQUFDO0lBRU0sZUFBZTtRQUVsQixJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUVuRixJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzlCO2FBQU07WUFDSCxPQUFPLGVBQWUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFTSxlQUFlLENBQUMsT0FBWTtRQUUvQjs7OztXQUlHO1FBRUgsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUVwRDs7O1dBR0c7UUFDSCxJQUFJLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5ELE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXJGLENBQUM7SUFFRDs7T0FFRztJQUNILDZCQUE2QjtRQUN6QixPQUFPLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRU8seUJBQXlCO1FBRTdCLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7SUFFekYsQ0FBQzs7O1lBekRKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3B0aW9uc1NlcnZpY2Uge1xuXG4gICAgb3B0aW9uc0NvbGxlY3Rpb25OYW1lID0gJ2Rhc2hib2FyZE9wdGlvbnMnO1xuICAgIGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgICAnZW5hYmxlSG92ZXInOiBmYWxzZSxcbiAgICAgICAgJ2Rpc3BsYXlHYWRnZXRPcHRpb25zSW5TaWRlQmFyJzogZmFsc2VcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBnbG9iYWxPcHRpb25zQ2hhbmdlRXZlbnRTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Qm9hcmRPcHRpb25zKCkge1xuXG4gICAgICAgIGxldCBkYXRhYmFzZU9wdGlvbnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMub3B0aW9uc0NvbGxlY3Rpb25OYW1lKSk7XG5cbiAgICAgICAgaWYgKGRhdGFiYXNlT3B0aW9ucyA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnBlcnNpc3REZWZhdXRCb2FyZE9wdGlvbnMoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRPcHRpb25zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFiYXNlT3B0aW9ucztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRCb2FyZE9wdGlvbnMob3B0aW9uczogYW55KSB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvZG8gdGhpcyB3aWxsIG5lZWQgdG8gY2hhbmdlIHRvIHN1cHBvcnQgdGhlIHVwZGF0ZSB0byBpbmRpdmlkdWFsIG9wdGlvbnMuIEN1cnJlbnRseSB0aGVyZSBpcyBvbmx5IG9uZVxuICAgICAgICAgKiBvcHRpb24gYnV0IG9uY2UgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSB0aGlzIG1ldGhvZCBtdXN0IGNoYW5nZSB0byB0YWtlIHRoZSBpbnB1dCBhbmQgdXBkYXRlIGp1c3QgdGhhdFxuICAgICAgICAgKiBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICAgICAqL1xuXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMub3B0aW9uc0NvbGxlY3Rpb25OYW1lKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogIFJhaXNlIGFuIGV2ZW50IHRvIGxpc3RlbmVycywgcHJpbWFyaWx5IHRoZSBnYWRnZXRzLCB3aGVuIHRoZSBnbG9iYWwgb3B0aW9ucyBjaGFuZ2UuIFRoZSBsaXN0ZW5lcnMgY2FuIHVzZVxuICAgICAgICAgKiB0aGUgZXZlbnQgdG8gY2hhbmdlIHRoZWlyIGJlaGF2aW9yXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmdsb2JhbE9wdGlvbnNDaGFuZ2VFdmVudFN1YmplY3QubmV4dChvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5vcHRpb25zQ29sbGVjdGlvbk5hbWUsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBnYWRnZXQtYmFzZSBjYW4gdXNlIHRoaXMgbWV0aG9kIHRvIHN1YnNjcmliZSB0byBldmVudHMgdGhhdCBhcmUgY3JlYXRlZCB3aGVuIHRoZSBnbG9iYWwgb3B0aW9ucyBjaGFuZ2UuXG4gICAgICovXG4gICAgbGlzdGVuRm9yR2xvYmFsT3B0aW9uc0NoYW5nZXMoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsT3B0aW9uc0NoYW5nZUV2ZW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBlcnNpc3REZWZhdXRCb2FyZE9wdGlvbnMoKSB7XG5cbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5vcHRpb25zQ29sbGVjdGlvbk5hbWUsIEpTT04uc3RyaW5naWZ5KHRoaXMuZGVmYXVsdE9wdGlvbnMpKVxuXG4gICAgfVxufVxuIl19