UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

74 lines 10.4 kB
import { Injectable } from '@angular/core'; import { BottomDrawerService, BreadcrumbService, Permissions, gettext } from '@c8y/ngx-components'; import { isNil } from 'lodash-es'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@c8y/ngx-components"; export const REQUIRED_IDENTITY_ROLES = [ Permissions.ROLE_IDENTITY_READ, Permissions.ROLE_IDENTITY_ADMIN ]; export const REQUIRED_INVENTORY_ROLES = [ Permissions.ROLE_INVENTORY_READ, Permissions.ROLE_INVENTORY_ADMIN ]; export const REQUIRED_MANAGED_OBJECT_ROLES = [ Permissions.ROLE_MANAGED_OBJECT_READ, Permissions.ROLE_MANAGED_OBJECT_ADMIN ]; export class ReplaceDeviceService { constructor(permissions, breadcrumbService, drawerService) { this.permissions = permissions; this.breadcrumbService = breadcrumbService; this.drawerService = drawerService; this.destroyed$ = new Subject(); } getButtonInfo() { return { title: gettext('Replace device'), icon: 'replace', label: gettext('Replace'), action: device => this.openDrawer(device) }; } canShowButton(device) { return ((this.permissions.hasAllRoles(REQUIRED_INVENTORY_ROLES) || this.permissions.hasAllRoles(REQUIRED_MANAGED_OBJECT_ROLES)) && this.permissions.hasAllRoles(REQUIRED_IDENTITY_ROLES) && !isNil(device.c8y_IsDevice) && isNil(device.c8y_IsLwm2mDevice)); } async openDrawer(deviceToReplace, closeCallback) { const { ReplaceDeviceWizardComponent } = await import('@c8y/ngx-components/replace-device/replace-device-wizard'); const drawerRef = this.drawerService.openDrawer(ReplaceDeviceWizardComponent, { initialState: { deviceToReplace } }); this.appendBreadcrumbs(); drawerRef.onClosed$.pipe(takeUntil(this.destroyed$)).subscribe(() => { this.removeBreadcrumbs(); if (typeof closeCallback === 'function') { closeCallback(); } }); } ngOnDestroy() { this.destroyed$.next(); this.destroyed$.complete(); } appendBreadcrumbs() { this.breadcrumbService.state.forEach(bc => (bc.items = [...bc.items, { label: gettext('Replace device'), path: undefined }])); this.breadcrumbService.refresh(); } removeBreadcrumbs() { this.breadcrumbService.state.forEach(bc => bc.items?.pop()); this.breadcrumbService.refresh(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReplaceDeviceService, deps: [{ token: i1.Permissions }, { token: i1.BreadcrumbService }, { token: i1.BottomDrawerService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReplaceDeviceService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReplaceDeviceService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.Permissions }, { type: i1.BreadcrumbService }, { type: i1.BottomDrawerService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1kZXZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3JlcGxhY2UtZGV2aWNlL3JlcGxhY2UtZGV2aWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUUzQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxXQUFXLENBQUMsa0JBQWtCO0lBQzlCLFdBQVcsQ0FBQyxtQkFBbUI7Q0FDaEMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLFdBQVcsQ0FBQyxtQkFBbUI7SUFDL0IsV0FBVyxDQUFDLG9CQUFvQjtDQUNqQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFDM0MsV0FBVyxDQUFDLHdCQUF3QjtJQUNwQyxXQUFXLENBQUMseUJBQXlCO0NBQ3RDLENBQUM7QUFHRixNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLFlBQ1UsV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ3BDLGFBQWtDO1FBRmxDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBTHBDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBTXRDLENBQUM7SUFFSixhQUFhO1FBQ1gsT0FBTztZQUNMLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7WUFDaEMsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFzQjtRQUNsQyxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQztZQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDO1lBQ3JELENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDM0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBK0IsRUFBRSxhQUEwQjtRQUMxRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FDbkQsMERBQTBELENBQzNELENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsRUFBRTtZQUM1RSxZQUFZLEVBQUUsRUFBRSxlQUFlLEVBQUU7U0FDbEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxPQUFPLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDeEMsYUFBYSxFQUFFLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDbEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FDeEYsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDOytHQTlEVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQURQLE1BQU07OzRGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEJvdHRvbURyYXdlclNlcnZpY2UsIEJyZWFkY3J1bWJTZXJ2aWNlLCBQZXJtaXNzaW9ucywgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY29uc3QgUkVRVUlSRURfSURFTlRJVFlfUk9MRVMgPSBbXG4gIFBlcm1pc3Npb25zLlJPTEVfSURFTlRJVFlfUkVBRCxcbiAgUGVybWlzc2lvbnMuUk9MRV9JREVOVElUWV9BRE1JTlxuXTtcbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9JTlZFTlRPUllfUk9MRVMgPSBbXG4gIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX1JFQUQsXG4gIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOXG5dO1xuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX01BTkFHRURfT0JKRUNUX1JPTEVTID0gW1xuICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX1JFQUQsXG4gIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU5cbl07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUmVwbGFjZURldmljZVNlcnZpY2VcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEN1bXVsb2NpdHlTZXJ2aWNlUmVnaXN0cnkuQWRkaXRpb25hbERldmljZVN0YXR1c0J1dHRvblByb3ZpZGVyXG57XG4gIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkcmF3ZXJTZXJ2aWNlOiBCb3R0b21EcmF3ZXJTZXJ2aWNlXG4gICkge31cblxuICBnZXRCdXR0b25JbmZvKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogZ2V0dGV4dCgnUmVwbGFjZSBkZXZpY2UnKSxcbiAgICAgIGljb246ICdyZXBsYWNlJyxcbiAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZXBsYWNlJyksXG4gICAgICBhY3Rpb246IGRldmljZSA9PiB0aGlzLm9wZW5EcmF3ZXIoZGV2aWNlKVxuICAgIH07XG4gIH1cblxuICBjYW5TaG93QnV0dG9uKGRldmljZTogSU1hbmFnZWRPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMucGVybWlzc2lvbnMuaGFzQWxsUm9sZXMoUkVRVUlSRURfSU5WRU5UT1JZX1JPTEVTKSB8fFxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zLmhhc0FsbFJvbGVzKFJFUVVJUkVEX01BTkFHRURfT0JKRUNUX1JPTEVTKSkgJiZcbiAgICAgIHRoaXMucGVybWlzc2lvbnMuaGFzQWxsUm9sZXMoUkVRVUlSRURfSURFTlRJVFlfUk9MRVMpICYmXG4gICAgICAhaXNOaWwoZGV2aWNlLmM4eV9Jc0RldmljZSkgJiZcbiAgICAgIGlzTmlsKGRldmljZS5jOHlfSXNMd20ybURldmljZSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgb3BlbkRyYXdlcihkZXZpY2VUb1JlcGxhY2U6IElNYW5hZ2VkT2JqZWN0LCBjbG9zZUNhbGxiYWNrPzogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IHsgUmVwbGFjZURldmljZVdpemFyZENvbXBvbmVudCB9ID0gYXdhaXQgaW1wb3J0KFxuICAgICAgJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwbGFjZS1kZXZpY2UvcmVwbGFjZS1kZXZpY2Utd2l6YXJkJ1xuICAgICk7XG5cbiAgICBjb25zdCBkcmF3ZXJSZWYgPSB0aGlzLmRyYXdlclNlcnZpY2Uub3BlbkRyYXdlcihSZXBsYWNlRGV2aWNlV2l6YXJkQ29tcG9uZW50LCB7XG4gICAgICBpbml0aWFsU3RhdGU6IHsgZGV2aWNlVG9SZXBsYWNlIH1cbiAgICB9KTtcbiAgICB0aGlzLmFwcGVuZEJyZWFkY3J1bWJzKCk7XG4gICAgZHJhd2VyUmVmLm9uQ2xvc2VkJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZW1vdmVCcmVhZGNydW1icygpO1xuICAgICAgaWYgKHR5cGVvZiBjbG9zZUNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNsb3NlQ2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGVuZEJyZWFkY3J1bWJzKCk6IHZvaWQge1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc3RhdGUuZm9yRWFjaChcbiAgICAgIGJjID0+IChiYy5pdGVtcyA9IFsuLi5iYy5pdGVtcywgeyBsYWJlbDogZ2V0dGV4dCgnUmVwbGFjZSBkZXZpY2UnKSwgcGF0aDogdW5kZWZpbmVkIH1dKVxuICAgICk7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUJyZWFkY3J1bWJzKCk6IHZvaWQge1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc3RhdGUuZm9yRWFjaChiYyA9PiBiYy5pdGVtcz8ucG9wKCkpO1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UucmVmcmVzaCgpO1xuICB9XG59XG4iXX0=