@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
45 lines • 7.65 kB
JavaScript
import { Injectable, InjectionToken, Injector } from '@angular/core';
import { Router } from '@angular/router';
import { ExtensionPointWithoutStateForPlugins, fromTriggerOnce, hookGeneric, PluginsResolveService } from '@c8y/ngx-components';
import { DeviceGridService } from '@c8y/ngx-components/device-grid';
import { flatten, isEmpty } from 'lodash-es';
import { map, shareReplay, startWith } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "@c8y/ngx-components";
import * as i3 from "@c8y/ngx-components/device-grid";
const HOOK_DEVICE_LIST_COLUMNS = new InjectionToken('HOOK_ALL_DEVICES_LIST_COLUMNS');
/**
* A hook to override the default device grid columns configuration in `c8y-device-list` component.
*/
export function hookDeviceListColumns(columns, options) {
return hookGeneric(columns, HOOK_DEVICE_LIST_COLUMNS, options);
}
/**
* A service defining device list column extension options.
*/
export class DeviceListExtensionService extends ExtensionPointWithoutStateForPlugins {
constructor(rootInjector, router, plugins, deviceGridService) {
super(rootInjector, plugins);
this.router = router;
this.deviceGridService = deviceGridService;
this.items$ = this.setupItemsObservable();
}
setupItemsObservable() {
return fromTriggerOnce(this.router, this.refresh$, [
() => flatten(this.injectors.map(injector => injector.get(HOOK_DEVICE_LIST_COLUMNS, [], {
self: true
}))),
() => this.factories
]).pipe(map((columns) => isEmpty(columns) ? this.deviceGridService.getDefaultColumns() : columns), startWith(this.deviceGridService.getDefaultColumns()), shareReplay(1));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceListExtensionService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.PluginsResolveService }, { token: i3.DeviceGridService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceListExtensionService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceListExtensionService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }, { type: i2.PluginsResolveService }, { type: i3.DeviceGridService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWxpc3QtZXh0ZW5zaW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZpY2UtbGlzdC9kZXZpY2UtbGlzdC1leHRlbnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFHTCxvQ0FBb0MsRUFDcEMsZUFBZSxFQUdmLFdBQVcsRUFDWCxxQkFBcUIsRUFDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFN0QsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FDakQsK0JBQStCLENBQ2hDLENBQUM7QUFJRjs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsT0FBZ0MsRUFDaEMsT0FBcUM7SUFFckMsT0FBTyxXQUFXLENBQVMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7R0FFRztBQUlILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxvQ0FBNEM7SUFDMUYsWUFDRSxZQUFzQixFQUNkLE1BQWMsRUFDdEIsT0FBOEIsRUFDdEIsaUJBQW9DO1FBRTVDLEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFKckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFHNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRVMsb0JBQW9CO1FBQzVCLE9BQU8sZUFBZSxDQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6RCxHQUFHLEVBQUUsQ0FDSCxPQUFPLENBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDNUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksRUFBRSxJQUFJO2FBQ1gsQ0FBQyxDQUNILENBQ0Y7WUFDSCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUztTQUNyQixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLE9BQWlCLEVBQUUsRUFBRSxDQUN4QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3hFLEVBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEVBQ3JELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQzsrR0E3QlUsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIENvbHVtbixcbiAgRXh0ZW5zaW9uRmFjdG9yeSxcbiAgRXh0ZW5zaW9uUG9pbnRXaXRob3V0U3RhdGVGb3JQbHVnaW5zLFxuICBmcm9tVHJpZ2dlck9uY2UsXG4gIEdlbmVyaWNIb29rT3B0aW9ucyxcbiAgR2VuZXJpY0hvb2tUeXBlLFxuICBob29rR2VuZXJpYyxcbiAgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGV2aWNlR3JpZFNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RldmljZS1ncmlkJztcbmltcG9ydCB7IGZsYXR0ZW4sIGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBIT09LX0RFVklDRV9MSVNUX0NPTFVNTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48R2VuZXJpY0hvb2tUeXBlPENvbHVtbj4+KFxuICAnSE9PS19BTExfREVWSUNFU19MSVNUX0NPTFVNTlMnXG4pO1xuXG5leHBvcnQgdHlwZSBEZXZpY2VMaXN0Q29sdW1uc0ZhY3RvcnkgPSBFeHRlbnNpb25GYWN0b3J5PENvbHVtbj47XG5cbi8qKlxuICogQSBob29rIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGRldmljZSBncmlkIGNvbHVtbnMgY29uZmlndXJhdGlvbiBpbiBgYzh5LWRldmljZS1saXN0YCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob29rRGV2aWNlTGlzdENvbHVtbnMoXG4gIGNvbHVtbnM6IEdlbmVyaWNIb29rVHlwZTxDb2x1bW4+LFxuICBvcHRpb25zPzogUGFydGlhbDxHZW5lcmljSG9va09wdGlvbnM+XG4pIHtcbiAgcmV0dXJuIGhvb2tHZW5lcmljPENvbHVtbj4oY29sdW1ucywgSE9PS19ERVZJQ0VfTElTVF9DT0xVTU5TLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2UgZGVmaW5pbmcgZGV2aWNlIGxpc3QgY29sdW1uIGV4dGVuc2lvbiBvcHRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VMaXN0RXh0ZW5zaW9uU2VydmljZSBleHRlbmRzIEV4dGVuc2lvblBvaW50V2l0aG91dFN0YXRlRm9yUGx1Z2luczxDb2x1bW4+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcm9vdEluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHBsdWdpbnM6IFBsdWdpbnNSZXNvbHZlU2VydmljZSxcbiAgICBwcml2YXRlIGRldmljZUdyaWRTZXJ2aWNlOiBEZXZpY2VHcmlkU2VydmljZVxuICApIHtcbiAgICBzdXBlcihyb290SW5qZWN0b3IsIHBsdWdpbnMpO1xuICAgIHRoaXMuaXRlbXMkID0gdGhpcy5zZXR1cEl0ZW1zT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwSXRlbXNPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8Q29sdW1uW10+IHtcbiAgICByZXR1cm4gZnJvbVRyaWdnZXJPbmNlPENvbHVtbj4odGhpcy5yb3V0ZXIsIHRoaXMucmVmcmVzaCQsIFtcbiAgICAgICgpID0+XG4gICAgICAgIGZsYXR0ZW4oXG4gICAgICAgICAgdGhpcy5pbmplY3RvcnMubWFwKGluamVjdG9yID0+XG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoSE9PS19ERVZJQ0VfTElTVF9DT0xVTU5TLCBbXSwge1xuICAgICAgICAgICAgICBzZWxmOiB0cnVlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICgpID0+IHRoaXMuZmFjdG9yaWVzXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoY29sdW1uczogQ29sdW1uW10pID0+XG4gICAgICAgIGlzRW1wdHkoY29sdW1ucykgPyB0aGlzLmRldmljZUdyaWRTZXJ2aWNlLmdldERlZmF1bHRDb2x1bW5zKCkgOiBjb2x1bW5zXG4gICAgICApLFxuICAgICAgc3RhcnRXaXRoKHRoaXMuZGV2aWNlR3JpZFNlcnZpY2UuZ2V0RGVmYXVsdENvbHVtbnMoKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==