@c8y/ngx-components 1018.0.82 → 1018.0.83
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/common/files.service.d.ts +1 -1
- package/core/drop-area/drop-area.component.d.ts +3 -1
- package/esm2020/core/common/bytes.pipe.mjs +3 -3
- package/esm2020/core/common/files.service.mjs +4 -4
- package/esm2020/core/drop-area/drop-area.component.mjs +16 -5
- package/esm2020/core/dynamic-forms/file/file.type.component.mjs +4 -3
- package/esm2020/core/dynamic-forms/json-schema/c8y-json-schema.service.mjs +12 -1
- package/esm2020/core/file-picker/file-picker.component.mjs +1 -1
- package/esm2020/ecosystem/shared/add-application.component.mjs +1 -1
- package/esm2020/ecosystem/shared/upload-archive.component.mjs +1 -1
- package/esm2020/protocol-opcua/opcua-server-config.component.mjs +1 -1
- package/esm2020/sub-assets/asset-properties-item.component.mjs +3 -3
- package/esm2020/trusted-certificates/add-trusted-certificate.component.mjs +1 -1
- package/esm2020/widgets/implementations/image/image-widget-config/image-widget-config.component.mjs +2 -2
- package/esm2020/widgets/implementations/markdown/markdown-widget-config/markdown-widget-config.component.mjs +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs +2 -2
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-opcua.mjs +1 -1
- package/fesm2015/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +2 -2
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-trusted-certificates.mjs +1 -1
- package/fesm2015/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-image.mjs +1 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-markdown.mjs +1 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +27 -11
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs +2 -2
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-protocol-opcua.mjs +1 -1
- package/fesm2020/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +2 -2
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-trusted-certificates.mjs +1 -1
- package/fesm2020/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-image.mjs +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-markdown.mjs +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +34 -11
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-sub-assets.mjs","sources":["../../sub-assets/shared/sub-assets.model.ts","../../sub-assets/add-group/add-group.service.ts","../../sub-assets/columns/asset-type.cell-renderer.component.ts","../../sub-assets/columns/asset-type.cell-renderer.component.html","../../sub-assets/columns/asset-type-grid-column.ts","../../sub-assets/sub-assets.model.ts","../../sub-assets/sub-assets.service.ts","../../sub-assets/add-group/add-group.component.ts","../../sub-assets/add-group/add-group.component.html","../../sub-assets/add-group/add-group.module.ts","../../sub-assets/asset-properties-item.component.ts","../../sub-assets/asset-properties-item.component.html","../../sub-assets/asset-properties.component.ts","../../sub-assets/asset-properties.component.html","../../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/assign-devices/assign-devices.component.ts","../../sub-assets/assign-devices/assign-devices.component.html","../../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 = {\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};\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, OnInit } from '@angular/core';\nimport { CellRendererContext, gettext } from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\n\n@Component({\n templateUrl: './asset-type.cell-renderer.component.html'\n})\nexport class AssetTypeCellRendererComponent implements OnInit {\n groupIcon: Promise<string>;\n isAnyGroup: boolean;\n isDevice: boolean;\n isAsset: boolean;\n iconTitle: string;\n constructor(public context: CellRendererContext, protected assetNodeService: AssetNodeService) {}\n\n async ngOnInit() {\n this.isAnyGroup = this.assetNodeService.isAnyGroup(this.context.item);\n this.groupIcon = this.assetNodeService.icon(this.context.item);\n this.isDevice = this.assetNodeService.isDevice(this.context.item);\n this.isAsset = this.assetNodeService.isAsset(this.context.item);\n this.iconTitle = this.getIconTitle(await this.groupIcon);\n }\n\n private getIconTitle(icon: string): string {\n if (this.isAsset) {\n return this.context.item.type;\n }\n\n switch (icon) {\n case 'c8y-group':\n return gettext('Group');\n case 'c8y-group-smart':\n return gettext('Smart group');\n case 'c8y-group-remote-inactive':\n return 'Inactive remote group';\n case 'c8y-group-remote':\n return gettext('Remote group');\n case 'exchange':\n return gettext('Device');\n default:\n return gettext('Asset');\n }\n }\n}\n","<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon | async\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n","import {\n BaseColumn,\n ColumnConfig,\n ColumnDataType,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\nimport { AssetTypeCellRendererComponent } from './asset-type.cell-renderer.component';\n\nexport class AssetTypeGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'type';\n this.header = gettext('Type');\n this.dataType = ColumnDataType.Icon;\n this.cellRendererComponent = AssetTypeCellRendererComponent;\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: `c8y_IsDeviceGroup` }]\n };\n\n this.filterable = true;\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'types',\n label: gettext('Show items with type'),\n addText: gettext('Add next`type`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: gettext('building`e.g. house`')\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.types.length) {\n filter.type = { __in: model.types };\n }\n return filter;\n }\n };\n }\n}\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 { Inject, Injectable } from '@angular/core';\nimport {\n IManagedObject,\n InventoryService,\n IRule,\n QueriesUtil,\n SmartGroupsService,\n SmartRulesService,\n UserService\n} from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n AppStateService,\n AssetTypesService,\n BulkActionControl,\n Column,\n DataGridService,\n gettext,\n GridConfig,\n Pagination,\n Permissions,\n UserPreferencesService\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 './columns/asset-type-grid-column';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\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: AssetTypesService,\n protected userPreferencesService: UserPreferencesService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\n ) {\n super(userPreferencesService);\n }\n\n async getCustomProperties(group: IManagedObject): Promise<IManagedObject[]> {\n const assetType = this.assetTypes.getAssetTypeByName(group.type);\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 const { pagination } = this.getConfig();\n return {\n pageSize: pagination.pageSize,\n currentPage: 1\n };\n }\n\n getDefaultActionControls(): ActionControl[] {\n return [];\n }\n\n /**\n * @deprecated Use getConfig$(key: string): Observable<GridConfig> instead.\n */\n getConfig(key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY): GridConfig {\n return super.getConfig(key);\n }\n\n /**\n * @deprecated Use saveConfig$(config: GridConfig, key: string): Promise<GridConfig> instead.\n */\n saveConfig(config: GridConfig, key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY) {\n super.saveConfig(config, key);\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);\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 (\n parentRef &&\n !this.smartGroupsService.isSmartGroup(asset) &&\n !this.smartGroupsService.isSmartGroupV2(asset)\n ) {\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(['ROLE_INVENTORY_ADMIN'], group);\n }\n\n canCreateGroup(): boolean {\n const currentUser = this.appState.currentUser.value;\n const hasAdminRole = this.user.hasAnyRole(currentUser, [\n 'ROLE_INVENTORY_ADMIN',\n 'ROLE_INVENTORY_CREATE'\n ]);\n return hasAdminRole;\n }\n\n async canAssignDevice(group: IManagedObject): Promise<boolean> {\n return await this.permissionsService.canEdit(['ROLE_INVENTORY_ADMIN'], group);\n }\n\n canEditSmartGroup(): boolean {\n const SMART_GROUPS_ROLES_EDIT = ['ROLE_SMARTGROUP_UPDATE', 'ROLE_SMARTGROUP_ADMIN'];\n return this.permissionsService.hasAnyRole(SMART_GROUPS_ROLES_EDIT);\n }\n\n canDeleteSmartGroup(): boolean {\n const SMART_GROUPS_ROLES_DELETE = ['ROLE_SMARTGROUP_ADMIN', 'ROLE_INVENTORY_ADMIN'];\n return this.permissionsService.hasAnyRole(SMART_GROUPS_ROLES_DELETE);\n }\n\n isSmartGroup(group: IManagedObject): boolean {\n return (\n this.smartGroupsService.isSmartGroup(group) || this.smartGroupsService.isSmartGroupV2(group)\n );\n }\n\n isUsingInventoryRoles() {\n const currentUser = this.appState.currentUser.value;\n const hasAnyInventoryRole = this.user.hasAnyRole(currentUser, [\n 'ROLE_INVENTORY_ADMIN',\n 'ROLE_INVENTORY_READ',\n 'ROLE_INVENTORY_CREATE'\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) || this.smartGroupsService.isSmartGroupV2(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);\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);\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 {\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 AlertService,\n C8yStepper,\n GainsightService,\n Pagination,\n Permissions,\n gettext\n} from '@c8y/ngx-components';\nimport { Subscription } from 'rxjs';\nimport { PRODUCT_EXPERIENCE } 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<any>();\n @Output() onDeviceQueryStringChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onCancel = new EventEmitter<any>();\n @ViewChild(C8yStepper, { static: false })\n stepper: C8yStepper;\n @ViewChild('nameRef', { static: false })\n nameInputRef: ElementRef;\n deviceQueryStringOutput: string;\n formGroupStepOne: FormGroup;\n pendingStatus = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n subscription: Subscription;\n canCreateGroup = false;\n canAssignDevice = false;\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\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 @HostListener('document:keydown.escape', ['$event']) onEscapeKeyDown(_event: KeyboardEvent) {\n this.onCancel.emit();\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 { id: this.currentGroupId },\n {\n skipOwnerCheck: true,\n skipRolesCheck: true\n }\n ));\n this.canAssignDevice = await this.subAssetsService.canAssignDevice({\n id: this.currentGroupId\n } as IManagedObject);\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 await this.addGroupService.createGroupAndAssignDevices(\n this.formGroupStepOne.value,\n this.currentGroupId,\n this.selected\n );\n\n this.pendingStatus = false;\n this.resetStepper();\n const alertMsg = gettext('Group created.');\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.EVENT, {\n component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP,\n url: window.location.href,\n result: PRODUCT_EXPERIENCE.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 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","<div class=\"d-contents\" *ngIf=\"!currentGroupId; else stepper\">\n <ng-container [ngTemplateOutlet]=\"stepper\"></ng-container>\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 [stepControl]=\"formGroupStepOne\" [label]=\"'New group' | 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 {{ '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 type=\"text\"\n formControlName=\"name\"\n placeholder=\"{{ 'e.g. First floor' | translate }} \"\n maxlength=\"254\"\n #nameRef\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n type=\"text\"\n formControlName=\"description\"\n placeholder=\"{{ 'e.g. first floor devices' | translate }}\"\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 class=\"alert alert-info max-width-100\" translate *ngIf=\"!canAssignDevice\">\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]=\"[]\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"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","import { NgModule } from '@angular/core';\nimport { CoreModule, hookRoute } 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';\n\n@NgModule({\n declarations: [AddGroupComponent],\n imports: [CoreModule, DeviceGridModule, FormsModule, ReactiveFormsModule],\n entryComponents: [AddGroupComponent],\n exports: [AddGroupComponent],\n providers: [\n hookRoute({\n path: 'add-group',\n component: AddGroupComponent\n }),\n AddGroupService\n ]\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 } 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 const imageFile = await this.filesService.getFile(this.file);\n this.previewImage = await this.getPreviewIfImage(imageFile);\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 if (this.value[complexObj.key] != null) {\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 this.form = new FormGroup({});\n this.fields = [fieldConfig];\n this.model = this.getModel();\n }\n }\n\n private async getPreviewIfImage(imageFile: File) {\n if (this.filesService.haveValidExtensions(imageFile, 'image')) {\n return this.filesService.toBase64(imageFile);\n }\n }\n}\n","<ng-container [ngSwitch]=\"type\" *ngIf=\"!isEdit\">\n <ng-container *ngSwitchCase=\"'date'\">\n {{ value | c8yDate: 'fullDate' }}\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","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n IManagedObject,\n IManagedObjectBinary,\n InventoryBinaryService,\n InventoryService\n} from '@c8y/client';\nimport { AlertService, AssetTypesService, ContextRouteService, gettext } from '@c8y/ngx-components';\nimport { AssetPropertiesItem } from './asset-properties.model';\nimport { JSONSchema7 } from 'json-schema';\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: AssetTypesService,\n private inventory: InventoryService,\n private inventoryBinary: InventoryBinaryService,\n private alert: AlertService,\n private contextRouteService: ContextRouteService,\n private activatedRoute: ActivatedRoute\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 this.assetType = this.assetTypes.getAssetTypeByName(this.asset.type);\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 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 for (const key of keys) {\n let value = asset[key];\n const type = properties[key].type;\n const title = properties[key].title;\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 : null;\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, asset[key])\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(model, prop: AssetPropertiesItem): Promise<void> {\n try {\n if (prop.type === 'object') {\n model[prop.key] = await this.uploadFiles(model[prop.key], prop.value);\n } else {\n model = await this.uploadFiles(model, prop.value);\n }\n\n // Avoid making a PUT request containing just the id, as response body might be incomplete\n const hasValues = Object.values(model).some(value => value !== undefined);\n if (!hasValues) {\n this.toggleEdit(prop);\n return;\n }\n\n const updatedAsset = { id: this.asset.id, ...model };\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 }\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 this.alert.addServerFailure(ex);\n }\n model[key] = upload.data.id;\n await this.inventory.childAdditionsAdd(upload.data.id, this.asset.id);\n } catch (ex) {\n this.alert.addServerFailure(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 class=\"text-center\" *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div\n class=\"card m-b-8\"\n *ngFor=\"let prop of customProperties\"\n [ngClass]=\"{ 'card-highlight': prop.isEdit }\"\n title=\"{{ prop.description | translate }}\"\n >\n <div class=\"card-block\" [ngClass]=\"{ 'p-b-0': prop.isEdit }\">\n <div class=\"d-flex p-b-8 a-i-center\" *ngIf=\"!prop.isEdit\">\n <p title=\"{{ prop?.label | translate }}\" class=\"text-medium text-truncate\">\n {{ prop?.label | translate }}\n </p>\n <button\n class=\"btn btn-dot m-l-auto text-12\"\n type=\"button\"\n tooltip=\"{{ 'Edit' | translate }}\"\n [attr.aria-label]=\"'Edit' | translate\"\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>\n <div class=\"card-footer p-t-0\" *ngIf=\"prop.isEdit\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"toggleEdit(prop)\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!assetProps?.form?.valid\"\n (click)=\"save(assetProps.model, prop)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\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 } 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;\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.EVENT, {\n component: PRODUCT_EXPERIENCE.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n result: PRODUCT_EXPERIENCE.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.EVENT, {\n component: PRODUCT_EXPERIENCE.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n result: PRODUCT_EXPERIENCE.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>\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 } 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.EVENT, {\n component: PRODUCT_EXPERIENCE.UNASSIGN_MODAL.COMPONENTS.UNASSIGN_MODAL,\n result: PRODUCT_EXPERIENCE.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.EVENT, {\n component: PRODUCT_EXPERIENCE.UNASSIGN_MODAL.COMPONENTS.UNASSIGN_MODAL,\n action: PRODUCT_EXPERIENCE.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 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 ServerSideDataResult,\n UserPreferencesConfigurationStrategy\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { DeleteModalCheckboxes } from './delete-assets-modal';\nimport { DeleteAssetsModalComponent } from './delete-assets-modal/delete-assets-modal.component';\nimport { PRODUCT_EXPERIENCE } 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, GridConfigContextProvider {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\n @Input('parent-group') parentGroup: IManagedObject;\n @Input() refresh: EventEmitter<any>;\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: any = {};\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: any;\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 };\n\n showSearch = false;\n\n private _columns: Column[];\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 deviceGridService: DeviceGridService,\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 this.columns = isDynamicGroup\n ? this.deviceGridService.getDefaultColumns()\n : this.subAssetsGridService.getDefaultColumns(this.filterable, this.sortable);\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 async setActionControls() {\n const actionControls: ActionControl[] = [];\n const { data: isMicroserviceInstalled } =\n await this.smartGroupsService.isSmartGroupsV2MicroserviceInstalled();\n\n const deleteAction: ActionControl = {\n type: BuiltInActionType.Delete,\n callback: (asset: Row) => this.onDeleteAsset(asset as IManagedObject, this.parentGroup),\n showIf: (asset: Row) => {\n if (this.smartGroupsService.isSmartGroupV2(asset as IManagedObject)) {\n return isMicroserviceInstalled ? this.subAssetsGridService.canDeleteSmartGroup() : false;\n }\n\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 const unassignAction: ActionControl = {\n type: 'UNASSIGN',\n icon: 'unlink',\n text: gettext('Unassign'),\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 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:\n !this.smartGroupsService.isSmartGroup(asset) &&\n !this.smartGroupsService.isSmartGroupV2(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 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","<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>\n <c8y-ui-empty-state\n [icon]=\"'c8y-group-add'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"emptyStateText | translate\"\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 @Input() refresh = new EventEmitter<any>();\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 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 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 } 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;\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 @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 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.EVENT, {\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.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 [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 class=\"flex-grow col-xs-12 no-gutter\"\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 type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\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 [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n type=\"button\"\n title=\"{{ 'Assign' | translate }}\"\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 #showDevicesToggle let-control=\"headerActionControl\">\n <label class=\"c8y-switch a-s-center\" title=\"{{ control.text | translate }}\">\n <input type=\"checkbox\" [(ngModel)]=\"showChildren\" (click)=\"control.callback()\" />\n <span></span>\n <span>{{ control.text | translate }}</span>\n </label>\n <button\n class=\"btn-help m-r-16 a-s-center\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"childDevicesPop\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n <ng-template #childDevicesPop>\n <span translate>\n Displays the button\n <span title=\"{{ 'Child devices icon' | translate }}\" class=\"btn btn-dot btn-icon no-pointer\">\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 {\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { IManagedObject, InventoryService, SmartGroupsService } from '@c8y/client';\nimport {\n AlertService,\n AssetTypesService,\n gettext,\n ModalService,\n Status\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PRODUCT_EXPERIENCE } from './shared/sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\n\n@Component({\n selector: 'c8y-group-info',\n templateUrl: './group-info.component.html'\n})\nexport class GroupInfoComponent implements OnChanges {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\n @Input() group: IManagedObject;\n @Output() groupChange = new EventEmitter<IManagedObject>();\n canEdit: boolean;\n groupIcon: string;\n smartGroupFilter: string;\n filterHintMsg: string;\n label: string;\n\n groupInfoModel: {\n name: string;\n c8y_Notes: string;\n } = {\n name: '',\n c8y_Notes: ''\n };\n\n private filterMsg = gettext(\n 'Smart groups are groups dynamically constructed based on filtering criteria.'\n );\n private canEditMsg = gettext('You can edit the filter here.');\n private readonly GROUP_UPDATED_MSG = gettext('Group updated.');\n\n constructor(\n private inventory: InventoryService,\n private subAssetsService: SubAssetsService,\n private smartGroupsService: SmartGroupsService,\n private alertService: AlertService,\n private translate: TranslateService,\n private modalService: ModalService,\n private assetNodeService: AssetNodeService,\n private assetType: AssetTypesService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\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 = this.smartGroupsService.isSmartGroupV2(this.group)\n ? this.subAssetsService.canEditSmartGroup()\n : await this.subAssetsService.canEditGroup(this.group);\n this.groupIcon = await this.assetNodeService.icon(this.group);\n this.smartGroupFilter = this.group.c8y_DeviceQueryString;\n this.label = this.assetNodeService.isAsset(this.group)\n ? this.assetType.getAssetTypeByName(this.group.type).label\n : gettext('Group');\n this.setHintMsg();\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 private setHintMsg() {\n const filterMsgTranslated = this.translate.instant(this.filterMsg);\n const canEditMsgTranslated = this.translate.instant(this.canEditMsg);\n this.filterHintMsg = this.canEdit\n ? `${filterMsgTranslated} ${canEditMsgTranslated}`\n : this.filterMsg;\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 class=\"c8y-icon-duocolor icon-48\" [c8yIcon]=\"groupIcon\"></i>\n <p>\n <small class=\"label label-info\" *ngIf=\"group.c8y_IsDynamicGroup\">\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 class=\"label label-info\" *ngIf=\"group.com_cumulocity_model_Agent\">\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 for=\"groupName\" class=\"sr-only\" translate>Name</label>\n <p *ngIf=\"!canEdit\" class=\"form-control-static\">{{ groupInfoModel.name }}</p>\n <div *ngIf=\"canEdit\" class=\"input-group input-group-lg input-group-editable\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"groupInfoModel.name\"\n name=\"name\"\n title=\"{{ groupInfoModel.name }}\"\n id=\"groupName\"\n size=\"{{ groupInfoModel.name.length + 2 }}\"\n placeholder=\"{{ 'e.g. My group' | translate }}\"\n maxlength=\"254\"\n required\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 type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\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 for=\"description\" class=\"sr-only\" translate>Description</label>\n <p *ngIf=\"!canEdit\" class=\"form-control-static\">{{ groupInfoModel.c8y_Notes }}</p>\n <div *ngIf=\"canEdit\" class=\"input-group input-group-editable\">\n <textarea\n class=\"form-control no-resize\"\n c8y-textarea-autoresize\n [(ngModel)]=\"groupInfoModel.c8y_Notes\"\n id=\"description\"\n name=\"description\"\n title=\"{{\n groupInfoModel.c8y_Notes\n ? groupInfoModel.c8y_Notes\n : ('e.g. My description' | translate)\n }}\"\n cols=\"{{ groupInfoModel.c8y_Notes ? groupInfoModel.c8y_Notes.length : 25 }}\"\n placeholder=\"{{ 'e.g. My description' | translate }}\"\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 style=\"max-height: 70px !important\"\n ></textarea>\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\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 <form #smartGroupFilterForm=\"ngForm\" *ngIf=\"isSmartGroup()\">\n <c8y-form-group class=\"m-b-0 m-t-8\">\n <label class=\"m-b-0 text-nowrap\">\n {{ 'Smart group filter' | translate }}\n <button\n class=\"btn-help btn-help--sm m-r-4\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ filterHintMsg | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n ></button>\n </label>\n\n <p *ngIf=\"!canEdit\" class=\"form-control-static\">\n {{ smartGroupFilter }}\n </p>\n <div *ngIf=\"canEdit\" class=\"input-group input-group-editable\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"smartGroupFilter\"\n name=\"filter\"\n size=\"{{ (smartGroupFilter || '').length + 2 }}\"\n placeholder=\"{{ 'e.g.' | translate }} $filter=(id eq '12*')\"\n maxlength=\"254\"\n title=\"{{ 'Smart group filter' | translate }}\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"\n update({ c8y_DeviceQueryString: smartGroupFilter });\n smartGroupFilterForm.form.markAsPristine()\n \"\n [disabled]=\"smartGroupFilterForm.form.invalid\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </form>\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 *ngIf=\"group.com_cumulocity_model_Agent\"\n class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\"\n >\n <label class=\"small m-b-0 m-r-8\">{{ 'Status' | translate }}</label>\n <span class=\"m-l-auto\" *ngIf=\"group.c8y_BrokerSource\">\n {{ group.c8y_BrokerSource.status }}\n </span>\n <span class=\"m-l-auto\" *ngIf=\"!group.c8y_BrokerSource\">\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, OnInit } from '@angular/core';\nimport { Permissions } from '@c8y/ngx-components';\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 {\n refresh: EventEmitter<any> = new EventEmitter();\n showAddGroup = false;\n filterable = true;\n sortable = true;\n shouldDisableAddGroup = false;\n\n constructor(\n private permissions: Permissions,\n private subAssetsService: SubAssetsService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\n ) {}\n\n ngOnInit() {\n if (!this.permissions.hasRole('ROLE_INVENTORY_READ')) {\n this.sortable = false;\n }\n this.shouldDisableAddGroup = !this.subAssetsService.canCreateGroup();\n }\n}\n","<c8y-title>\n {{ moduleConfig.name | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n label=\"{{ moduleConfig.name | translate }}\"\n icon=\"c8y-group-open\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"moduleConfig.showAddGroupBtn\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"showAddGroup = !showAddGroup\"\n [disabled]=\"shouldDisableAddGroup\"\n [attr.data-cy]=\"'groups-add-group-button'\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n {{ 'Add group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n *ngIf=\"moduleConfig.showGroupsContextHelp\"\n src=\"/users-guide/device-management/#grouping-devices\"\n></c8y-help>\n\n<div [ngClass]=\"{ drawerOpen: showAddGroup }\">\n <div class=\"bottom-drawer\">\n <c8y-add-group\n [refresh]=\"refresh\"\n (onCancel)=\"showAddGroup = false\"\n *ngIf=\"showAddGroup\"\n ></c8y-add-group>\n </div>\n</div>\n<c8y-sub-assets-grid\n [refresh]=\"refresh\"\n [filterable]=\"filterable\"\n [sortable]=\"sortable\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n class=\"content-fullpage d-flex d-col border-top border-bottom\"\n></c8y-sub-assets-grid>\n","import { Component, EventEmitter, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject } from '@c8y/client';\nimport { ContextRouteService, DisplayOptions, Permissions } from '@c8y/ngx-components';\nimport { Subscription } 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 group: IManagedObject;\n currentGroupId: string;\n showChildrenForDevice: IManagedObject;\n title: string;\n toggle = false;\n showAddGroup = 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\n private dataSub: Subscription;\n\n constructor(\n private route: ActivatedRoute,\n private subAssetsService: SubAssetsService,\n private contextRouteService: ContextRouteService,\n private permissionsService: Permissions,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\n ) {\n this.dataSub = this.route.parent.data.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 };\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([], this.group, {\n skipOwnerCheck: true,\n skipRolesCheck: true\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.route, group);\n this.contextRouteService.refreshContext();\n this.refresh.emit();\n }\n\n isSmartGroup() {\n return this.subAssetsService.isSmartGroup(this.group);\n }\n\n ngOnDestroy(): void {\n if (this.dataSub) {\n this.dataSub.unsubscribe();\n }\n }\n}\n","<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"!isSmartGroup() && moduleConfig.showAddGroupBtn\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"showAddGroup = !showAddGroup\"\n [disabled]=\"shouldDisableAddGroup\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></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 c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Assign devices</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#managing-assets\"></c8y-help>\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 *ngIf=\"moduleConfig.showDetails\"\n [group]=\"group\"\n (groupChange)=\"groupChange($event)\"\n class=\"grid__col--fullspan\"\n ></c8y-group-info>\n <c8y-sub-assets-grid\n [refresh]=\"refresh\"\n [parent-group]=\"group\"\n [filterable]=\"filterable\"\n [displayOptions]=\"displayOptions\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n class=\"d-contents\"\n ></c8y-sub-assets-grid>\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"shouldShowAssetsProperties\">\n <c8y-asset-properties\n [properties]=\"customProperties\"\n [asset]=\"group\"\n (assetChange)=\"groupChange($event)\"\n class=\"d-contents\"\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)=\"showAddGroup = false\"\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 *ngIf=\"showAssignChildDevices\"\n class=\"d-contents\"\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 { CoreModule, gettext, hookRoute, ViewContext } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { AddGroupModule } from './add-group/add-group.module';\nimport { AssetTypeCellRendererComponent } from './columns/asset-type.cell-renderer.component';\nimport { DeleteAssetsModalComponent } from './delete-assets-modal/delete-assets-modal.component';\nimport { GroupInfoComponent } from './group-info.component';\nimport { GroupsComponent } from './groups.component';\nimport { SubAssetsGridComponent } from './sub-assets-grid.component';\nimport { SubAssetsComponent } from './sub-assets.component';\nimport { SubAssetsService } from './sub-assets.service';\nimport { UnassignModalComponent } from './unassign-assets-modal/unassign-modal.component';\nimport { AssignDevicesComponent } from './assign-devices/assign-devices.component';\nimport { AssignChildDevicesComponent } from './assign-devices/assign-child-devices.component';\nimport { AssetPropertiesComponent } from './asset-properties.component';\nimport { AssetPropertiesItemComponent } from './asset-properties-item.component';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig, defaultModuleConfig } from './sub-assets.model';\n\n@NgModule({\n declarations: [\n SubAssetsComponent,\n SubAssetsGridComponent,\n AssetTypeCellRendererComponent,\n GroupsComponent,\n GroupInfoComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent,\n AssignDevicesComponent,\n AssignChildDevicesComponent,\n AssetPropertiesComponent,\n AssetPropertiesItemComponent\n ],\n imports: [CoreModule, DeviceGridModule, AddGroupModule, PopoverModule, TooltipModule],\n entryComponents: [\n SubAssetsComponent,\n AssetTypeCellRendererComponent,\n GroupsComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent\n ],\n exports: [],\n providers: [\n {\n provide: SUB_ASSETS_CONFIG,\n useValue: defaultModuleConfig\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","i2.AddGroupService","i4.SubAssetsService","i5","i7","i6.AssetPropertiesItemComponent","i4","i2.SmartGroupGridConfigurationStrategy","i1.SubAssetsService","i6","i2.SubAssetsService","i5.SubAssetsGridComponent","i8","i4.AddGroupComponent","i5.AddGroupComponent","i6.SubAssetsGridComponent","i7.GroupInfoComponent","i8.AssignDevicesComponent","i9.AssignChildDevicesComponent","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/add-group/add-group.service.ts","../../sub-assets/columns/asset-type.cell-renderer.component.ts","../../sub-assets/columns/asset-type.cell-renderer.component.html","../../sub-assets/columns/asset-type-grid-column.ts","../../sub-assets/sub-assets.model.ts","../../sub-assets/sub-assets.service.ts","../../sub-assets/add-group/add-group.component.ts","../../sub-assets/add-group/add-group.component.html","../../sub-assets/add-group/add-group.module.ts","../../sub-assets/asset-properties-item.component.ts","../../sub-assets/asset-properties-item.component.html","../../sub-assets/asset-properties.component.ts","../../sub-assets/asset-properties.component.html","../../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/assign-devices/assign-devices.component.ts","../../sub-assets/assign-devices/assign-devices.component.html","../../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 = {\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};\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, OnInit } from '@angular/core';\nimport { CellRendererContext, gettext } from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\n\n@Component({\n templateUrl: './asset-type.cell-renderer.component.html'\n})\nexport class AssetTypeCellRendererComponent implements OnInit {\n groupIcon: Promise<string>;\n isAnyGroup: boolean;\n isDevice: boolean;\n isAsset: boolean;\n iconTitle: string;\n constructor(public context: CellRendererContext, protected assetNodeService: AssetNodeService) {}\n\n async ngOnInit() {\n this.isAnyGroup = this.assetNodeService.isAnyGroup(this.context.item);\n this.groupIcon = this.assetNodeService.icon(this.context.item);\n this.isDevice = this.assetNodeService.isDevice(this.context.item);\n this.isAsset = this.assetNodeService.isAsset(this.context.item);\n this.iconTitle = this.getIconTitle(await this.groupIcon);\n }\n\n private getIconTitle(icon: string): string {\n if (this.isAsset) {\n return this.context.item.type;\n }\n\n switch (icon) {\n case 'c8y-group':\n return gettext('Group');\n case 'c8y-group-smart':\n return gettext('Smart group');\n case 'c8y-group-remote-inactive':\n return 'Inactive remote group';\n case 'c8y-group-remote':\n return gettext('Remote group');\n case 'exchange':\n return gettext('Device');\n default:\n return gettext('Asset');\n }\n }\n}\n","<device-status class=\"m-l-8\" [mo]=\"context.item\" *ngIf=\"isDevice\"></device-status>\n<i\n [c8yIcon]=\"groupIcon | async\"\n title=\"{{ iconTitle | translate }}\"\n class=\"m-l-8 c8y-icon-duocolor\"\n *ngIf=\"isAnyGroup || !isDevice\"\n></i>\n","import {\n BaseColumn,\n ColumnConfig,\n ColumnDataType,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\nimport { AssetTypeCellRendererComponent } from './asset-type.cell-renderer.component';\n\nexport class AssetTypeGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'type';\n this.header = gettext('Type');\n this.dataType = ColumnDataType.Icon;\n this.cellRendererComponent = AssetTypeCellRendererComponent;\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: `c8y_IsDeviceGroup` }]\n };\n\n this.filterable = true;\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'types',\n label: gettext('Show items with type'),\n addText: gettext('Add next`type`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: gettext('building`e.g. house`')\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.types.length) {\n filter.type = { __in: model.types };\n }\n return filter;\n }\n };\n }\n}\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 { Inject, Injectable } from '@angular/core';\nimport {\n IManagedObject,\n InventoryService,\n IRule,\n QueriesUtil,\n SmartGroupsService,\n SmartRulesService,\n UserService\n} from '@c8y/client';\nimport {\n ActionControl,\n AlertService,\n AppStateService,\n AssetTypesService,\n BulkActionControl,\n Column,\n DataGridService,\n gettext,\n GridConfig,\n Pagination,\n Permissions,\n UserPreferencesService\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 './columns/asset-type-grid-column';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\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: AssetTypesService,\n protected userPreferencesService: UserPreferencesService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\n ) {\n super(userPreferencesService);\n }\n\n async getCustomProperties(group: IManagedObject): Promise<IManagedObject[]> {\n const assetType = this.assetTypes.getAssetTypeByName(group.type);\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 const { pagination } = this.getConfig();\n return {\n pageSize: pagination.pageSize,\n currentPage: 1\n };\n }\n\n getDefaultActionControls(): ActionControl[] {\n return [];\n }\n\n /**\n * @deprecated Use getConfig$(key: string): Observable<GridConfig> instead.\n */\n getConfig(key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY): GridConfig {\n return super.getConfig(key);\n }\n\n /**\n * @deprecated Use saveConfig$(config: GridConfig, key: string): Promise<GridConfig> instead.\n */\n saveConfig(config: GridConfig, key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY) {\n super.saveConfig(config, key);\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);\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 (\n parentRef &&\n !this.smartGroupsService.isSmartGroup(asset) &&\n !this.smartGroupsService.isSmartGroupV2(asset)\n ) {\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(['ROLE_INVENTORY_ADMIN'], group);\n }\n\n canCreateGroup(): boolean {\n const currentUser = this.appState.currentUser.value;\n const hasAdminRole = this.user.hasAnyRole(currentUser, [\n 'ROLE_INVENTORY_ADMIN',\n 'ROLE_INVENTORY_CREATE'\n ]);\n return hasAdminRole;\n }\n\n async canAssignDevice(group: IManagedObject): Promise<boolean> {\n return await this.permissionsService.canEdit(['ROLE_INVENTORY_ADMIN'], group);\n }\n\n canEditSmartGroup(): boolean {\n const SMART_GROUPS_ROLES_EDIT = ['ROLE_SMARTGROUP_UPDATE', 'ROLE_SMARTGROUP_ADMIN'];\n return this.permissionsService.hasAnyRole(SMART_GROUPS_ROLES_EDIT);\n }\n\n canDeleteSmartGroup(): boolean {\n const SMART_GROUPS_ROLES_DELETE = ['ROLE_SMARTGROUP_ADMIN', 'ROLE_INVENTORY_ADMIN'];\n return this.permissionsService.hasAnyRole(SMART_GROUPS_ROLES_DELETE);\n }\n\n isSmartGroup(group: IManagedObject): boolean {\n return (\n this.smartGroupsService.isSmartGroup(group) || this.smartGroupsService.isSmartGroupV2(group)\n );\n }\n\n isUsingInventoryRoles() {\n const currentUser = this.appState.currentUser.value;\n const hasAnyInventoryRole = this.user.hasAnyRole(currentUser, [\n 'ROLE_INVENTORY_ADMIN',\n 'ROLE_INVENTORY_READ',\n 'ROLE_INVENTORY_CREATE'\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) || this.smartGroupsService.isSmartGroupV2(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);\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);\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 {\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 AlertService,\n C8yStepper,\n GainsightService,\n Pagination,\n Permissions,\n gettext\n} from '@c8y/ngx-components';\nimport { Subscription } from 'rxjs';\nimport { PRODUCT_EXPERIENCE } 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<any>();\n @Output() onDeviceQueryStringChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onCancel = new EventEmitter<any>();\n @ViewChild(C8yStepper, { static: false })\n stepper: C8yStepper;\n @ViewChild('nameRef', { static: false })\n nameInputRef: ElementRef;\n deviceQueryStringOutput: string;\n formGroupStepOne: FormGroup;\n pendingStatus = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n subscription: Subscription;\n canCreateGroup = false;\n canAssignDevice = false;\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\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 @HostListener('document:keydown.escape', ['$event']) onEscapeKeyDown(_event: KeyboardEvent) {\n this.onCancel.emit();\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 { id: this.currentGroupId },\n {\n skipOwnerCheck: true,\n skipRolesCheck: true\n }\n ));\n this.canAssignDevice = await this.subAssetsService.canAssignDevice({\n id: this.currentGroupId\n } as IManagedObject);\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 await this.addGroupService.createGroupAndAssignDevices(\n this.formGroupStepOne.value,\n this.currentGroupId,\n this.selected\n );\n\n this.pendingStatus = false;\n this.resetStepper();\n const alertMsg = gettext('Group created.');\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.EVENT, {\n component: PRODUCT_EXPERIENCE.ADD_GROUP.COMPONENTS.ADD_GROUP,\n url: window.location.href,\n result: PRODUCT_EXPERIENCE.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 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","<div class=\"d-contents\" *ngIf=\"!currentGroupId; else stepper\">\n <ng-container [ngTemplateOutlet]=\"stepper\"></ng-container>\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 [stepControl]=\"formGroupStepOne\" [label]=\"'New group' | 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 {{ '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 type=\"text\"\n formControlName=\"name\"\n placeholder=\"{{ 'e.g. First floor' | translate }} \"\n maxlength=\"254\"\n #nameRef\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n class=\"form-control\"\n type=\"text\"\n formControlName=\"description\"\n placeholder=\"{{ 'e.g. first floor devices' | translate }}\"\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 class=\"alert alert-info max-width-100\" translate *ngIf=\"!canAssignDevice\">\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]=\"[]\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"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","import { NgModule } from '@angular/core';\nimport { CoreModule, hookRoute } 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';\n\n@NgModule({\n declarations: [AddGroupComponent],\n imports: [CoreModule, DeviceGridModule, FormsModule, ReactiveFormsModule],\n entryComponents: [AddGroupComponent],\n exports: [AddGroupComponent],\n providers: [\n hookRoute({\n path: 'add-group',\n component: AddGroupComponent\n }),\n AddGroupService\n ]\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 } 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 const imageFile = await this.filesService.getFile(this.file);\n this.previewImage = await this.getPreviewIfImage(imageFile);\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 if (this.value[complexObj.key] != null) {\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 this.form = new FormGroup({});\n this.fields = [fieldConfig];\n this.model = this.getModel();\n }\n }\n\n private async getPreviewIfImage(imageFile: File) {\n if (this.filesService.haveValidExtensions(imageFile, 'image')) {\n return this.filesService.toBase64(imageFile);\n }\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","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n IManagedObject,\n IManagedObjectBinary,\n InventoryBinaryService,\n InventoryService\n} from '@c8y/client';\nimport { AlertService, AssetTypesService, ContextRouteService, gettext } from '@c8y/ngx-components';\nimport { AssetPropertiesItem } from './asset-properties.model';\nimport { JSONSchema7 } from 'json-schema';\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: AssetTypesService,\n private inventory: InventoryService,\n private inventoryBinary: InventoryBinaryService,\n private alert: AlertService,\n private contextRouteService: ContextRouteService,\n private activatedRoute: ActivatedRoute\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 this.assetType = this.assetTypes.getAssetTypeByName(this.asset.type);\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 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 for (const key of keys) {\n let value = asset[key];\n const type = properties[key].type;\n const title = properties[key].title;\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 : null;\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, asset[key])\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(model, prop: AssetPropertiesItem): Promise<void> {\n try {\n if (prop.type === 'object') {\n model[prop.key] = await this.uploadFiles(model[prop.key], prop.value);\n } else {\n model = await this.uploadFiles(model, prop.value);\n }\n\n // Avoid making a PUT request containing just the id, as response body might be incomplete\n const hasValues = Object.values(model).some(value => value !== undefined);\n if (!hasValues) {\n this.toggleEdit(prop);\n return;\n }\n\n const updatedAsset = { id: this.asset.id, ...model };\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 }\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 this.alert.addServerFailure(ex);\n }\n model[key] = upload.data.id;\n await this.inventory.childAdditionsAdd(upload.data.id, this.asset.id);\n } catch (ex) {\n this.alert.addServerFailure(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 class=\"text-center\" *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div\n class=\"card m-b-8\"\n *ngFor=\"let prop of customProperties\"\n [ngClass]=\"{ 'card-highlight': prop.isEdit }\"\n title=\"{{ prop.description | translate }}\"\n >\n <div class=\"card-block\" [ngClass]=\"{ 'p-b-0': prop.isEdit }\">\n <div class=\"d-flex p-b-8 a-i-center\" *ngIf=\"!prop.isEdit\">\n <p title=\"{{ prop?.label | translate }}\" class=\"text-medium text-truncate\">\n {{ prop?.label | translate }}\n </p>\n <button\n class=\"btn btn-dot m-l-auto text-12\"\n type=\"button\"\n tooltip=\"{{ 'Edit' | translate }}\"\n [attr.aria-label]=\"'Edit' | translate\"\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>\n <div class=\"card-footer p-t-0\" *ngIf=\"prop.isEdit\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"toggleEdit(prop)\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!assetProps?.form?.valid\"\n (click)=\"save(assetProps.model, prop)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\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 } 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;\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.EVENT, {\n component: PRODUCT_EXPERIENCE.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n result: PRODUCT_EXPERIENCE.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.EVENT, {\n component: PRODUCT_EXPERIENCE.DELETE_ASSET.COMPONENTS.DELETE_ASSETS_MODAL,\n result: PRODUCT_EXPERIENCE.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>\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 } 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.EVENT, {\n component: PRODUCT_EXPERIENCE.UNASSIGN_MODAL.COMPONENTS.UNASSIGN_MODAL,\n result: PRODUCT_EXPERIENCE.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.EVENT, {\n component: PRODUCT_EXPERIENCE.UNASSIGN_MODAL.COMPONENTS.UNASSIGN_MODAL,\n action: PRODUCT_EXPERIENCE.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 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 ServerSideDataResult,\n UserPreferencesConfigurationStrategy\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { DeleteModalCheckboxes } from './delete-assets-modal';\nimport { DeleteAssetsModalComponent } from './delete-assets-modal/delete-assets-modal.component';\nimport { PRODUCT_EXPERIENCE } 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, GridConfigContextProvider {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\n @Input('parent-group') parentGroup: IManagedObject;\n @Input() refresh: EventEmitter<any>;\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: any = {};\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: any;\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 };\n\n showSearch = false;\n\n private _columns: Column[];\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 deviceGridService: DeviceGridService,\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 this.columns = isDynamicGroup\n ? this.deviceGridService.getDefaultColumns()\n : this.subAssetsGridService.getDefaultColumns(this.filterable, this.sortable);\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 async setActionControls() {\n const actionControls: ActionControl[] = [];\n const { data: isMicroserviceInstalled } =\n await this.smartGroupsService.isSmartGroupsV2MicroserviceInstalled();\n\n const deleteAction: ActionControl = {\n type: BuiltInActionType.Delete,\n callback: (asset: Row) => this.onDeleteAsset(asset as IManagedObject, this.parentGroup),\n showIf: (asset: Row) => {\n if (this.smartGroupsService.isSmartGroupV2(asset as IManagedObject)) {\n return isMicroserviceInstalled ? this.subAssetsGridService.canDeleteSmartGroup() : false;\n }\n\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 const unassignAction: ActionControl = {\n type: 'UNASSIGN',\n icon: 'unlink',\n text: gettext('Unassign'),\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 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:\n !this.smartGroupsService.isSmartGroup(asset) &&\n !this.smartGroupsService.isSmartGroupV2(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 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","<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>\n <c8y-ui-empty-state\n [icon]=\"'c8y-group-add'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"emptyStateText | translate\"\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 @Input() refresh = new EventEmitter<any>();\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 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 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 } 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;\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 @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 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.EVENT, {\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.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 [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 class=\"flex-grow col-xs-12 no-gutter\"\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 type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\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 [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n type=\"button\"\n title=\"{{ 'Assign' | translate }}\"\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 #showDevicesToggle let-control=\"headerActionControl\">\n <label class=\"c8y-switch a-s-center\" title=\"{{ control.text | translate }}\">\n <input type=\"checkbox\" [(ngModel)]=\"showChildren\" (click)=\"control.callback()\" />\n <span></span>\n <span>{{ control.text | translate }}</span>\n </label>\n <button\n class=\"btn-help m-r-16 a-s-center\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"childDevicesPop\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n <ng-template #childDevicesPop>\n <span translate>\n Displays the button\n <span title=\"{{ 'Child devices icon' | translate }}\" class=\"btn btn-dot btn-icon no-pointer\">\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 {\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { IManagedObject, InventoryService, SmartGroupsService } from '@c8y/client';\nimport {\n AlertService,\n AssetTypesService,\n gettext,\n ModalService,\n Status\n} from '@c8y/ngx-components';\nimport { AssetNodeService } from '@c8y/ngx-components/assets-navigator';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PRODUCT_EXPERIENCE } from './shared/sub-assets.model';\nimport { SubAssetsService } from './sub-assets.service';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig } from './sub-assets.model';\n\n@Component({\n selector: 'c8y-group-info',\n templateUrl: './group-info.component.html'\n})\nexport class GroupInfoComponent implements OnChanges {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\n @Input() group: IManagedObject;\n @Output() groupChange = new EventEmitter<IManagedObject>();\n canEdit: boolean;\n groupIcon: string;\n smartGroupFilter: string;\n filterHintMsg: string;\n label: string;\n\n groupInfoModel: {\n name: string;\n c8y_Notes: string;\n } = {\n name: '',\n c8y_Notes: ''\n };\n\n private filterMsg = gettext(\n 'Smart groups are groups dynamically constructed based on filtering criteria.'\n );\n private canEditMsg = gettext('You can edit the filter here.');\n private readonly GROUP_UPDATED_MSG = gettext('Group updated.');\n\n constructor(\n private inventory: InventoryService,\n private subAssetsService: SubAssetsService,\n private smartGroupsService: SmartGroupsService,\n private alertService: AlertService,\n private translate: TranslateService,\n private modalService: ModalService,\n private assetNodeService: AssetNodeService,\n private assetType: AssetTypesService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\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 = this.smartGroupsService.isSmartGroupV2(this.group)\n ? this.subAssetsService.canEditSmartGroup()\n : await this.subAssetsService.canEditGroup(this.group);\n this.groupIcon = await this.assetNodeService.icon(this.group);\n this.smartGroupFilter = this.group.c8y_DeviceQueryString;\n this.label = this.assetNodeService.isAsset(this.group)\n ? this.assetType.getAssetTypeByName(this.group.type).label\n : gettext('Group');\n this.setHintMsg();\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 private setHintMsg() {\n const filterMsgTranslated = this.translate.instant(this.filterMsg);\n const canEditMsgTranslated = this.translate.instant(this.canEditMsg);\n this.filterHintMsg = this.canEdit\n ? `${filterMsgTranslated} ${canEditMsgTranslated}`\n : this.filterMsg;\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 class=\"c8y-icon-duocolor icon-48\" [c8yIcon]=\"groupIcon\"></i>\n <p>\n <small class=\"label label-info\" *ngIf=\"group.c8y_IsDynamicGroup\">\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 class=\"label label-info\" *ngIf=\"group.com_cumulocity_model_Agent\">\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 for=\"groupName\" class=\"sr-only\" translate>Name</label>\n <p *ngIf=\"!canEdit\" class=\"form-control-static\">{{ groupInfoModel.name }}</p>\n <div *ngIf=\"canEdit\" class=\"input-group input-group-lg input-group-editable\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"groupInfoModel.name\"\n name=\"name\"\n title=\"{{ groupInfoModel.name }}\"\n id=\"groupName\"\n size=\"{{ groupInfoModel.name.length + 2 }}\"\n placeholder=\"{{ 'e.g. My group' | translate }}\"\n maxlength=\"254\"\n required\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 type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\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 for=\"description\" class=\"sr-only\" translate>Description</label>\n <p *ngIf=\"!canEdit\" class=\"form-control-static\">{{ groupInfoModel.c8y_Notes }}</p>\n <div *ngIf=\"canEdit\" class=\"input-group input-group-editable\">\n <textarea\n class=\"form-control no-resize\"\n c8y-textarea-autoresize\n [(ngModel)]=\"groupInfoModel.c8y_Notes\"\n id=\"description\"\n name=\"description\"\n title=\"{{\n groupInfoModel.c8y_Notes\n ? groupInfoModel.c8y_Notes\n : ('e.g. My description' | translate)\n }}\"\n cols=\"{{ groupInfoModel.c8y_Notes ? groupInfoModel.c8y_Notes.length : 25 }}\"\n placeholder=\"{{ 'e.g. My description' | translate }}\"\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 style=\"max-height: 70px !important\"\n ></textarea>\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\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 <form #smartGroupFilterForm=\"ngForm\" *ngIf=\"isSmartGroup()\">\n <c8y-form-group class=\"m-b-0 m-t-8\">\n <label class=\"m-b-0 text-nowrap\">\n {{ 'Smart group filter' | translate }}\n <button\n class=\"btn-help btn-help--sm m-r-4\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ filterHintMsg | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n ></button>\n </label>\n\n <p *ngIf=\"!canEdit\" class=\"form-control-static\">\n {{ smartGroupFilter }}\n </p>\n <div *ngIf=\"canEdit\" class=\"input-group input-group-editable\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"smartGroupFilter\"\n name=\"filter\"\n size=\"{{ (smartGroupFilter || '').length + 2 }}\"\n placeholder=\"{{ 'e.g.' | translate }} $filter=(id eq '12*')\"\n maxlength=\"254\"\n title=\"{{ 'Smart group filter' | translate }}\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"\n update({ c8y_DeviceQueryString: smartGroupFilter });\n smartGroupFilterForm.form.markAsPristine()\n \"\n [disabled]=\"smartGroupFilterForm.form.invalid\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </form>\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 *ngIf=\"group.com_cumulocity_model_Agent\"\n class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\"\n >\n <label class=\"small m-b-0 m-r-8\">{{ 'Status' | translate }}</label>\n <span class=\"m-l-auto\" *ngIf=\"group.c8y_BrokerSource\">\n {{ group.c8y_BrokerSource.status }}\n </span>\n <span class=\"m-l-auto\" *ngIf=\"!group.c8y_BrokerSource\">\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, OnInit } from '@angular/core';\nimport { Permissions } from '@c8y/ngx-components';\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 {\n refresh: EventEmitter<any> = new EventEmitter();\n showAddGroup = false;\n filterable = true;\n sortable = true;\n shouldDisableAddGroup = false;\n\n constructor(\n private permissions: Permissions,\n private subAssetsService: SubAssetsService,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\n ) {}\n\n ngOnInit() {\n if (!this.permissions.hasRole('ROLE_INVENTORY_READ')) {\n this.sortable = false;\n }\n this.shouldDisableAddGroup = !this.subAssetsService.canCreateGroup();\n }\n}\n","<c8y-title>\n {{ moduleConfig.name | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n label=\"{{ moduleConfig.name | translate }}\"\n icon=\"c8y-group-open\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"moduleConfig.showAddGroupBtn\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"showAddGroup = !showAddGroup\"\n [disabled]=\"shouldDisableAddGroup\"\n [attr.data-cy]=\"'groups-add-group-button'\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n {{ 'Add group' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n *ngIf=\"moduleConfig.showGroupsContextHelp\"\n src=\"/users-guide/device-management/#grouping-devices\"\n></c8y-help>\n\n<div [ngClass]=\"{ drawerOpen: showAddGroup }\">\n <div class=\"bottom-drawer\">\n <c8y-add-group\n [refresh]=\"refresh\"\n (onCancel)=\"showAddGroup = false\"\n *ngIf=\"showAddGroup\"\n ></c8y-add-group>\n </div>\n</div>\n<c8y-sub-assets-grid\n [refresh]=\"refresh\"\n [filterable]=\"filterable\"\n [sortable]=\"sortable\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n class=\"content-fullpage d-flex d-col border-top border-bottom\"\n></c8y-sub-assets-grid>\n","import { Component, EventEmitter, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject } from '@c8y/client';\nimport { ContextRouteService, DisplayOptions, Permissions } from '@c8y/ngx-components';\nimport { Subscription } 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 group: IManagedObject;\n currentGroupId: string;\n showChildrenForDevice: IManagedObject;\n title: string;\n toggle = false;\n showAddGroup = 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\n private dataSub: Subscription;\n\n constructor(\n private route: ActivatedRoute,\n private subAssetsService: SubAssetsService,\n private contextRouteService: ContextRouteService,\n private permissionsService: Permissions,\n @Inject(SUB_ASSETS_CONFIG) public moduleConfig: SubAssetsConfig\n ) {\n this.dataSub = this.route.parent.data.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 };\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([], this.group, {\n skipOwnerCheck: true,\n skipRolesCheck: true\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.route, group);\n this.contextRouteService.refreshContext();\n this.refresh.emit();\n }\n\n isSmartGroup() {\n return this.subAssetsService.isSmartGroup(this.group);\n }\n\n ngOnDestroy(): void {\n if (this.dataSub) {\n this.dataSub.unsubscribe();\n }\n }\n}\n","<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"!isSmartGroup() && moduleConfig.showAddGroupBtn\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"showAddGroup = !showAddGroup\"\n [disabled]=\"shouldDisableAddGroup\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></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 c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Assign devices</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#managing-assets\"></c8y-help>\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 *ngIf=\"moduleConfig.showDetails\"\n [group]=\"group\"\n (groupChange)=\"groupChange($event)\"\n class=\"grid__col--fullspan\"\n ></c8y-group-info>\n <c8y-sub-assets-grid\n [refresh]=\"refresh\"\n [parent-group]=\"group\"\n [filterable]=\"filterable\"\n [displayOptions]=\"displayOptions\"\n [columnsConfigKey]=\"'sub-assets-grid'\"\n [baseQuery]=\"moduleConfig.baseQuery\"\n class=\"d-contents\"\n ></c8y-sub-assets-grid>\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"shouldShowAssetsProperties\">\n <c8y-asset-properties\n [properties]=\"customProperties\"\n [asset]=\"group\"\n (assetChange)=\"groupChange($event)\"\n class=\"d-contents\"\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)=\"showAddGroup = false\"\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 *ngIf=\"showAssignChildDevices\"\n class=\"d-contents\"\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 { CoreModule, gettext, hookRoute, ViewContext } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { AddGroupModule } from './add-group/add-group.module';\nimport { AssetTypeCellRendererComponent } from './columns/asset-type.cell-renderer.component';\nimport { DeleteAssetsModalComponent } from './delete-assets-modal/delete-assets-modal.component';\nimport { GroupInfoComponent } from './group-info.component';\nimport { GroupsComponent } from './groups.component';\nimport { SubAssetsGridComponent } from './sub-assets-grid.component';\nimport { SubAssetsComponent } from './sub-assets.component';\nimport { SubAssetsService } from './sub-assets.service';\nimport { UnassignModalComponent } from './unassign-assets-modal/unassign-modal.component';\nimport { AssignDevicesComponent } from './assign-devices/assign-devices.component';\nimport { AssignChildDevicesComponent } from './assign-devices/assign-child-devices.component';\nimport { AssetPropertiesComponent } from './asset-properties.component';\nimport { AssetPropertiesItemComponent } from './asset-properties-item.component';\nimport { SUB_ASSETS_CONFIG, SubAssetsConfig, defaultModuleConfig } from './sub-assets.model';\n\n@NgModule({\n declarations: [\n SubAssetsComponent,\n SubAssetsGridComponent,\n AssetTypeCellRendererComponent,\n GroupsComponent,\n GroupInfoComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent,\n AssignDevicesComponent,\n AssignChildDevicesComponent,\n AssetPropertiesComponent,\n AssetPropertiesItemComponent\n ],\n imports: [CoreModule, DeviceGridModule, AddGroupModule, PopoverModule, TooltipModule],\n entryComponents: [\n SubAssetsComponent,\n AssetTypeCellRendererComponent,\n GroupsComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent\n ],\n exports: [],\n providers: [\n {\n provide: SUB_ASSETS_CONFIG,\n useValue: defaultModuleConfig\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","i2.AddGroupService","i4.SubAssetsService","i5","i7","i6.AssetPropertiesItemComponent","i4","i2.SmartGroupGridConfigurationStrategy","i1.SubAssetsService","i6","i2.SubAssetsService","i5.SubAssetsGridComponent","i8","i4.AddGroupComponent","i5.AddGroupComponent","i6.SubAssetsGridComponent","i7.GroupInfoComponent","i8.AssignDevicesComponent","i9.AssignChildDevicesComponent","i10.AssetPropertiesComponent"],"mappings":"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"}
|