@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
74 lines • 10.4 kB
JavaScript
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=