@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
64 lines • 7.59 kB
JavaScript
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { filter, map } from 'rxjs/operators';
import * as i0 from "@angular/core";
/**
* A service which can be used, to emit data on a dashboard level.
* Each Widget Dashboard gets an own instance of this service provided
* and you can then update all or only one.
*/
export class WidgetsDashboardEventService {
constructor() {
/**
* All events sent on the current dashboard.
*/
this.events$ = new Subject();
this.lastValueByEvent = {};
}
/**
* Returns a subscribable event observable of specific event type if eventType is passed, or observable of
* all the events if no param is passed to method.
* @param eventType The event you want an observable for.
* @returns An observable of event.
*/
getObservable(eventType) {
return this.events$.pipe(filter(({ type }) => (eventType ? type === eventType : true)), map(({ data }) => data));
}
/**
* Returns the last value of the event.
* @param eventType The change event type you want the last value from.
* @returns The last value used by this event, undefined if non was sent so far.
*/
getLastValue(eventType) {
return this.lastValueByEvent[eventType];
}
/**
* Emits a new event.
* @param event The WidgetChangeEvent to emit.
*/
emit(event) {
this.lastValueByEvent[event.type] = event.data;
this.events$.next(event);
}
// When a dashboard has a multiple tabs, and not all of them has a realtime global context control
// we need to set the realtime to false when switching between tabs to make aggregation selector not to be always disabled
// while global auto-refresh context control is available.
setRealtimeTimeContextSetting(value = false) {
this.lastValueByEvent.TIME_CONTEXT = {
...this.lastValueByEvent.TIME_CONTEXT,
realtime: value
};
}
/**
* @ignore
*/
ngOnDestroy() {
this.events$.complete();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetsDashboardEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetsDashboardEventService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetsDashboardEventService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy1kYXNoYm9hcmQtZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZGdldHMtZGFzaGJvYXJkLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzdDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sNEJBQTRCO0lBRHpDO1FBRUU7O1dBRUc7UUFDSyxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7UUFDM0MscUJBQWdCLEdBQXNFLEVBQUUsQ0FBQztLQW1EbEc7SUFqREM7Ozs7O09BS0c7SUFDSCxhQUFhLENBQ1gsU0FBaUM7UUFFakMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzdELEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQWlCLENBQUMsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLFNBQWdDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsS0FBd0I7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxrR0FBa0c7SUFDbEcsMEhBQTBIO0lBQzFILDBEQUEwRDtJQUMxRCw2QkFBNkIsQ0FBQyxLQUFLLEdBQUcsS0FBSztRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxHQUFHO1lBQ25DLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVk7WUFDckMsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBdkRVLDRCQUE0QjttSEFBNUIsNEJBQTRCOzs0RkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBXaWRnZXRDaGFuZ2VFdmVudCwgV2lkZ2V0Q2hhbmdlRXZlbnRUeXBlIH0gZnJvbSAnLi93aWRnZXQtY2hhbmdlLWV2ZW50Lm1vZGVsJztcblxuLyoqXG4gKiBBIHNlcnZpY2Ugd2hpY2ggY2FuIGJlIHVzZWQsIHRvIGVtaXQgZGF0YSBvbiBhIGRhc2hib2FyZCBsZXZlbC5cbiAqIEVhY2ggV2lkZ2V0IERhc2hib2FyZCBnZXRzIGFuIG93biBpbnN0YW5jZSBvZiB0aGlzIHNlcnZpY2UgcHJvdmlkZWRcbiAqIGFuZCB5b3UgY2FuIHRoZW4gdXBkYXRlIGFsbCBvciBvbmx5IG9uZS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFdpZGdldHNEYXNoYm9hcmRFdmVudFNlcnZpY2Uge1xuICAvKipcbiAgICogQWxsIGV2ZW50cyBzZW50IG9uIHRoZSBjdXJyZW50IGRhc2hib2FyZC5cbiAgICovXG4gIHByaXZhdGUgZXZlbnRzJCA9IG5ldyBTdWJqZWN0PFdpZGdldENoYW5nZUV2ZW50PigpO1xuICBwcml2YXRlIGxhc3RWYWx1ZUJ5RXZlbnQ6IFBhcnRpYWw8UmVjb3JkPFdpZGdldENoYW5nZUV2ZW50VHlwZSwgV2lkZ2V0Q2hhbmdlRXZlbnRbJ2RhdGEnXT4+ID0ge307XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdWJzY3JpYmFibGUgZXZlbnQgb2JzZXJ2YWJsZSBvZiBzcGVjaWZpYyBldmVudCB0eXBlIGlmIGV2ZW50VHlwZSBpcyBwYXNzZWQsIG9yIG9ic2VydmFibGUgb2ZcbiAgICogYWxsIHRoZSBldmVudHMgaWYgbm8gcGFyYW0gaXMgcGFzc2VkIHRvIG1ldGhvZC5cbiAgICogQHBhcmFtIGV2ZW50VHlwZSBUaGUgZXZlbnQgeW91IHdhbnQgYW4gb2JzZXJ2YWJsZSBmb3IuXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgZXZlbnQuXG4gICAqL1xuICBnZXRPYnNlcnZhYmxlPFQgZXh0ZW5kcyBXaWRnZXRDaGFuZ2VFdmVudD4oXG4gICAgZXZlbnRUeXBlPzogV2lkZ2V0Q2hhbmdlRXZlbnRUeXBlXG4gICk6IE9ic2VydmFibGU8VFsnZGF0YSddPiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzJC5waXBlKFxuICAgICAgZmlsdGVyKCh7IHR5cGUgfSkgPT4gKGV2ZW50VHlwZSA/IHR5cGUgPT09IGV2ZW50VHlwZSA6IHRydWUpKSxcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEgYXMgVFsnZGF0YSddKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGFzdCB2YWx1ZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudFR5cGUgVGhlIGNoYW5nZSBldmVudCB0eXBlIHlvdSB3YW50IHRoZSBsYXN0IHZhbHVlIGZyb20uXG4gICAqIEByZXR1cm5zIFRoZSBsYXN0IHZhbHVlIHVzZWQgYnkgdGhpcyBldmVudCwgdW5kZWZpbmVkIGlmIG5vbiB3YXMgc2VudCBzbyBmYXIuXG4gICAqL1xuICBnZXRMYXN0VmFsdWUoZXZlbnRUeXBlOiBXaWRnZXRDaGFuZ2VFdmVudFR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWVCeUV2ZW50W2V2ZW50VHlwZV07XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSBuZXcgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBUaGUgV2lkZ2V0Q2hhbmdlRXZlbnQgdG8gZW1pdC5cbiAgICovXG4gIGVtaXQoZXZlbnQ6IFdpZGdldENoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5sYXN0VmFsdWVCeUV2ZW50W2V2ZW50LnR5cGVdID0gZXZlbnQuZGF0YTtcbiAgICB0aGlzLmV2ZW50cyQubmV4dChldmVudCk7XG4gIH1cblxuICAvLyBXaGVuIGEgZGFzaGJvYXJkIGhhcyBhIG11bHRpcGxlIHRhYnMsIGFuZCBub3QgYWxsIG9mIHRoZW0gaGFzIGEgcmVhbHRpbWUgZ2xvYmFsIGNvbnRleHQgY29udHJvbFxuICAvLyB3ZSBuZWVkIHRvIHNldCB0aGUgcmVhbHRpbWUgdG8gZmFsc2Ugd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiB0YWJzIHRvIG1ha2UgYWdncmVnYXRpb24gc2VsZWN0b3Igbm90IHRvIGJlIGFsd2F5cyBkaXNhYmxlZFxuICAvLyB3aGlsZSBnbG9iYWwgYXV0by1yZWZyZXNoIGNvbnRleHQgY29udHJvbCBpcyBhdmFpbGFibGUuXG4gIHNldFJlYWx0aW1lVGltZUNvbnRleHRTZXR0aW5nKHZhbHVlID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmxhc3RWYWx1ZUJ5RXZlbnQuVElNRV9DT05URVhUID0ge1xuICAgICAgLi4udGhpcy5sYXN0VmFsdWVCeUV2ZW50LlRJTUVfQ09OVEVYVCxcbiAgICAgIHJlYWx0aW1lOiB2YWx1ZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudHMkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==