@c8y/ngx-components 1021.80.1 → 1021.81.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/data-grid/column/tree-node-column/tree-node.cell-renderer.component.d.ts +23 -0
- package/core/data-grid/column/tree-node-column/tree-node.cell-renderer.component.d.ts.map +1 -0
- package/core/data-grid/column/tree-node-column/tree-node.data-grid-column.d.ts +23 -0
- package/core/data-grid/column/tree-node-column/tree-node.data-grid-column.d.ts.map +1 -0
- package/core/data-grid/column/tree-node-column/tree-node.header-cell-renderer.component.d.ts +6 -0
- package/core/data-grid/column/tree-node-column/tree-node.header-cell-renderer.component.d.ts.map +1 -0
- package/core/data-grid/data-grid.component.d.ts +29 -1
- package/core/data-grid/data-grid.component.d.ts.map +1 -1
- package/core/data-grid/data-grid.model.d.ts +13 -1
- package/core/data-grid/data-grid.model.d.ts.map +1 -1
- package/core/data-grid/grid-data-source.d.ts +11 -2
- package/core/data-grid/grid-data-source.d.ts.map +1 -1
- package/core/data-grid/index.d.ts +4 -1
- package/core/data-grid/index.d.ts.map +1 -1
- package/esm2022/branding/shared/lazy/branding/branding.component.mjs +2 -2
- package/esm2022/context-dashboard/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.mjs +1 -1
- package/esm2022/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.mjs +1 -1
- package/esm2022/core/data-grid/column/tree-node-column/tree-node.cell-renderer.component.mjs +87 -0
- package/esm2022/core/data-grid/column/tree-node-column/tree-node.data-grid-column.mjs +15 -0
- package/esm2022/core/data-grid/column/tree-node-column/tree-node.header-cell-renderer.component.mjs +15 -0
- package/esm2022/core/data-grid/configure-custom-column/asset-property-grid.component.mjs +1 -1
- package/esm2022/core/data-grid/data-grid.component.mjs +68 -11
- package/esm2022/core/data-grid/data-grid.model.mjs +1 -1
- package/esm2022/core/data-grid/grid-data-source.mjs +92 -22
- package/esm2022/core/data-grid/index.mjs +5 -2
- package/esm2022/device-grid/device-grid.component.mjs +1 -1
- package/esm2022/device-profile/device-profile-list.component.mjs +1 -1
- package/esm2022/device-provisioned-certificates/device-tab-provisioned-certificates.component.mjs +1 -1
- package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +1 -1
- package/esm2022/files-repository/files-repository.component.mjs +1 -1
- package/esm2022/messaging-management/messaging/topic/topic-list-view.component.mjs +2 -2
- package/esm2022/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.mjs +2 -2
- package/esm2022/operations/bulk-single-operations-list/single-operations-list.component.mjs +2 -2
- package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.mjs +2 -2
- package/esm2022/repository/configuration/list/configuration-list.component.mjs +1 -1
- package/esm2022/repository/firmware/list/firmware-list.component.mjs +1 -1
- package/esm2022/repository/software/list/software-list.component.mjs +1 -1
- package/esm2022/search/search-grid.component.mjs +1 -1
- package/esm2022/services/services-device-tab/services-device-tab.component.mjs +1 -1
- package/esm2022/sub-assets/sub-assets-grid.component.mjs +1 -1
- package/esm2022/tenants/tenant-list/tenant-list.component.mjs +1 -1
- package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +2 -2
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-CmhkghTo.mjs → c8y-ngx-components-asset-property-grid.component-xQgHuomT.mjs} +3 -3
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-CmhkghTo.mjs.map → c8y-ngx-components-asset-property-grid.component-xQgHuomT.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-c8y-ngx-components-D-YOjLHK.mjs → c8y-ngx-components-c8y-ngx-components-D2rmddmn.mjs} +455 -228
- package/fesm2022/c8y-ngx-components-c8y-ngx-components-D2rmddmn.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +2 -2
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-profile.mjs +1 -1
- package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +1 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs +1 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +2 -2
- package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-search.mjs +1 -1
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services.mjs +1 -1
- package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +1 -1
- package/locales/locales.pot +6 -0
- package/package.json +1 -1
- package/fesm2022/c8y-ngx-components-c8y-ngx-components-D-YOjLHK.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-sub-assets.mjs","sources":["../../sub-assets/shared/sub-assets.model.ts","../../sub-assets/sub-assets.service.ts","../../sub-assets/add-group/add-group.service.ts","../../sub-assets/delete-assets-modal/delete-assets-modal.component.ts","../../sub-assets/delete-assets-modal/delete-assets-modal.component.html","../../sub-assets/smart-group-grid-configuration-strategy.service.ts","../../sub-assets/sub-assets-grid-configuration-strategy.service.ts","../../sub-assets/unassign-assets-modal/unassign-modal.component.ts","../../sub-assets/unassign-assets-modal/unassign-modal.component.html","../../sub-assets/sub-assets-grid.component.ts","../../sub-assets/sub-assets-grid.component.html","../../sub-assets/assign-devices/assign-child-devices.component.ts","../../sub-assets/assign-devices/assign-child-devices.component.html","../../sub-assets/add-group/add-group.component.ts","../../sub-assets/add-group/add-group.component.html","../../sub-assets/assign-devices/assign-devices.component.ts","../../sub-assets/assign-devices/assign-devices.component.html","../../sub-assets/sub-assets-grids.module.ts","../../sub-assets/add-group/add-group.module.ts","../../sub-assets/asset-properties-item.component.ts","../../sub-assets/asset-properties-item.component.html","../../sub-assets/fullscreen.util.ts","../../sub-assets/location/asset-location.component.ts","../../sub-assets/location/asset-location.component.html","../../sub-assets/asset-properties.component.ts","../../sub-assets/asset-properties.component.html","../../sub-assets/sub-assets.model.ts","../../sub-assets/group-info.component.ts","../../sub-assets/group-info.component.html","../../sub-assets/groups.component.ts","../../sub-assets/groups.component.html","../../sub-assets/sub-assets.component.ts","../../sub-assets/sub-assets.component.html","../../sub-assets/sub-assets.module.ts","../../sub-assets/c8y-ngx-components-sub-assets.ts"],"sourcesContent":["export const PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED = {\n EVENT: 'subAssets',\n DELETE_ASSET: {\n COMPONENTS: { DELETE_ASSETS_MODAL: 'delete-assets-modal' },\n ACTIONS: { CASCADE_DELETE: 'cascadeDelete', DELETE_DEVICE_OWNER: 'deleteDeviceOwner' },\n RESULTS: { CANCELED: 'canceled', DELETED: 'deleted' }\n },\n ASSIGN_DEVICES: {\n COMPONENTS: { ASSIGN_DEVICES: 'assign-devices' },\n ACTIONS: { ASSIGN: 'assign', CANCEL: 'cancel', DISPLAY_CHILD_DEVICES: 'displayChildDevices' }\n },\n UNASSIGN_MODAL: {\n COMPONENTS: { UNASSIGN_MODAL: 'unassign-modal' },\n RESULTS: { ASSET_UNASSIGNED: 'asset-unassigned' },\n ACTIONS: { CANCEL: 'cancel' }\n },\n GROUP_INFO: {\n COMPONENTS: { GROUP_INFO: 'group-info' },\n ACTIONS: { EDIT: 'edit' },\n RESULTS: { EDIT_SAVED: 'edit-saved' },\n PROPERTIES: { NAME: 'name', DESCRIPTION: 'description' }\n },\n ADD_GROUP: {\n COMPONENTS: { ADD_GROUP: 'add-group' },\n ACTIONS: { ADD: 'add' },\n RESULTS: { ADD_SUCCESS: 'group-added' }\n }\n} as const;\n","import { Injectable } from '@angular/core';\nimport {\n IManagedObject,\n IRule,\n InventoryService,\n QueriesUtil,\n SmartGroupsService,\n SmartRulesService,\n UserService\n} from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n AppStateService,\n AssetTypesRealtimeService,\n BulkActionControl,\n Column,\n DataGridService,\n Pagination,\n Permissions,\n UserPreferencesService,\n gettext\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport {\n AlarmsDeviceGridColumn,\n ImeiDeviceGridColumn,\n ModelDeviceGridColumn,\n NameDeviceGridColumn,\n RegistrationDateDeviceGridColumn,\n SerialNumberDeviceGridColumn,\n SystemIdDeviceGridColumn\n} from '@c8y/ngx-components/device-grid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AssetTypeGridColumn } from '@c8y/ngx-components/data-grid-columns/asset-type';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SubAssetsService extends DataGridService {\n queriesUtil: QueriesUtil;\n protected GRID_CONFIG_DEFAULT_STORAGE_KEY = 'sub-assets-grid-config';\n private IS_DEVICE_GROUP_FRAGMENT = 'c8y_IsDeviceGroup';\n private IS_DYNAMIC_GROUP_FRAGMENT = 'c8y_IsDynamicGroup';\n\n constructor(\n protected translateService: TranslateService,\n protected inventoryService: InventoryService,\n protected appState: AppStateService,\n protected user: UserService,\n protected assetNodeService: AssetNodeService,\n protected smartGroupsService: SmartGroupsService,\n protected smartRulesService: SmartRulesService,\n protected alertService: AlertService,\n protected permissionsService: Permissions,\n protected assetTypes: AssetTypesRealtimeService,\n protected userPreferencesService: UserPreferencesService\n ) {\n super(userPreferencesService);\n }\n\n async getCustomProperties(group: IManagedObject): Promise<IManagedObject[]> {\n const assetType$ = this.assetTypes.getAssetTypeByName$(group.type);\n const assetType = await firstValueFrom(assetType$);\n if (assetType) {\n const { data } = await this.inventoryService.childAdditionsList(assetType, {\n pageSize: 2000,\n query: \"$filter=(has('c8y_IsAssetProperty'))\"\n });\n return data;\n }\n return [];\n }\n\n getDefaultColumns(_filterable = true, _sortable = true): Column[] {\n const defaultColumns = [\n new AssetTypeGridColumn({ sortOrder: 'desc' }),\n new NameDeviceGridColumn({ sortOrder: 'asc' }),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn({ visible: false }),\n new RegistrationDateDeviceGridColumn({ visible: false }),\n new SystemIdDeviceGridColumn({ visible: false }),\n new ImeiDeviceGridColumn({ visible: false }),\n new AlarmsDeviceGridColumn()\n ];\n return defaultColumns;\n }\n\n getDefaultPagination(): Pagination {\n return {\n pageSize: 25,\n currentPage: 1\n };\n }\n\n getDefaultActionControls(): ActionControl[] {\n return [];\n }\n\n async unassignAsset(asset: IManagedObject, parentRef: IManagedObject) {\n const { id: assetId } = asset;\n const { id: parentId } = parentRef;\n\n if (this.isDevice(asset)) {\n try {\n await this.inventoryService.childAssetsRemove(assetId, parentId);\n const alertMessage = this.translateService.instant(gettext('Device unassigned.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not unassign device.'));\n this.alertService.danger(alertMessage, error);\n }\n await this.deactivateSmartrulesForAsset(asset, parentRef);\n }\n }\n\n isDevice(asset: IManagedObject): boolean {\n return (\n !asset.hasOwnProperty(this.IS_DEVICE_GROUP_FRAGMENT) &&\n !asset.hasOwnProperty(this.IS_DYNAMIC_GROUP_FRAGMENT)\n );\n }\n\n async deleteAsset(asset: IManagedObject, parentRef: IManagedObject, params = {}) {\n const isGroup =\n asset.hasOwnProperty(this.IS_DEVICE_GROUP_FRAGMENT) ||\n this.smartGroupsService.isSmartGroup(asset);\n\n if (isGroup) {\n await this.deleteGroup(asset, params);\n } else {\n await this.deleteDevice(asset, params);\n }\n\n if (parentRef && !this.smartGroupsService.isSmartGroup(asset)) {\n await this.deactivateSmartrulesForAsset(asset, parentRef);\n }\n }\n\n shouldShowWithDeviceUserCheckbox(asset: IManagedObject): boolean {\n const { owner, c8y_IsDevice: isRootDevice } = asset;\n const hasDeviceUserAsOwner = asset.owner && this.isDeviceUser(owner);\n\n return Boolean(isRootDevice && hasDeviceUserAsOwner);\n }\n\n getDefaultBulkActionControls(): BulkActionControl[] {\n return [];\n }\n\n async getData(\n columns: Column[],\n pagination: Pagination,\n parentReference: IManagedObject,\n baseQuery: any = {},\n text: string = null\n ) {\n const isRoot = !parentReference;\n if (isRoot) {\n const query = this.buildCombinedRootQueryFilter(columns, pagination, baseQuery);\n return this.assetNodeService.getRootNodes({ ...pagination, ...(text && { text }), query });\n }\n const filters = {\n ...this.getAssetsFilters(columns, pagination, baseQuery, text),\n withParents: false\n };\n if (this.assetNodeService.isGroup(parentReference)) {\n return this.assetNodeService.getGroupItems(parentReference.id, filters);\n }\n if (this.assetNodeService.isDynamicGroup(parentReference)) {\n return this.assetNodeService.getDynamicGroupItems(\n parentReference.c8y_DeviceQueryString,\n filters\n );\n }\n if (this.assetNodeService.isDevice(parentReference)) {\n return this.assetNodeService.getDeviceChildren(parentReference.id, filters);\n }\n }\n\n async getCount(\n columns: Column[],\n pagination: Pagination,\n parentReference: IManagedObject,\n baseQuery: any = {},\n text: string = null\n ): Promise<number> {\n const defaultFilters = {\n pageSize: 1,\n withChildren: false\n };\n const filters = !parentReference\n ? {\n query: this.buildCombinedRootQueryFilter(columns, pagination, baseQuery),\n ...defaultFilters\n }\n : {\n ...this.getAssetsFilters(columns, pagination, baseQuery, text),\n ...defaultFilters\n };\n return this.getAssetsStatistics(parentReference, filters);\n }\n\n getTotal(parentReference: IManagedObject, baseQuery: any = {}): Promise<number> {\n const queryFilter = this.assetNodeService.rootQueryFilter();\n const query = !parentReference\n ? this.queriesUtil.addAndFilter(queryFilter, baseQuery)\n : baseQuery;\n const filters = {\n query: this.queriesUtil.buildQuery(query),\n withChildren: false,\n withTotalPages: true,\n pageSize: 1\n };\n return this.getAssetsStatistics(parentReference, filters);\n }\n\n async canEditGroup(group: IManagedObject): Promise<boolean> {\n return await this.permissionsService.canEdit(\n [Permissions.ROLE_INVENTORY_ADMIN, Permissions.ROLE_MANAGED_OBJECT_ADMIN],\n group\n );\n }\n\n canCreateGroup(): boolean {\n const currentUser = this.appState.currentUser.value;\n const hasAdminRole = this.user.hasAnyRole(currentUser, [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE\n ]);\n return hasAdminRole;\n }\n\n async canAssignDevice(group: IManagedObject): Promise<boolean> {\n return await this.permissionsService.canEdit(\n [Permissions.ROLE_INVENTORY_ADMIN, Permissions.ROLE_MANAGED_OBJECT_ADMIN],\n group\n );\n }\n\n canEditSmartGroup(): boolean {\n const SMART_GROUPS_ROLES_EDIT = [\n Permissions.ROLE_SMARTGROUP_UPDATE,\n Permissions.ROLE_SMARTGROUP_ADMIN\n ];\n return this.permissionsService.hasAnyRole(SMART_GROUPS_ROLES_EDIT);\n }\n\n canDeleteSmartGroup(): boolean {\n const SMART_GROUPS_ROLES_DELETE = [\n Permissions.ROLE_SMARTGROUP_ADMIN,\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN\n ];\n return this.permissionsService.hasAnyRole(SMART_GROUPS_ROLES_DELETE);\n }\n\n isSmartGroup(group: IManagedObject): boolean {\n return this.smartGroupsService.isSmartGroup(group);\n }\n\n isUsingInventoryRoles() {\n const currentUser = this.appState.currentUser.value;\n const hasAnyInventoryRole = this.user.hasAnyRole(currentUser, [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_READ,\n Permissions.ROLE_INVENTORY_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_READ\n ]);\n return !hasAnyInventoryRole;\n }\n\n protected async getAssetsStatistics(\n parentReference: IManagedObject,\n filters: object\n ): Promise<number> {\n const isRoot = !parentReference;\n if (isRoot) {\n return (await this.assetNodeService.getRootNodes(filters)).paging.totalPages;\n }\n if (this.assetNodeService.isGroup(parentReference)) {\n return (await this.assetNodeService.getGroupItems(parentReference.id, filters)).paging\n .totalPages;\n }\n if (this.assetNodeService.isDynamicGroup(parentReference)) {\n return (\n await this.assetNodeService.getDynamicGroupItems(\n parentReference.c8y_DeviceQueryString,\n filters\n )\n ).paging.totalPages;\n }\n if (this.assetNodeService.isDevice(parentReference)) {\n return (await this.assetNodeService.getDeviceChildren(parentReference.id, filters)).paging\n .totalPages;\n }\n }\n\n protected buildCombinedRootQueryFilter(columns, pagination, baseQuery = {}) {\n const userQuery = this.getQueryObj(columns, pagination);\n const rootQuery = this.assetNodeService.rootQueryFilter();\n const orderedRootQuery = this.queriesUtil.addOrderbys(rootQuery, userQuery.__orderby, 'append');\n const rootAndUserQuery = this.queriesUtil.addAndFilter(orderedRootQuery, userQuery.__filter);\n const fullQuery = this.queriesUtil.addAndFilter(rootAndUserQuery, baseQuery);\n return this.queriesUtil.buildQuery(fullQuery);\n }\n\n private async deleteGroup(group: IManagedObject, params: any = {}) {\n const { cascade } = params;\n\n try {\n this.smartGroupsService.isSmartGroup(group)\n ? await this.smartGroupsService.delete(group, { cascade })\n : await this.inventoryService.delete(group, { cascade });\n\n const alertMessage = this.translateService.instant(gettext('\"{{ name }}\" deleted.'), {\n name: group.name\n });\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(\n gettext('Could not delete \"{{ name }}\".'),\n {\n name: group.name\n }\n );\n this.alertService.danger(alertMessage, error);\n }\n }\n\n private async deleteDevice(device: IManagedObject, params: any = {}) {\n const { cascade, withDeviceUser } = params;\n try {\n const { owner } = device;\n const shouldRemoveOwner = withDeviceUser && owner && this.isDeviceUser(owner);\n\n shouldRemoveOwner\n ? await this.deleteDeviceWithUser(device, cascade)\n : await this.inventoryService.delete(device, { cascade });\n\n const alertMessage = this.translateService.instant(gettext('Device deleted.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not delete device.'));\n this.alertService.danger(alertMessage, error);\n }\n }\n\n private async deactivateSmartrulesForAsset(asset: IManagedObject, parentRef: IManagedObject) {\n const { id: assetId } = asset;\n const { id: parentId } = parentRef;\n const rules: IRule[] = (await this.smartRulesService.listByContext(parentId)).data;\n\n const upateSmartrulesPromises = rules.map(rule =>\n this.smartRulesService.bulkDeactivateEnabledSources(rule, [assetId])\n );\n\n try {\n await Promise.all(upateSmartrulesPromises);\n } catch (error) {\n const alertMessage = this.translateService.instant(\n gettext('Could not deactivate smart rules.')\n );\n this.alertService.danger(alertMessage);\n }\n }\n\n private isDeviceUser(userId: string) {\n return userId.match(/^device_/);\n }\n\n private async deleteDeviceWithUser(device: IManagedObject, cascade: boolean) {\n const params = { cascade, withDeviceUser: true };\n try {\n return await this.inventoryService.delete(device, params);\n } catch (error) {\n return await this.inventoryService.delete(device, { cascade });\n }\n }\n\n private getAssetsFilters(columns: Column[], pagination: Pagination, baseQuery, text?: string) {\n const query = this.queriesUtil.addAndFilter(this.getQueryObj(columns), baseQuery);\n return {\n ...(text && { text }),\n query: this.queriesUtil.buildQuery(query),\n pageSize: pagination.pageSize || this.DEFAULT_PAGE_SIZE,\n currentPage: pagination.currentPage,\n withTotalPages: true\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { GroupForm } from './add-group.model';\nimport { GroupFragment } from '@c8y/ngx-components';\n\n@Injectable()\nexport class AddGroupService {\n private GROUP_FRAGMENT_TYPE = 'c8y_IsDeviceGroup';\n\n constructor(private inventoryService: InventoryService) {}\n\n async createGroupAndAssignDevices(\n groupForm: GroupForm,\n groupContextId: string | number,\n selectedDevices: string[]\n ): Promise<IManagedObject | IIdentified> {\n let group: IManagedObject | IIdentified;\n const { name, description } = groupForm;\n const newGroupMO = this.getGroupMO(name, description, groupContextId);\n\n if (groupContextId) {\n group = (await this.inventoryService.childAssetsCreate(newGroupMO, groupContextId)).data;\n } else {\n group = (await this.inventoryService.create(newGroupMO)).data;\n }\n\n if (selectedDevices.length > 0) {\n await this.assignDevices(group.id, selectedDevices);\n }\n\n return group;\n }\n\n private getGroupMO(\n name: string,\n description = '',\n groupContextId: string | number\n ): Partial<IManagedObject> {\n const group = {\n type: this.getGroupType(groupContextId),\n [this.GROUP_FRAGMENT_TYPE]: {},\n name,\n c8y_Notes: description\n };\n\n return group;\n }\n\n private getGroupType(\n groupContextId: string | number\n ): GroupFragment.subGroupType | GroupFragment.groupType {\n return groupContextId ? GroupFragment.subGroupType : GroupFragment.groupType;\n }\n\n private async assignDevices(id: string | number, selectedDevices: string[]) {\n const promises = [];\n\n selectedDevices.forEach(moId => {\n promises.push(this.inventoryService.childAssetsAdd(moId, id));\n });\n\n return await Promise.all(promises);\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ConfirmModalComponent,\n GainsightService,\n gettext,\n ModalLabels,\n Status,\n StatusType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from '../shared/sub-assets.model';\nimport { DeleteModalCheckboxes } from './delete-assets-modal.model';\n\n@Component({\n selector: 'c8y-delete-assets-modal',\n templateUrl: './delete-assets-modal.component.html'\n})\nexport class DeleteAssetsModalComponent {\n CURRENT_LOCATION = location.href;\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n\n @Input() showWithCascadeCheckbox = true;\n @Input() showWithDeviceUserCheckbox = false;\n @Input() asset: IManagedObject;\n @ViewChild('modalRef', { static: false }) modalRef: ConfirmModalComponent;\n closeSubject: Subject<DeleteModalCheckboxes> = new Subject();\n labels: ModalLabels = { ok: gettext('Delete'), cancel: gettext('Cancel') };\n title: string = gettext('Delete');\n status: StatusType = Status.DANGER;\n config: DeleteModalCheckboxes = {\n cascade: false,\n withDeviceUser: false\n };\n message: string;\n deleteGroupSubAssetsMsg: string;\n\n constructor(\n private translateService: TranslateService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.setModalTexts();\n }\n\n async ngAfterViewInit() {\n try {\n await this.modalRef.result;\n this.onClose();\n } catch (error) {\n this.onDismiss();\n }\n }\n\n onClose() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n result: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.DELETE_ASSET.RESULTS.DELETED,\n url: this.CURRENT_LOCATION\n });\n this.closeSubject.next(this.config);\n this.closeSubject.complete();\n }\n\n onDismiss() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n result: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.DELETE_ASSET.RESULTS.CANCELED,\n url: this.CURRENT_LOCATION\n });\n this.closeSubject.complete();\n }\n\n private setModalTexts() {\n this.message = this.translateService.instant(\n gettext(\n 'You are about to delete: \"{{name}}\". This operation is irreversible. Do you want to proceed?'\n ),\n { name: this.asset.name }\n );\n this.deleteGroupSubAssetsMsg = this.translateService.instant(\n gettext('Also delete all devices inside \"{{name}}\" and its subassets.'),\n { name: this.asset.name }\n );\n }\n}\n","<c8y-confirm-modal [title]=\"title\" [status]=\"status\" [labels]=\"labels\" #modalRef>\n <form #assetsForm=\"ngForm\">\n <p class=\"text-wrap m-b-16\">\n {{ message | translate }}\n </p>\n <c8y-form-group *ngIf=\"showWithCascadeCheckbox\" class=\"m-b-0\">\n <label title=\"{{ 'Delete devices' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"cascade\"\n [(ngModel)]=\"config.cascade\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n action: PRODUCT_EXPERIENCE.DELETE_ASSET.ACTIONS.CASCADE_DELETE\n }\"\n [disabled]=\"config?.withDeviceUser\"\n />\n <span></span>\n <span class=\"text-break-word\">\n {{ deleteGroupSubAssetsMsg | translate }}\n </span>\n </label>\n </c8y-form-group>\n <c8y-form-group *ngIf=\"showWithDeviceUserCheckbox\" class=\"m-b-0\">\n <label title=\"{{ 'Delete associated device owner' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"withDeviceUser\"\n [(ngModel)]=\"config.withDeviceUser\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n action: PRODUCT_EXPERIENCE.DELETE_ASSET.ACTIONS.DELETE_DEVICE_OWNER\n }\"\n [disabled]=\"config?.cascade\"\n />\n <span></span>\n <span>\n {{ 'Also delete associated device owner.' | translate }}\n </span>\n </label>\n </c8y-form-group>\n </form>\n</c8y-confirm-modal>\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport {\n AbstractConfigurationStrategy,\n DATA_GRID_CONFIGURATION_CONTEXT,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n GridConfig,\n GridConfigContext,\n GridConfigContextProvider,\n UserPreferencesConfigurationStrategy\n} from '@c8y/ngx-components';\nimport { cloneDeep } from 'lodash-es';\nimport { Observable, of } from 'rxjs';\nimport { SubAssetsGridConfigContext } from './sub-assets-grid-configuration-strategy.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SmartGroupGridConfigurationStrategy extends AbstractConfigurationStrategy {\n constructor(\n protected userPreferencesConfigurationStrategy: UserPreferencesConfigurationStrategy,\n @Inject(DATA_GRID_CONFIGURATION_CONTEXT)\n @Optional()\n protected context: GridConfigContext,\n @Inject(DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER)\n @Optional()\n protected contextProvider: GridConfigContextProvider\n ) {\n super(context, contextProvider);\n }\n\n getConfig$(context?: SubAssetsGridConfigContext): Observable<GridConfig> {\n const group = cloneDeep(this.retrieveContext(context)?.group);\n\n if (group?.c8y_DeviceColumnsConfig?.columns?.length) {\n group.c8y_DeviceColumnsConfig.columns = group.c8y_DeviceColumnsConfig.columns.map(column => {\n delete column.filter;\n return column;\n });\n }\n\n return of(group?.c8y_DeviceColumnsConfig);\n }\n\n saveConfig$(config: GridConfig, _context?: SubAssetsGridConfigContext): Observable<GridConfig> {\n return of(config);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n AbstractConfigurationStrategy,\n DataGridConfigurationStrategy,\n DATA_GRID_CONFIGURATION_CONTEXT,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n GridConfig,\n GridConfigContext,\n GridConfigContextProvider,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { Observable } from 'rxjs';\nimport { SmartGroupGridConfigurationStrategy } from './smart-group-grid-configuration-strategy.service';\n\nexport interface SubAssetsGridConfigContext extends UserPreferencesGridConfigContext {\n group: IManagedObject;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SubAssetsGridConfigurationStrategy extends AbstractConfigurationStrategy {\n constructor(\n protected userPreferencesConfigurationStrategy: UserPreferencesConfigurationStrategy,\n protected smartGroupGridConfigurationStrategy: SmartGroupGridConfigurationStrategy,\n protected assetNodeService: AssetNodeService,\n @Inject(DATA_GRID_CONFIGURATION_CONTEXT)\n @Optional()\n protected context: GridConfigContext,\n @Inject(DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER)\n @Optional()\n protected contextProvider: GridConfigContextProvider\n ) {\n super(context, contextProvider);\n }\n\n getConfig$(context?: SubAssetsGridConfigContext): Observable<GridConfig> {\n return this.getStrategy(context).getConfig$(context);\n }\n\n saveConfig$(config: GridConfig, context?: SubAssetsGridConfigContext): Observable<GridConfig> {\n return this.getStrategy(context).saveConfig$(config, context);\n }\n\n private getStrategy(ctx?: SubAssetsGridConfigContext): DataGridConfigurationStrategy {\n const context = this.retrieveContext(ctx) as SubAssetsGridConfigContext;\n return !!context?.group &&\n this.assetNodeService.isDynamicGroup(context?.group) &&\n context?.group?.c8y_DeviceColumnsConfig\n ? this.smartGroupGridConfigurationStrategy\n : this.userPreferencesConfigurationStrategy;\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ConfirmModalComponent,\n GainsightService,\n gettext,\n ModalLabels,\n Status,\n StatusType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from '../shared/sub-assets.model';\n\n@Component({\n selector: 'c8y-unassign-modal',\n templateUrl: './unassign-modal.component.html'\n})\nexport class UnassignModalComponent {\n CURRENT_LOCATION = location.href;\n @Input() asset: IManagedObject;\n @ViewChild('modalRef', { static: false }) modalRef: ConfirmModalComponent;\n message: string;\n closeSubject: Subject<boolean> = new Subject();\n labels: ModalLabels = { ok: gettext('Unassign'), cancel: gettext('Cancel') };\n title = gettext('Unassign');\n status: StatusType = Status.WARNING;\n\n constructor(\n private translateService: TranslateService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.message = this.translateService.instant(\n gettext('You are about to unassign \"{{name}}\". Do you want to proceed?'),\n { name: this.asset.name }\n );\n }\n\n async ngAfterViewInit() {\n try {\n await this.modalRef.result;\n this.onClose();\n } catch (error) {\n this.onDismiss();\n }\n }\n\n onClose() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.UNASSIGN_MODAL.COMPONENTS.UNASSIGN_MODAL,\n result: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.UNASSIGN_MODAL.RESULTS.ASSET_UNASSIGNED,\n url: this.CURRENT_LOCATION\n });\n this.closeSubject.next(true);\n this.closeSubject.complete();\n }\n\n onDismiss() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.UNASSIGN_MODAL.COMPONENTS.UNASSIGN_MODAL,\n action: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.UNASSIGN_MODAL.ACTIONS.CANCEL,\n url: this.CURRENT_LOCATION\n });\n this.closeSubject.complete();\n }\n}\n","<c8y-confirm-modal [title]=\"title\" [status]=\"status\" [labels]=\"labels\" #modalRef>\n <span>{{ message | translate }}</span>\n</c8y-confirm-modal>\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IManagedObject, SmartGroupsService } from '@c8y/client';\nimport {\n ActionControl,\n BuiltInActionType,\n BulkActionControl,\n Column,\n DataGridComponent,\n DataSourceModifier,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n DATA_GRID_CONFIGURATION_STRATEGY,\n DisplayOptions,\n gettext,\n GridConfigContextProvider,\n Pagination,\n Row,\n ServerSideDataCallback,\n ServerSideDataResult,\n UserPreferencesConfigurationStrategy\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { DeviceListExtensionService } from '@c8y/ngx-components/device-list';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { of, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DeleteModalCheckboxes } from './delete-assets-modal';\nimport { DeleteAssetsModalComponent } from './delete-assets-modal/delete-assets-modal.component';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from './shared/sub-assets.model';\nimport { SmartGroupGridConfigurationStrategy } from './smart-group-grid-configuration-strategy.service';\nimport {\n SubAssetsGridConfigContext,\n SubAssetsGridConfigurationStrategy\n} from './sub-assets-grid-configuration-strategy.service';\nimport { SubAssetsService } from './sub-assets.service';\nimport { UnassignModalComponent } from './unassign-assets-modal/unassign-modal.component';\n@Component({\n selector: 'c8y-sub-assets-grid',\n templateUrl: './sub-assets-grid.component.html',\n providers: [\n {\n provide: UserPreferencesConfigurationStrategy,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: SmartGroupGridConfigurationStrategy,\n useClass: SmartGroupGridConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: SubAssetsGridConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n useExisting: SubAssetsGridComponent\n }\n ]\n})\nexport class SubAssetsGridComponent implements OnInit, OnDestroy, GridConfigContextProvider {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n @Input('parent-group') parentGroup: IManagedObject;\n @Input() refresh: EventEmitter<void>;\n @Input() title: string = gettext('Subassets');\n @Input() emptyStateText: string = gettext(\n 'Add your first group or assign devices using the buttons on the action bar.'\n );\n @Input() loadingItemsLabel: string = gettext('Loading assets…');\n /** The name of the key where columns configuration will be stored. */\n @Input() columnsConfigKey: string;\n\n get columns() {\n return this._columns;\n }\n @Input() set columns(value: Column[]) {\n this._columns = value ?? this.subAssetsGridService.getDefaultColumns();\n }\n @Input('pagination') set _pagination(value: Pagination) {\n if (value) {\n this.pagination = value;\n } else {\n this.pagination = this.subAssetsGridService.getDefaultPagination();\n }\n }\n @Input('actionControls') set _actionControls(value: ActionControl[]) {\n if (value) {\n this.actionControls = value;\n } else {\n this.actionControls = this.subAssetsGridService.getDefaultActionControls();\n }\n }\n @Input() selectable = false;\n @Input() baseQuery: object = {};\n @Input('bulkActionControls') set _bulkActionControls(value: BulkActionControl[]) {\n if (value) {\n this.bulkActionControls = value;\n } else {\n this.bulkActionControls = this.subAssetsGridService.getDefaultBulkActionControls();\n }\n }\n @Input() filterable = true;\n @Input() sortable = true;\n @Output() onColumnsChange: EventEmitter<Column[]> = new EventEmitter<Column[]>();\n @Output() itemsSelect: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n pagination: Pagination = this.subAssetsGridService.getDefaultPagination();\n showCounterWarning = false;\n actionControls: ActionControl[];\n bulkActionControls: BulkActionControl[] =\n this.subAssetsGridService.getDefaultBulkActionControls();\n serverSideDataCallback: ServerSideDataCallback;\n\n @ViewChild(DataGridComponent, { static: true })\n dataGrid: DataGridComponent;\n\n displayOptions: DisplayOptions = {\n striped: true,\n bordered: false,\n gridHeader: true,\n filter: true,\n hover: true\n };\n\n showSearch = false;\n\n noResultsMessage = gettext('No matching items.');\n noDataMessage = gettext('No items to display.');\n noResultsSubtitle = gettext('Refine your search terms or check your spelling.');\n\n private _columns: Column[];\n private destroyed$ = new Subject<void>();\n\n get isRootGroup() {\n return !this.parentGroup;\n }\n\n get getInfiniteScrollMode() {\n return this.isRootGroup && this.subAssetsGridService.isUsingInventoryRoles()\n ? 'auto'\n : undefined;\n }\n\n @Input('displayOptions')\n set _displayOptions(displayOptions) {\n this.displayOptions = { ...this.displayOptions, ...displayOptions };\n }\n\n constructor(\n public subAssetsGridService: SubAssetsService,\n private bsModalService: BsModalService,\n private smartGroupsService: SmartGroupsService,\n private deviceListExtensionService: DeviceListExtensionService,\n private assetNodeService: AssetNodeService\n ) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n getGridConfigContext(): SubAssetsGridConfigContext {\n if (!!this.columnsConfigKey) {\n return { key: this.columnsConfigKey, group: this.parentGroup };\n }\n }\n\n ngOnInit() {\n const isDynamicGroup =\n !!this.parentGroup && this.assetNodeService.isDynamicGroup(this.parentGroup);\n if (!this.isRootGroup) {\n (isDynamicGroup\n ? this.deviceListExtensionService.items$\n : of(this.subAssetsGridService.getDefaultColumns(this.filterable, this.sortable))\n )\n .pipe(takeUntil(this.destroyed$))\n .subscribe(columns => (this.columns = columns));\n }\n if (!this.filterable || !this.sortable) {\n this.displayOptions.filter = this.filterable;\n this.columns.forEach(column => {\n column.filterable = this.filterable;\n column.sortable = this.sortable;\n });\n }\n this.setActionControls();\n this.showSearch = isDynamicGroup || !this.parentGroup;\n }\n\n setActionControls() {\n const actionControls: ActionControl[] = [];\n\n const unassignAction: ActionControl = {\n type: 'UNASSIGN',\n icon: 'unlink',\n text: gettext('Unassign'),\n priority: 1000,\n callback: (asset: Row) => this.onUnassignAsset(asset as IManagedObject, this.parentGroup),\n showIf: (asset: Row) =>\n this.subAssetsGridService.isDevice(asset as IManagedObject) &&\n !this.subAssetsGridService.isSmartGroup(this.parentGroup as IManagedObject)\n };\n\n actionControls.push(unassignAction);\n\n const deleteAction: ActionControl = {\n type: BuiltInActionType.Delete,\n priority: -Infinity,\n callback: (asset: Row) => this.onDeleteAsset(asset as IManagedObject, this.parentGroup),\n showIf: (asset: Row) => {\n if (this.smartGroupsService.isSmartGroup(asset as IManagedObject)) {\n return this.subAssetsGridService.canDeleteSmartGroup();\n }\n\n return true;\n }\n };\n\n actionControls.push(deleteAction);\n\n if (!this.actionControls) {\n this.actionControls = actionControls;\n }\n }\n\n onUnassignAsset(asset: IManagedObject, parentRef: IManagedObject) {\n const initialState = {\n asset\n };\n const modalRef = this.bsModalService.show(UnassignModalComponent, { initialState });\n\n modalRef.content.closeSubject.subscribe(async (result: boolean) => {\n if (result) {\n await this.subAssetsGridService.unassignAsset(asset, parentRef);\n this.refresh.emit();\n }\n });\n }\n\n async onDeleteAsset(asset: IManagedObject, parentRef: IManagedObject) {\n const initialState = {\n showWithDeviceUserCheckbox: this.subAssetsGridService.shouldShowWithDeviceUserCheckbox(asset),\n asset,\n showWithCascadeCheckbox: !this.smartGroupsService.isSmartGroup(asset)\n };\n\n const modalRef = this.bsModalService.show(DeleteAssetsModalComponent, { initialState });\n\n modalRef.content.closeSubject.subscribe(async (result: DeleteModalCheckboxes) => {\n if (result) {\n await this.subAssetsGridService.deleteAsset(asset, parentRef, result);\n if (result.cascade) {\n this.showCounterWarning = true;\n }\n this.refresh.emit();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.parentGroup && !changes.parentGroup.firstChange) {\n this.dataGrid.reload();\n }\n }\n\n trackByName(_index, column: Column): string {\n return column.name;\n }\n\n onReload() {\n this.assetNodeService.rootNode.refresh();\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const promises = [];\n let counters;\n\n promises.push(\n this.subAssetsGridService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.parentGroup,\n this.baseQuery,\n dataSourceModifier.searchText\n )\n );\n\n promises.push(this.subAssetsGridService.getTotal(this.parentGroup, this.baseQuery));\n promises.push(\n this.subAssetsGridService.getCount(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.parentGroup,\n this.baseQuery,\n dataSourceModifier.searchText\n )\n );\n\n const [dataResponse, size, filteredSize] = await Promise.all(promises);\n if (!counters) {\n counters = {\n size,\n filteredSize\n };\n }\n this.onColumnsChange.emit(dataSourceModifier.columns);\n\n return {\n res: dataResponse.res,\n data: dataResponse.data,\n paging: dataResponse.paging,\n ...counters\n };\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n}\n","<c8y-data-grid\n [title]=\"title\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [bulkActionControls]=\"bulkActionControls\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [infiniteScroll]=\"getInfiniteScrollMode\"\n [showCounterWarning]=\"showCounterWarning\"\n [refresh]=\"refresh\"\n [showSearch]=\"showSearch\"\n [displayOptions]=\"displayOptions\"\n (itemsSelect)=\"itemsSelect.emit($event)\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n (onReload)=\"onReload()\"\n>\n <c8y-ui-empty-state\n [icon]=\"'c8y-group-add'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (emptyStateText | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n</c8y-data-grid>\n","import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { InventoryService } from '@c8y/client';\nimport { SubAssetsService } from '../sub-assets.service';\nimport { IManagedObject } from '@c8y/client';\n\n@Component({\n selector: 'c8y-assign-child-devices',\n templateUrl: './assign-child-devices.component.html'\n})\nexport class AssignChildDevicesComponent {\n @Input() currentGroupId: string;\n @Input() parentDevice: IManagedObject;\n @Output() onCancel = new EventEmitter<any>();\n @Output() onSelectedDevices = new EventEmitter<string[]>();\n @Input() refresh = new EventEmitter<any>();\n @Input() onlySelect = false; // if true, devices are only selected, not assigned\n\n selected: string[] = [];\n baseQuery: any;\n canAssignDevice = false;\n pendingStatus = false;\n\n constructor(\n private alert: AlertService,\n private subAssetsService: SubAssetsService,\n private inventoryService: InventoryService\n ) {}\n\n @HostListener('document:keydown.enter', ['$event']) onEnterKeyDown(_event: KeyboardEvent) {\n if (this.selected.length > 0) {\n this.assignDevices();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event']) onEscapeKeyDown(_event: KeyboardEvent) {\n this.onCancel.emit();\n }\n\n async ngOnInit() {\n this.setNotIncludedInGroupQuery();\n this.canAssignDevice = await this.subAssetsService.canAssignDevice({\n id: this.currentGroupId\n } as IManagedObject);\n }\n\n setNotIncludedInGroupQuery() {\n const notIncludedInGroupQuery = { __not: { __bygroupid: this.currentGroupId } };\n this.baseQuery = notIncludedInGroupQuery;\n }\n\n async assignDevices() {\n if (this.canAssignDevice === false) {\n return;\n }\n if (this.onlySelect) {\n this.onSelectedDevices.emit(this.selected);\n this.alert.success(gettext('Child devices selected.'));\n this.onCancel.emit();\n return;\n }\n\n this.pendingStatus = true;\n\n try {\n await this.inventoryService.childAssetsBulkAdd(this.selected, this.currentGroupId);\n this.refresh.emit();\n this.alert.success(gettext('Child devices assigned.'));\n } catch (error) {\n this.alert.danger(gettext('Could not assign child devices.'), error);\n }\n this.pendingStatus = false;\n this.selected = [];\n this.onCancel.emit();\n }\n\n onSelected(selectedDevicesIDs: string[]) {\n this.selected = selectedDevicesIDs;\n }\n}\n","<div class=\"card-block flex-no-shrink separator-bottom col-xs-12 large-padding p-t-24 p-b-24\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <h4 class=\"text-center text-medium\">\n {{ 'Assign child devices' | translate }}\n </h4>\n </div>\n </div>\n</div>\n\n<c8y-sub-assets-grid\n [title]=\"''\"\n [emptyStateText]=\"'All child devices are already assigned' | translate\"\n [refresh]=\"refresh\"\n [actionControls]=\"[]\"\n [columnsConfigKey]=\"'assign-child-devices'\"\n [selectable]=\"true\"\n [parent-group]=\"parentDevice\"\n [baseQuery]=\"baseQuery\"\n (itemsSelect)=\"onSelected($event)\"\n class=\"d-contents\"\n></c8y-sub-assets-grid>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n (click)=\"onCancel.emit()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n >\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n <button\n (click)=\"assignDevices()\"\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n title=\"{{ 'Assign' | translate }}\"\n [disabled]=\"selected.length === 0 || !canAssignDevice\"\n >\n <span>{{ 'Assign' | translate }}</span>\n </button>\n</div>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n C8yStepper,\n GainsightService,\n gettext,\n Pagination,\n Permissions,\n Row\n} from '@c8y/ngx-components';\nimport { Subscription } from 'rxjs';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from '../shared/sub-assets.model';\nimport { SubAssetsService } from '../sub-assets.service';\nimport { AddGroupService } from './add-group.service';\n\n@Component({\n selector: 'c8y-add-group',\n templateUrl: './add-group.component.html'\n})\nexport class AddGroupComponent {\n @Input() currentGroupId: string;\n @Input() refresh = new EventEmitter<void>();\n @Output() onDeviceQueryStringChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onCancel = new EventEmitter<void>();\n @ViewChild(C8yStepper, { static: false })\n stepper: C8yStepper;\n @ViewChild('nameRef', { static: false })\n nameInputRef: ElementRef;\n deviceQueryStringOutput: string;\n showAssignChildDevices = false;\n showChildrenForDevice: IManagedObject;\n formGroupStepOne: FormGroup;\n actionControls: ActionControl[] = [];\n pendingStatus = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n selectedChildDevices: string[] = [];\n subscription: Subscription;\n canCreateGroup = false;\n canAssignDevice = false;\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n\n readonly ITEMS_SELECT_LIMIT: number = 15;\n readonly btnLabels = {\n next: gettext('Next'),\n cancel: gettext('Cancel'),\n create: gettext('Create')\n };\n\n private nameInput: HTMLInputElement;\n\n constructor(\n private fb: FormBuilder,\n private addGroupService: AddGroupService,\n private alert: AlertService,\n private subAssetsService: SubAssetsService,\n private gainsightService: GainsightService,\n private permissionsService: Permissions\n ) {}\n\n @HostListener('document:keydown.enter', ['$event']) onEnterKeyDown(_event: KeyboardEvent) {\n // Order matters! Needs to be placed before this.stepper.next\n if ((this.isGroupDetailsStep() && !this.canAssignDevice) || this.isAssignDeviceStep()) {\n this.createGroup();\n return;\n }\n this.stepper.next();\n }\n\n async ngOnInit() {\n this.formGroupStepOne = this.fb.group({\n name: ['', Validators.required],\n description: ['']\n });\n this.subscription = this.onCancel.subscribe(() => this.resetStepper());\n this.canCreateGroup =\n this.subAssetsService.canCreateGroup() ||\n (await this.permissionsService.canEdit(\n [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE\n ],\n {\n id: this.currentGroupId\n }\n ));\n this.canAssignDevice = await this.subAssetsService.canAssignDevice({\n id: this.currentGroupId\n } as IManagedObject);\n this.setActionControls();\n }\n\n setActionControls() {\n const actionControls: ActionControl[] = [];\n\n const selectChildrenAction: ActionControl = {\n type: 'SHOW_TARGET_CHILD_DEVICES',\n icon: 'enter-bottom',\n text: gettext('Select target child devices'),\n callback: (asset: Row) => this.selectChildren(asset as IManagedObject),\n showIf: (asset: Row) => asset.childDevices.references.length > 0\n };\n\n actionControls.push(selectChildrenAction);\n\n this.actionControls = actionControls;\n this.refresh.emit();\n }\n\n ngAfterViewInit() {\n this.nameInput = this.nameInputRef.nativeElement as HTMLInputElement;\n this.setFocusOnNameInput();\n }\n\n async createGroup() {\n if (this.canCreateGroup === false) {\n return;\n }\n\n this.pendingStatus = true;\n const combinedDevices = [...this.selected, ...this.selectedChildDevices];\n await this.addGroupService.createGroupAndAssignDevices(\n this.formGroupStepOne.value,\n this.currentGroupId,\n combinedDevices\n );\n\n this.pendingStatus = false;\n this.resetStepper();\n const alertMsg = gettext('Group created.');\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.ADD_GROUP.COMPONENTS.ADD_GROUP,\n url: window.location.href,\n result: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.ADD_GROUP.RESULTS.ADD_SUCCESS\n });\n this.alert.success(alertMsg);\n this.refresh.emit();\n this.onCancel.emit();\n }\n\n onSelected(selectedDevicesIDs: string[]) {\n this.selected = selectedDevicesIDs;\n }\n\n onSelectedChildDevices(selectedDevicesIDs: string[]) {\n this.selectedChildDevices = selectedDevicesIDs;\n }\n\n resetStepper() {\n this.stepper.reset();\n this.stepper.selectedIndex = 1;\n this.selected = [];\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n private isGroupDetailsStep() {\n return this.stepper.selectedIndex === 0;\n }\n\n private isAssignDeviceStep() {\n return this.stepper.selectedIndex === 1;\n }\n\n private setFocusOnNameInput() {\n if (this.nameInput) {\n this.nameInput.focus();\n this.nameInput.select();\n }\n }\n\n private selectChildren(asset: IManagedObject) {\n this.showAssignChildDevices = true;\n this.showChildrenForDevice = asset;\n }\n}\n","<div [ngClass]=\"{ drawerOpen: true }\">\n <div class=\"bottom-drawer\">\n <div\n class=\"d-contents\"\n *ngIf=\"!currentGroupId; else stepper\"\n >\n <ng-container [ngTemplateOutlet]=\"stepper\"></ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #stepper>\n <c8y-stepper\n class=\"d-col flex-nowrap no-align-items fit-h c8y-stepper--no-btns\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n [customClasses]=\"['col-md-6', 'col-md-offset-3', 'm-t-24', 'm-b-40', 'p-0', 'flex-no-shrink']\"\n linear\n c8yProductExperience\n inherit\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP }\"\n >\n <cdk-step\n [stepControl]=\"formGroupStepOne\"\n [label]=\"'New group' | translate\"\n >\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'New group' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-xs-12 flex-grow no-gutter\">\n <div class=\"card-inner-scroll fit-h\">\n <div class=\"card-block p-b-0\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <c8y-form-group [novalidation]=\"true\">\n <div [formGroup]=\"formGroupStepOne\">\n <c8y-form-group>\n <label translate>Name</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. First floor' | translate }} \"\n type=\"text\"\n required\n formControlName=\"name\"\n maxlength=\"254\"\n #nameRef\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. first floor devices' | translate }}\"\n type=\"text\"\n formControlName=\"description\"\n />\n </c8y-form-group>\n </div>\n </c8y-form-group>\n <c8y-form-group>\n <div [formGroup]=\"formGroupStepOne\"></div>\n </c8y-form-group>\n <div\n class=\"alert alert-info max-width-100\"\n translate\n *ngIf=\"!canAssignDevice\"\n >\n You don't have permission to assign devices.\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n (onCancel)=\"onCancel.emit()\"\n (onCustom)=\"createGroup()\"\n [disabled]=\"!canCreateGroup\"\n [labels]=\"\n canAssignDevice\n ? { next: btnLabels.next, cancel: btnLabels.cancel }\n : { custom: btnLabels.create, cancel: btnLabels.cancel }\n \"\n [showButtons]=\"\n canAssignDevice ? { next: true, cancel: true } : { custom: true, cancel: true }\n \"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step [label]=\"'Assign devices' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-xs-12 no-gutter flex-grow\">\n <c8y-device-grid\n [title]=\"'Select target devices' | translate\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"true\"\n [withChildren]=\"true\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP }\"\n ></c8y-device-grid>\n </div>\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n (onCancel)=\"onCancel.emit()\"\n (onCustom)=\"createGroup()\"\n [labels]=\"{ custom: btnLabels.create }\"\n [disabled]=\"!canAssignDevice\"\n [pending]=\"pendingStatus\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</ng-template>\n\n<div\n [ngClass]=\"{ drawerOpen: showAssignChildDevices }\"\n *ngIf=\"showAssignChildDevices\"\n>\n <div class=\"bottom-drawer m-t-40\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-child-devices\n class=\"d-contents\"\n (onCancel)=\"showAssignChildDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n [parentDevice]=\"showChildrenForDevice\"\n [onlySelect]=\"true\"\n (onSelectedDevices)=\"onSelectedChildDevices($event)\"\n ></c8y-assign-child-devices>\n </div>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n DATA_GRID_CONFIGURATION_CONTEXT,\n DATA_GRID_CONFIGURATION_STRATEGY,\n GainsightService,\n gettext,\n HeaderActionControl,\n Pagination,\n Row,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext\n} from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from '../shared/sub-assets.model';\nimport { SubAssetsService } from '../sub-assets.service';\n\n@Component({\n selector: 'c8y-assign-devices',\n templateUrl: './assign-devices.component.html',\n providers: [\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT,\n useValue: AssignDevicesComponent.GRID_CONFIG_CONTEXT\n }\n ]\n})\nexport class AssignDevicesComponent {\n static readonly GRID_CONFIG_CONTEXT: UserPreferencesGridConfigContext = {\n key: 'assign-devices-grid',\n configFilter: {\n filter: false\n }\n };\n\n CURRENT_LOCATION = location.href;\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n\n @Input() currentGroupId: string;\n @Input() refresh = new EventEmitter<any>();\n @Output() onCancel = new EventEmitter<any>();\n @Output() onShowChildDevices = new EventEmitter<boolean>();\n @Output() selectedDevice = new EventEmitter<IManagedObject>();\n @ViewChild('showDevicesToggle', { read: TemplateRef }) showDevicesToggle: TemplateRef<any>;\n\n deviceQueryStringOutput: string;\n pendingStatus = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n baseQuery: any;\n canAssignDevice = false;\n actionControls: ActionControl[] = [];\n headerActionControls: HeaderActionControl[] = [];\n showChildren = false;\n readonly isSelectable = true;\n\n constructor(\n private alert: AlertService,\n private subAssetsService: SubAssetsService,\n private inventoryService: InventoryService,\n private gainsightService: GainsightService\n ) {}\n\n @HostListener('document:keydown.enter', ['$event']) onEnterKeyDown(_event: KeyboardEvent) {\n if (this.selected.length > 0) {\n this.assignDevices();\n }\n }\n\n async ngOnInit() {\n this.setNotIncludedInGroupQuery();\n this.canAssignDevice = await this.subAssetsService.canAssignDevice({\n id: this.currentGroupId\n } as IManagedObject);\n this.setHeaderActionControls();\n }\n\n setNotIncludedInGroupQuery() {\n const notIncludedInGroupQuery = { __not: { __bygroupid: this.currentGroupId } };\n this.baseQuery = notIncludedInGroupQuery;\n }\n\n setHeaderActionControls() {\n const headerActionControls: HeaderActionControl[] = [];\n const showChildDevices = {\n type: 'DISPLAY_CHILD_DEVICES_BUTTON',\n text: gettext('Enable child devices selection'),\n template: this.showDevicesToggle,\n callback: () => {\n this.showChildren = !this.showChildren;\n this.setActionControls(this.showChildren);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.ASSIGN_DEVICES.ACTIONS.DISPLAY_CHILD_DEVICES,\n url: this.CURRENT_LOCATION\n });\n }\n };\n headerActionControls.push(showChildDevices);\n this.headerActionControls = headerActionControls;\n }\n\n setActionControls(showChildren: boolean) {\n const actionControls: ActionControl[] = [];\n\n const selectChildrenAction: ActionControl = {\n type: 'SHOW_TARGET_CHILD_DEVICES',\n icon: 'enter-bottom',\n text: gettext('Select target child devices'),\n callback: (asset: Row) => this.selectChildren(asset as IManagedObject),\n showIf: (asset: Row) => asset.childDevices.references.length > 0\n };\n\n if (showChildren) {\n actionControls.push(selectChildrenAction);\n }\n\n this.actionControls = actionControls;\n this.refresh.emit();\n }\n\n async assignDevices() {\n if (this.canAssignDevice === false) {\n return;\n }\n this.pendingStatus = true;\n\n try {\n await this.inventoryService.childAssetsBulkAdd(this.selected, this.currentGroupId);\n this.refresh.emit();\n this.alert.success(gettext('Devices assigned.'));\n } catch (error) {\n this.alert.danger(gettext('Could not assign devices.'), error);\n }\n this.pendingStatus = false;\n this.selected = [];\n this.onCancel.emit();\n }\n\n onSelected(selectedDevicesIDs: string[]) {\n this.selected = selectedDevicesIDs;\n }\n\n selectChildren(asset: IManagedObject) {\n this.onShowChildDevices.emit(true);\n this.selectedDevice.emit(asset);\n }\n}\n","<div class=\"card-block flex-no-shrink separator-bottom col-xs-12 large-padding p-t-24 p-b-24\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n</div>\n<c8y-device-grid\n class=\"flex-grow col-xs-12 no-gutter\"\n [title]=\"''\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"isSelectable\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n [baseQuery]=\"baseQuery\"\n [headerActionControls]=\"headerActionControls\"\n [withChildren]=\"true\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES }\"\n></c8y-device-grid>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"onCancel.emit()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.CANCEL\n }\"\n >\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Assign' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n (click)=\"assignDevices()\"\n [disabled]=\"selected.length === 0 || !canAssignDevice\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.ASSIGN\n }\"\n >\n <span>{{ 'Assign' | translate }}</span>\n </button>\n</div>\n\n<ng-template\n #showDevicesToggle\n let-control=\"headerActionControl\"\n>\n <label\n class=\"c8y-switch a-s-center\"\n title=\"{{ control.text | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"showChildren\"\n (click)=\"control.callback()\"\n />\n <span></span>\n <span>{{ control.text | translate }}</span>\n </label>\n <button\n class=\"btn-help m-r-16 a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"childDevicesPop\"\n placement=\"bottom\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n <ng-template #childDevicesPop>\n <span translate>\n Displays the button\n <span\n class=\"btn btn-dot btn-icon no-pointer\"\n title=\"Child devices icon\"\n >\n <i class=\"text-primary dlt-c8y-icon-enter-bottom\"></i>\n </span>\n next to target devices with children. Clicking it displays a list with all child devices of\n the selected target device.\n </span>\n </ng-template>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { SubAssetsGridComponent } from './sub-assets-grid.component';\nimport { AssignChildDevicesComponent } from './assign-devices/assign-child-devices.component';\nimport { AssignDevicesComponent } from './assign-devices/assign-devices.component';\n\n@NgModule({\n declarations: [AssignDevicesComponent, AssignChildDevicesComponent, SubAssetsGridComponent],\n imports: [CoreModule, DeviceGridModule, PopoverModule, BsDropdownModule, TooltipModule],\n exports: [SubAssetsGridComponent, AssignDevicesComponent, AssignChildDevicesComponent]\n})\nexport class SubAssetsGridsModule {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { AddGroupComponent } from './add-group.component';\nimport { AddGroupService } from './add-group.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { SubAssetsGridsModule } from '../sub-assets-grids.module';\n\n@NgModule({\n declarations: [AddGroupComponent],\n imports: [\n CoreModule,\n DeviceGridModule,\n FormsModule,\n ReactiveFormsModule,\n PopoverModule,\n SubAssetsGridsModule\n ],\n exports: [AddGroupComponent],\n providers: [AddGroupService]\n})\nexport class AddGroupModule {}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IManagedObjectBinary } from '@c8y/client';\nimport { AlertService, C8yJSONSchema, gettext, FilesService } from '@c8y/ngx-components';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { AssetPropertiesItem } from './asset-properties.model';\nimport { JSONSchema7 } from 'json-schema';\nimport { clone, sortBy } from 'lodash-es';\n\n@Component({\n selector: 'c8y-asset-properties-item',\n templateUrl: './asset-properties-item.component.html'\n})\nexport class AssetPropertiesItemComponent implements AssetPropertiesItem, OnChanges {\n @Input()\n key: string;\n @Input()\n value: any;\n @Input()\n label: string;\n @Input()\n type: string;\n @Input()\n file: IManagedObjectBinary;\n @Input()\n complex: AssetPropertiesItem[];\n @Input()\n isEdit: boolean;\n @Input()\n jsonSchema: JSONSchema7;\n\n form: FormGroup;\n fields: FormlyFieldConfig[];\n model: any;\n previewImage;\n\n constructor(\n private alert: AlertService,\n private c8yJsonSchemaService: C8yJSONSchema,\n public filesService: FilesService\n ) {}\n\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\n if (changes.isEdit) {\n this.resolveJsonSchema();\n await this.resolveFile();\n }\n }\n\n private async resolveFile() {\n if (this.file) {\n try {\n if (this.filesService.fileNamesHaveValidExtension(this.file.name, 'image')) {\n const imageFile = await this.filesService.getFile(this.file);\n this.previewImage = await this.getPreviewIfImage(imageFile);\n }\n } catch (ex) {\n this.alert.danger(gettext('File could not be loaded.'));\n }\n }\n }\n\n private formComplexPropsValue() {\n const complexProps = {};\n this.complex.forEach(complexObj => {\n if (complexObj.file) {\n complexProps[complexObj.key] = complexObj.value;\n } else {\n complexProps[complexObj.key] = this.value[complexObj.key];\n }\n });\n return complexProps;\n }\n\n private getModel() {\n if (this.complex && this.complex.length > 0) {\n return {\n [this.key]: this.formComplexPropsValue()\n };\n }\n return {\n [this.key]: clone(this.value)\n };\n }\n\n private resolveJsonSchema() {\n if (this.jsonSchema) {\n const fieldConfig = this.c8yJsonSchemaService.toFieldConfig(this.jsonSchema, this.jsonSchema);\n if (this.complex && this.complex.length > 0) {\n const orderedFieldConfig = sortBy(fieldConfig.fieldGroup[0].fieldGroup, 'order');\n fieldConfig.fieldGroup[0].fieldGroup = orderedFieldConfig;\n }\n this.form = new FormGroup({});\n this.fields = [fieldConfig];\n this.model = this.getModel();\n }\n }\n\n private async getPreviewIfImage(imageFile: File) {\n return this.filesService.toBase64(imageFile);\n }\n}\n","<ng-container [ngSwitch]=\"type\" *ngIf=\"!isEdit\">\n <ng-container *ngSwitchCase=\"'date'\">\n {{ (value | c8yDate: 'fullDate') || ('Undefined' | translate) }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-container *ngIf=\"file\">\n <img *ngIf=\"previewImage\" [src]=\"previewImage\" class=\"img-responsive\" />\n <button\n *ngIf=\"!previewImage\"\n (click)=\"filesService.download(file)\"\n type=\"button\"\n title=\"{{ 'Download' | translate }} {{ file.name }}\"\n class=\"btn btn-clean text-truncate p-0\"\n >\n {{ file.name }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"!file\">\n {{ 'No file attached.' | translate }}\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'object'\">\n <ul class=\"list-unstyled c8y-custom-properties\">\n <li\n *ngFor=\"let prop of complex; let i = index\"\n [ngClass]=\"{ 'separator-top-bottom': i === 0, 'separator-bottom': i > 0 }\"\n class=\"p-t-4 p-b-4 d-flex text-nowrap\"\n >\n <label\n class=\"small m-b-0 m-r-8 text-truncate\"\n title=\"{{ prop.label | translate }}\"\n [ngClass]=\"{ 'a-s-start': prop.file }\"\n >\n {{ prop.label | translate }}\n </label>\n <span class=\"m-l-auto\" style=\"max-width: {{ prop.file ? '50%' : '100%' }}; min-width:0;\">\n <c8y-asset-properties-item\n [file]=\"prop.file\"\n [key]=\"prop.key\"\n [type]=\"prop.type\"\n [value]=\"prop.value\"\n ></c8y-asset-properties-item>\n </span>\n </li>\n </ul>\n </ng-container>\n <!--\n <ng-container *ngSwitchCase=\"'boolean'\">\n <input type=\"checkbox\" [checked]=\"value\" [disabled]=\"true\" />\n </ng-container>\n -->\n <ng-container *ngSwitchCase=\"type === 'number' || type === 'boolean' ? type : ''\">\n <p class=\"text-truncate\" title=\"{{ value != null ? value : ('Undefined' | translate) }}\">\n {{ value != null ? value : ('Undefined' | translate) }}\n </p>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <p class=\"text-truncate\" title=\"{{ (value | translate) || ('Undefined' | translate) }}\">\n {{ (value | translate) || ('Undefined' | translate) }}\n </p>\n </ng-container>\n</ng-container>\n<formly-form *ngIf=\"isEdit\" [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n","function isFullScreenEnabled(element) {\n const doc: any = element;\n return !!(\n doc.fullscreenElement ||\n doc.mozFullScreenElement ||\n doc.webkitFullscreenElement ||\n doc.msFullscreenElement\n );\n}\n\nexport function toggleFullscreen(element) {\n const elem = element as any;\n const doc = element as any;\n if (!isFullScreenEnabled(element)) {\n if (elem.requestFullscreen) {\n elem.requestFullscreen();\n } else if (elem.msRequestFullscreen) {\n elem.msRequestFullscreen();\n } else if (elem.mozRequestFullScreen) {\n elem.mozRequestFullScreen();\n } else if (elem.webkitRequestFullscreen) {\n elem.webkitRequestFullscreen((Element as any).ALLOW_KEYBOARD_INPUT);\n }\n } else if (doc.exitFullscreen) {\n doc.exitFullscreen();\n } else if (doc.msExitFullscreen) {\n doc.msExitFullscreen();\n } else if (doc.mozCancelFullScreen) {\n doc.mozCancelFullScreen();\n } else if (doc.webkitExitFullscreen) {\n doc.webkitExitFullscreen();\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport * as L from 'leaflet';\nimport {\n MapComponent,\n MapConfig,\n MapService,\n PositionManagedObject,\n defaultMapConfig,\n getC8yMarker\n} from '@c8y/ngx-components/map';\nimport { FormArray, FormGroup } from '@angular/forms';\nimport { IManagedObject } from '@c8y/client';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { toggleFullscreen } from '../fullscreen.util';\nimport { isNumber } from 'lodash-es';\n\n// Düsseldorf\nexport const defaultMapLocation = {\n lat: defaultMapConfig.center[0],\n lng: defaultMapConfig.center[1]\n} as const;\n\n@Component({\n selector: 'c8y-asset-location',\n templateUrl: './asset-location.component.html'\n})\nexport class AssetLocationComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild(MapComponent)\n mapView: MapComponent;\n @Input() isEdit: boolean;\n @Input() locationMO: IManagedObject;\n @Input() form: FormGroup;\n config: MapConfig = {\n center: defaultMapConfig.center,\n zoomLevel: 13,\n color: 'green',\n icon: 'c8y-icon-location'\n };\n assets: PositionManagedObject;\n isMarkerDraggable = false;\n isMapClickable = false;\n dragListener: L.LeafletEventHandlerFn;\n formSubscription: Subscription;\n showMap = true;\n\n constructor(\n private activatedRouter: ActivatedRoute,\n private mapService: MapService\n ) {}\n\n async ngOnInit() {\n const leaflet = await this.mapService.getLeaflet();\n if (leaflet) {\n const { contextData } =\n !this.activatedRouter.parent || this.activatedRouter.snapshot.data.context\n ? this.activatedRouter.snapshot.data\n : this.activatedRouter.parent.snapshot.data;\n this.assets = contextData ? contextData : this.locationMO;\n if (this.assets.c8y_Position.lat && this.assets.c8y_Position.lng)\n this.config.center = [this.assets.c8y_Position.lat, this.assets.c8y_Position.lng];\n this.setView(this.assets.c8y_Position.lat, this.assets.c8y_Position.lng);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.isEdit?.currentValue) {\n this.showMap = true;\n this.isMarkerDraggable = true;\n this.isMapClickable = true;\n queueMicrotask(() => this.mapView?.map.invalidateSize());\n this.mapView?.map.on('click', event => {\n this.onClickOfMap(event);\n this.updateMarker(event.latlng.lat, event.latlng.lng);\n });\n this.formSubscription = this.form?.valueChanges.subscribe(value => {\n this.updateMarker(value.c8y_Position.lat, value.c8y_Position.lng);\n this.setView(value.c8y_Position.lat, value.c8y_Position.lng);\n });\n return;\n }\n if (!changes.isEdit?.currentValue) {\n const isAnyValueMissing = this.checkIfAnyValueIsMissing(\n this.locationMO?.c8y_Position.lat,\n this.locationMO?.c8y_Position.lng\n );\n if (isAnyValueMissing) {\n this.showMap = false;\n return;\n }\n this.isMarkerDraggable = false;\n this.isMapClickable = false;\n this.updateMarker(this.locationMO?.c8y_Position.lat, this.locationMO?.c8y_Position.lng);\n this.setView(this.locationMO?.c8y_Position.lat, this.locationMO?.c8y_Position.lng);\n }\n }\n\n ngOnDestroy() {\n this.formSubscription?.unsubscribe();\n if (this.mapView?.markers && this.dragListener) {\n this.mapView?.markers.forEach(marker => {\n marker.off('drag', this.dragListener);\n });\n }\n }\n\n /**\n * This command is used to prefill the latitude and longitude values in the form when the marker is dragged.\n */\n onMarkerDrag(event: L.LeafletEvent) {\n if (this.form) {\n const properties = this.form.get('c8y_Position') as FormArray;\n properties?.get('lat').patchValue(event.target._latlng.lat);\n properties?.get('lng').patchValue(event.target._latlng.lng);\n }\n }\n\n /**\n * This method is used to update the marker with the specified values and if any one of the values is not availble, sets\n * showWarning to true.\n * @param latitude - The latitude of the marker\n * @param longitude - The longitude of the marker\n */\n updateMarker(latitude: number, longitude: number) {\n const isAnyValueMissing = this.checkIfAnyValueIsMissing(latitude, longitude);\n if (!isAnyValueMissing) {\n [latitude, longitude] = this.setLatLngValues(latitude, longitude);\n const asset: any = {\n c8y_Position: {\n latitude,\n longitude\n }\n };\n\n if (this.mapView) {\n const icon = this.mapView.getAssetIcon(this.assets);\n const leafletMarker = this.mapView.leaflet.marker([latitude, longitude], {\n icon: icon,\n draggable: this.isMarkerDraggable\n });\n if (this.isMarkerDraggable) {\n this.dragListener = event => {\n this.onMarkerDrag(event);\n };\n leafletMarker.on('dragend', this.dragListener);\n }\n this.mapView.clearMarkers();\n const marker = getC8yMarker(leafletMarker, asset);\n this.mapView.addMarkerToMap(marker);\n this.setView(latitude, longitude);\n }\n return;\n }\n this.mapView.clearMarkers();\n }\n\n /**\n * This command is used to prefill the latitude and longitude values in the form on click of map.\n */\n onClickOfMap(event: L.LeafletMouseEvent) {\n if (this.form) {\n const properties = this.form.get('c8y_Position') as FormArray;\n properties?.get('lat').patchValue(event.latlng.lat);\n properties?.get('lng').patchValue(event.latlng.lng);\n this.form.markAsDirty();\n }\n }\n\n /**\n * Used to enable full screen of the map.\n */\n enableFullscreen() {\n toggleFullscreen(this.mapView.mapElement.nativeElement);\n }\n\n /**\n * Checks if any one of the values i.e., latitude/longitude is undefined or null.\n * @param latitude Latitude value of the position\n * @param longitude Longitude value of the position\n * @returns returns true if any one of the values are both the values are missing else it returns false.\n */\n checkIfAnyValueIsMissing(latitude: number, longitude: number) {\n return this.isNullOrUndefined(latitude) || this.isNullOrUndefined(longitude);\n }\n\n /**\n * Sets the view of the map based on the position of marker.\n * @param latitude - Latitude of the marker\n * @param longitude Longitude of the marker\n */\n setView(latitude: number, longitude: number) {\n if (isNumber(latitude) && isNumber(longitude) && this.mapView) {\n [latitude, longitude] = this.setLatLngValues(latitude, longitude);\n this.config.center = [latitude, longitude];\n this.mapView.center();\n }\n }\n\n setLatLngValues(latitude: number, longitude: number): [number, number] {\n latitude = this.isNullOrUndefined(latitude) ? defaultMapLocation.lat : latitude;\n longitude = this.isNullOrUndefined(longitude) ? defaultMapLocation.lng : longitude;\n return [latitude, longitude];\n }\n\n private isNullOrUndefined(value): boolean {\n return value === null || value === undefined;\n }\n}\n","<div [hidden]=\"!showMap\">\n <div class=\"row\">\n <button\n class=\"btn btn-link pull-right\"\n style=\"margin-right: 12px\"\n title=\"Full screen\"\n type=\"button\"\n data-cy=\"asset-location-full-screen\"\n (click)=\"enableFullscreen()\"\n >\n <i c8yIcon=\"expand\"></i>\n </button>\n </div>\n <div style=\"width: 100%; height: 400px\">\n <c8y-map\n #map\n [assets]=\"assets\"\n [config]=\"config\"\n ></c8y-map>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport {\n IManagedObject,\n IManagedObjectBinary,\n InventoryBinaryService,\n InventoryService\n} from '@c8y/client';\nimport { AlertService, AssetTypesRealtimeService, gettext } from '@c8y/ngx-components';\nimport { AssetPropertiesItem } from './asset-properties.model';\nimport { JSONSchema7 } from 'json-schema';\nimport { sortBy, toPairs, fromPairs, find } from 'lodash-es';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'c8y-asset-properties',\n templateUrl: './asset-properties.component.html'\n})\nexport class AssetPropertiesComponent implements OnChanges {\n @Input() asset: IManagedObject;\n @Output() assetChange = new EventEmitter<IManagedObject>();\n\n @Input()\n properties: IManagedObject[] = [];\n\n assetType: IManagedObject;\n customProperties: AssetPropertiesItem[] = [];\n isEdit = false;\n isLoading = false;\n\n constructor(\n private assetTypes: AssetTypesRealtimeService,\n private inventory: InventoryService,\n private inventoryBinary: InventoryBinaryService,\n private alert: AlertService\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.asset) {\n // Back button handling, as component is not destroyed\n this.assetType = undefined;\n this.customProperties = [];\n this.loadAsset();\n }\n }\n\n async loadAsset() {\n this.isLoading = true;\n const assetType$ = this.assetTypes.getAssetTypeByName$(this.asset.type);\n this.assetType = await firstValueFrom(assetType$);\n try {\n this.properties = this.keepOrder(\n this.assetType?.c8y_IsAssetType?.properties,\n this.properties\n );\n } catch (ex) {\n console.warn(ex);\n }\n this.customProperties = await this.resolveCustomProperties(this.properties);\n this.isLoading = false;\n }\n\n async resolveCustomProperties(managedObjects: IManagedObject[]) {\n const properties = [];\n for (const mo of managedObjects) {\n if (mo.c8y_JsonSchema) {\n const [item] = await this.parseItem(mo, mo.c8y_JsonSchema.properties, this.asset);\n this.setItemRequired(item, mo);\n properties.push(item);\n }\n }\n return properties;\n }\n\n deleteTitleFromMOJsonSchema(mo: IManagedObject) {\n const schemaProperties = mo?.c8y_JsonSchema?.properties;\n const property = Object.keys(schemaProperties || {})[0];\n delete (mo?.c8y_JsonSchema?.properties[property] || {}).title;\n }\n\n /**\n * This method is used to order the complex properties in the order specified by the user in asset properties screen.\n * @param mo - Managed object of the complex property associated with the asset.\n */\n orderComplexProperties(mo: IManagedObject) {\n const complexProperties = mo.c8y_JsonSchema.properties[mo.name]?.['properties'];\n const keyValuesArray = toPairs(complexProperties);\n const orderedProperties = sortBy(keyValuesArray, ([, value]) => value.order);\n mo.c8y_JsonSchema.properties[mo.name]['properties'] = fromPairs(orderedProperties);\n }\n\n async parseItem(mo: IManagedObject, properties, asset): Promise<AssetPropertiesItem[]> {\n if (!asset) {\n return [];\n }\n const keys = Object.keys(properties);\n const items: AssetPropertiesItem[] = [];\n\n for (const key of keys) {\n const type = properties[key].type;\n const title = properties[key].title;\n let value = this.getTypeValue(type, asset[key]);\n let file;\n if (type === 'file' && value) {\n const fileId = typeof value === 'object' ? value[0]?.file?.id : value;\n const fileData = await this.getFileManagedObject(fileId);\n file = fileData;\n value = [fileData];\n } else if (type === 'date') {\n const valueDate = new Date(value);\n value = !isNaN(valueDate.getTime()) ? valueDate : '';\n }\n if (type === 'object') {\n // remove title to avoid excessive property name on asset complex properties form\n this.deleteTitleFromMOJsonSchema(mo);\n this.orderComplexProperties(mo);\n if (!value) {\n value = {};\n for (const prop in properties[key].properties) {\n value[prop] = this.getTypeValue(properties[key].properties[prop].type, null);\n }\n }\n }\n items.push({\n key,\n value,\n label: title || mo.label,\n type,\n description: mo.description,\n file,\n complex:\n type === 'object'\n ? await this.parseItem(mo, properties[key].properties, value)\n : undefined,\n isEdit: false,\n jsonSchema: mo.c8y_JsonSchema\n });\n }\n return items;\n }\n\n toggleEdit(prop: AssetPropertiesItem) {\n prop.isEdit = !prop.isEdit;\n }\n\n async getFileManagedObject(id: string) {\n try {\n const { data } = await this.inventory.detail(id);\n return data;\n } catch (ex) {\n this.alert.addServerFailure(ex);\n }\n }\n\n async save(propertyValue, prop: AssetPropertiesItem): Promise<void> {\n try {\n if (prop.type === 'object') {\n this.updateUndefinedToPropTypeValue(prop, propertyValue[prop.key]);\n } else {\n this.updateUndefinedToPropTypeValue(prop, propertyValue);\n }\n\n propertyValue = await this.uploadFiles(propertyValue, prop.value);\n\n // Avoid making a PUT request containing just the id, as response body might be incomplete\n const hasValues = Object.values(propertyValue).some(value => value !== undefined);\n if (!hasValues) {\n this.toggleEdit(prop);\n return;\n }\n const updatedAsset = { id: this.asset.id, ...propertyValue };\n const { data } = await this.inventory.update(updatedAsset);\n this.toggleEdit(prop);\n this.asset = data;\n this.assetChange.emit(this.asset);\n await this.loadAsset();\n this.alert.success(gettext('Asset properties updated.'));\n } catch (ex) {\n this.alert.addServerFailure(ex);\n this.toggleEdit(prop);\n }\n }\n\n private updateUndefinedToPropTypeValue(prop, propertyValue) {\n for (const [key, value] of Object.entries(propertyValue)) {\n const property = prop.complex ? find(prop.complex, { key: key }) : prop;\n propertyValue[key] = this.getTypeValue(property.type, value);\n }\n }\n\n private getTypeValue(propType: string, value) {\n if (value || (propType === 'boolean' && value !== undefined)) return value;\n\n switch (propType) {\n case 'number':\n case 'boolean':\n return value || value === 0 ? value : null;\n\n default:\n return '';\n }\n }\n\n private keepOrder(correctOrderedIds, properties) {\n const orderedProperties = correctOrderedIds.map(({ id }) => {\n const foundProperty = properties.find(property => property.id === id);\n if (!foundProperty) {\n throw new Error('Custom property mismatch');\n }\n return foundProperty;\n });\n return orderedProperties;\n }\n\n private async uploadFiles(model: object, moId?: IManagedObjectBinary[]): Promise<object> {\n const keys = Object.keys(model);\n for (const key of keys) {\n if (Array.isArray(model[key]) && model[key][0]?.file instanceof File) {\n try {\n const upload = await this.inventoryBinary.create(model[key][0].file);\n try {\n if (moId && moId[0]) {\n await this.inventory.childAdditionsRemove(moId[0], this.asset.id);\n }\n } catch (ex) {\n throw ex;\n }\n model[key] = upload.data.id;\n await this.inventory.childAdditionsAdd(upload.data.id, this.asset.id);\n } catch (ex) {\n throw ex;\n }\n }\n }\n return model;\n }\n\n private setItemRequired(item: AssetPropertiesItem, mo: IManagedObject): void {\n const isAssetPropertyRequired = !!this.assetType?.c8y_IsAssetType?.properties.find(\n p => p.id === mo.id\n )?.isRequired;\n if (!isAssetPropertyRequired) {\n return;\n }\n const isComplexProperty = !!item?.complex?.length;\n if (isComplexProperty) {\n const complexProperty = item.jsonSchema?.properties?.[mo.c8y_JsonSchema.key] as JSONSchema7;\n complexProperty.required = item.complex.map(({ key }) => key);\n } else {\n item.jsonSchema.required = [mo.c8y_JsonSchema.key];\n }\n }\n}\n","<ng-container>\n <div class=\"card-header bg-inherit separator sticky-top\">\n <h1\n class=\"card-title p-t-4 p-b-4\"\n ngNonBindable\n translate\n [translateParams]=\"{ label: assetType?.label || '' | translate }\"\n >\n {{ label }} properties\n </h1>\n </div>\n <div class=\"card-block\">\n <div\n class=\"text-center\"\n *ngIf=\"isLoading\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div\n class=\"card m-b-8\"\n title=\"{{ prop.description | translate }}\"\n *ngFor=\"let prop of customProperties\"\n [ngClass]=\"{ 'card-highlight': prop.isEdit }\"\n >\n <div\n class=\"card-block\"\n [ngClass]=\"{ 'p-b-0': prop.isEdit }\"\n >\n <div\n class=\"d-flex p-b-8 a-i-center\"\n *ngIf=\"!prop.isEdit\"\n >\n <p\n class=\"text-medium text-truncate\"\n title=\"{{ prop?.label | translate }}\"\n >\n {{ prop?.label | translate }}\n </p>\n <button\n class=\"btn btn-dot m-l-auto text-12\"\n [attr.aria-label]=\"'Edit' | translate\"\n tooltip=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleEdit(prop)\"\n >\n <i c8yIcon=\"pencil\"></i>\n </button>\n </div>\n <c8y-asset-properties-item\n #assetProps\n [file]=\"prop.file\"\n [key]=\"prop.key\"\n [type]=\"prop.type\"\n [value]=\"prop.value\"\n [complex]=\"prop.complex\"\n [isEdit]=\"prop.isEdit\"\n [jsonSchema]=\"prop.jsonSchema\"\n ></c8y-asset-properties-item>\n <div *ngIf=\"prop.key === 'c8y_Position'\">\n <c8y-asset-location\n [locationMO]=\"asset\"\n [isEdit]=\"prop.isEdit\"\n [form]=\"assetProps.form\"\n ></c8y-asset-location>\n </div>\n </div>\n <div\n class=\"card-footer p-t-0\"\n *ngIf=\"prop.isEdit\"\n >\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"toggleEdit(prop)\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"!assetProps?.form?.valid || !assetProps?.form?.dirty \"\n (click)=\"save(assetProps.form.value, prop)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components';\n\nexport const SUB_ASSETS_CONFIG = new InjectionToken<SubAssetsConfig>('SubAssetsConfig');\n/**\n * Configuration object of the SubAssetsModule.\n */\nexport interface SubAssetsConfig {\n /**\n * Allows to show or hide the \"Add group\" button.\n */\n showAddGroupBtn?: boolean;\n /**\n * Allows to show or hide the \"Assign devices\" button.\n */\n showAssignDeviceBtn?: boolean;\n /**\n * Allows to change the displayed text in the title and breadcrumbs.\n */\n name?: string;\n /**\n * Allows to set the base query that is responsible for retrieving sub-assets.\n *\n * **Example**\n *\n * ```typescript\n * SubAssetsModule.config({\n * baseQuery: { __has: 'c8y_IsAsset' }\n * })\n * ```\n * Check QueriesUtil service from '@c8y/client' to see more examples.\n */\n baseQuery?: object;\n /**\n * Allows to show or hide asset details.\n */\n showDetails?: boolean;\n /**\n * Allows to show or hide the asset properties.\n */\n showProperties?: boolean;\n /**\n * Allows to show or hide the groups context help.\n */\n showGroupsContextHelp?: boolean;\n}\n\nexport const defaultModuleConfig: SubAssetsConfig = {\n showAddGroupBtn: true,\n showAssignDeviceBtn: true,\n name: gettext('Groups'),\n baseQuery: {},\n showDetails: true,\n showProperties: true,\n showGroupsContextHelp: true\n};\n","import {\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { IManagedObject, InventoryService, SmartGroupsService } from '@c8y/client';\nimport {\n AlertService,\n AssetTypesRealtimeService,\n Column,\n CustomColumn,\n ModalService,\n Status,\n gettext\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { DeviceListExtensionService } from '@c8y/ngx-components/device-list';\nimport { pick } from 'lodash-es';\nimport { Subject, firstValueFrom } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from './shared/sub-assets.model';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\n\n@Component({\n selector: 'c8y-group-info',\n templateUrl: './group-info.component.html'\n})\nexport class GroupInfoComponent implements OnDestroy, OnChanges {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n @Input() group: IManagedObject;\n @Output() groupChange = new EventEmitter<IManagedObject>();\n canEdit: boolean;\n groupIcon: SupportedIconsSuggestions;\n smartGroupFilter: string;\n label: string;\n columnsWithFilter: Column[];\n\n groupInfoModel: {\n name: string;\n c8y_Notes: string;\n } = {\n name: '',\n c8y_Notes: ''\n };\n\n filterMsg = gettext(\n 'Smart groups are groups dynamically constructed based on filtering criteria.'\n );\n private readonly GROUP_UPDATED_MSG = gettext('Group updated.');\n private allDevicesGridColumns: Column[];\n private destroyed$ = new Subject<void>();\n\n constructor(\n private inventory: InventoryService,\n private subAssetsService: SubAssetsService,\n private smartGroupsService: SmartGroupsService,\n private alertService: AlertService,\n private modalService: ModalService,\n private assetNodeService: AssetNodeService,\n private assetType: AssetTypesRealtimeService,\n private deviceListExtensionService: DeviceListExtensionService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\n ) {\n this.deviceListExtensionService.items$.pipe(takeUntil(this.destroyed$)).subscribe(columns => {\n this.allDevicesGridColumns = columns;\n });\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.group) {\n const { name, c8y_Notes } = this.group;\n this.groupInfoModel = { name, c8y_Notes };\n this.canEdit = await this.subAssetsService.canEditGroup(this.group);\n this.groupIcon = await this.assetNodeService.icon(this.group);\n this.smartGroupFilter = this.group.c8y_DeviceQueryString;\n this.columnsWithFilter = this.group.c8y_DeviceColumnsConfig?.columns\n ?.filter(col => !!col.filter)\n .map(col => ({\n ...col,\n externalFilterQuery: col.filter.externalFilterQuery,\n ...this.withPropsFromGridColumn(col)\n }));\n this.label = this.assetNodeService.isAsset(this.group)\n ? (await firstValueFrom(this.assetType.getAssetTypeByName$(this.group.type))).label\n : gettext('Group');\n }\n }\n\n isSmartGroup() {\n return this.subAssetsService.isSmartGroup(this.group);\n }\n\n async update(partialGroup: Partial<IManagedObject>) {\n try {\n const isSmartGroup: boolean = this.subAssetsService.isSmartGroup(this.group);\n const updatedGroup = isSmartGroup\n ? await this.updateSmartGroup(partialGroup)\n : await this.updateGroup(partialGroup);\n\n this.group = updatedGroup;\n this.groupChange.emit(this.group);\n this.alertService.success(this.GROUP_UPDATED_MSG);\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n private withPropsFromGridColumn(column: Column): Partial<Column> {\n if (column.custom) {\n const col = new CustomColumn();\n return {\n filteringConfig: col.filteringConfig\n };\n } else {\n return pick(\n this.allDevicesGridColumns.find(col => col.name === column.name),\n 'filteringConfig',\n 'header'\n );\n }\n }\n\n private async updateGroup(partialGroup: Partial<IManagedObject>) {\n const { id } = this.group;\n const group: Partial<IManagedObject> = { id, ...partialGroup };\n\n return (await this.inventory.update(group)).data;\n }\n\n private async updateSmartGroup(partialGroup: Partial<IManagedObject>) {\n const { id } = this.group;\n const { c8y_DeviceQueryString } = partialGroup;\n const group: Partial<IManagedObject> = { id, ...partialGroup };\n\n if (!c8y_DeviceQueryString) {\n return (await this.smartGroupsService.update(group)).data;\n }\n\n try {\n const modalBody = gettext(\n 'You are about to change the smart group filter. Do you want to proceed?'\n );\n const title = gettext('Smart group filter');\n await this.modalService.confirm(title, modalBody, Status.WARNING, {\n ok: gettext('Save'),\n cancel: gettext('Cancel')\n });\n\n await this.isQueryExecutable(c8y_DeviceQueryString);\n } catch (error) {\n throw Error(error);\n }\n return (await this.smartGroupsService.update(group)).data;\n }\n\n private async isQueryExecutable(query: string) {\n try {\n const filter = { q: query };\n await this.inventory.list(filter);\n } catch (error) {\n throw Error(error);\n }\n }\n}\n","<div class=\"bg-level-1 separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <div class=\"content-flex-70\">\n <div class=\"text-center col-1\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n [c8yIcon]=\"groupIcon\"\n ></i>\n <p>\n <small\n class=\"label label-info\"\n *ngIf=\"group.c8y_IsDynamicGroup\"\n >\n {{ 'Smart group' | translate }}\n </small>\n <small\n class=\"label label-info text-truncate d-inline-block\"\n title=\"{{ label | translate }}\"\n *ngIf=\"!group.c8y_IsDynamicGroup && !group.com_cumulocity_model_Agent\"\n >\n {{ label | translate }}\n </small>\n <small\n class=\"label label-info\"\n *ngIf=\"group.com_cumulocity_model_Agent\"\n >\n {{ 'Remote group' | translate }}\n </small>\n </p>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-9\">\n <form #groupNameForm=\"ngForm\">\n <c8y-form-group class=\"form-group-lg m-b-0\">\n <label\n class=\"sr-only\"\n for=\"groupName\"\n translate\n >\n Name\n </label>\n <p\n class=\"form-control-static\"\n *ngIf=\"!canEdit\"\n >\n {{ groupInfoModel.name }}\n </p>\n <div\n class=\"input-group input-group-lg input-group-editable\"\n *ngIf=\"canEdit\"\n >\n <input\n class=\"form-control\"\n title=\"{{ groupInfoModel.name }}\"\n id=\"groupName\"\n placeholder=\"{{ 'e.g. My group' | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n [(ngModel)]=\"groupInfoModel.name\"\n size=\"{{ groupInfoModel.name.length + 2 }}\"\n maxlength=\"254\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.GROUP_INFO.COMPONENTS.GROUP_INFO,\n action: PRODUCT_EXPERIENCE.GROUP_INFO.ACTIONS.EDIT,\n property: PRODUCT_EXPERIENCE.GROUP_INFO.PROPERTIES.NAME\n }\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n [disabled]=\"groupNameForm.form.invalid\"\n (click)=\"\n update({ name: groupInfoModel.name }); groupNameForm.form.markAsPristine()\n \"\n [actionName]=\"'groupInfo:EditedNameSaved'\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.GROUP_INFO.COMPONENTS.GROUP_INFO,\n result: PRODUCT_EXPERIENCE.GROUP_INFO.RESULTS.EDIT_SAVED,\n property: PRODUCT_EXPERIENCE.GROUP_INFO.PROPERTIES.NAME\n }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </form>\n <form #groupDescriptionForm=\"ngForm\">\n <label\n class=\"sr-only\"\n for=\"description\"\n translate\n >\n Description\n </label>\n <p\n class=\"form-control-static\"\n *ngIf=\"!canEdit\"\n >\n {{ groupInfoModel.c8y_Notes }}\n </p>\n <div\n class=\"input-group input-group-editable\"\n *ngIf=\"canEdit\"\n >\n <textarea\n class=\"form-control no-resize\"\n title=\"{{\n groupInfoModel.c8y_Notes\n ? groupInfoModel.c8y_Notes\n : ('e.g. My description' | translate)\n }}\"\n id=\"description\"\n placeholder=\"{{ 'e.g. My description' | translate }}\"\n name=\"description\"\n c8y-textarea-autoresize\n [(ngModel)]=\"groupInfoModel.c8y_Notes\"\n cols=\"{{ groupInfoModel.c8y_Notes ? groupInfoModel.c8y_Notes.length : 25 }}\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.GROUP_INFO.COMPONENTS.GROUP_INFO,\n action: PRODUCT_EXPERIENCE.GROUP_INFO.ACTIONS.EDIT,\n property: PRODUCT_EXPERIENCE.GROUP_INFO.PROPERTIES.DESCRIPTION\n }\"\n ></textarea>\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n [disabled]=\"groupDescriptionForm.form.invalid\"\n (click)=\"\n update({ c8y_Notes: groupInfoModel.c8y_Notes });\n groupDescriptionForm.form.markAsPristine()\n \"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.GROUP_INFO.COMPONENTS.GROUP_INFO,\n result: PRODUCT_EXPERIENCE.GROUP_INFO.RESULTS.EDIT_SAVED,\n property: PRODUCT_EXPERIENCE.GROUP_INFO.PROPERTIES.DESCRIPTION\n }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n\n <div\n class=\"dropdown m-t-8\"\n placement=\"bottom left\"\n container=\"body\"\n type=\"button\"\n dropdown\n *ngIf=\"isSmartGroup()\"\n #ddFilters=\"bs-dropdown\"\n [insideClick]=\"true\"\n >\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Smart group filters' | translate }}\"\n aria-haspopup=\"true\"\n dropdownToggle\n data-cy=\"c8y-data-grid--filters\"\n [disabled]=\"columnsWithFilter?.length === 0\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"filter\"\n ></i>\n <span>{{ 'Smart group filters' | translate }}</span>\n <span\n class=\"p-relative p-l-4 p-r-16\"\n *ngIf=\"columnsWithFilter?.length > 0\"\n >\n <span class=\"badge badge-system p-absolute\" data-cy=\"group-info--filter-number\">\n {{ columnsWithFilter?.length }}\n </span>\n </span>\n </button>\n <button\n class=\"btn-help btn-help--sm m-r-4\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ filterMsg | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n data-cy=\"group-info--help-button\"\n container=\"body\"\n type=\"button\"\n ></button>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"data-grid__dropdown bg-level-0\">\n <ul class=\"list-unstyled m-0\">\n <li\n *ngFor=\"let column of columnsWithFilter; let last = last\"\n [ngClass]=\"{ 'separator-bottom': !last }\"\n >\n <ng-container>\n <div\n class=\"dropdown-header sticky-top text-truncate no-border-top p-b-0\"\n title=\"{{ (column.header | translate) || column.name }}\"\n >\n <label>\n {{ (column.header | translate) || column.name }}\n </label>\n </div>\n <div\n class=\"list-group-item borderless d-flex d-col\"\n *ngFor=\"\n let groupedFilterChips of column\n | mapToFilterChips\n | async\n | groupedFilterChips;\n let first = first\n \"\n [ngClass]=\"{ 'p-t-0': first }\"\n >\n <p\n class=\"small p-b-4\"\n *ngIf=\"groupedFilterChips.label\"\n >\n {{ groupedFilterChips.label | translate }}\n </p>\n <div class=\"d-flex a-i-center gap-4 flex-wrap\">\n <span\n class=\"tag tag--info chip\"\n data-cy=\"group-info--grouped-filter-chip\"\n *ngFor=\"let chip of groupedFilterChips.chips\"\n >\n {{ chip.displayValue | translate }}\n </span>\n </div>\n </div>\n </ng-container>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex-grow\">\n <ul class=\"list-unstyled small\">\n <li class=\"p-t-4 p-b-4 d-flex separator-top-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Created' | translate }}</label>\n <span class=\"m-l-auto\">{{ group.creationTime | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Last updated' | translate }}</label>\n <span class=\"m-l-auto\">{{ group.lastUpdated | c8yDate }}</span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\"\n *ngIf=\"group.com_cumulocity_model_Agent\"\n >\n <label class=\"small m-b-0 m-r-8\">{{ 'Status' | translate }}</label>\n <span\n class=\"m-l-auto\"\n *ngIf=\"group.c8y_BrokerSource\"\n >\n {{ group.c8y_BrokerSource.status }}\n </span>\n <span\n class=\"m-l-auto\"\n *ngIf=\"!group.c8y_BrokerSource\"\n >\n {{ 'Offline' | translate }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Column, Permissions } from '@c8y/ngx-components';\nimport { delay, Subject, takeUntil, tap } from 'rxjs';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\n\n@Component({\n selector: 'c8y-groups-name',\n templateUrl: './groups.component.html'\n})\nexport class GroupsComponent implements OnInit, OnDestroy {\n private SHOW_ADD_GROUP = 'showAddGroup';\n showAddGroup = signal(false);\n refresh: EventEmitter<void> = new EventEmitter();\n filterable = true;\n sortable = true;\n shouldDisableAddGroup = false;\n columns: Column[] = [];\n destroyed: Subject<void> = new Subject();\n constructor(\n private permissions: Permissions,\n private subAssetsService: SubAssetsService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig,\n private activeRoute: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit() {\n if (\n !this.permissions.hasAnyRole([\n Permissions.ROLE_INVENTORY_READ,\n Permissions.ROLE_MANAGED_OBJECT_READ\n ])\n ) {\n this.sortable = false;\n }\n this.shouldDisableAddGroup = !this.subAssetsService.canCreateGroup();\n\n this.columns = this.subAssetsService\n .getDefaultColumns()\n .filter(column => column.name !== 'alarms');\n\n this.activeRoute.queryParamMap\n .pipe(\n delay(50), // It allows seeing drawer animation.\n takeUntil(this.destroyed),\n tap(params => this.showAddGroup.set(params.has(this.SHOW_ADD_GROUP)))\n )\n .subscribe();\n }\n\n onAddGroupClick() {\n this.showAddGroup.set(!this.showAddGroup());\n this.handleShowAddGroupQueryParam();\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n /**\n * Updates the query parameter `showAddGroup` based on the value of `showAddGroup` property.\n * - If `showAddGroup` is `true`, adds `showAddGroup=true` to the query parameters.\n * - If `showAddGroup` is `false`, removes `showAddGroup` from the query parameters.\n */\n private handleShowAddGroupQueryParam() {\n const currentParams = { ...this.activeRoute.snapshot.queryParams };\n\n if (this.showAddGroup()) {\n currentParams[this.SHOW_ADD_GROUP] = true;\n } else {\n delete currentParams[this.SHOW_ADD_GROUP];\n }\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: currentParams\n });\n }\n}\n","<c8y-title>\n {{ moduleConfig.name | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-group-open\"\n label=\"{{ moduleConfig.name | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"moduleConfig.showAddGroupBtn\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"onAddGroupClick()\"\n [disabled]=\"shouldDisableAddGroup\"\n [attr.data-cy]=\"'groups-add-group-button'\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n {{ 'Add group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/grouping-devices/#grouping-devices\"\n *ngIf=\"moduleConfig.showGroupsContextHelp\"\n></c8y-help>\n\n<c8y-add-group\n [refresh]=\"refresh\"\n (onCancel)=\"onAddGroupClick()\"\n *ngIf=\"showAddGroup()\"\n></c8y-add-group>\n<c8y-sub-assets-grid\n class=\"content-fullpage d-flex d-col border-top border-bottom\"\n [refresh]=\"refresh\"\n [filterable]=\"filterable\"\n [sortable]=\"sortable\"\n [columns]=\"columns\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n></c8y-sub-assets-grid>\n","import { Component, EventEmitter, Inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { IManagedObject } from '@c8y/client';\nimport { ContextRouteService, DisplayOptions, Permissions } from '@c8y/ngx-components';\nimport { delay, Subject, takeUntil, tap } from 'rxjs';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\n\n@Component({\n selector: 'c8y-sub-assets',\n templateUrl: './sub-assets.component.html'\n})\nexport class SubAssetsComponent implements OnInit, OnDestroy {\n private SHOW_ADD_GROUP = 'showAddGroup';\n group: IManagedObject;\n currentGroupId: string;\n showChildrenForDevice: IManagedObject;\n title: string;\n toggle = false;\n showAddGroup = signal(false);\n showAssignDevices = false;\n requestInProgress: boolean;\n showAssignChildDevices = false;\n refresh: EventEmitter<any> = new EventEmitter();\n filterable = true;\n shouldDisableAddGroup = false;\n shouldDisableAssignDevices = false;\n shouldShowAssetsProperties = false;\n displayOptions: DisplayOptions;\n customProperties: IManagedObject[] = [];\n isSmartGroup = false;\n destroyed: Subject<void> = new Subject();\n\n constructor(\n private activeRoute: ActivatedRoute,\n private subAssetsService: SubAssetsService,\n private contextRouteService: ContextRouteService,\n private permissionsService: Permissions,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig,\n private router: Router\n ) {\n this.activeRoute.parent.data.pipe(takeUntil(this.destroyed)).subscribe(({ contextData }) => {\n this.init(contextData);\n });\n }\n\n async ngOnInit() {\n this.displayOptions = {\n striped: true,\n bordered: false,\n gridHeader: true,\n filter: true,\n hover: true\n };\n this.isSmartGroup = this.subAssetsService.isSmartGroup(this.group);\n this.activeRoute.queryParamMap\n .pipe(\n delay(50), // It allows seeing drawer animation.\n takeUntil(this.destroyed),\n tap(params => this.showAddGroup.set(params.has(this.SHOW_ADD_GROUP)))\n )\n .subscribe();\n }\n\n async init(contextData) {\n this.group = { ...contextData };\n this.title = this.group.name;\n this.currentGroupId = this.group.id;\n this.shouldDisableAddGroup = !(await this.permissionsService.canEdit(\n [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE\n ],\n this.group\n ));\n this.shouldDisableAssignDevices = !(await this.subAssetsService.canAssignDevice(this.group));\n this.customProperties = await this.subAssetsService.getCustomProperties(this.group);\n this.shouldShowAssetsProperties =\n this.moduleConfig.showProperties && this.customProperties.length > 0;\n }\n\n groupChange(group: IManagedObject): void {\n this.group = group;\n this.title = group.name;\n this.contextRouteService.setContext(this.activeRoute, group);\n this.contextRouteService.refreshContext();\n this.refresh.emit();\n }\n onAddGroupClick() {\n this.showAddGroup.set(!this.showAddGroup());\n this.handleShowAddGroupQueryParam();\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n /**\n * Updates the query parameter `showAddGroup` based on the value of `showAddGroup` property.\n * - If `showAddGroup` is `true`, adds `showAddGroup=true` to the query parameters.\n * - If `showAddGroup` is `false`, removes `showAddGroup` from the query parameters.\n */\n private handleShowAddGroupQueryParam() {\n const currentParams = { ...this.activeRoute.snapshot.queryParams };\n\n if (this.showAddGroup()) {\n currentParams[this.SHOW_ADD_GROUP] = true;\n } else {\n delete currentParams[this.SHOW_ADD_GROUP];\n }\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: currentParams\n });\n }\n}\n","<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"!isSmartGroup && moduleConfig.showAddGroupBtn\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"onAddGroupClick()\"\n [disabled]=\"shouldDisableAddGroup\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n <span translate>Add group</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"!isSmartGroup && moduleConfig.showAssignDeviceBtn\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Assign devices' | translate }}\"\n (click)=\"showAssignDevices = !showAssignDevices\"\n [disabled]=\"shouldDisableAssignDevices\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n <span translate>Assign devices</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n *ngIf=\"isSmartGroup; else assetsHelp\"\n src=\"/docs/device-management-application/grouping-devices/#using-smart-groups\"\n></c8y-help>\n\n<ng-template #assetsHelp>\n <c8y-help src=\"/docs/cockpit/managing-assets/#managing-assets\"></c8y-help>\n</ng-template>\n\n<div\n class=\"card content-fullpage\"\n [ngClass]=\"{\n 'card--grid grid__col--8-4--md grid__row--fit-auto': shouldShowAssetsProperties,\n 'd-flex d-col': !shouldShowAssetsProperties\n }\"\n>\n <c8y-group-info\n class=\"grid__col--fullspan\"\n *ngIf=\"moduleConfig.showDetails\"\n [group]=\"group\"\n (groupChange)=\"groupChange($event)\"\n ></c8y-group-info>\n <c8y-sub-assets-grid\n class=\"d-contents\"\n [refresh]=\"refresh\"\n [parent-group]=\"group\"\n [filterable]=\"filterable\"\n [displayOptions]=\"displayOptions\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n ></c8y-sub-assets-grid>\n <div\n class=\"inner-scroll bg-level-1\"\n *ngIf=\"shouldShowAssetsProperties\"\n >\n <c8y-asset-properties\n class=\"d-contents\"\n [properties]=\"customProperties\"\n [asset]=\"group\"\n (assetChange)=\"groupChange($event)\"\n ></c8y-asset-properties>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAddGroup() }\">\n <div class=\"bottom-drawer\">\n <c8y-add-group\n [currentGroupId]=\"currentGroupId\"\n [refresh]=\"refresh\"\n (onCancel)=\"onAddGroupClick()\"\n *ngIf=\"showAddGroup()\"\n ></c8y-add-group>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAssignDevices }\">\n <div class=\"bottom-drawer\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-devices\n class=\"d-contents\"\n (onCancel)=\"showAssignDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n (onShowChildDevices)=\"showAssignChildDevices = $event\"\n (selectedDevice)=\"showChildrenForDevice = $event\"\n *ngIf=\"showAssignDevices\"\n ></c8y-assign-devices>\n </div>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAssignChildDevices }\">\n <div class=\"bottom-drawer m-t-40\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-child-devices\n class=\"d-contents\"\n *ngIf=\"showAssignChildDevices\"\n (onCancel)=\"showAssignChildDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n [parentDevice]=\"showChildrenForDevice\"\n ></c8y-assign-child-devices>\n </div>\n </div>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n CoreModule,\n FilterMapperModule,\n gettext,\n hookRoute,\n ViewContext\n} from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { MapModule } from '@c8y/ngx-components/map';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { AddGroupModule } from './add-group/add-group.module';\nimport { AssetPropertiesItemComponent } from './asset-properties-item.component';\nimport { AssetPropertiesComponent } from './asset-properties.component';\nimport { AssetTypeCellRendererComponent } from '@c8y/ngx-components/data-grid-columns/asset-type';\nimport { DeleteAssetsModalComponent } from './delete-assets-modal/delete-assets-modal.component';\nimport { GroupInfoComponent } from './group-info.component';\nimport { GroupsComponent } from './groups.component';\nimport { AssetLocationComponent } from './location/asset-location.component';\nimport { SubAssetsGridComponent } from './sub-assets-grid.component';\nimport { SubAssetsComponent } from './sub-assets.component';\nimport { defaultModuleConfig, SubAssetsConfig, SUB_ASSETS_CONFIG } from './sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\nimport { UnassignModalComponent } from './unassign-assets-modal/unassign-modal.component';\nimport { SubAssetsGridsModule } from './sub-assets-grids.module';\n\n@NgModule({\n declarations: [\n SubAssetsComponent,\n GroupsComponent,\n GroupInfoComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent,\n AssetPropertiesComponent,\n AssetPropertiesItemComponent,\n AssetLocationComponent\n ],\n imports: [\n CoreModule,\n DeviceGridModule,\n AddGroupModule,\n PopoverModule,\n BsDropdownModule,\n TooltipModule,\n FilterMapperModule,\n MapModule,\n AssetTypeCellRendererComponent,\n SubAssetsGridsModule\n ],\n exports: [SubAssetsGridComponent, AssetLocationComponent],\n providers: [\n {\n provide: SUB_ASSETS_CONFIG,\n useValue: defaultModuleConfig\n },\n\n hookRoute([\n {\n context: ViewContext.Group,\n path: 'subassets',\n priority: 1000,\n icon: 'c8y-group-open',\n label: gettext('Subassets'),\n component: SubAssetsComponent,\n featureId: 'subassets'\n },\n {\n path: 'group',\n component: GroupsComponent\n }\n ]),\n SubAssetsService\n ]\n})\nexport class SubAssetsModule {\n static config(config: SubAssetsConfig = {}): ModuleWithProviders<SubAssetsModule> {\n return {\n ngModule: SubAssetsModule,\n providers: [\n {\n provide: SUB_ASSETS_CONFIG,\n useValue: { ...defaultModuleConfig, ...config }\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i2.SmartGroupGridConfigurationStrategy","i1.SubAssetsService","i5","i6","i7","i2.SubAssetsService","i5.SubAssetsGridComponent","i2.AddGroupService","i4.SubAssetsService","i8.AssignChildDevicesComponent","i5.AssetPropertiesItemComponent","i6.AssetLocationComponent","i8","takeUntil","i5.AddGroupComponent","i6.SubAssetsGridComponent","i7.AssignDevicesComponent","i9.GroupInfoComponent","i10.AssetPropertiesComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-sub-assets.mjs","sources":["../../sub-assets/shared/sub-assets.model.ts","../../sub-assets/sub-assets.service.ts","../../sub-assets/add-group/add-group.service.ts","../../sub-assets/delete-assets-modal/delete-assets-modal.component.ts","../../sub-assets/delete-assets-modal/delete-assets-modal.component.html","../../sub-assets/smart-group-grid-configuration-strategy.service.ts","../../sub-assets/sub-assets-grid-configuration-strategy.service.ts","../../sub-assets/unassign-assets-modal/unassign-modal.component.ts","../../sub-assets/unassign-assets-modal/unassign-modal.component.html","../../sub-assets/sub-assets-grid.component.ts","../../sub-assets/sub-assets-grid.component.html","../../sub-assets/assign-devices/assign-child-devices.component.ts","../../sub-assets/assign-devices/assign-child-devices.component.html","../../sub-assets/add-group/add-group.component.ts","../../sub-assets/add-group/add-group.component.html","../../sub-assets/assign-devices/assign-devices.component.ts","../../sub-assets/assign-devices/assign-devices.component.html","../../sub-assets/sub-assets-grids.module.ts","../../sub-assets/add-group/add-group.module.ts","../../sub-assets/asset-properties-item.component.ts","../../sub-assets/asset-properties-item.component.html","../../sub-assets/fullscreen.util.ts","../../sub-assets/location/asset-location.component.ts","../../sub-assets/location/asset-location.component.html","../../sub-assets/asset-properties.component.ts","../../sub-assets/asset-properties.component.html","../../sub-assets/sub-assets.model.ts","../../sub-assets/group-info.component.ts","../../sub-assets/group-info.component.html","../../sub-assets/groups.component.ts","../../sub-assets/groups.component.html","../../sub-assets/sub-assets.component.ts","../../sub-assets/sub-assets.component.html","../../sub-assets/sub-assets.module.ts","../../sub-assets/c8y-ngx-components-sub-assets.ts"],"sourcesContent":["export const PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED = {\n EVENT: 'subAssets',\n DELETE_ASSET: {\n COMPONENTS: { DELETE_ASSETS_MODAL: 'delete-assets-modal' },\n ACTIONS: { CASCADE_DELETE: 'cascadeDelete', DELETE_DEVICE_OWNER: 'deleteDeviceOwner' },\n RESULTS: { CANCELED: 'canceled', DELETED: 'deleted' }\n },\n ASSIGN_DEVICES: {\n COMPONENTS: { ASSIGN_DEVICES: 'assign-devices' },\n ACTIONS: { ASSIGN: 'assign', CANCEL: 'cancel', DISPLAY_CHILD_DEVICES: 'displayChildDevices' }\n },\n UNASSIGN_MODAL: {\n COMPONENTS: { UNASSIGN_MODAL: 'unassign-modal' },\n RESULTS: { ASSET_UNASSIGNED: 'asset-unassigned' },\n ACTIONS: { CANCEL: 'cancel' }\n },\n GROUP_INFO: {\n COMPONENTS: { GROUP_INFO: 'group-info' },\n ACTIONS: { EDIT: 'edit' },\n RESULTS: { EDIT_SAVED: 'edit-saved' },\n PROPERTIES: { NAME: 'name', DESCRIPTION: 'description' }\n },\n ADD_GROUP: {\n COMPONENTS: { ADD_GROUP: 'add-group' },\n ACTIONS: { ADD: 'add' },\n RESULTS: { ADD_SUCCESS: 'group-added' }\n }\n} as const;\n","import { Injectable } from '@angular/core';\nimport {\n IManagedObject,\n IRule,\n InventoryService,\n QueriesUtil,\n SmartGroupsService,\n SmartRulesService,\n UserService\n} from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n AppStateService,\n AssetTypesRealtimeService,\n BulkActionControl,\n Column,\n DataGridService,\n Pagination,\n Permissions,\n UserPreferencesService,\n gettext\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport {\n AlarmsDeviceGridColumn,\n ImeiDeviceGridColumn,\n ModelDeviceGridColumn,\n NameDeviceGridColumn,\n RegistrationDateDeviceGridColumn,\n SerialNumberDeviceGridColumn,\n SystemIdDeviceGridColumn\n} from '@c8y/ngx-components/device-grid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AssetTypeGridColumn } from '@c8y/ngx-components/data-grid-columns/asset-type';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SubAssetsService extends DataGridService {\n queriesUtil: QueriesUtil;\n protected GRID_CONFIG_DEFAULT_STORAGE_KEY = 'sub-assets-grid-config';\n private IS_DEVICE_GROUP_FRAGMENT = 'c8y_IsDeviceGroup';\n private IS_DYNAMIC_GROUP_FRAGMENT = 'c8y_IsDynamicGroup';\n\n constructor(\n protected translateService: TranslateService,\n protected inventoryService: InventoryService,\n protected appState: AppStateService,\n protected user: UserService,\n protected assetNodeService: AssetNodeService,\n protected smartGroupsService: SmartGroupsService,\n protected smartRulesService: SmartRulesService,\n protected alertService: AlertService,\n protected permissionsService: Permissions,\n protected assetTypes: AssetTypesRealtimeService,\n protected userPreferencesService: UserPreferencesService\n ) {\n super(userPreferencesService);\n }\n\n async getCustomProperties(group: IManagedObject): Promise<IManagedObject[]> {\n const assetType$ = this.assetTypes.getAssetTypeByName$(group.type);\n const assetType = await firstValueFrom(assetType$);\n if (assetType) {\n const { data } = await this.inventoryService.childAdditionsList(assetType, {\n pageSize: 2000,\n query: \"$filter=(has('c8y_IsAssetProperty'))\"\n });\n return data;\n }\n return [];\n }\n\n getDefaultColumns(_filterable = true, _sortable = true): Column[] {\n const defaultColumns = [\n new AssetTypeGridColumn({ sortOrder: 'desc' }),\n new NameDeviceGridColumn({ sortOrder: 'asc' }),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn({ visible: false }),\n new RegistrationDateDeviceGridColumn({ visible: false }),\n new SystemIdDeviceGridColumn({ visible: false }),\n new ImeiDeviceGridColumn({ visible: false }),\n new AlarmsDeviceGridColumn()\n ];\n return defaultColumns;\n }\n\n getDefaultPagination(): Pagination {\n return {\n pageSize: 25,\n currentPage: 1\n };\n }\n\n getDefaultActionControls(): ActionControl[] {\n return [];\n }\n\n async unassignAsset(asset: IManagedObject, parentRef: IManagedObject) {\n const { id: assetId } = asset;\n const { id: parentId } = parentRef;\n\n if (this.isDevice(asset)) {\n try {\n await this.inventoryService.childAssetsRemove(assetId, parentId);\n const alertMessage = this.translateService.instant(gettext('Device unassigned.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not unassign device.'));\n this.alertService.danger(alertMessage, error);\n }\n await this.deactivateSmartrulesForAsset(asset, parentRef);\n }\n }\n\n isDevice(asset: IManagedObject): boolean {\n return (\n !asset.hasOwnProperty(this.IS_DEVICE_GROUP_FRAGMENT) &&\n !asset.hasOwnProperty(this.IS_DYNAMIC_GROUP_FRAGMENT)\n );\n }\n\n async deleteAsset(asset: IManagedObject, parentRef: IManagedObject, params = {}) {\n const isGroup =\n asset.hasOwnProperty(this.IS_DEVICE_GROUP_FRAGMENT) ||\n this.smartGroupsService.isSmartGroup(asset);\n\n if (isGroup) {\n await this.deleteGroup(asset, params);\n } else {\n await this.deleteDevice(asset, params);\n }\n\n if (parentRef && !this.smartGroupsService.isSmartGroup(asset)) {\n await this.deactivateSmartrulesForAsset(asset, parentRef);\n }\n }\n\n shouldShowWithDeviceUserCheckbox(asset: IManagedObject): boolean {\n const { owner, c8y_IsDevice: isRootDevice } = asset;\n const hasDeviceUserAsOwner = asset.owner && this.isDeviceUser(owner);\n\n return Boolean(isRootDevice && hasDeviceUserAsOwner);\n }\n\n getDefaultBulkActionControls(): BulkActionControl[] {\n return [];\n }\n\n async getData(\n columns: Column[],\n pagination: Pagination,\n parentReference: IManagedObject,\n baseQuery: any = {},\n text: string = null\n ) {\n const isRoot = !parentReference;\n if (isRoot) {\n const query = this.buildCombinedRootQueryFilter(columns, pagination, baseQuery);\n return this.assetNodeService.getRootNodes({ ...pagination, ...(text && { text }), query });\n }\n const filters = {\n ...this.getAssetsFilters(columns, pagination, baseQuery, text),\n withParents: false\n };\n if (this.assetNodeService.isGroup(parentReference)) {\n return this.assetNodeService.getGroupItems(parentReference.id, filters);\n }\n if (this.assetNodeService.isDynamicGroup(parentReference)) {\n return this.assetNodeService.getDynamicGroupItems(\n parentReference.c8y_DeviceQueryString,\n filters\n );\n }\n if (this.assetNodeService.isDevice(parentReference)) {\n return this.assetNodeService.getDeviceChildren(parentReference.id, filters);\n }\n }\n\n async getCount(\n columns: Column[],\n pagination: Pagination,\n parentReference: IManagedObject,\n baseQuery: any = {},\n text: string = null\n ): Promise<number> {\n const defaultFilters = {\n pageSize: 1,\n withChildren: false\n };\n const filters = !parentReference\n ? {\n query: this.buildCombinedRootQueryFilter(columns, pagination, baseQuery),\n ...defaultFilters\n }\n : {\n ...this.getAssetsFilters(columns, pagination, baseQuery, text),\n ...defaultFilters\n };\n return this.getAssetsStatistics(parentReference, filters);\n }\n\n getTotal(parentReference: IManagedObject, baseQuery: any = {}): Promise<number> {\n const queryFilter = this.assetNodeService.rootQueryFilter();\n const query = !parentReference\n ? this.queriesUtil.addAndFilter(queryFilter, baseQuery)\n : baseQuery;\n const filters = {\n query: this.queriesUtil.buildQuery(query),\n withChildren: false,\n withTotalPages: true,\n pageSize: 1\n };\n return this.getAssetsStatistics(parentReference, filters);\n }\n\n async canEditGroup(group: IManagedObject): Promise<boolean> {\n return await this.permissionsService.canEdit(\n [Permissions.ROLE_INVENTORY_ADMIN, Permissions.ROLE_MANAGED_OBJECT_ADMIN],\n group\n );\n }\n\n canCreateGroup(): boolean {\n const currentUser = this.appState.currentUser.value;\n const hasAdminRole = this.user.hasAnyRole(currentUser, [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE\n ]);\n return hasAdminRole;\n }\n\n async canAssignDevice(group: IManagedObject): Promise<boolean> {\n return await this.permissionsService.canEdit(\n [Permissions.ROLE_INVENTORY_ADMIN, Permissions.ROLE_MANAGED_OBJECT_ADMIN],\n group\n );\n }\n\n canEditSmartGroup(): boolean {\n const SMART_GROUPS_ROLES_EDIT = [\n Permissions.ROLE_SMARTGROUP_UPDATE,\n Permissions.ROLE_SMARTGROUP_ADMIN\n ];\n return this.permissionsService.hasAnyRole(SMART_GROUPS_ROLES_EDIT);\n }\n\n canDeleteSmartGroup(): boolean {\n const SMART_GROUPS_ROLES_DELETE = [\n Permissions.ROLE_SMARTGROUP_ADMIN,\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN\n ];\n return this.permissionsService.hasAnyRole(SMART_GROUPS_ROLES_DELETE);\n }\n\n isSmartGroup(group: IManagedObject): boolean {\n return this.smartGroupsService.isSmartGroup(group);\n }\n\n isUsingInventoryRoles() {\n const currentUser = this.appState.currentUser.value;\n const hasAnyInventoryRole = this.user.hasAnyRole(currentUser, [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_READ,\n Permissions.ROLE_INVENTORY_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_READ\n ]);\n return !hasAnyInventoryRole;\n }\n\n protected async getAssetsStatistics(\n parentReference: IManagedObject,\n filters: object\n ): Promise<number> {\n const isRoot = !parentReference;\n if (isRoot) {\n return (await this.assetNodeService.getRootNodes(filters)).paging.totalPages;\n }\n if (this.assetNodeService.isGroup(parentReference)) {\n return (await this.assetNodeService.getGroupItems(parentReference.id, filters)).paging\n .totalPages;\n }\n if (this.assetNodeService.isDynamicGroup(parentReference)) {\n return (\n await this.assetNodeService.getDynamicGroupItems(\n parentReference.c8y_DeviceQueryString,\n filters\n )\n ).paging.totalPages;\n }\n if (this.assetNodeService.isDevice(parentReference)) {\n return (await this.assetNodeService.getDeviceChildren(parentReference.id, filters)).paging\n .totalPages;\n }\n }\n\n protected buildCombinedRootQueryFilter(columns, pagination, baseQuery = {}) {\n const userQuery = this.getQueryObj(columns, pagination);\n const rootQuery = this.assetNodeService.rootQueryFilter();\n const orderedRootQuery = this.queriesUtil.addOrderbys(rootQuery, userQuery.__orderby, 'append');\n const rootAndUserQuery = this.queriesUtil.addAndFilter(orderedRootQuery, userQuery.__filter);\n const fullQuery = this.queriesUtil.addAndFilter(rootAndUserQuery, baseQuery);\n return this.queriesUtil.buildQuery(fullQuery);\n }\n\n private async deleteGroup(group: IManagedObject, params: any = {}) {\n const { cascade } = params;\n\n try {\n this.smartGroupsService.isSmartGroup(group)\n ? await this.smartGroupsService.delete(group, { cascade })\n : await this.inventoryService.delete(group, { cascade });\n\n const alertMessage = this.translateService.instant(gettext('\"{{ name }}\" deleted.'), {\n name: group.name\n });\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(\n gettext('Could not delete \"{{ name }}\".'),\n {\n name: group.name\n }\n );\n this.alertService.danger(alertMessage, error);\n }\n }\n\n private async deleteDevice(device: IManagedObject, params: any = {}) {\n const { cascade, withDeviceUser } = params;\n try {\n const { owner } = device;\n const shouldRemoveOwner = withDeviceUser && owner && this.isDeviceUser(owner);\n\n shouldRemoveOwner\n ? await this.deleteDeviceWithUser(device, cascade)\n : await this.inventoryService.delete(device, { cascade });\n\n const alertMessage = this.translateService.instant(gettext('Device deleted.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not delete device.'));\n this.alertService.danger(alertMessage, error);\n }\n }\n\n private async deactivateSmartrulesForAsset(asset: IManagedObject, parentRef: IManagedObject) {\n const { id: assetId } = asset;\n const { id: parentId } = parentRef;\n const rules: IRule[] = (await this.smartRulesService.listByContext(parentId)).data;\n\n const upateSmartrulesPromises = rules.map(rule =>\n this.smartRulesService.bulkDeactivateEnabledSources(rule, [assetId])\n );\n\n try {\n await Promise.all(upateSmartrulesPromises);\n } catch (error) {\n const alertMessage = this.translateService.instant(\n gettext('Could not deactivate smart rules.')\n );\n this.alertService.danger(alertMessage);\n }\n }\n\n private isDeviceUser(userId: string) {\n return userId.match(/^device_/);\n }\n\n private async deleteDeviceWithUser(device: IManagedObject, cascade: boolean) {\n const params = { cascade, withDeviceUser: true };\n try {\n return await this.inventoryService.delete(device, params);\n } catch (error) {\n return await this.inventoryService.delete(device, { cascade });\n }\n }\n\n private getAssetsFilters(columns: Column[], pagination: Pagination, baseQuery, text?: string) {\n const query = this.queriesUtil.addAndFilter(this.getQueryObj(columns), baseQuery);\n return {\n ...(text && { text }),\n query: this.queriesUtil.buildQuery(query),\n pageSize: pagination.pageSize || this.DEFAULT_PAGE_SIZE,\n currentPage: pagination.currentPage,\n withTotalPages: true\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IIdentified, IManagedObject, InventoryService } from '@c8y/client';\nimport { GroupForm } from './add-group.model';\nimport { GroupFragment } from '@c8y/ngx-components';\n\n@Injectable()\nexport class AddGroupService {\n private GROUP_FRAGMENT_TYPE = 'c8y_IsDeviceGroup';\n\n constructor(private inventoryService: InventoryService) {}\n\n async createGroupAndAssignDevices(\n groupForm: GroupForm,\n groupContextId: string | number,\n selectedDevices: string[]\n ): Promise<IManagedObject | IIdentified> {\n let group: IManagedObject | IIdentified;\n const { name, description } = groupForm;\n const newGroupMO = this.getGroupMO(name, description, groupContextId);\n\n if (groupContextId) {\n group = (await this.inventoryService.childAssetsCreate(newGroupMO, groupContextId)).data;\n } else {\n group = (await this.inventoryService.create(newGroupMO)).data;\n }\n\n if (selectedDevices.length > 0) {\n await this.assignDevices(group.id, selectedDevices);\n }\n\n return group;\n }\n\n private getGroupMO(\n name: string,\n description = '',\n groupContextId: string | number\n ): Partial<IManagedObject> {\n const group = {\n type: this.getGroupType(groupContextId),\n [this.GROUP_FRAGMENT_TYPE]: {},\n name,\n c8y_Notes: description\n };\n\n return group;\n }\n\n private getGroupType(\n groupContextId: string | number\n ): GroupFragment.subGroupType | GroupFragment.groupType {\n return groupContextId ? GroupFragment.subGroupType : GroupFragment.groupType;\n }\n\n private async assignDevices(id: string | number, selectedDevices: string[]) {\n const promises = [];\n\n selectedDevices.forEach(moId => {\n promises.push(this.inventoryService.childAssetsAdd(moId, id));\n });\n\n return await Promise.all(promises);\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ConfirmModalComponent,\n GainsightService,\n gettext,\n ModalLabels,\n Status,\n StatusType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from '../shared/sub-assets.model';\nimport { DeleteModalCheckboxes } from './delete-assets-modal.model';\n\n@Component({\n selector: 'c8y-delete-assets-modal',\n templateUrl: './delete-assets-modal.component.html'\n})\nexport class DeleteAssetsModalComponent {\n CURRENT_LOCATION = location.href;\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n\n @Input() showWithCascadeCheckbox = true;\n @Input() showWithDeviceUserCheckbox = false;\n @Input() asset: IManagedObject;\n @ViewChild('modalRef', { static: false }) modalRef: ConfirmModalComponent;\n closeSubject: Subject<DeleteModalCheckboxes> = new Subject();\n labels: ModalLabels = { ok: gettext('Delete'), cancel: gettext('Cancel') };\n title: string = gettext('Delete');\n status: StatusType = Status.DANGER;\n config: DeleteModalCheckboxes = {\n cascade: false,\n withDeviceUser: false\n };\n message: string;\n deleteGroupSubAssetsMsg: string;\n\n constructor(\n private translateService: TranslateService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.setModalTexts();\n }\n\n async ngAfterViewInit() {\n try {\n await this.modalRef.result;\n this.onClose();\n } catch (error) {\n this.onDismiss();\n }\n }\n\n onClose() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n result: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.DELETE_ASSET.RESULTS.DELETED,\n url: this.CURRENT_LOCATION\n });\n this.closeSubject.next(this.config);\n this.closeSubject.complete();\n }\n\n onDismiss() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n result: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.DELETE_ASSET.RESULTS.CANCELED,\n url: this.CURRENT_LOCATION\n });\n this.closeSubject.complete();\n }\n\n private setModalTexts() {\n this.message = this.translateService.instant(\n gettext(\n 'You are about to delete: \"{{name}}\". This operation is irreversible. Do you want to proceed?'\n ),\n { name: this.asset.name }\n );\n this.deleteGroupSubAssetsMsg = this.translateService.instant(\n gettext('Also delete all devices inside \"{{name}}\" and its subassets.'),\n { name: this.asset.name }\n );\n }\n}\n","<c8y-confirm-modal [title]=\"title\" [status]=\"status\" [labels]=\"labels\" #modalRef>\n <form #assetsForm=\"ngForm\">\n <p class=\"text-wrap m-b-16\">\n {{ message | translate }}\n </p>\n <c8y-form-group *ngIf=\"showWithCascadeCheckbox\" class=\"m-b-0\">\n <label title=\"{{ 'Delete devices' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"cascade\"\n [(ngModel)]=\"config.cascade\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n action: PRODUCT_EXPERIENCE.DELETE_ASSET.ACTIONS.CASCADE_DELETE\n }\"\n [disabled]=\"config?.withDeviceUser\"\n />\n <span></span>\n <span class=\"text-break-word\">\n {{ deleteGroupSubAssetsMsg | translate }}\n </span>\n </label>\n </c8y-form-group>\n <c8y-form-group *ngIf=\"showWithDeviceUserCheckbox\" class=\"m-b-0\">\n <label title=\"{{ 'Delete associated device owner' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"withDeviceUser\"\n [(ngModel)]=\"config.withDeviceUser\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n action: PRODUCT_EXPERIENCE.DELETE_ASSET.ACTIONS.DELETE_DEVICE_OWNER\n }\"\n [disabled]=\"config?.cascade\"\n />\n <span></span>\n <span>\n {{ 'Also delete associated device owner.' | translate }}\n </span>\n </label>\n </c8y-form-group>\n </form>\n</c8y-confirm-modal>\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport {\n AbstractConfigurationStrategy,\n DATA_GRID_CONFIGURATION_CONTEXT,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n GridConfig,\n GridConfigContext,\n GridConfigContextProvider,\n UserPreferencesConfigurationStrategy\n} from '@c8y/ngx-components';\nimport { cloneDeep } from 'lodash-es';\nimport { Observable, of } from 'rxjs';\nimport { SubAssetsGridConfigContext } from './sub-assets-grid-configuration-strategy.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SmartGroupGridConfigurationStrategy extends AbstractConfigurationStrategy {\n constructor(\n protected userPreferencesConfigurationStrategy: UserPreferencesConfigurationStrategy,\n @Inject(DATA_GRID_CONFIGURATION_CONTEXT)\n @Optional()\n protected context: GridConfigContext,\n @Inject(DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER)\n @Optional()\n protected contextProvider: GridConfigContextProvider\n ) {\n super(context, contextProvider);\n }\n\n getConfig$(context?: SubAssetsGridConfigContext): Observable<GridConfig> {\n const group = cloneDeep(this.retrieveContext(context)?.group);\n\n if (group?.c8y_DeviceColumnsConfig?.columns?.length) {\n group.c8y_DeviceColumnsConfig.columns = group.c8y_DeviceColumnsConfig.columns.map(column => {\n delete column.filter;\n return column;\n });\n }\n\n return of(group?.c8y_DeviceColumnsConfig);\n }\n\n saveConfig$(config: GridConfig, _context?: SubAssetsGridConfigContext): Observable<GridConfig> {\n return of(config);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n AbstractConfigurationStrategy,\n DataGridConfigurationStrategy,\n DATA_GRID_CONFIGURATION_CONTEXT,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n GridConfig,\n GridConfigContext,\n GridConfigContextProvider,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { Observable } from 'rxjs';\nimport { SmartGroupGridConfigurationStrategy } from './smart-group-grid-configuration-strategy.service';\n\nexport interface SubAssetsGridConfigContext extends UserPreferencesGridConfigContext {\n group: IManagedObject;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SubAssetsGridConfigurationStrategy extends AbstractConfigurationStrategy {\n constructor(\n protected userPreferencesConfigurationStrategy: UserPreferencesConfigurationStrategy,\n protected smartGroupGridConfigurationStrategy: SmartGroupGridConfigurationStrategy,\n protected assetNodeService: AssetNodeService,\n @Inject(DATA_GRID_CONFIGURATION_CONTEXT)\n @Optional()\n protected context: GridConfigContext,\n @Inject(DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER)\n @Optional()\n protected contextProvider: GridConfigContextProvider\n ) {\n super(context, contextProvider);\n }\n\n getConfig$(context?: SubAssetsGridConfigContext): Observable<GridConfig> {\n return this.getStrategy(context).getConfig$(context);\n }\n\n saveConfig$(config: GridConfig, context?: SubAssetsGridConfigContext): Observable<GridConfig> {\n return this.getStrategy(context).saveConfig$(config, context);\n }\n\n private getStrategy(ctx?: SubAssetsGridConfigContext): DataGridConfigurationStrategy {\n const context = this.retrieveContext(ctx) as SubAssetsGridConfigContext;\n return !!context?.group &&\n this.assetNodeService.isDynamicGroup(context?.group) &&\n context?.group?.c8y_DeviceColumnsConfig\n ? this.smartGroupGridConfigurationStrategy\n : this.userPreferencesConfigurationStrategy;\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ConfirmModalComponent,\n GainsightService,\n gettext,\n ModalLabels,\n Status,\n StatusType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from '../shared/sub-assets.model';\n\n@Component({\n selector: 'c8y-unassign-modal',\n templateUrl: './unassign-modal.component.html'\n})\nexport class UnassignModalComponent {\n CURRENT_LOCATION = location.href;\n @Input() asset: IManagedObject;\n @ViewChild('modalRef', { static: false }) modalRef: ConfirmModalComponent;\n message: string;\n closeSubject: Subject<boolean> = new Subject();\n labels: ModalLabels = { ok: gettext('Unassign'), cancel: gettext('Cancel') };\n title = gettext('Unassign');\n status: StatusType = Status.WARNING;\n\n constructor(\n private translateService: TranslateService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.message = this.translateService.instant(\n gettext('You are about to unassign \"{{name}}\". Do you want to proceed?'),\n { name: this.asset.name }\n );\n }\n\n async ngAfterViewInit() {\n try {\n await this.modalRef.result;\n this.onClose();\n } catch (error) {\n this.onDismiss();\n }\n }\n\n onClose() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.UNASSIGN_MODAL.COMPONENTS.UNASSIGN_MODAL,\n result: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.UNASSIGN_MODAL.RESULTS.ASSET_UNASSIGNED,\n url: this.CURRENT_LOCATION\n });\n this.closeSubject.next(true);\n this.closeSubject.complete();\n }\n\n onDismiss() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.UNASSIGN_MODAL.COMPONENTS.UNASSIGN_MODAL,\n action: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.UNASSIGN_MODAL.ACTIONS.CANCEL,\n url: this.CURRENT_LOCATION\n });\n this.closeSubject.complete();\n }\n}\n","<c8y-confirm-modal [title]=\"title\" [status]=\"status\" [labels]=\"labels\" #modalRef>\n <span>{{ message | translate }}</span>\n</c8y-confirm-modal>\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IManagedObject, SmartGroupsService } from '@c8y/client';\nimport {\n ActionControl,\n BuiltInActionType,\n BulkActionControl,\n Column,\n DataGridComponent,\n DataSourceModifier,\n DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n DATA_GRID_CONFIGURATION_STRATEGY,\n DisplayOptions,\n gettext,\n GridConfigContextProvider,\n Pagination,\n Row,\n ServerSideDataCallback,\n ServerSideDataResult,\n UserPreferencesConfigurationStrategy\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { DeviceListExtensionService } from '@c8y/ngx-components/device-list';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { of, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DeleteModalCheckboxes } from './delete-assets-modal';\nimport { DeleteAssetsModalComponent } from './delete-assets-modal/delete-assets-modal.component';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from './shared/sub-assets.model';\nimport { SmartGroupGridConfigurationStrategy } from './smart-group-grid-configuration-strategy.service';\nimport {\n SubAssetsGridConfigContext,\n SubAssetsGridConfigurationStrategy\n} from './sub-assets-grid-configuration-strategy.service';\nimport { SubAssetsService } from './sub-assets.service';\nimport { UnassignModalComponent } from './unassign-assets-modal/unassign-modal.component';\n@Component({\n selector: 'c8y-sub-assets-grid',\n templateUrl: './sub-assets-grid.component.html',\n providers: [\n {\n provide: UserPreferencesConfigurationStrategy,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: SmartGroupGridConfigurationStrategy,\n useClass: SmartGroupGridConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: SubAssetsGridConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,\n useExisting: SubAssetsGridComponent\n }\n ]\n})\nexport class SubAssetsGridComponent implements OnInit, OnDestroy, GridConfigContextProvider {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n @Input('parent-group') parentGroup: IManagedObject;\n @Input() refresh: EventEmitter<void>;\n @Input() title: string = gettext('Subassets');\n @Input() emptyStateText: string = gettext(\n 'Add your first group or assign devices using the buttons on the action bar.'\n );\n @Input() loadingItemsLabel: string = gettext('Loading assets…');\n /** The name of the key where columns configuration will be stored. */\n @Input() columnsConfigKey: string;\n\n get columns() {\n return this._columns;\n }\n @Input() set columns(value: Column[]) {\n this._columns = value ?? this.subAssetsGridService.getDefaultColumns();\n }\n @Input('pagination') set _pagination(value: Pagination) {\n if (value) {\n this.pagination = value;\n } else {\n this.pagination = this.subAssetsGridService.getDefaultPagination();\n }\n }\n @Input('actionControls') set _actionControls(value: ActionControl[]) {\n if (value) {\n this.actionControls = value;\n } else {\n this.actionControls = this.subAssetsGridService.getDefaultActionControls();\n }\n }\n @Input() selectable = false;\n @Input() baseQuery: object = {};\n @Input('bulkActionControls') set _bulkActionControls(value: BulkActionControl[]) {\n if (value) {\n this.bulkActionControls = value;\n } else {\n this.bulkActionControls = this.subAssetsGridService.getDefaultBulkActionControls();\n }\n }\n @Input() filterable = true;\n @Input() sortable = true;\n @Output() onColumnsChange: EventEmitter<Column[]> = new EventEmitter<Column[]>();\n @Output() itemsSelect: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n pagination: Pagination = this.subAssetsGridService.getDefaultPagination();\n showCounterWarning = false;\n actionControls: ActionControl[];\n bulkActionControls: BulkActionControl[] =\n this.subAssetsGridService.getDefaultBulkActionControls();\n serverSideDataCallback: ServerSideDataCallback;\n\n @ViewChild(DataGridComponent, { static: true })\n dataGrid: DataGridComponent;\n\n displayOptions: DisplayOptions = {\n striped: true,\n bordered: false,\n gridHeader: true,\n filter: true,\n hover: true\n };\n\n showSearch = false;\n\n noResultsMessage = gettext('No matching items.');\n noDataMessage = gettext('No items to display.');\n noResultsSubtitle = gettext('Refine your search terms or check your spelling.');\n\n private _columns: Column[];\n private destroyed$ = new Subject<void>();\n\n get isRootGroup() {\n return !this.parentGroup;\n }\n\n get getInfiniteScrollMode() {\n return this.isRootGroup && this.subAssetsGridService.isUsingInventoryRoles()\n ? 'auto'\n : undefined;\n }\n\n @Input('displayOptions')\n set _displayOptions(displayOptions) {\n this.displayOptions = { ...this.displayOptions, ...displayOptions };\n }\n\n constructor(\n public subAssetsGridService: SubAssetsService,\n private bsModalService: BsModalService,\n private smartGroupsService: SmartGroupsService,\n private deviceListExtensionService: DeviceListExtensionService,\n private assetNodeService: AssetNodeService\n ) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n getGridConfigContext(): SubAssetsGridConfigContext {\n if (!!this.columnsConfigKey) {\n return { key: this.columnsConfigKey, group: this.parentGroup };\n }\n }\n\n ngOnInit() {\n const isDynamicGroup =\n !!this.parentGroup && this.assetNodeService.isDynamicGroup(this.parentGroup);\n if (!this.isRootGroup) {\n (isDynamicGroup\n ? this.deviceListExtensionService.items$\n : of(this.subAssetsGridService.getDefaultColumns(this.filterable, this.sortable))\n )\n .pipe(takeUntil(this.destroyed$))\n .subscribe(columns => (this.columns = columns));\n }\n if (!this.filterable || !this.sortable) {\n this.displayOptions.filter = this.filterable;\n this.columns.forEach(column => {\n column.filterable = this.filterable;\n column.sortable = this.sortable;\n });\n }\n this.setActionControls();\n this.showSearch = isDynamicGroup || !this.parentGroup;\n }\n\n setActionControls() {\n const actionControls: ActionControl[] = [];\n\n const unassignAction: ActionControl = {\n type: 'UNASSIGN',\n icon: 'unlink',\n text: gettext('Unassign'),\n priority: 1000,\n callback: (asset: Row) => this.onUnassignAsset(asset as IManagedObject, this.parentGroup),\n showIf: (asset: Row) =>\n this.subAssetsGridService.isDevice(asset as IManagedObject) &&\n !this.subAssetsGridService.isSmartGroup(this.parentGroup as IManagedObject)\n };\n\n actionControls.push(unassignAction);\n\n const deleteAction: ActionControl = {\n type: BuiltInActionType.Delete,\n priority: -Infinity,\n callback: (asset: Row) => this.onDeleteAsset(asset as IManagedObject, this.parentGroup),\n showIf: (asset: Row) => {\n if (this.smartGroupsService.isSmartGroup(asset as IManagedObject)) {\n return this.subAssetsGridService.canDeleteSmartGroup();\n }\n\n return true;\n }\n };\n\n actionControls.push(deleteAction);\n\n if (!this.actionControls) {\n this.actionControls = actionControls;\n }\n }\n\n onUnassignAsset(asset: IManagedObject, parentRef: IManagedObject) {\n const initialState = {\n asset\n };\n const modalRef = this.bsModalService.show(UnassignModalComponent, { initialState });\n\n modalRef.content.closeSubject.subscribe(async (result: boolean) => {\n if (result) {\n await this.subAssetsGridService.unassignAsset(asset, parentRef);\n this.refresh.emit();\n }\n });\n }\n\n async onDeleteAsset(asset: IManagedObject, parentRef: IManagedObject) {\n const initialState = {\n showWithDeviceUserCheckbox: this.subAssetsGridService.shouldShowWithDeviceUserCheckbox(asset),\n asset,\n showWithCascadeCheckbox: !this.smartGroupsService.isSmartGroup(asset)\n };\n\n const modalRef = this.bsModalService.show(DeleteAssetsModalComponent, { initialState });\n\n modalRef.content.closeSubject.subscribe(async (result: DeleteModalCheckboxes) => {\n if (result) {\n await this.subAssetsGridService.deleteAsset(asset, parentRef, result);\n if (result.cascade) {\n this.showCounterWarning = true;\n }\n this.refresh.emit();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.parentGroup && !changes.parentGroup.firstChange) {\n this.dataGrid.reload();\n }\n }\n\n trackByName(_index, column: Column): string {\n return column.name;\n }\n\n onReload() {\n this.assetNodeService.rootNode.refresh();\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const promises = [];\n let counters;\n\n promises.push(\n this.subAssetsGridService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.parentGroup,\n this.baseQuery,\n dataSourceModifier.searchText\n )\n );\n\n promises.push(this.subAssetsGridService.getTotal(this.parentGroup, this.baseQuery));\n promises.push(\n this.subAssetsGridService.getCount(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.parentGroup,\n this.baseQuery,\n dataSourceModifier.searchText\n )\n );\n\n const [dataResponse, size, filteredSize] = await Promise.all(promises);\n if (!counters) {\n counters = {\n size,\n filteredSize\n };\n }\n this.onColumnsChange.emit(dataSourceModifier.columns);\n\n return {\n res: dataResponse.res,\n data: dataResponse.data,\n paging: dataResponse.paging,\n ...counters\n };\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n}\n","<c8y-data-grid\n [title]=\"title\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [bulkActionControls]=\"bulkActionControls\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [infiniteScroll]=\"getInfiniteScrollMode\"\n [showCounterWarning]=\"showCounterWarning\"\n [refresh]=\"refresh\"\n [showSearch]=\"showSearch\"\n [displayOptions]=\"displayOptions\"\n (itemsSelect)=\"itemsSelect.emit($event)\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n (onReload)=\"onReload()\"\n>\n <c8y-ui-empty-state\n [icon]=\"'c8y-group-add'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (emptyStateText | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n</c8y-data-grid>\n","import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { InventoryService } from '@c8y/client';\nimport { SubAssetsService } from '../sub-assets.service';\nimport { IManagedObject } from '@c8y/client';\n\n@Component({\n selector: 'c8y-assign-child-devices',\n templateUrl: './assign-child-devices.component.html'\n})\nexport class AssignChildDevicesComponent {\n @Input() currentGroupId: string;\n @Input() parentDevice: IManagedObject;\n @Output() onCancel = new EventEmitter<any>();\n @Output() onSelectedDevices = new EventEmitter<string[]>();\n @Input() refresh = new EventEmitter<any>();\n @Input() onlySelect = false; // if true, devices are only selected, not assigned\n\n selected: string[] = [];\n baseQuery: any;\n canAssignDevice = false;\n pendingStatus = false;\n\n constructor(\n private alert: AlertService,\n private subAssetsService: SubAssetsService,\n private inventoryService: InventoryService\n ) {}\n\n @HostListener('document:keydown.enter', ['$event']) onEnterKeyDown(_event: KeyboardEvent) {\n if (this.selected.length > 0) {\n this.assignDevices();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event']) onEscapeKeyDown(_event: KeyboardEvent) {\n this.onCancel.emit();\n }\n\n async ngOnInit() {\n this.setNotIncludedInGroupQuery();\n this.canAssignDevice = await this.subAssetsService.canAssignDevice({\n id: this.currentGroupId\n } as IManagedObject);\n }\n\n setNotIncludedInGroupQuery() {\n const notIncludedInGroupQuery = { __not: { __bygroupid: this.currentGroupId } };\n this.baseQuery = notIncludedInGroupQuery;\n }\n\n async assignDevices() {\n if (this.canAssignDevice === false) {\n return;\n }\n if (this.onlySelect) {\n this.onSelectedDevices.emit(this.selected);\n this.alert.success(gettext('Child devices selected.'));\n this.onCancel.emit();\n return;\n }\n\n this.pendingStatus = true;\n\n try {\n await this.inventoryService.childAssetsBulkAdd(this.selected, this.currentGroupId);\n this.refresh.emit();\n this.alert.success(gettext('Child devices assigned.'));\n } catch (error) {\n this.alert.danger(gettext('Could not assign child devices.'), error);\n }\n this.pendingStatus = false;\n this.selected = [];\n this.onCancel.emit();\n }\n\n onSelected(selectedDevicesIDs: string[]) {\n this.selected = selectedDevicesIDs;\n }\n}\n","<div class=\"card-block flex-no-shrink separator-bottom col-xs-12 large-padding p-t-24 p-b-24\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <h4 class=\"text-center text-medium\">\n {{ 'Assign child devices' | translate }}\n </h4>\n </div>\n </div>\n</div>\n\n<c8y-sub-assets-grid\n [title]=\"''\"\n [emptyStateText]=\"'All child devices are already assigned' | translate\"\n [refresh]=\"refresh\"\n [actionControls]=\"[]\"\n [columnsConfigKey]=\"'assign-child-devices'\"\n [selectable]=\"true\"\n [parent-group]=\"parentDevice\"\n [baseQuery]=\"baseQuery\"\n (itemsSelect)=\"onSelected($event)\"\n class=\"d-contents\"\n></c8y-sub-assets-grid>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n (click)=\"onCancel.emit()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n >\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n <button\n (click)=\"assignDevices()\"\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n title=\"{{ 'Assign' | translate }}\"\n [disabled]=\"selected.length === 0 || !canAssignDevice\"\n >\n <span>{{ 'Assign' | translate }}</span>\n </button>\n</div>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n C8yStepper,\n GainsightService,\n gettext,\n Pagination,\n Permissions,\n Row\n} from '@c8y/ngx-components';\nimport { Subscription } from 'rxjs';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from '../shared/sub-assets.model';\nimport { SubAssetsService } from '../sub-assets.service';\nimport { AddGroupService } from './add-group.service';\n\n@Component({\n selector: 'c8y-add-group',\n templateUrl: './add-group.component.html'\n})\nexport class AddGroupComponent {\n @Input() currentGroupId: string;\n @Input() refresh = new EventEmitter<void>();\n @Output() onDeviceQueryStringChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onCancel = new EventEmitter<void>();\n @ViewChild(C8yStepper, { static: false })\n stepper: C8yStepper;\n @ViewChild('nameRef', { static: false })\n nameInputRef: ElementRef;\n deviceQueryStringOutput: string;\n showAssignChildDevices = false;\n showChildrenForDevice: IManagedObject;\n formGroupStepOne: FormGroup;\n actionControls: ActionControl[] = [];\n pendingStatus = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n selectedChildDevices: string[] = [];\n subscription: Subscription;\n canCreateGroup = false;\n canAssignDevice = false;\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n\n readonly ITEMS_SELECT_LIMIT: number = 15;\n readonly btnLabels = {\n next: gettext('Next'),\n cancel: gettext('Cancel'),\n create: gettext('Create')\n };\n\n private nameInput: HTMLInputElement;\n\n constructor(\n private fb: FormBuilder,\n private addGroupService: AddGroupService,\n private alert: AlertService,\n private subAssetsService: SubAssetsService,\n private gainsightService: GainsightService,\n private permissionsService: Permissions\n ) {}\n\n @HostListener('document:keydown.enter', ['$event']) onEnterKeyDown(_event: KeyboardEvent) {\n // Order matters! Needs to be placed before this.stepper.next\n if ((this.isGroupDetailsStep() && !this.canAssignDevice) || this.isAssignDeviceStep()) {\n this.createGroup();\n return;\n }\n this.stepper.next();\n }\n\n async ngOnInit() {\n this.formGroupStepOne = this.fb.group({\n name: ['', Validators.required],\n description: ['']\n });\n this.subscription = this.onCancel.subscribe(() => this.resetStepper());\n this.canCreateGroup =\n this.subAssetsService.canCreateGroup() ||\n (await this.permissionsService.canEdit(\n [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE\n ],\n {\n id: this.currentGroupId\n }\n ));\n this.canAssignDevice = await this.subAssetsService.canAssignDevice({\n id: this.currentGroupId\n } as IManagedObject);\n this.setActionControls();\n }\n\n setActionControls() {\n const actionControls: ActionControl[] = [];\n\n const selectChildrenAction: ActionControl = {\n type: 'SHOW_TARGET_CHILD_DEVICES',\n icon: 'enter-bottom',\n text: gettext('Select target child devices'),\n callback: (asset: Row) => this.selectChildren(asset as IManagedObject),\n showIf: (asset: Row) => asset.childDevices.references.length > 0\n };\n\n actionControls.push(selectChildrenAction);\n\n this.actionControls = actionControls;\n this.refresh.emit();\n }\n\n ngAfterViewInit() {\n this.nameInput = this.nameInputRef.nativeElement as HTMLInputElement;\n this.setFocusOnNameInput();\n }\n\n async createGroup() {\n if (this.canCreateGroup === false) {\n return;\n }\n\n this.pendingStatus = true;\n const combinedDevices = [...this.selected, ...this.selectedChildDevices];\n await this.addGroupService.createGroupAndAssignDevices(\n this.formGroupStepOne.value,\n this.currentGroupId,\n combinedDevices\n );\n\n this.pendingStatus = false;\n this.resetStepper();\n const alertMsg = gettext('Group created.');\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.ADD_GROUP.COMPONENTS.ADD_GROUP,\n url: window.location.href,\n result: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.ADD_GROUP.RESULTS.ADD_SUCCESS\n });\n this.alert.success(alertMsg);\n this.refresh.emit();\n this.onCancel.emit();\n }\n\n onSelected(selectedDevicesIDs: string[]) {\n this.selected = selectedDevicesIDs;\n }\n\n onSelectedChildDevices(selectedDevicesIDs: string[]) {\n this.selectedChildDevices = selectedDevicesIDs;\n }\n\n resetStepper() {\n this.stepper.reset();\n this.stepper.selectedIndex = 1;\n this.selected = [];\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n private isGroupDetailsStep() {\n return this.stepper.selectedIndex === 0;\n }\n\n private isAssignDeviceStep() {\n return this.stepper.selectedIndex === 1;\n }\n\n private setFocusOnNameInput() {\n if (this.nameInput) {\n this.nameInput.focus();\n this.nameInput.select();\n }\n }\n\n private selectChildren(asset: IManagedObject) {\n this.showAssignChildDevices = true;\n this.showChildrenForDevice = asset;\n }\n}\n","<div [ngClass]=\"{ drawerOpen: true }\">\n <div class=\"bottom-drawer\">\n <div\n class=\"d-contents\"\n *ngIf=\"!currentGroupId; else stepper\"\n >\n <ng-container [ngTemplateOutlet]=\"stepper\"></ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #stepper>\n <c8y-stepper\n class=\"d-col flex-nowrap no-align-items fit-h c8y-stepper--no-btns\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n [customClasses]=\"['col-md-6', 'col-md-offset-3', 'm-t-24', 'm-b-40', 'p-0', 'flex-no-shrink']\"\n linear\n c8yProductExperience\n inherit\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP }\"\n >\n <cdk-step\n [stepControl]=\"formGroupStepOne\"\n [label]=\"'New group' | translate\"\n >\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'New group' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-xs-12 flex-grow no-gutter\">\n <div class=\"card-inner-scroll fit-h\">\n <div class=\"card-block p-b-0\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <c8y-form-group [novalidation]=\"true\">\n <div [formGroup]=\"formGroupStepOne\">\n <c8y-form-group>\n <label translate>Name</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. First floor' | translate }} \"\n type=\"text\"\n required\n formControlName=\"name\"\n maxlength=\"254\"\n #nameRef\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g. first floor devices' | translate }}\"\n type=\"text\"\n formControlName=\"description\"\n />\n </c8y-form-group>\n </div>\n </c8y-form-group>\n <c8y-form-group>\n <div [formGroup]=\"formGroupStepOne\"></div>\n </c8y-form-group>\n <div\n class=\"alert alert-info max-width-100\"\n translate\n *ngIf=\"!canAssignDevice\"\n >\n You don't have permission to assign devices.\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n (onCancel)=\"onCancel.emit()\"\n (onCustom)=\"createGroup()\"\n [disabled]=\"!canCreateGroup\"\n [labels]=\"\n canAssignDevice\n ? { next: btnLabels.next, cancel: btnLabels.cancel }\n : { custom: btnLabels.create, cancel: btnLabels.cancel }\n \"\n [showButtons]=\"\n canAssignDevice ? { next: true, cancel: true } : { custom: true, cancel: true }\n \"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step [label]=\"'Assign devices' | translate\">\n <div class=\"p-16 p-t-0 flex-no-shrink separator-bottom col-xs-12\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-xs-12 no-gutter flex-grow\">\n <c8y-device-grid\n [title]=\"'Select target devices' | translate\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"true\"\n [withChildren]=\"true\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP }\"\n ></c8y-device-grid>\n </div>\n <c8y-stepper-buttons\n class=\"d-block card-footer p-24 separator\"\n (onCancel)=\"onCancel.emit()\"\n (onCustom)=\"createGroup()\"\n [labels]=\"{ custom: btnLabels.create }\"\n [disabled]=\"!canAssignDevice\"\n [pending]=\"pendingStatus\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</ng-template>\n\n<div\n [ngClass]=\"{ drawerOpen: showAssignChildDevices }\"\n *ngIf=\"showAssignChildDevices\"\n>\n <div class=\"bottom-drawer m-t-40\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-child-devices\n class=\"d-contents\"\n (onCancel)=\"showAssignChildDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n [parentDevice]=\"showChildrenForDevice\"\n [onlySelect]=\"true\"\n (onSelectedDevices)=\"onSelectedChildDevices($event)\"\n ></c8y-assign-child-devices>\n </div>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n DATA_GRID_CONFIGURATION_CONTEXT,\n DATA_GRID_CONFIGURATION_STRATEGY,\n GainsightService,\n gettext,\n HeaderActionControl,\n Pagination,\n Row,\n UserPreferencesConfigurationStrategy,\n UserPreferencesGridConfigContext\n} from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from '../shared/sub-assets.model';\nimport { SubAssetsService } from '../sub-assets.service';\n\n@Component({\n selector: 'c8y-assign-devices',\n templateUrl: './assign-devices.component.html',\n providers: [\n {\n provide: DATA_GRID_CONFIGURATION_STRATEGY,\n useClass: UserPreferencesConfigurationStrategy\n },\n {\n provide: DATA_GRID_CONFIGURATION_CONTEXT,\n useValue: AssignDevicesComponent.GRID_CONFIG_CONTEXT\n }\n ]\n})\nexport class AssignDevicesComponent {\n static readonly GRID_CONFIG_CONTEXT: UserPreferencesGridConfigContext = {\n key: 'assign-devices-grid',\n configFilter: {\n filter: false\n }\n };\n\n CURRENT_LOCATION = location.href;\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n\n @Input() currentGroupId: string;\n @Input() refresh = new EventEmitter<any>();\n @Output() onCancel = new EventEmitter<any>();\n @Output() onShowChildDevices = new EventEmitter<boolean>();\n @Output() selectedDevice = new EventEmitter<IManagedObject>();\n @ViewChild('showDevicesToggle', { read: TemplateRef }) showDevicesToggle: TemplateRef<any>;\n\n deviceQueryStringOutput: string;\n pendingStatus = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n baseQuery: any;\n canAssignDevice = false;\n actionControls: ActionControl[] = [];\n headerActionControls: HeaderActionControl[] = [];\n showChildren = false;\n readonly isSelectable = true;\n\n constructor(\n private alert: AlertService,\n private subAssetsService: SubAssetsService,\n private inventoryService: InventoryService,\n private gainsightService: GainsightService\n ) {}\n\n @HostListener('document:keydown.enter', ['$event']) onEnterKeyDown(_event: KeyboardEvent) {\n if (this.selected.length > 0) {\n this.assignDevices();\n }\n }\n\n async ngOnInit() {\n this.setNotIncludedInGroupQuery();\n this.canAssignDevice = await this.subAssetsService.canAssignDevice({\n id: this.currentGroupId\n } as IManagedObject);\n this.setHeaderActionControls();\n }\n\n setNotIncludedInGroupQuery() {\n const notIncludedInGroupQuery = { __not: { __bygroupid: this.currentGroupId } };\n this.baseQuery = notIncludedInGroupQuery;\n }\n\n setHeaderActionControls() {\n const headerActionControls: HeaderActionControl[] = [];\n const showChildDevices = {\n type: 'DISPLAY_CHILD_DEVICES_BUTTON',\n text: gettext('Enable child devices selection'),\n template: this.showDevicesToggle,\n callback: () => {\n this.showChildren = !this.showChildren;\n this.setActionControls(this.showChildren);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.EVENT, {\n component: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED.ASSIGN_DEVICES.ACTIONS.DISPLAY_CHILD_DEVICES,\n url: this.CURRENT_LOCATION\n });\n }\n };\n headerActionControls.push(showChildDevices);\n this.headerActionControls = headerActionControls;\n }\n\n setActionControls(showChildren: boolean) {\n const actionControls: ActionControl[] = [];\n\n const selectChildrenAction: ActionControl = {\n type: 'SHOW_TARGET_CHILD_DEVICES',\n icon: 'enter-bottom',\n text: gettext('Select target child devices'),\n callback: (asset: Row) => this.selectChildren(asset as IManagedObject),\n showIf: (asset: Row) => asset.childDevices.references.length > 0\n };\n\n if (showChildren) {\n actionControls.push(selectChildrenAction);\n }\n\n this.actionControls = actionControls;\n this.refresh.emit();\n }\n\n async assignDevices() {\n if (this.canAssignDevice === false) {\n return;\n }\n this.pendingStatus = true;\n\n try {\n await this.inventoryService.childAssetsBulkAdd(this.selected, this.currentGroupId);\n this.refresh.emit();\n this.alert.success(gettext('Devices assigned.'));\n } catch (error) {\n this.alert.danger(gettext('Could not assign devices.'), error);\n }\n this.pendingStatus = false;\n this.selected = [];\n this.onCancel.emit();\n }\n\n onSelected(selectedDevicesIDs: string[]) {\n this.selected = selectedDevicesIDs;\n }\n\n selectChildren(asset: IManagedObject) {\n this.onShowChildDevices.emit(true);\n this.selectedDevice.emit(asset);\n }\n}\n","<div class=\"card-block flex-no-shrink separator-bottom col-xs-12 large-padding p-t-24 p-b-24\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n</div>\n<c8y-device-grid\n class=\"flex-grow col-xs-12 no-gutter\"\n [title]=\"''\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"isSelectable\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n [baseQuery]=\"baseQuery\"\n [headerActionControls]=\"headerActionControls\"\n [withChildren]=\"true\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES }\"\n></c8y-device-grid>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"onCancel.emit()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.CANCEL\n }\"\n >\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Assign' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n (click)=\"assignDevices()\"\n [disabled]=\"selected.length === 0 || !canAssignDevice\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.ASSIGN\n }\"\n >\n <span>{{ 'Assign' | translate }}</span>\n </button>\n</div>\n\n<ng-template\n #showDevicesToggle\n let-control=\"headerActionControl\"\n>\n <label\n class=\"c8y-switch a-s-center\"\n title=\"{{ control.text | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"showChildren\"\n (click)=\"control.callback()\"\n />\n <span></span>\n <span>{{ control.text | translate }}</span>\n </label>\n <button\n class=\"btn-help m-r-16 a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"childDevicesPop\"\n placement=\"bottom\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n <ng-template #childDevicesPop>\n <span translate>\n Displays the button\n <span\n class=\"btn btn-dot btn-icon no-pointer\"\n title=\"Child devices icon\"\n >\n <i class=\"text-primary dlt-c8y-icon-enter-bottom\"></i>\n </span>\n next to target devices with children. Clicking it displays a list with all child devices of\n the selected target device.\n </span>\n </ng-template>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { SubAssetsGridComponent } from './sub-assets-grid.component';\nimport { AssignChildDevicesComponent } from './assign-devices/assign-child-devices.component';\nimport { AssignDevicesComponent } from './assign-devices/assign-devices.component';\n\n@NgModule({\n declarations: [AssignDevicesComponent, AssignChildDevicesComponent, SubAssetsGridComponent],\n imports: [CoreModule, DeviceGridModule, PopoverModule, BsDropdownModule, TooltipModule],\n exports: [SubAssetsGridComponent, AssignDevicesComponent, AssignChildDevicesComponent]\n})\nexport class SubAssetsGridsModule {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { AddGroupComponent } from './add-group.component';\nimport { AddGroupService } from './add-group.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { SubAssetsGridsModule } from '../sub-assets-grids.module';\n\n@NgModule({\n declarations: [AddGroupComponent],\n imports: [\n CoreModule,\n DeviceGridModule,\n FormsModule,\n ReactiveFormsModule,\n PopoverModule,\n SubAssetsGridsModule\n ],\n exports: [AddGroupComponent],\n providers: [AddGroupService]\n})\nexport class AddGroupModule {}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IManagedObjectBinary } from '@c8y/client';\nimport { AlertService, C8yJSONSchema, gettext, FilesService } from '@c8y/ngx-components';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { AssetPropertiesItem } from './asset-properties.model';\nimport { JSONSchema7 } from 'json-schema';\nimport { clone, sortBy } from 'lodash-es';\n\n@Component({\n selector: 'c8y-asset-properties-item',\n templateUrl: './asset-properties-item.component.html'\n})\nexport class AssetPropertiesItemComponent implements AssetPropertiesItem, OnChanges {\n @Input()\n key: string;\n @Input()\n value: any;\n @Input()\n label: string;\n @Input()\n type: string;\n @Input()\n file: IManagedObjectBinary;\n @Input()\n complex: AssetPropertiesItem[];\n @Input()\n isEdit: boolean;\n @Input()\n jsonSchema: JSONSchema7;\n\n form: FormGroup;\n fields: FormlyFieldConfig[];\n model: any;\n previewImage;\n\n constructor(\n private alert: AlertService,\n private c8yJsonSchemaService: C8yJSONSchema,\n public filesService: FilesService\n ) {}\n\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\n if (changes.isEdit) {\n this.resolveJsonSchema();\n await this.resolveFile();\n }\n }\n\n private async resolveFile() {\n if (this.file) {\n try {\n if (this.filesService.fileNamesHaveValidExtension(this.file.name, 'image')) {\n const imageFile = await this.filesService.getFile(this.file);\n this.previewImage = await this.getPreviewIfImage(imageFile);\n }\n } catch (ex) {\n this.alert.danger(gettext('File could not be loaded.'));\n }\n }\n }\n\n private formComplexPropsValue() {\n const complexProps = {};\n this.complex.forEach(complexObj => {\n if (complexObj.file) {\n complexProps[complexObj.key] = complexObj.value;\n } else {\n complexProps[complexObj.key] = this.value[complexObj.key];\n }\n });\n return complexProps;\n }\n\n private getModel() {\n if (this.complex && this.complex.length > 0) {\n return {\n [this.key]: this.formComplexPropsValue()\n };\n }\n return {\n [this.key]: clone(this.value)\n };\n }\n\n private resolveJsonSchema() {\n if (this.jsonSchema) {\n const fieldConfig = this.c8yJsonSchemaService.toFieldConfig(this.jsonSchema, this.jsonSchema);\n if (this.complex && this.complex.length > 0) {\n const orderedFieldConfig = sortBy(fieldConfig.fieldGroup[0].fieldGroup, 'order');\n fieldConfig.fieldGroup[0].fieldGroup = orderedFieldConfig;\n }\n this.form = new FormGroup({});\n this.fields = [fieldConfig];\n this.model = this.getModel();\n }\n }\n\n private async getPreviewIfImage(imageFile: File) {\n return this.filesService.toBase64(imageFile);\n }\n}\n","<ng-container [ngSwitch]=\"type\" *ngIf=\"!isEdit\">\n <ng-container *ngSwitchCase=\"'date'\">\n {{ (value | c8yDate: 'fullDate') || ('Undefined' | translate) }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-container *ngIf=\"file\">\n <img *ngIf=\"previewImage\" [src]=\"previewImage\" class=\"img-responsive\" />\n <button\n *ngIf=\"!previewImage\"\n (click)=\"filesService.download(file)\"\n type=\"button\"\n title=\"{{ 'Download' | translate }} {{ file.name }}\"\n class=\"btn btn-clean text-truncate p-0\"\n >\n {{ file.name }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"!file\">\n {{ 'No file attached.' | translate }}\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'object'\">\n <ul class=\"list-unstyled c8y-custom-properties\">\n <li\n *ngFor=\"let prop of complex; let i = index\"\n [ngClass]=\"{ 'separator-top-bottom': i === 0, 'separator-bottom': i > 0 }\"\n class=\"p-t-4 p-b-4 d-flex text-nowrap\"\n >\n <label\n class=\"small m-b-0 m-r-8 text-truncate\"\n title=\"{{ prop.label | translate }}\"\n [ngClass]=\"{ 'a-s-start': prop.file }\"\n >\n {{ prop.label | translate }}\n </label>\n <span class=\"m-l-auto\" style=\"max-width: {{ prop.file ? '50%' : '100%' }}; min-width:0;\">\n <c8y-asset-properties-item\n [file]=\"prop.file\"\n [key]=\"prop.key\"\n [type]=\"prop.type\"\n [value]=\"prop.value\"\n ></c8y-asset-properties-item>\n </span>\n </li>\n </ul>\n </ng-container>\n <!--\n <ng-container *ngSwitchCase=\"'boolean'\">\n <input type=\"checkbox\" [checked]=\"value\" [disabled]=\"true\" />\n </ng-container>\n -->\n <ng-container *ngSwitchCase=\"type === 'number' || type === 'boolean' ? type : ''\">\n <p class=\"text-truncate\" title=\"{{ value != null ? value : ('Undefined' | translate) }}\">\n {{ value != null ? value : ('Undefined' | translate) }}\n </p>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <p class=\"text-truncate\" title=\"{{ (value | translate) || ('Undefined' | translate) }}\">\n {{ (value | translate) || ('Undefined' | translate) }}\n </p>\n </ng-container>\n</ng-container>\n<formly-form *ngIf=\"isEdit\" [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n","function isFullScreenEnabled(element) {\n const doc: any = element;\n return !!(\n doc.fullscreenElement ||\n doc.mozFullScreenElement ||\n doc.webkitFullscreenElement ||\n doc.msFullscreenElement\n );\n}\n\nexport function toggleFullscreen(element) {\n const elem = element as any;\n const doc = element as any;\n if (!isFullScreenEnabled(element)) {\n if (elem.requestFullscreen) {\n elem.requestFullscreen();\n } else if (elem.msRequestFullscreen) {\n elem.msRequestFullscreen();\n } else if (elem.mozRequestFullScreen) {\n elem.mozRequestFullScreen();\n } else if (elem.webkitRequestFullscreen) {\n elem.webkitRequestFullscreen((Element as any).ALLOW_KEYBOARD_INPUT);\n }\n } else if (doc.exitFullscreen) {\n doc.exitFullscreen();\n } else if (doc.msExitFullscreen) {\n doc.msExitFullscreen();\n } else if (doc.mozCancelFullScreen) {\n doc.mozCancelFullScreen();\n } else if (doc.webkitExitFullscreen) {\n doc.webkitExitFullscreen();\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport * as L from 'leaflet';\nimport {\n MapComponent,\n MapConfig,\n MapService,\n PositionManagedObject,\n defaultMapConfig,\n getC8yMarker\n} from '@c8y/ngx-components/map';\nimport { FormArray, FormGroup } from '@angular/forms';\nimport { IManagedObject } from '@c8y/client';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { toggleFullscreen } from '../fullscreen.util';\nimport { isNumber } from 'lodash-es';\n\n// Düsseldorf\nexport const defaultMapLocation = {\n lat: defaultMapConfig.center[0],\n lng: defaultMapConfig.center[1]\n} as const;\n\n@Component({\n selector: 'c8y-asset-location',\n templateUrl: './asset-location.component.html'\n})\nexport class AssetLocationComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild(MapComponent)\n mapView: MapComponent;\n @Input() isEdit: boolean;\n @Input() locationMO: IManagedObject;\n @Input() form: FormGroup;\n config: MapConfig = {\n center: defaultMapConfig.center,\n zoomLevel: 13,\n color: 'green',\n icon: 'c8y-icon-location'\n };\n assets: PositionManagedObject;\n isMarkerDraggable = false;\n isMapClickable = false;\n dragListener: L.LeafletEventHandlerFn;\n formSubscription: Subscription;\n showMap = true;\n\n constructor(\n private activatedRouter: ActivatedRoute,\n private mapService: MapService\n ) {}\n\n async ngOnInit() {\n const leaflet = await this.mapService.getLeaflet();\n if (leaflet) {\n const { contextData } =\n !this.activatedRouter.parent || this.activatedRouter.snapshot.data.context\n ? this.activatedRouter.snapshot.data\n : this.activatedRouter.parent.snapshot.data;\n this.assets = contextData ? contextData : this.locationMO;\n if (this.assets.c8y_Position.lat && this.assets.c8y_Position.lng)\n this.config.center = [this.assets.c8y_Position.lat, this.assets.c8y_Position.lng];\n this.setView(this.assets.c8y_Position.lat, this.assets.c8y_Position.lng);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.isEdit?.currentValue) {\n this.showMap = true;\n this.isMarkerDraggable = true;\n this.isMapClickable = true;\n queueMicrotask(() => this.mapView?.map.invalidateSize());\n this.mapView?.map.on('click', event => {\n this.onClickOfMap(event);\n this.updateMarker(event.latlng.lat, event.latlng.lng);\n });\n this.formSubscription = this.form?.valueChanges.subscribe(value => {\n this.updateMarker(value.c8y_Position.lat, value.c8y_Position.lng);\n this.setView(value.c8y_Position.lat, value.c8y_Position.lng);\n });\n return;\n }\n if (!changes.isEdit?.currentValue) {\n const isAnyValueMissing = this.checkIfAnyValueIsMissing(\n this.locationMO?.c8y_Position.lat,\n this.locationMO?.c8y_Position.lng\n );\n if (isAnyValueMissing) {\n this.showMap = false;\n return;\n }\n this.isMarkerDraggable = false;\n this.isMapClickable = false;\n this.updateMarker(this.locationMO?.c8y_Position.lat, this.locationMO?.c8y_Position.lng);\n this.setView(this.locationMO?.c8y_Position.lat, this.locationMO?.c8y_Position.lng);\n }\n }\n\n ngOnDestroy() {\n this.formSubscription?.unsubscribe();\n if (this.mapView?.markers && this.dragListener) {\n this.mapView?.markers.forEach(marker => {\n marker.off('drag', this.dragListener);\n });\n }\n }\n\n /**\n * This command is used to prefill the latitude and longitude values in the form when the marker is dragged.\n */\n onMarkerDrag(event: L.LeafletEvent) {\n if (this.form) {\n const properties = this.form.get('c8y_Position') as FormArray;\n properties?.get('lat').patchValue(event.target._latlng.lat);\n properties?.get('lng').patchValue(event.target._latlng.lng);\n }\n }\n\n /**\n * This method is used to update the marker with the specified values and if any one of the values is not availble, sets\n * showWarning to true.\n * @param latitude - The latitude of the marker\n * @param longitude - The longitude of the marker\n */\n updateMarker(latitude: number, longitude: number) {\n const isAnyValueMissing = this.checkIfAnyValueIsMissing(latitude, longitude);\n if (!isAnyValueMissing) {\n [latitude, longitude] = this.setLatLngValues(latitude, longitude);\n const asset: any = {\n c8y_Position: {\n latitude,\n longitude\n }\n };\n\n if (this.mapView) {\n const icon = this.mapView.getAssetIcon(this.assets);\n const leafletMarker = this.mapView.leaflet.marker([latitude, longitude], {\n icon: icon,\n draggable: this.isMarkerDraggable\n });\n if (this.isMarkerDraggable) {\n this.dragListener = event => {\n this.onMarkerDrag(event);\n };\n leafletMarker.on('dragend', this.dragListener);\n }\n this.mapView.clearMarkers();\n const marker = getC8yMarker(leafletMarker, asset);\n this.mapView.addMarkerToMap(marker);\n this.setView(latitude, longitude);\n }\n return;\n }\n this.mapView.clearMarkers();\n }\n\n /**\n * This command is used to prefill the latitude and longitude values in the form on click of map.\n */\n onClickOfMap(event: L.LeafletMouseEvent) {\n if (this.form) {\n const properties = this.form.get('c8y_Position') as FormArray;\n properties?.get('lat').patchValue(event.latlng.lat);\n properties?.get('lng').patchValue(event.latlng.lng);\n this.form.markAsDirty();\n }\n }\n\n /**\n * Used to enable full screen of the map.\n */\n enableFullscreen() {\n toggleFullscreen(this.mapView.mapElement.nativeElement);\n }\n\n /**\n * Checks if any one of the values i.e., latitude/longitude is undefined or null.\n * @param latitude Latitude value of the position\n * @param longitude Longitude value of the position\n * @returns returns true if any one of the values are both the values are missing else it returns false.\n */\n checkIfAnyValueIsMissing(latitude: number, longitude: number) {\n return this.isNullOrUndefined(latitude) || this.isNullOrUndefined(longitude);\n }\n\n /**\n * Sets the view of the map based on the position of marker.\n * @param latitude - Latitude of the marker\n * @param longitude Longitude of the marker\n */\n setView(latitude: number, longitude: number) {\n if (isNumber(latitude) && isNumber(longitude) && this.mapView) {\n [latitude, longitude] = this.setLatLngValues(latitude, longitude);\n this.config.center = [latitude, longitude];\n this.mapView.center();\n }\n }\n\n setLatLngValues(latitude: number, longitude: number): [number, number] {\n latitude = this.isNullOrUndefined(latitude) ? defaultMapLocation.lat : latitude;\n longitude = this.isNullOrUndefined(longitude) ? defaultMapLocation.lng : longitude;\n return [latitude, longitude];\n }\n\n private isNullOrUndefined(value): boolean {\n return value === null || value === undefined;\n }\n}\n","<div [hidden]=\"!showMap\">\n <div class=\"row\">\n <button\n class=\"btn btn-link pull-right\"\n style=\"margin-right: 12px\"\n title=\"Full screen\"\n type=\"button\"\n data-cy=\"asset-location-full-screen\"\n (click)=\"enableFullscreen()\"\n >\n <i c8yIcon=\"expand\"></i>\n </button>\n </div>\n <div style=\"width: 100%; height: 400px\">\n <c8y-map\n #map\n [assets]=\"assets\"\n [config]=\"config\"\n ></c8y-map>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport {\n IManagedObject,\n IManagedObjectBinary,\n InventoryBinaryService,\n InventoryService\n} from '@c8y/client';\nimport { AlertService, AssetTypesRealtimeService, gettext } from '@c8y/ngx-components';\nimport { AssetPropertiesItem } from './asset-properties.model';\nimport { JSONSchema7 } from 'json-schema';\nimport { sortBy, toPairs, fromPairs, find } from 'lodash-es';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'c8y-asset-properties',\n templateUrl: './asset-properties.component.html'\n})\nexport class AssetPropertiesComponent implements OnChanges {\n @Input() asset: IManagedObject;\n @Output() assetChange = new EventEmitter<IManagedObject>();\n\n @Input()\n properties: IManagedObject[] = [];\n\n assetType: IManagedObject;\n customProperties: AssetPropertiesItem[] = [];\n isEdit = false;\n isLoading = false;\n\n constructor(\n private assetTypes: AssetTypesRealtimeService,\n private inventory: InventoryService,\n private inventoryBinary: InventoryBinaryService,\n private alert: AlertService\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.asset) {\n // Back button handling, as component is not destroyed\n this.assetType = undefined;\n this.customProperties = [];\n this.loadAsset();\n }\n }\n\n async loadAsset() {\n this.isLoading = true;\n const assetType$ = this.assetTypes.getAssetTypeByName$(this.asset.type);\n this.assetType = await firstValueFrom(assetType$);\n try {\n this.properties = this.keepOrder(\n this.assetType?.c8y_IsAssetType?.properties,\n this.properties\n );\n } catch (ex) {\n console.warn(ex);\n }\n this.customProperties = await this.resolveCustomProperties(this.properties);\n this.isLoading = false;\n }\n\n async resolveCustomProperties(managedObjects: IManagedObject[]) {\n const properties = [];\n for (const mo of managedObjects) {\n if (mo.c8y_JsonSchema) {\n const [item] = await this.parseItem(mo, mo.c8y_JsonSchema.properties, this.asset);\n this.setItemRequired(item, mo);\n properties.push(item);\n }\n }\n return properties;\n }\n\n deleteTitleFromMOJsonSchema(mo: IManagedObject) {\n const schemaProperties = mo?.c8y_JsonSchema?.properties;\n const property = Object.keys(schemaProperties || {})[0];\n delete (mo?.c8y_JsonSchema?.properties[property] || {}).title;\n }\n\n /**\n * This method is used to order the complex properties in the order specified by the user in asset properties screen.\n * @param mo - Managed object of the complex property associated with the asset.\n */\n orderComplexProperties(mo: IManagedObject) {\n const complexProperties = mo.c8y_JsonSchema.properties[mo.name]?.['properties'];\n const keyValuesArray = toPairs(complexProperties);\n const orderedProperties = sortBy(keyValuesArray, ([, value]) => value.order);\n mo.c8y_JsonSchema.properties[mo.name]['properties'] = fromPairs(orderedProperties);\n }\n\n async parseItem(mo: IManagedObject, properties, asset): Promise<AssetPropertiesItem[]> {\n if (!asset) {\n return [];\n }\n const keys = Object.keys(properties);\n const items: AssetPropertiesItem[] = [];\n\n for (const key of keys) {\n const type = properties[key].type;\n const title = properties[key].title;\n let value = this.getTypeValue(type, asset[key]);\n let file;\n if (type === 'file' && value) {\n const fileId = typeof value === 'object' ? value[0]?.file?.id : value;\n const fileData = await this.getFileManagedObject(fileId);\n file = fileData;\n value = [fileData];\n } else if (type === 'date') {\n const valueDate = new Date(value);\n value = !isNaN(valueDate.getTime()) ? valueDate : '';\n }\n if (type === 'object') {\n // remove title to avoid excessive property name on asset complex properties form\n this.deleteTitleFromMOJsonSchema(mo);\n this.orderComplexProperties(mo);\n if (!value) {\n value = {};\n for (const prop in properties[key].properties) {\n value[prop] = this.getTypeValue(properties[key].properties[prop].type, null);\n }\n }\n }\n items.push({\n key,\n value,\n label: title || mo.label,\n type,\n description: mo.description,\n file,\n complex:\n type === 'object'\n ? await this.parseItem(mo, properties[key].properties, value)\n : undefined,\n isEdit: false,\n jsonSchema: mo.c8y_JsonSchema\n });\n }\n return items;\n }\n\n toggleEdit(prop: AssetPropertiesItem) {\n prop.isEdit = !prop.isEdit;\n }\n\n async getFileManagedObject(id: string) {\n try {\n const { data } = await this.inventory.detail(id);\n return data;\n } catch (ex) {\n this.alert.addServerFailure(ex);\n }\n }\n\n async save(propertyValue, prop: AssetPropertiesItem): Promise<void> {\n try {\n if (prop.type === 'object') {\n this.updateUndefinedToPropTypeValue(prop, propertyValue[prop.key]);\n } else {\n this.updateUndefinedToPropTypeValue(prop, propertyValue);\n }\n\n propertyValue = await this.uploadFiles(propertyValue, prop.value);\n\n // Avoid making a PUT request containing just the id, as response body might be incomplete\n const hasValues = Object.values(propertyValue).some(value => value !== undefined);\n if (!hasValues) {\n this.toggleEdit(prop);\n return;\n }\n const updatedAsset = { id: this.asset.id, ...propertyValue };\n const { data } = await this.inventory.update(updatedAsset);\n this.toggleEdit(prop);\n this.asset = data;\n this.assetChange.emit(this.asset);\n await this.loadAsset();\n this.alert.success(gettext('Asset properties updated.'));\n } catch (ex) {\n this.alert.addServerFailure(ex);\n this.toggleEdit(prop);\n }\n }\n\n private updateUndefinedToPropTypeValue(prop, propertyValue) {\n for (const [key, value] of Object.entries(propertyValue)) {\n const property = prop.complex ? find(prop.complex, { key: key }) : prop;\n propertyValue[key] = this.getTypeValue(property.type, value);\n }\n }\n\n private getTypeValue(propType: string, value) {\n if (value || (propType === 'boolean' && value !== undefined)) return value;\n\n switch (propType) {\n case 'number':\n case 'boolean':\n return value || value === 0 ? value : null;\n\n default:\n return '';\n }\n }\n\n private keepOrder(correctOrderedIds, properties) {\n const orderedProperties = correctOrderedIds.map(({ id }) => {\n const foundProperty = properties.find(property => property.id === id);\n if (!foundProperty) {\n throw new Error('Custom property mismatch');\n }\n return foundProperty;\n });\n return orderedProperties;\n }\n\n private async uploadFiles(model: object, moId?: IManagedObjectBinary[]): Promise<object> {\n const keys = Object.keys(model);\n for (const key of keys) {\n if (Array.isArray(model[key]) && model[key][0]?.file instanceof File) {\n try {\n const upload = await this.inventoryBinary.create(model[key][0].file);\n try {\n if (moId && moId[0]) {\n await this.inventory.childAdditionsRemove(moId[0], this.asset.id);\n }\n } catch (ex) {\n throw ex;\n }\n model[key] = upload.data.id;\n await this.inventory.childAdditionsAdd(upload.data.id, this.asset.id);\n } catch (ex) {\n throw ex;\n }\n }\n }\n return model;\n }\n\n private setItemRequired(item: AssetPropertiesItem, mo: IManagedObject): void {\n const isAssetPropertyRequired = !!this.assetType?.c8y_IsAssetType?.properties.find(\n p => p.id === mo.id\n )?.isRequired;\n if (!isAssetPropertyRequired) {\n return;\n }\n const isComplexProperty = !!item?.complex?.length;\n if (isComplexProperty) {\n const complexProperty = item.jsonSchema?.properties?.[mo.c8y_JsonSchema.key] as JSONSchema7;\n complexProperty.required = item.complex.map(({ key }) => key);\n } else {\n item.jsonSchema.required = [mo.c8y_JsonSchema.key];\n }\n }\n}\n","<ng-container>\n <div class=\"card-header bg-inherit separator sticky-top\">\n <h1\n class=\"card-title p-t-4 p-b-4\"\n ngNonBindable\n translate\n [translateParams]=\"{ label: assetType?.label || '' | translate }\"\n >\n {{ label }} properties\n </h1>\n </div>\n <div class=\"card-block\">\n <div\n class=\"text-center\"\n *ngIf=\"isLoading\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div\n class=\"card m-b-8\"\n title=\"{{ prop.description | translate }}\"\n *ngFor=\"let prop of customProperties\"\n [ngClass]=\"{ 'card-highlight': prop.isEdit }\"\n >\n <div\n class=\"card-block\"\n [ngClass]=\"{ 'p-b-0': prop.isEdit }\"\n >\n <div\n class=\"d-flex p-b-8 a-i-center\"\n *ngIf=\"!prop.isEdit\"\n >\n <p\n class=\"text-medium text-truncate\"\n title=\"{{ prop?.label | translate }}\"\n >\n {{ prop?.label | translate }}\n </p>\n <button\n class=\"btn btn-dot m-l-auto text-12\"\n [attr.aria-label]=\"'Edit' | translate\"\n tooltip=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleEdit(prop)\"\n >\n <i c8yIcon=\"pencil\"></i>\n </button>\n </div>\n <c8y-asset-properties-item\n #assetProps\n [file]=\"prop.file\"\n [key]=\"prop.key\"\n [type]=\"prop.type\"\n [value]=\"prop.value\"\n [complex]=\"prop.complex\"\n [isEdit]=\"prop.isEdit\"\n [jsonSchema]=\"prop.jsonSchema\"\n ></c8y-asset-properties-item>\n <div *ngIf=\"prop.key === 'c8y_Position'\">\n <c8y-asset-location\n [locationMO]=\"asset\"\n [isEdit]=\"prop.isEdit\"\n [form]=\"assetProps.form\"\n ></c8y-asset-location>\n </div>\n </div>\n <div\n class=\"card-footer p-t-0\"\n *ngIf=\"prop.isEdit\"\n >\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"toggleEdit(prop)\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"!assetProps?.form?.valid || !assetProps?.form?.dirty \"\n (click)=\"save(assetProps.form.value, prop)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components';\n\nexport const SUB_ASSETS_CONFIG = new InjectionToken<SubAssetsConfig>('SubAssetsConfig');\n/**\n * Configuration object of the SubAssetsModule.\n */\nexport interface SubAssetsConfig {\n /**\n * Allows to show or hide the \"Add group\" button.\n */\n showAddGroupBtn?: boolean;\n /**\n * Allows to show or hide the \"Assign devices\" button.\n */\n showAssignDeviceBtn?: boolean;\n /**\n * Allows to change the displayed text in the title and breadcrumbs.\n */\n name?: string;\n /**\n * Allows to set the base query that is responsible for retrieving sub-assets.\n *\n * **Example**\n *\n * ```typescript\n * SubAssetsModule.config({\n * baseQuery: { __has: 'c8y_IsAsset' }\n * })\n * ```\n * Check QueriesUtil service from '@c8y/client' to see more examples.\n */\n baseQuery?: object;\n /**\n * Allows to show or hide asset details.\n */\n showDetails?: boolean;\n /**\n * Allows to show or hide the asset properties.\n */\n showProperties?: boolean;\n /**\n * Allows to show or hide the groups context help.\n */\n showGroupsContextHelp?: boolean;\n}\n\nexport const defaultModuleConfig: SubAssetsConfig = {\n showAddGroupBtn: true,\n showAssignDeviceBtn: true,\n name: gettext('Groups'),\n baseQuery: {},\n showDetails: true,\n showProperties: true,\n showGroupsContextHelp: true\n};\n","import {\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { IManagedObject, InventoryService, SmartGroupsService } from '@c8y/client';\nimport {\n AlertService,\n AssetTypesRealtimeService,\n Column,\n CustomColumn,\n ModalService,\n Status,\n gettext\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { DeviceListExtensionService } from '@c8y/ngx-components/device-list';\nimport { pick } from 'lodash-es';\nimport { Subject, firstValueFrom } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED } from './shared/sub-assets.model';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\n\n@Component({\n selector: 'c8y-group-info',\n templateUrl: './group-info.component.html'\n})\nexport class GroupInfoComponent implements OnDestroy, OnChanges {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_SUB_ASSETS_SHARED;\n @Input() group: IManagedObject;\n @Output() groupChange = new EventEmitter<IManagedObject>();\n canEdit: boolean;\n groupIcon: SupportedIconsSuggestions;\n smartGroupFilter: string;\n label: string;\n columnsWithFilter: Column[];\n\n groupInfoModel: {\n name: string;\n c8y_Notes: string;\n } = {\n name: '',\n c8y_Notes: ''\n };\n\n filterMsg = gettext(\n 'Smart groups are groups dynamically constructed based on filtering criteria.'\n );\n private readonly GROUP_UPDATED_MSG = gettext('Group updated.');\n private allDevicesGridColumns: Column[];\n private destroyed$ = new Subject<void>();\n\n constructor(\n private inventory: InventoryService,\n private subAssetsService: SubAssetsService,\n private smartGroupsService: SmartGroupsService,\n private alertService: AlertService,\n private modalService: ModalService,\n private assetNodeService: AssetNodeService,\n private assetType: AssetTypesRealtimeService,\n private deviceListExtensionService: DeviceListExtensionService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\n ) {\n this.deviceListExtensionService.items$.pipe(takeUntil(this.destroyed$)).subscribe(columns => {\n this.allDevicesGridColumns = columns;\n });\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.group) {\n const { name, c8y_Notes } = this.group;\n this.groupInfoModel = { name, c8y_Notes };\n this.canEdit = await this.subAssetsService.canEditGroup(this.group);\n this.groupIcon = await this.assetNodeService.icon(this.group);\n this.smartGroupFilter = this.group.c8y_DeviceQueryString;\n this.columnsWithFilter = this.group.c8y_DeviceColumnsConfig?.columns\n ?.filter(col => !!col.filter)\n .map(col => ({\n ...col,\n externalFilterQuery: col.filter.externalFilterQuery,\n ...this.withPropsFromGridColumn(col)\n }));\n this.label = this.assetNodeService.isAsset(this.group)\n ? (await firstValueFrom(this.assetType.getAssetTypeByName$(this.group.type))).label\n : gettext('Group');\n }\n }\n\n isSmartGroup() {\n return this.subAssetsService.isSmartGroup(this.group);\n }\n\n async update(partialGroup: Partial<IManagedObject>) {\n try {\n const isSmartGroup: boolean = this.subAssetsService.isSmartGroup(this.group);\n const updatedGroup = isSmartGroup\n ? await this.updateSmartGroup(partialGroup)\n : await this.updateGroup(partialGroup);\n\n this.group = updatedGroup;\n this.groupChange.emit(this.group);\n this.alertService.success(this.GROUP_UPDATED_MSG);\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n private withPropsFromGridColumn(column: Column): Partial<Column> {\n if (column.custom) {\n const col = new CustomColumn();\n return {\n filteringConfig: col.filteringConfig\n };\n } else {\n return pick(\n this.allDevicesGridColumns.find(col => col.name === column.name),\n 'filteringConfig',\n 'header'\n );\n }\n }\n\n private async updateGroup(partialGroup: Partial<IManagedObject>) {\n const { id } = this.group;\n const group: Partial<IManagedObject> = { id, ...partialGroup };\n\n return (await this.inventory.update(group)).data;\n }\n\n private async updateSmartGroup(partialGroup: Partial<IManagedObject>) {\n const { id } = this.group;\n const { c8y_DeviceQueryString } = partialGroup;\n const group: Partial<IManagedObject> = { id, ...partialGroup };\n\n if (!c8y_DeviceQueryString) {\n return (await this.smartGroupsService.update(group)).data;\n }\n\n try {\n const modalBody = gettext(\n 'You are about to change the smart group filter. Do you want to proceed?'\n );\n const title = gettext('Smart group filter');\n await this.modalService.confirm(title, modalBody, Status.WARNING, {\n ok: gettext('Save'),\n cancel: gettext('Cancel')\n });\n\n await this.isQueryExecutable(c8y_DeviceQueryString);\n } catch (error) {\n throw Error(error);\n }\n return (await this.smartGroupsService.update(group)).data;\n }\n\n private async isQueryExecutable(query: string) {\n try {\n const filter = { q: query };\n await this.inventory.list(filter);\n } catch (error) {\n throw Error(error);\n }\n }\n}\n","<div class=\"bg-level-1 separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <div class=\"content-flex-70\">\n <div class=\"text-center col-1\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n [c8yIcon]=\"groupIcon\"\n ></i>\n <p>\n <small\n class=\"label label-info\"\n *ngIf=\"group.c8y_IsDynamicGroup\"\n >\n {{ 'Smart group' | translate }}\n </small>\n <small\n class=\"label label-info text-truncate d-inline-block\"\n title=\"{{ label | translate }}\"\n *ngIf=\"!group.c8y_IsDynamicGroup && !group.com_cumulocity_model_Agent\"\n >\n {{ label | translate }}\n </small>\n <small\n class=\"label label-info\"\n *ngIf=\"group.com_cumulocity_model_Agent\"\n >\n {{ 'Remote group' | translate }}\n </small>\n </p>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-9\">\n <form #groupNameForm=\"ngForm\">\n <c8y-form-group class=\"form-group-lg m-b-0\">\n <label\n class=\"sr-only\"\n for=\"groupName\"\n translate\n >\n Name\n </label>\n <p\n class=\"form-control-static\"\n *ngIf=\"!canEdit\"\n >\n {{ groupInfoModel.name }}\n </p>\n <div\n class=\"input-group input-group-lg input-group-editable\"\n *ngIf=\"canEdit\"\n >\n <input\n class=\"form-control\"\n title=\"{{ groupInfoModel.name }}\"\n id=\"groupName\"\n placeholder=\"{{ 'e.g. My group' | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n [(ngModel)]=\"groupInfoModel.name\"\n size=\"{{ groupInfoModel.name.length + 2 }}\"\n maxlength=\"254\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.GROUP_INFO.COMPONENTS.GROUP_INFO,\n action: PRODUCT_EXPERIENCE.GROUP_INFO.ACTIONS.EDIT,\n property: PRODUCT_EXPERIENCE.GROUP_INFO.PROPERTIES.NAME\n }\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n [disabled]=\"groupNameForm.form.invalid\"\n (click)=\"\n update({ name: groupInfoModel.name }); groupNameForm.form.markAsPristine()\n \"\n [actionName]=\"'groupInfo:EditedNameSaved'\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.GROUP_INFO.COMPONENTS.GROUP_INFO,\n result: PRODUCT_EXPERIENCE.GROUP_INFO.RESULTS.EDIT_SAVED,\n property: PRODUCT_EXPERIENCE.GROUP_INFO.PROPERTIES.NAME\n }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </form>\n <form #groupDescriptionForm=\"ngForm\">\n <label\n class=\"sr-only\"\n for=\"description\"\n translate\n >\n Description\n </label>\n <p\n class=\"form-control-static\"\n *ngIf=\"!canEdit\"\n >\n {{ groupInfoModel.c8y_Notes }}\n </p>\n <div\n class=\"input-group input-group-editable\"\n *ngIf=\"canEdit\"\n >\n <textarea\n class=\"form-control no-resize\"\n title=\"{{\n groupInfoModel.c8y_Notes\n ? groupInfoModel.c8y_Notes\n : ('e.g. My description' | translate)\n }}\"\n id=\"description\"\n placeholder=\"{{ 'e.g. My description' | translate }}\"\n name=\"description\"\n c8y-textarea-autoresize\n [(ngModel)]=\"groupInfoModel.c8y_Notes\"\n cols=\"{{ groupInfoModel.c8y_Notes ? groupInfoModel.c8y_Notes.length : 25 }}\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.GROUP_INFO.COMPONENTS.GROUP_INFO,\n action: PRODUCT_EXPERIENCE.GROUP_INFO.ACTIONS.EDIT,\n property: PRODUCT_EXPERIENCE.GROUP_INFO.PROPERTIES.DESCRIPTION\n }\"\n ></textarea>\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n [disabled]=\"groupDescriptionForm.form.invalid\"\n (click)=\"\n update({ c8y_Notes: groupInfoModel.c8y_Notes });\n groupDescriptionForm.form.markAsPristine()\n \"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.GROUP_INFO.COMPONENTS.GROUP_INFO,\n result: PRODUCT_EXPERIENCE.GROUP_INFO.RESULTS.EDIT_SAVED,\n property: PRODUCT_EXPERIENCE.GROUP_INFO.PROPERTIES.DESCRIPTION\n }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n\n <div\n class=\"dropdown m-t-8\"\n placement=\"bottom left\"\n container=\"body\"\n type=\"button\"\n dropdown\n *ngIf=\"isSmartGroup()\"\n #ddFilters=\"bs-dropdown\"\n [insideClick]=\"true\"\n >\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Smart group filters' | translate }}\"\n aria-haspopup=\"true\"\n dropdownToggle\n data-cy=\"c8y-data-grid--filters\"\n [disabled]=\"columnsWithFilter?.length === 0\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"filter\"\n ></i>\n <span>{{ 'Smart group filters' | translate }}</span>\n <span\n class=\"p-relative p-l-4 p-r-16\"\n *ngIf=\"columnsWithFilter?.length > 0\"\n >\n <span class=\"badge badge-system p-absolute\" data-cy=\"group-info--filter-number\">\n {{ columnsWithFilter?.length }}\n </span>\n </span>\n </button>\n <button\n class=\"btn-help btn-help--sm m-r-4\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ filterMsg | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n data-cy=\"group-info--help-button\"\n container=\"body\"\n type=\"button\"\n ></button>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"data-grid__dropdown bg-level-0\">\n <ul class=\"list-unstyled m-0\">\n <li\n *ngFor=\"let column of columnsWithFilter; let last = last\"\n [ngClass]=\"{ 'separator-bottom': !last }\"\n >\n <ng-container>\n <div\n class=\"dropdown-header sticky-top text-truncate no-border-top p-b-0\"\n title=\"{{ (column.header | translate) || column.name }}\"\n >\n <label>\n {{ (column.header | translate) || column.name }}\n </label>\n </div>\n <div\n class=\"list-group-item borderless d-flex d-col\"\n *ngFor=\"\n let groupedFilterChips of column\n | mapToFilterChips\n | async\n | groupedFilterChips;\n let first = first\n \"\n [ngClass]=\"{ 'p-t-0': first }\"\n >\n <p\n class=\"small p-b-4\"\n *ngIf=\"groupedFilterChips.label\"\n >\n {{ groupedFilterChips.label | translate }}\n </p>\n <div class=\"d-flex a-i-center gap-4 flex-wrap\">\n <span\n class=\"tag tag--info chip\"\n data-cy=\"group-info--grouped-filter-chip\"\n *ngFor=\"let chip of groupedFilterChips.chips\"\n >\n {{ chip.displayValue | translate }}\n </span>\n </div>\n </div>\n </ng-container>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex-grow\">\n <ul class=\"list-unstyled small\">\n <li class=\"p-t-4 p-b-4 d-flex separator-top-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Created' | translate }}</label>\n <span class=\"m-l-auto\">{{ group.creationTime | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Last updated' | translate }}</label>\n <span class=\"m-l-auto\">{{ group.lastUpdated | c8yDate }}</span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\"\n *ngIf=\"group.com_cumulocity_model_Agent\"\n >\n <label class=\"small m-b-0 m-r-8\">{{ 'Status' | translate }}</label>\n <span\n class=\"m-l-auto\"\n *ngIf=\"group.c8y_BrokerSource\"\n >\n {{ group.c8y_BrokerSource.status }}\n </span>\n <span\n class=\"m-l-auto\"\n *ngIf=\"!group.c8y_BrokerSource\"\n >\n {{ 'Offline' | translate }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Column, Permissions } from '@c8y/ngx-components';\nimport { delay, Subject, takeUntil, tap } from 'rxjs';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\n\n@Component({\n selector: 'c8y-groups-name',\n templateUrl: './groups.component.html'\n})\nexport class GroupsComponent implements OnInit, OnDestroy {\n private SHOW_ADD_GROUP = 'showAddGroup';\n showAddGroup = signal(false);\n refresh: EventEmitter<void> = new EventEmitter();\n filterable = true;\n sortable = true;\n shouldDisableAddGroup = false;\n columns: Column[] = [];\n destroyed: Subject<void> = new Subject();\n constructor(\n private permissions: Permissions,\n private subAssetsService: SubAssetsService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig,\n private activeRoute: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit() {\n if (\n !this.permissions.hasAnyRole([\n Permissions.ROLE_INVENTORY_READ,\n Permissions.ROLE_MANAGED_OBJECT_READ\n ])\n ) {\n this.sortable = false;\n }\n this.shouldDisableAddGroup = !this.subAssetsService.canCreateGroup();\n\n this.columns = this.subAssetsService\n .getDefaultColumns()\n .filter(column => column.name !== 'alarms');\n\n this.activeRoute.queryParamMap\n .pipe(\n delay(50), // It allows seeing drawer animation.\n takeUntil(this.destroyed),\n tap(params => this.showAddGroup.set(params.has(this.SHOW_ADD_GROUP)))\n )\n .subscribe();\n }\n\n onAddGroupClick() {\n this.showAddGroup.set(!this.showAddGroup());\n this.handleShowAddGroupQueryParam();\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n /**\n * Updates the query parameter `showAddGroup` based on the value of `showAddGroup` property.\n * - If `showAddGroup` is `true`, adds `showAddGroup=true` to the query parameters.\n * - If `showAddGroup` is `false`, removes `showAddGroup` from the query parameters.\n */\n private handleShowAddGroupQueryParam() {\n const currentParams = { ...this.activeRoute.snapshot.queryParams };\n\n if (this.showAddGroup()) {\n currentParams[this.SHOW_ADD_GROUP] = true;\n } else {\n delete currentParams[this.SHOW_ADD_GROUP];\n }\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: currentParams\n });\n }\n}\n","<c8y-title>\n {{ moduleConfig.name | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-group-open\"\n label=\"{{ moduleConfig.name | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"moduleConfig.showAddGroupBtn\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"onAddGroupClick()\"\n [disabled]=\"shouldDisableAddGroup\"\n [attr.data-cy]=\"'groups-add-group-button'\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n {{ 'Add group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/grouping-devices/#grouping-devices\"\n *ngIf=\"moduleConfig.showGroupsContextHelp\"\n></c8y-help>\n\n<c8y-add-group\n [refresh]=\"refresh\"\n (onCancel)=\"onAddGroupClick()\"\n *ngIf=\"showAddGroup()\"\n></c8y-add-group>\n<c8y-sub-assets-grid\n class=\"content-fullpage d-flex d-col border-top border-bottom\"\n [refresh]=\"refresh\"\n [filterable]=\"filterable\"\n [sortable]=\"sortable\"\n [columns]=\"columns\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n></c8y-sub-assets-grid>\n","import { Component, EventEmitter, Inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { IManagedObject } from '@c8y/client';\nimport { ContextRouteService, DisplayOptions, Permissions } from '@c8y/ngx-components';\nimport { delay, Subject, takeUntil, tap } from 'rxjs';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\n\n@Component({\n selector: 'c8y-sub-assets',\n templateUrl: './sub-assets.component.html'\n})\nexport class SubAssetsComponent implements OnInit, OnDestroy {\n private SHOW_ADD_GROUP = 'showAddGroup';\n group: IManagedObject;\n currentGroupId: string;\n showChildrenForDevice: IManagedObject;\n title: string;\n toggle = false;\n showAddGroup = signal(false);\n showAssignDevices = false;\n requestInProgress: boolean;\n showAssignChildDevices = false;\n refresh: EventEmitter<any> = new EventEmitter();\n filterable = true;\n shouldDisableAddGroup = false;\n shouldDisableAssignDevices = false;\n shouldShowAssetsProperties = false;\n displayOptions: DisplayOptions;\n customProperties: IManagedObject[] = [];\n isSmartGroup = false;\n destroyed: Subject<void> = new Subject();\n\n constructor(\n private activeRoute: ActivatedRoute,\n private subAssetsService: SubAssetsService,\n private contextRouteService: ContextRouteService,\n private permissionsService: Permissions,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig,\n private router: Router\n ) {\n this.activeRoute.parent.data.pipe(takeUntil(this.destroyed)).subscribe(({ contextData }) => {\n this.init(contextData);\n });\n }\n\n async ngOnInit() {\n this.displayOptions = {\n striped: true,\n bordered: false,\n gridHeader: true,\n filter: true,\n hover: true\n };\n this.isSmartGroup = this.subAssetsService.isSmartGroup(this.group);\n this.activeRoute.queryParamMap\n .pipe(\n delay(50), // It allows seeing drawer animation.\n takeUntil(this.destroyed),\n tap(params => this.showAddGroup.set(params.has(this.SHOW_ADD_GROUP)))\n )\n .subscribe();\n }\n\n async init(contextData) {\n this.group = { ...contextData };\n this.title = this.group.name;\n this.currentGroupId = this.group.id;\n this.shouldDisableAddGroup = !(await this.permissionsService.canEdit(\n [\n Permissions.ROLE_INVENTORY_ADMIN,\n Permissions.ROLE_INVENTORY_CREATE,\n Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n Permissions.ROLE_MANAGED_OBJECT_CREATE\n ],\n this.group\n ));\n this.shouldDisableAssignDevices = !(await this.subAssetsService.canAssignDevice(this.group));\n this.customProperties = await this.subAssetsService.getCustomProperties(this.group);\n this.shouldShowAssetsProperties =\n this.moduleConfig.showProperties && this.customProperties.length > 0;\n }\n\n groupChange(group: IManagedObject): void {\n this.group = group;\n this.title = group.name;\n this.contextRouteService.setContext(this.activeRoute, group);\n this.contextRouteService.refreshContext();\n this.refresh.emit();\n }\n onAddGroupClick() {\n this.showAddGroup.set(!this.showAddGroup());\n this.handleShowAddGroupQueryParam();\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n /**\n * Updates the query parameter `showAddGroup` based on the value of `showAddGroup` property.\n * - If `showAddGroup` is `true`, adds `showAddGroup=true` to the query parameters.\n * - If `showAddGroup` is `false`, removes `showAddGroup` from the query parameters.\n */\n private handleShowAddGroupQueryParam() {\n const currentParams = { ...this.activeRoute.snapshot.queryParams };\n\n if (this.showAddGroup()) {\n currentParams[this.SHOW_ADD_GROUP] = true;\n } else {\n delete currentParams[this.SHOW_ADD_GROUP];\n }\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: currentParams\n });\n }\n}\n","<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"!isSmartGroup && moduleConfig.showAddGroupBtn\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"onAddGroupClick()\"\n [disabled]=\"shouldDisableAddGroup\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n <span translate>Add group</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"!isSmartGroup && moduleConfig.showAssignDeviceBtn\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Assign devices' | translate }}\"\n (click)=\"showAssignDevices = !showAssignDevices\"\n [disabled]=\"shouldDisableAssignDevices\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n <span translate>Assign devices</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n *ngIf=\"isSmartGroup; else assetsHelp\"\n src=\"/docs/device-management-application/grouping-devices/#using-smart-groups\"\n></c8y-help>\n\n<ng-template #assetsHelp>\n <c8y-help src=\"/docs/cockpit/managing-assets/#managing-assets\"></c8y-help>\n</ng-template>\n\n<div\n class=\"card content-fullpage\"\n [ngClass]=\"{\n 'card--grid grid__col--8-4--md grid__row--fit-auto': shouldShowAssetsProperties,\n 'd-flex d-col': !shouldShowAssetsProperties\n }\"\n>\n <c8y-group-info\n class=\"grid__col--fullspan\"\n *ngIf=\"moduleConfig.showDetails\"\n [group]=\"group\"\n (groupChange)=\"groupChange($event)\"\n ></c8y-group-info>\n <c8y-sub-assets-grid\n class=\"d-contents\"\n [refresh]=\"refresh\"\n [parent-group]=\"group\"\n [filterable]=\"filterable\"\n [displayOptions]=\"displayOptions\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n ></c8y-sub-assets-grid>\n <div\n class=\"inner-scroll bg-level-1\"\n *ngIf=\"shouldShowAssetsProperties\"\n >\n <c8y-asset-properties\n class=\"d-contents\"\n [properties]=\"customProperties\"\n [asset]=\"group\"\n (assetChange)=\"groupChange($event)\"\n ></c8y-asset-properties>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAddGroup() }\">\n <div class=\"bottom-drawer\">\n <c8y-add-group\n [currentGroupId]=\"currentGroupId\"\n [refresh]=\"refresh\"\n (onCancel)=\"onAddGroupClick()\"\n *ngIf=\"showAddGroup()\"\n ></c8y-add-group>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAssignDevices }\">\n <div class=\"bottom-drawer\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-devices\n class=\"d-contents\"\n (onCancel)=\"showAssignDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n (onShowChildDevices)=\"showAssignChildDevices = $event\"\n (selectedDevice)=\"showChildrenForDevice = $event\"\n *ngIf=\"showAssignDevices\"\n ></c8y-assign-devices>\n </div>\n </div>\n</div>\n\n<div [ngClass]=\"{ drawerOpen: showAssignChildDevices }\">\n <div class=\"bottom-drawer m-t-40\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-child-devices\n class=\"d-contents\"\n *ngIf=\"showAssignChildDevices\"\n (onCancel)=\"showAssignChildDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n [parentDevice]=\"showChildrenForDevice\"\n ></c8y-assign-child-devices>\n </div>\n </div>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n CoreModule,\n FilterMapperModule,\n gettext,\n hookRoute,\n ViewContext\n} from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { MapModule } from '@c8y/ngx-components/map';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { AddGroupModule } from './add-group/add-group.module';\nimport { AssetPropertiesItemComponent } from './asset-properties-item.component';\nimport { AssetPropertiesComponent } from './asset-properties.component';\nimport { AssetTypeCellRendererComponent } from '@c8y/ngx-components/data-grid-columns/asset-type';\nimport { DeleteAssetsModalComponent } from './delete-assets-modal/delete-assets-modal.component';\nimport { GroupInfoComponent } from './group-info.component';\nimport { GroupsComponent } from './groups.component';\nimport { AssetLocationComponent } from './location/asset-location.component';\nimport { SubAssetsGridComponent } from './sub-assets-grid.component';\nimport { SubAssetsComponent } from './sub-assets.component';\nimport { defaultModuleConfig, SubAssetsConfig, SUB_ASSETS_CONFIG } from './sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\nimport { UnassignModalComponent } from './unassign-assets-modal/unassign-modal.component';\nimport { SubAssetsGridsModule } from './sub-assets-grids.module';\n\n@NgModule({\n declarations: [\n SubAssetsComponent,\n GroupsComponent,\n GroupInfoComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent,\n AssetPropertiesComponent,\n AssetPropertiesItemComponent,\n AssetLocationComponent\n ],\n imports: [\n CoreModule,\n DeviceGridModule,\n AddGroupModule,\n PopoverModule,\n BsDropdownModule,\n TooltipModule,\n FilterMapperModule,\n MapModule,\n AssetTypeCellRendererComponent,\n SubAssetsGridsModule\n ],\n exports: [SubAssetsGridComponent, AssetLocationComponent],\n providers: [\n {\n provide: SUB_ASSETS_CONFIG,\n useValue: defaultModuleConfig\n },\n\n hookRoute([\n {\n context: ViewContext.Group,\n path: 'subassets',\n priority: 1000,\n icon: 'c8y-group-open',\n label: gettext('Subassets'),\n component: SubAssetsComponent,\n featureId: 'subassets'\n },\n {\n path: 'group',\n component: GroupsComponent\n }\n ]),\n SubAssetsService\n ]\n})\nexport class SubAssetsModule {\n static config(config: SubAssetsConfig = {}): ModuleWithProviders<SubAssetsModule> {\n return {\n ngModule: SubAssetsModule,\n providers: [\n {\n provide: SUB_ASSETS_CONFIG,\n useValue: { ...defaultModuleConfig, ...config }\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i2.SmartGroupGridConfigurationStrategy","i1.SubAssetsService","i5","i6","i7","i2.SubAssetsService","i5.SubAssetsGridComponent","i2.AddGroupService","i4.SubAssetsService","i8.AssignChildDevicesComponent","i5.AssetPropertiesItemComponent","i6.AssetLocationComponent","i8","takeUntil","i5.AddGroupComponent","i6.SubAssetsGridComponent","i7.AssignDevicesComponent","i9.GroupInfoComponent","i10.AssetPropertiesComponent"],"mappings":"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"}
|