UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

64 lines 7.59 kB
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==