@c8y/ngx-components 1010.0.21 → 1010.0.26

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@c8y/ngx-components/sub-assets/columns/asset-type.cell-renderer.component.ts","ng://@c8y/ngx-components/sub-assets/columns/asset-type-grid-column.ts","ng://@c8y/ngx-components/sub-assets/sub-assets.service.ts","ng://@c8y/ngx-components/sub-assets/group-info.component.ts","ng://@c8y/ngx-components/sub-assets/sub-assets.component.ts","ng://@c8y/ngx-components/sub-assets/delete-assets-modal/delete-assets-modal.component.ts","ng://@c8y/ngx-components/sub-assets/unassign-assets-modal/unassign-modal.component.ts","ng://@c8y/ngx-components/sub-assets/sub-assets-grid.component.ts","ng://@c8y/ngx-components/sub-assets/add-group/add-group.service.ts","ng://@c8y/ngx-components/sub-assets/add-group/add-group.component.ts","ng://@c8y/ngx-components/sub-assets/add-group/add-group.module.ts","ng://@c8y/ngx-components/sub-assets/groups.component.ts","ng://@c8y/ngx-components/sub-assets/assign-devices/assign-devices.service.ts","ng://@c8y/ngx-components/sub-assets/assign-devices/assign-devices.component.ts","ng://@c8y/ngx-components/sub-assets/assign-devices/assign-child-devices.component.ts","ng://@c8y/ngx-components/sub-assets/sub-assets.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__read","o","m","ar","error","AssetTypeCellRendererComponent","context","deviceGroupService","ngOnInit","isAnyGroup","item","isDevice","groupIcon","icon","iconTitle","getIconTitle","gettext","CellRendererContext","DeviceGroupService","Component","template","AssetTypeGridColumn","initialColumnConfig","_this","_super","name","header","dataType","cellRendererComponent","sortable","sortingConfig","pathSortingConfigs","path","tslib_1.__extends","BaseDeviceGridColumn","SubAssetsService","translateService","inventoryService","appState","user","assetNodeService","smartGroupsService","smartRulesService","alertService","permissionsService","uiOnlyCountersUpdate","BehaviorSubject","GRID_CONFIG_DEFAULT_STORAGE_KEY","IS_DEVICE_GROUP_FRAGMENT","IS_DYNAMIC_GROUP_FRAGMENT","getDefaultColumns","filterable","sortOrder","NameDeviceGridColumn","ModelDeviceGridColumn","SerialNumberDeviceGridColumn","visible","RegistrationDateDeviceGridColumn","SystemIdDeviceGridColumn","ImeiDeviceGridColumn","AlarmsDeviceGridColumn","getDefaultPagination","pageSize","getConfig","pagination","currentPage","getDefaultActionControls","unassignAsset","asset","parentRef","assetId","id","parentId","childAssetsRemove","_a","alertMessage","instant","success","danger","deactivateSmartrulesForAsset","deleteAsset","params","isSmartGroup","deleteGroup","deleteDevice","isSmartGroupV2","shouldShowWithDeviceUserCheckbox","owner","isRootDevice","c8y_IsDevice","hasDeviceUserAsOwner","isDeviceUser","Boolean","getDefaultBulkActionControls","getData","columns","parentReference","baseQuery","query","buildCombinedRootQueryFilter","getRootNodes","filters","getAssetsFilters","withParents","isGroup","getGroupItems","isDynamicGroup","getDynamicGroupItems","c8y_DeviceQueryString","getDeviceChildren","getCount","defaultFilters","withChildren","getAssetsStatistics","getTotal","queryFilter","rootQueryFilter","queriesUtil","addAndFilter","buildQuery","withTotalPages","canEditGroup","group","currentUser","hasAdminRole","hasAnyRole","isOwner","userName","canEditSmartGroup","canDeleteSmartGroup","isUsingInventoryRoles","paging","totalPages","userQuery","getQueryObj","queryPart","addOrderbys","__orderby","fullQuery","__filter","cascade","delete","_b","device","withDeviceUser","deleteDeviceWithUser","listByContext","rules","data","upateSmartrulesPromises","map","rule","bulkDeactivateEnabledSources","all","userId","match","DEFAULT_PAGE_SIZE","TranslateService","InventoryService","AppStateService","UserService","AssetNodeService","SmartGroupsService","SmartRulesService","AlertService","Permissions","Injectable","DeviceGridService","GroupInfoComponent","inventory","subAssetsService","translate","modalService","onGroupChange","EventEmitter","filterMsg","canEditMsg","GROUP_UPDATED_MSG","canEdit","smartGroupFilter","setHintMsg","update","partialGroup","updateSmartGroup","updateGroup","addServerFailure","error_1","filterMsgTranslated","canEditMsgTranslated","filterHintMsg","updatedGroup","setGroup","modalBody","title","confirm","Status","WARNING","ok","cancel","isQueryExecutable","emit","filter","q","list","error_2","ModalService","tslib_1.__decorate","Input","Output","selector","SubAssetsComponent","route","toggle","showAddGroup","showAssignDevices","showGroupInfo","showAssignChildDevices","refresh","dataSub","parent","subscribe","contextData","currentGroupId","state$","state","app","displayOptions","striped","bordered","gridHeader","groupChange","ngOnDestroy","unsubscribe","ActivatedRoute","DeleteAssetsModalComponent","showWithCascadeCheckbox","showWithDeviceUserCheckbox","closeSubject","Subject","labels","status","DANGER","config","message","ngAfterViewInit","modalRef","onClose","onDismiss","complete","ViewChild","static","UnassignModalComponent","SubAssetsGridComponent","subAssetsGridService","bsModalService","emptyStateText","loadingItemsLabel","selectable","onColumnsChange","itemsSelect","bulkActionControls","serverSideDataCallback","onDataSourceModifier","bind","_columns","getUserConfiguredColumns","actionControls","parentGroup","isRootGroup","undefined","forEach","column","setActionControls","isSmartGroupsV2MicroserviceInstalled","isMicroserviceInstalled","deleteAction","type","callback","onDeleteAsset","showIf","unassignAction","text","onUnassignAsset","initialState","show","content","ngOnChanges","changes","firstChange","dataGrid","reload","trackByName","_index","dataSourceModifier","promises","action","counters","tslib_1.__read","dataResponse","size","filteredSize","res","configChange","saveConfig","currentAllItemsCount","filteringLabelsParams","allItemsCount","currentFilteredItemsCount","filteredItemsCount","BsModalService","DataGridComponent","AddGroupService","GROUP_FRAGMENT_TYPE","createGroupAndAssignDevices","groupForm","groupContextId","selectedDevices","description","newGroupMO","getGroupMO","childAssetsCreate","assignDevices","getGroupType","GroupFragment","subGroupType","groupType","moId","childAssetsAdd","AddGroupComponent","deviceGridService","fb","addGroupService","alert","onDeviceQueryStringChange","onCancel","pendingStatus","selected","ITEMS_SELECT_LIMIT","btnLabels","onEnterKeyDown","event","stepper","selectedIndex","createGroup","onEscapeKeyDown","onBackspaceKeyDown","previous","setTimeout","setFocusOnNameInput","formGroupStepOne","Validators","required","subscription","resetStepper","nameInput","nameInputRef","nativeElement","onSelected","selectedDevicesIDs","reset","focus","select","FormBuilder","C8yStepper","HostListener","component","AddGroupModule","NgModule","declarations","imports","CoreModule","DeviceGridModule","FormsModule","ReactiveFormsModule","entryComponents","exports","providers","provide","HOOK_ONCE_ROUTE","useValue","ɵ0","multi","GroupsComponent","permissions","hasRole","AssignDevicesService","AssignDevicesComponent","assignDevicesService","onShowChildDevices","selectedDevice","canAssignDevice","isSelectable","itemsSelectLimit","QueriesUtil","setNotIncludedInGroupQuery","notIncludedInGroupQuery","__not","__bygroupid","showChildren","selectChildrenAction","selectChildren","childDevices","references","AssignChildDevicesComponent","ViewContext","Group","priority","SubAssetsModule","PopoverModule","ɵ0$1"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Component, OnInit } from '@angular/core';\nimport { CellRendererContext, gettext } from '@c8y/ngx-components';\nimport { DeviceGroupService } 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: string;\n isAnyGroup: boolean;\n isDevice: boolean;\n iconTitle: string;\n constructor(\n public context: CellRendererContext,\n private deviceGroupService: DeviceGroupService\n ) {}\n\n ngOnInit() {\n this.isAnyGroup = this.deviceGroupService.isAnyGroup(this.context.item);\n this.isDevice = this.deviceGroupService.isDevice(this.context.item);\n this.groupIcon = this.deviceGroupService.icon(this.context.item);\n this.iconTitle = this.getIconTitle(this.groupIcon);\n }\n\n private getIconTitle(icon: string) {\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 default:\n return gettext('Child device');\n }\n }\n}\n","import { gettext, ColumnDataType, ColumnConfig } from '@c8y/ngx-components';\nimport { AssetTypeCellRendererComponent } from './asset-type.cell-renderer.component';\nimport { BaseDeviceGridColumn } from '@c8y/ngx-components/device-grid';\n\nexport class AssetTypeGridColumn extends BaseDeviceGridColumn {\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}\n","import { 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 BulkActionControl,\n gettext,\n Pagination,\n Permissions\n} from '@c8y/ngx-components';\nimport { AssetNodeService, DeviceGroupService } from '@c8y/ngx-components/assets-navigator';\nimport {\n AlarmsDeviceGridColumn,\n DeviceGridColumn,\n DeviceGridService,\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 { BehaviorSubject } from 'rxjs';\nimport { AssetTypeGridColumn } from './columns/asset-type-grid-column';\n\n@Injectable()\nexport class SubAssetsService extends DeviceGridService {\n queriesUtil: QueriesUtil;\n uiOnlyCountersUpdate = new BehaviorSubject(null);\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 deviceGroupService: DeviceGroupService,\n protected smartGroupsService: SmartGroupsService,\n protected smartRulesService: SmartRulesService,\n protected alertService: AlertService,\n protected permissionsService: Permissions\n ) {\n super(inventoryService, translateService);\n }\n\n getDefaultColumns(filterable: boolean = true, sortable: boolean = true): DeviceGridColumn[] {\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 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('Asset unassigned.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not unassign devices.'));\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: DeviceGridColumn[],\n pagination: Pagination,\n parentReference: IManagedObject,\n baseQuery: any = {}\n ) {\n const isRoot = !parentReference;\n if (isRoot) {\n const query = this.buildCombinedRootQueryFilter(columns, pagination);\n return this.assetNodeService.getRootNodes({ ...pagination, query });\n }\n const filters = {\n ...this.getAssetsFilters(columns, pagination, baseQuery),\n withParents: false\n };\n if (this.deviceGroupService.isGroup(parentReference)) {\n return this.assetNodeService.getGroupItems(parentReference.id, filters);\n }\n if (this.deviceGroupService.isDynamicGroup(parentReference)) {\n return this.assetNodeService.getDynamicGroupItems(\n parentReference.c8y_DeviceQueryString,\n filters\n );\n }\n if (this.deviceGroupService.isDevice(parentReference)) {\n return this.assetNodeService.getDeviceChildren(parentReference.id, filters);\n }\n }\n\n async getCount(\n columns: DeviceGridColumn[],\n pagination: Pagination,\n parentReference: IManagedObject,\n baseQuery: any = {}\n ): Promise<number> {\n const defaultFilters = {\n pageSize: 1,\n withChildren: false\n };\n const filters = !parentReference\n ? {\n query: this.buildCombinedRootQueryFilter(columns, pagination),\n ...defaultFilters\n }\n : {\n ...this.getAssetsFilters(columns, pagination, baseQuery),\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 canEditGroup(group: IManagedObject) {\n const currentUser = this.appState.currentUser.value;\n const hasAdminRole = this.user.hasAnyRole(currentUser, ['ROLE_INVENTORY_ADMIN']);\n const isOwner = group.owner === currentUser.userName;\n return hasAdminRole || isOwner;\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 this.smartGroupsService.isSmartGroup(group) || this.smartGroupsService.isSmartGroupV2(group);\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.deviceGroupService.isGroup(parentReference)) {\n return (await this.assetNodeService.getGroupItems(parentReference.id, filters)).paging\n .totalPages;\n }\n if (this.deviceGroupService.isDynamicGroup(parentReference)) {\n return (await this.assetNodeService.getDynamicGroupItems(\n parentReference.c8y_DeviceQueryString,\n filters\n )).paging.totalPages;\n }\n if (this.deviceGroupService.isDevice(parentReference)) {\n return (await this.assetNodeService.getDeviceChildren(parentReference.id, filters)).paging\n .totalPages;\n }\n }\n\n protected buildCombinedRootQueryFilter(columns, pagination) {\n const queryFilter = this.assetNodeService.rootQueryFilter();\n const userQuery = this.getQueryObj(columns, pagination);\n\n const queryPart = this.queriesUtil.addOrderbys(queryFilter, userQuery.__orderby, 'append');\n const fullQuery = this.queriesUtil.addAndFilter(queryPart, userQuery.__filter);\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('Asset deleted.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not delete asset.'));\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('Asset deleted.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not delete asset.'));\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: DeviceGridColumn[], pagination: Pagination, baseQuery) {\n const query = this.queriesUtil.addAndFilter(this.getQueryObj(columns), baseQuery);\n return {\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 { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IManagedObject, InventoryService, SmartGroupsService } from '@c8y/client';\nimport { AlertService, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { DeviceGroupService } from '@c8y/ngx-components/assets-navigator';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SubAssetsService } from './sub-assets.service';\n\n@Component({\n selector: 'c8y-group-info',\n templateUrl: './group-info.component.html'\n})\nexport class GroupInfoComponent {\n @Input() group: IManagedObject;\n @Output() onGroupChange = new EventEmitter();\n canEdit: boolean;\n groupIcon: string;\n smartGroupFilter: string;\n filterHintMsg: string;\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 constructor(\n private inventory: InventoryService,\n private subAssetsService: SubAssetsService,\n private deviceGroupService: DeviceGroupService,\n private smartGroupsService: SmartGroupsService,\n private alertService: AlertService,\n private translate: TranslateService,\n private modalService: ModalService\n ) {}\n\n ngOnInit() {\n this.canEdit = this.smartGroupsService.isSmartGroupV2(this.group)\n ? this.subAssetsService.canEditSmartGroup()\n : this.subAssetsService.canEditGroup(this.group);\n this.groupIcon = this.deviceGroupService.icon(this.group);\n this.smartGroupFilter = this.group.c8y_DeviceQueryString;\n\n this.setHintMsg();\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 isSmartGroup\n ? await this.updateSmartGroup(partialGroup)\n : await this.updateGroup(partialGroup);\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 const updatedGroup = (await this.inventory.update(group)).data;\n this.setGroup(updatedGroup);\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 let updatedGroup: IManagedObject;\n\n if (!c8y_DeviceQueryString) {\n updatedGroup = (await this.smartGroupsService.update(group)).data;\n this.setGroup(updatedGroup);\n return;\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 if (!(await this.isQueryExecutable(c8y_DeviceQueryString))) {\n return;\n }\n } catch (e) {\n return;\n }\n updatedGroup = (await this.smartGroupsService.update(group)).data;\n this.setGroup(updatedGroup);\n }\n\n private setGroup(group: IManagedObject) {\n this.onGroupChange.emit(group);\n this.alertService.success(this.GROUP_UPDATED_MSG);\n }\n\n private async isQueryExecutable(query: string): Promise<boolean> {\n try {\n const filter = { q: query };\n await this.inventory.list(filter);\n return true;\n } catch (error) {\n this.alertService.addServerFailure(error);\n return false;\n }\n }\n}\n","import { Component, EventEmitter, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IIdentified, IManagedObject } from '@c8y/client';\nimport { AppStateService, DisplayOptions } from '@c8y/ngx-components';\nimport { DeviceGroupService } from '@c8y/ngx-components/assets-navigator';\nimport { Subscription } from 'rxjs';\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 currentGroupId: IIdentified;\n showChildrenForDevice: IManagedObject;\n title: string;\n toggle: boolean = false;\n showAddGroup: boolean = false;\n showAssignDevices: boolean = false;\n requestInProgress: boolean;\n group: IManagedObject;\n showGroupInfo: boolean = true;\n showAssignChildDevices: boolean = false;\n refresh: EventEmitter<any> = new EventEmitter();\n filterable: boolean = true;\n displayOptions: DisplayOptions;\n private dataSub: Subscription;\n\n constructor(\n private route: ActivatedRoute,\n private appState: AppStateService,\n private deviceGroupService: DeviceGroupService,\n private subAssetsService: SubAssetsService\n ) {\n this.dataSub = this.route.parent.data.subscribe(({ contextData }) => {\n this.title = contextData.name;\n this.currentGroupId = contextData.id;\n this.group = contextData;\n this.filterable = !this.deviceGroupService.isDynamicGroup(contextData);\n });\n }\n\n ngOnInit(): void {\n this.appState.state$.subscribe(state => {\n this.showGroupInfo = state.app.name === 'cockpit' || state.app.name === 'devicemanagement';\n });\n\n this.displayOptions = {\n striped: true,\n bordered: false,\n gridHeader: true,\n filter: !this.isSmartGroup()\n };\n }\n\n groupChange(group: IManagedObject): void {\n /**\n * Group is cached in the context-route guard. To avoid loading old data (when switching tabs) we need to update\n * this object in the cache.\n */\n Object.assign(this.group, group);\n this.title = group.name;\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","import { Component, Input, ViewChild } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ConfirmModalComponent,\n gettext,\n ModalLabels,\n Status,\n StatusType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\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 @Input() showWithCascadeCheckbox: boolean = true;\n @Input() showWithDeviceUserCheckbox: boolean = 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 = gettext('Delete asset');\n status: StatusType = Status.DANGER;\n config: DeleteModalCheckboxes = {\n cascade: false,\n withDeviceUser: false\n };\n message: string;\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit() {\n this.message = this.translateService.instant(\n gettext(\n 'You are about to delete asset: \"{{name}}\". This operation is irreversible. Do you want to proceed?'\n ),\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.closeSubject.next(this.config);\n this.closeSubject.complete();\n }\n\n onDismiss() {\n this.closeSubject.complete();\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ConfirmModalComponent,\n gettext,\n ModalLabels,\n Status,\n StatusType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\n@Component({\n selector: 'c8y-unassign-modal',\n templateUrl: './unassign-modal.component.html'\n})\nexport class UnassignModalComponent {\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 devices');\n status: StatusType = Status.WARNING;\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit() {\n this.message = this.translateService.instant(\n gettext('You are about to unassign asset: \"{{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.closeSubject.next(true);\n this.closeSubject.complete();\n }\n\n onDismiss() {\n this.closeSubject.complete();\n }\n}\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 DataGridComponent,\n DataSourceModifier,\n DisplayOptions,\n gettext,\n Pagination,\n Row,\n ServerSideDataResult\n} from '@c8y/ngx-components';\nimport { DeviceGridColumn } 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 { 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})\nexport class SubAssetsGridComponent implements OnInit {\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 toolbar.'\n );\n @Input() loadingItemsLabel: string = gettext('Loading assets…');\n\n get columns() {\n return this._columns;\n }\n @Input() set columns(value: DeviceGridColumn[]) {\n if (value) {\n this._columns = this.subAssetsGridService.getUserConfiguredColumns(value);\n } else {\n this._columns = this.subAssetsGridService.getUserConfiguredColumns(\n this.subAssetsGridService.getDefaultColumns()\n );\n }\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: boolean = 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: boolean = true;\n @Input() sortable: boolean = true;\n @Output() onColumnsChange: EventEmitter<DeviceGridColumn[]> = new EventEmitter<\n DeviceGridColumn[]\n >();\n @Output() itemsSelect: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n pagination: Pagination = this.subAssetsGridService.getDefaultPagination();\n actionControls: ActionControl[];\n bulkActionControls: BulkActionControl[] = 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 private _columns: DeviceGridColumn[];\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 ) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n ngOnInit() {\n this.columns = this.subAssetsGridService.getDefaultColumns(this.filterable, this.sortable);\n if (!this.filterable || !this.sortable) {\n this.columns.forEach(column => {\n column.filterable = this.filterable;\n column.sortable = this.sortable;\n });\n }\n this.setActionControls();\n }\n\n async setActionControls() {\n const actionControls: ActionControl[] = [];\n const {\n 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 this.subAssetsGridService.uiOnlyCountersUpdate.next('DECREASE');\n await this.subAssetsGridService.deleteAsset(asset, parentRef, result);\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: DeviceGridColumn): 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 )\n );\n\n const action = this.subAssetsGridService.uiOnlyCountersUpdate.value;\n if (action) {\n counters = this.uiOnlyCountersUpdate(action);\n this.subAssetsGridService.uiOnlyCountersUpdate.next(null);\n } else {\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 )\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 configChange(config) {\n this.subAssetsGridService.saveConfig(config);\n }\n\n // workaround since the totalPages value is cached on the BE\n private uiOnlyCountersUpdate(action: 'INCREASE' | 'DECREASE') {\n const currentAllItemsCount = this.dataGrid.filteringLabelsParams.allItemsCount;\n const currentFilteredItemsCount = this.dataGrid.filteringLabelsParams.filteredItemsCount;\n let counters;\n if (action === 'DECREASE') {\n counters = {\n size: currentAllItemsCount - 1,\n filteredSize: currentFilteredItemsCount - 1\n };\n }\n if (action === 'INCREASE') {\n counters = {\n size: currentAllItemsCount + 1,\n filteredSize: currentFilteredItemsCount + 1\n };\n }\n return counters;\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/assets-navigator';\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: string = '',\n groupContextId: string | number\n ): Partial<IManagedObject> {\n const group = {\n type: this.getGroupType(groupContextId),\n [this.GROUP_FRAGMENT_TYPE]: {},\n name,\n 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 {\n Component,\n Output,\n EventEmitter,\n ViewChild,\n Input,\n HostListener,\n ElementRef\n} from '@angular/core';\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { C8yStepper, Pagination, AlertService, gettext } from '@c8y/ngx-components';\nimport { AddGroupService } from './add-group.service';\nimport { SubAssetsService } from '../sub-assets.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: boolean = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n subscription: Subscription;\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 protected deviceGridService: DeviceGridService,\n private fb: FormBuilder,\n private addGroupService: AddGroupService,\n private alert: AlertService,\n private subAssetsService: SubAssetsService\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.stepper.selectedIndex === 1) {\n this.createGroup();\n }\n this.stepper.next();\n }\n\n @HostListener('document:keydown.escape', ['$event']) onEscapeKeyDown(event: KeyboardEvent) {\n this.onCancel.emit();\n }\n\n @HostListener('document:keydown.backspace', ['$event']) onBackspaceKeyDown(event: KeyboardEvent) {\n this.stepper.previous();\n\n setTimeout(() => {\n this.setFocusOnNameInput();\n });\n }\n\n ngOnInit() {\n this.formGroupStepOne = this.fb.group({\n name: ['', Validators.required],\n description: ['']\n });\n this.subscription = this.onCancel.subscribe(() => this.resetStepper());\n }\n\n ngAfterViewInit() {\n this.nameInput = this.nameInputRef.nativeElement as HTMLInputElement;\n this.setFocusOnNameInput();\n }\n\n async createGroup() {\n this.pendingStatus = true;\n this.subAssetsService.uiOnlyCountersUpdate.next('INCREASE');\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 this.alert.success(gettext('Group created.'));\n\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 setFocusOnNameInput() {\n if (this.nameInput) {\n this.nameInput.focus();\n this.nameInput.select();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule, HOOK_ONCE_ROUTE } 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 {\n provide: HOOK_ONCE_ROUTE,\n useValue: [\n {\n path: 'add-group',\n component: AddGroupComponent\n }\n ],\n multi: true\n },\n AddGroupService\n ]\n})\nexport class AddGroupModule {}\n","import { Component, EventEmitter, OnInit } from '@angular/core';\nimport { Permissions } from '@c8y/ngx-components';\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: boolean = false;\n sortable: boolean = true;\n\n constructor(private permissions: Permissions) {}\n\n ngOnInit() {\n if (!this.permissions.hasRole('ROLE_INVENTORY_READ')) {\n this.sortable = false;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InventoryService } from '@c8y/client';\n\n@Injectable()\nexport class AssignDevicesService {\n constructor(private inventoryService: InventoryService) {}\n\n async assignDevices(id: string | number, selectedDevices: string[]) {\n const promises = [];\n\n selectedDevices.forEach(moId => {\n promises.push(this.inventoryService.childAssetsAdd(moId, id));\n });\n\n return await Promise.all(promises);\n }\n}\n","import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';\nimport { Pagination, AlertService, gettext, ActionControl, Row } from '@c8y/ngx-components';\nimport { InventoryService } from '@c8y/client';\nimport { SubAssetsService } from '../sub-assets.service';\nimport { IManagedObject } from '@c8y/client';\nimport { QueriesUtil } from '@c8y/client';\nimport { AssignDevicesService } from './assign-devices.service';\n\n@Component({\n selector: 'c8y-assign-devices',\n templateUrl: './assign-devices.component.html'\n})\nexport class AssignDevicesComponent {\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\n deviceQueryStringOutput: string;\n pendingStatus: boolean = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n baseQuery: any;\n canAssignDevice: boolean = false;\n actionControls: ActionControl[] = [];\n readonly isSelectable = true;\n readonly itemsSelectLimit = 15;\n private queriesUtil: QueriesUtil;\n\n constructor(private assignDevicesService: AssignDevicesService, private alert: AlertService) {\n this.queriesUtil = new QueriesUtil();\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 ngOnInit() {\n this.setNotIncludedInGroupQuery();\n }\n\n setNotIncludedInGroupQuery() {\n const notIncludedInGroupQuery = { __not: { __bygroupid: this.currentGroupId } };\n this.baseQuery = notIncludedInGroupQuery;\n }\n\n setActionControls(showChildren: boolean) {\n const actionControls: ActionControl[] = [];\n const selectChildrenAction: ActionControl = {\n type: 'SELECT_CHILDREN',\n icon: 'enter-bottom',\n text: gettext('Select children'),\n callback: (asset: Row) => this.selectChildren(asset as IManagedObject),\n showIf: (asset: Row) =>\n asset.childDevices.references.length > 0\n };\n\n if (showChildren) {\n actionControls.push(selectChildrenAction);\n }\n this.actionControls = actionControls;\n this.refresh.emit();\n }\n\n async assignDevices() {\n this.pendingStatus = true;\n await this.assignDevicesService.assignDevices(this.currentGroupId, this.selected);\n this.pendingStatus = false;\n this.selected = [];\n\n this.onCancel.emit();\n this.refresh.emit();\n\n this.alert.success(gettext('Devices assigned to the group.'));\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","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';\nimport { AssignDevicesService } from './assign-devices.service';\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 pendingStatus: boolean = false;\n\n constructor(\n private alert: AlertService,\n private subAssetsService: SubAssetsService,\n private inventoryService: InventoryService,\n private assignDevicesService: AssignDevicesService\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 }\n\n setNotIncludedInGroupQuery() {\n const notIncludedInGroupQuery = { __not: { __bygroupid: this.currentGroupId } };\n this.baseQuery = notIncludedInGroupQuery;\n }\n\n async assignDevices() {\n this.pendingStatus = true;\n\n try {\n await this.assignDevicesService.assignDevices(this.currentGroupId, this.selected);\n this.refresh.emit();\n this.alert.success(gettext('Child devices assigned to the group.'));\n } catch (error) {\n this.alert.danger(gettext('Could not assign child devices to the group'), 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","import { NgModule } from '@angular/core';\nimport { CoreModule, gettext, HOOK_ONCE_ROUTE, ViewContext } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\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 { AssignDevicesService } from './assign-devices/assign-devices.service';\n\n@NgModule({\n declarations: [\n SubAssetsComponent,\n SubAssetsGridComponent,\n AssetTypeCellRendererComponent,\n GroupsComponent,\n GroupInfoComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent,\n AssignDevicesComponent,\n AssignChildDevicesComponent\n ],\n imports: [CoreModule, DeviceGridModule, AddGroupModule, PopoverModule],\n entryComponents: [\n SubAssetsComponent,\n AssetTypeCellRendererComponent,\n GroupsComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent\n ],\n exports: [],\n providers: [\n {\n provide: HOOK_ONCE_ROUTE,\n useValue: [\n {\n context: ViewContext.Group,\n path: 'subassets',\n priority: 1000,\n icon: 'c8y-group-open',\n label: gettext('Subassets'),\n component: SubAssetsComponent\n },\n {\n path: 'group',\n component: GroupsComponent\n }\n ],\n multi: true\n },\n SubAssetsService,\n AssignDevicesService\n ]\n})\nexport class SubAssetsModule {}\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@c8y/ngx-components/sub-assets/columns/asset-type.cell-renderer.component.ts","ng://@c8y/ngx-components/sub-assets/columns/asset-type-grid-column.ts","ng://@c8y/ngx-components/sub-assets/sub-assets.service.ts","ng://@c8y/ngx-components/sub-assets/group-info.component.ts","ng://@c8y/ngx-components/sub-assets/sub-assets.component.ts","ng://@c8y/ngx-components/sub-assets/delete-assets-modal/delete-assets-modal.component.ts","ng://@c8y/ngx-components/sub-assets/unassign-assets-modal/unassign-modal.component.ts","ng://@c8y/ngx-components/sub-assets/sub-assets-grid.component.ts","ng://@c8y/ngx-components/sub-assets/add-group/add-group.service.ts","ng://@c8y/ngx-components/sub-assets/add-group/add-group.component.ts","ng://@c8y/ngx-components/sub-assets/add-group/add-group.module.ts","ng://@c8y/ngx-components/sub-assets/groups.component.ts","ng://@c8y/ngx-components/sub-assets/assign-devices/assign-devices.service.ts","ng://@c8y/ngx-components/sub-assets/assign-devices/assign-devices.component.ts","ng://@c8y/ngx-components/sub-assets/assign-devices/assign-child-devices.component.ts","ng://@c8y/ngx-components/sub-assets/sub-assets.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__read","o","m","ar","error","AssetTypeCellRendererComponent","context","deviceGroupService","ngOnInit","isAnyGroup","item","isDevice","groupIcon","icon","iconTitle","getIconTitle","gettext","CellRendererContext","DeviceGroupService","Component","template","AssetTypeGridColumn","initialColumnConfig","_this","_super","name","header","dataType","cellRendererComponent","sortable","sortingConfig","pathSortingConfigs","path","tslib_1.__extends","BaseDeviceGridColumn","SubAssetsService","translateService","inventoryService","appState","user","assetNodeService","smartGroupsService","smartRulesService","alertService","permissionsService","uiOnlyCountersUpdate","BehaviorSubject","GRID_CONFIG_DEFAULT_STORAGE_KEY","IS_DEVICE_GROUP_FRAGMENT","IS_DYNAMIC_GROUP_FRAGMENT","getDefaultColumns","filterable","sortOrder","NameDeviceGridColumn","ModelDeviceGridColumn","SerialNumberDeviceGridColumn","visible","RegistrationDateDeviceGridColumn","SystemIdDeviceGridColumn","ImeiDeviceGridColumn","AlarmsDeviceGridColumn","getDefaultPagination","pageSize","getConfig","pagination","currentPage","getDefaultActionControls","unassignAsset","asset","parentRef","assetId","id","parentId","childAssetsRemove","_a","alertMessage","instant","success","danger","deactivateSmartrulesForAsset","deleteAsset","params","isSmartGroup","deleteGroup","deleteDevice","isSmartGroupV2","shouldShowWithDeviceUserCheckbox","owner","isRootDevice","c8y_IsDevice","hasDeviceUserAsOwner","isDeviceUser","Boolean","getDefaultBulkActionControls","getData","columns","parentReference","baseQuery","query","buildCombinedRootQueryFilter","getRootNodes","filters","getAssetsFilters","withParents","isGroup","getGroupItems","isDynamicGroup","getDynamicGroupItems","c8y_DeviceQueryString","getDeviceChildren","getCount","defaultFilters","withChildren","getAssetsStatistics","getTotal","queryFilter","rootQueryFilter","queriesUtil","addAndFilter","buildQuery","withTotalPages","canEditGroup","group","currentUser","hasAdminRole","hasAnyRole","isOwner","userName","canEditSmartGroup","canDeleteSmartGroup","isUsingInventoryRoles","paging","totalPages","userQuery","getQueryObj","queryPart","addOrderbys","__orderby","fullQuery","__filter","cascade","delete","_b","device","withDeviceUser","deleteDeviceWithUser","listByContext","rules","data","upateSmartrulesPromises","map","rule","bulkDeactivateEnabledSources","all","userId","match","DEFAULT_PAGE_SIZE","TranslateService","InventoryService","AppStateService","UserService","AssetNodeService","SmartGroupsService","SmartRulesService","AlertService","Permissions","Injectable","DeviceGridService","GroupInfoComponent","inventory","subAssetsService","translate","modalService","onGroupChange","EventEmitter","filterMsg","canEditMsg","GROUP_UPDATED_MSG","canEdit","smartGroupFilter","setHintMsg","update","partialGroup","updateSmartGroup","updateGroup","addServerFailure","error_1","filterMsgTranslated","canEditMsgTranslated","filterHintMsg","updatedGroup","setGroup","modalBody","title","confirm","Status","WARNING","ok","cancel","isQueryExecutable","emit","filter","q","list","error_2","ModalService","tslib_1.__decorate","Input","Output","selector","SubAssetsComponent","route","toggle","showAddGroup","showAssignDevices","showAssignChildDevices","refresh","dataSub","parent","subscribe","contextData","currentGroupId","displayOptions","striped","bordered","gridHeader","groupChange","ngOnDestroy","unsubscribe","ActivatedRoute","DeleteAssetsModalComponent","showWithCascadeCheckbox","showWithDeviceUserCheckbox","closeSubject","Subject","labels","status","DANGER","config","message","ngAfterViewInit","modalRef","onClose","onDismiss","complete","ViewChild","static","UnassignModalComponent","SubAssetsGridComponent","subAssetsGridService","bsModalService","emptyStateText","loadingItemsLabel","selectable","onColumnsChange","itemsSelect","bulkActionControls","serverSideDataCallback","onDataSourceModifier","bind","_columns","getUserConfiguredColumns","actionControls","parentGroup","isRootGroup","undefined","forEach","column","setActionControls","isSmartGroupsV2MicroserviceInstalled","isMicroserviceInstalled","deleteAction","type","callback","onDeleteAsset","showIf","unassignAction","text","onUnassignAsset","initialState","show","content","ngOnChanges","changes","firstChange","dataGrid","reload","trackByName","_index","dataSourceModifier","promises","action","counters","tslib_1.__read","dataResponse","size","filteredSize","res","configChange","saveConfig","currentAllItemsCount","filteringLabelsParams","allItemsCount","currentFilteredItemsCount","filteredItemsCount","BsModalService","DataGridComponent","AddGroupService","GROUP_FRAGMENT_TYPE","createGroupAndAssignDevices","groupForm","groupContextId","selectedDevices","description","newGroupMO","getGroupMO","childAssetsCreate","assignDevices","getGroupType","GroupFragment","subGroupType","groupType","moId","childAssetsAdd","AddGroupComponent","deviceGridService","fb","addGroupService","alert","onDeviceQueryStringChange","onCancel","pendingStatus","selected","ITEMS_SELECT_LIMIT","btnLabels","onEnterKeyDown","event","stepper","selectedIndex","createGroup","onEscapeKeyDown","onBackspaceKeyDown","previous","setTimeout","setFocusOnNameInput","formGroupStepOne","Validators","required","subscription","resetStepper","nameInput","nameInputRef","nativeElement","onSelected","selectedDevicesIDs","reset","focus","select","FormBuilder","C8yStepper","HostListener","component","AddGroupModule","NgModule","declarations","imports","CoreModule","DeviceGridModule","FormsModule","ReactiveFormsModule","entryComponents","exports","providers","provide","HOOK_ONCE_ROUTE","useValue","ɵ0","multi","GroupsComponent","permissions","hasRole","AssignDevicesService","AssignDevicesComponent","assignDevicesService","onShowChildDevices","selectedDevice","canAssignDevice","isSelectable","itemsSelectLimit","QueriesUtil","setNotIncludedInGroupQuery","notIncludedInGroupQuery","__not","__bygroupid","showChildren","selectChildrenAction","selectChildren","childDevices","references","AssignChildDevicesComponent","ViewContext","Group","priority","SubAssetsModule","PopoverModule","ɵ0$1"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Component, OnInit } from '@angular/core';\nimport { CellRendererContext, gettext } from '@c8y/ngx-components';\nimport { DeviceGroupService } 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: string;\n isAnyGroup: boolean;\n isDevice: boolean;\n iconTitle: string;\n constructor(\n public context: CellRendererContext,\n private deviceGroupService: DeviceGroupService\n ) {}\n\n ngOnInit() {\n this.isAnyGroup = this.deviceGroupService.isAnyGroup(this.context.item);\n this.isDevice = this.deviceGroupService.isDevice(this.context.item);\n this.groupIcon = this.deviceGroupService.icon(this.context.item);\n this.iconTitle = this.getIconTitle(this.groupIcon);\n }\n\n private getIconTitle(icon: string) {\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 default:\n return gettext('Child device');\n }\n }\n}\n","import { gettext, ColumnDataType, ColumnConfig } from '@c8y/ngx-components';\nimport { AssetTypeCellRendererComponent } from './asset-type.cell-renderer.component';\nimport { BaseDeviceGridColumn } from '@c8y/ngx-components/device-grid';\n\nexport class AssetTypeGridColumn extends BaseDeviceGridColumn {\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}\n","import { 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 BulkActionControl,\n gettext,\n Pagination,\n Permissions\n} from '@c8y/ngx-components';\nimport { AssetNodeService, DeviceGroupService } from '@c8y/ngx-components/assets-navigator';\nimport {\n AlarmsDeviceGridColumn,\n DeviceGridColumn,\n DeviceGridService,\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 { BehaviorSubject } from 'rxjs';\nimport { AssetTypeGridColumn } from './columns/asset-type-grid-column';\n\n@Injectable()\nexport class SubAssetsService extends DeviceGridService {\n queriesUtil: QueriesUtil;\n uiOnlyCountersUpdate = new BehaviorSubject(null);\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 deviceGroupService: DeviceGroupService,\n protected smartGroupsService: SmartGroupsService,\n protected smartRulesService: SmartRulesService,\n protected alertService: AlertService,\n protected permissionsService: Permissions\n ) {\n super(inventoryService, translateService);\n }\n\n getDefaultColumns(filterable: boolean = true, sortable: boolean = true): DeviceGridColumn[] {\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 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('Asset unassigned.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not unassign devices.'));\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: DeviceGridColumn[],\n pagination: Pagination,\n parentReference: IManagedObject,\n baseQuery: any = {}\n ) {\n const isRoot = !parentReference;\n if (isRoot) {\n const query = this.buildCombinedRootQueryFilter(columns, pagination);\n return this.assetNodeService.getRootNodes({ ...pagination, query });\n }\n const filters = {\n ...this.getAssetsFilters(columns, pagination, baseQuery),\n withParents: false\n };\n if (this.deviceGroupService.isGroup(parentReference)) {\n return this.assetNodeService.getGroupItems(parentReference.id, filters);\n }\n if (this.deviceGroupService.isDynamicGroup(parentReference)) {\n return this.assetNodeService.getDynamicGroupItems(\n parentReference.c8y_DeviceQueryString,\n filters\n );\n }\n if (this.deviceGroupService.isDevice(parentReference)) {\n return this.assetNodeService.getDeviceChildren(parentReference.id, filters);\n }\n }\n\n async getCount(\n columns: DeviceGridColumn[],\n pagination: Pagination,\n parentReference: IManagedObject,\n baseQuery: any = {}\n ): Promise<number> {\n const defaultFilters = {\n pageSize: 1,\n withChildren: false\n };\n const filters = !parentReference\n ? {\n query: this.buildCombinedRootQueryFilter(columns, pagination),\n ...defaultFilters\n }\n : {\n ...this.getAssetsFilters(columns, pagination, baseQuery),\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 canEditGroup(group: IManagedObject) {\n const currentUser = this.appState.currentUser.value;\n const hasAdminRole = this.user.hasAnyRole(currentUser, ['ROLE_INVENTORY_ADMIN']);\n const isOwner = group.owner === currentUser.userName;\n return hasAdminRole || isOwner;\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 this.smartGroupsService.isSmartGroup(group) || this.smartGroupsService.isSmartGroupV2(group);\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.deviceGroupService.isGroup(parentReference)) {\n return (await this.assetNodeService.getGroupItems(parentReference.id, filters)).paging\n .totalPages;\n }\n if (this.deviceGroupService.isDynamicGroup(parentReference)) {\n return (await this.assetNodeService.getDynamicGroupItems(\n parentReference.c8y_DeviceQueryString,\n filters\n )).paging.totalPages;\n }\n if (this.deviceGroupService.isDevice(parentReference)) {\n return (await this.assetNodeService.getDeviceChildren(parentReference.id, filters)).paging\n .totalPages;\n }\n }\n\n protected buildCombinedRootQueryFilter(columns, pagination) {\n const queryFilter = this.assetNodeService.rootQueryFilter();\n const userQuery = this.getQueryObj(columns, pagination);\n\n const queryPart = this.queriesUtil.addOrderbys(queryFilter, userQuery.__orderby, 'append');\n const fullQuery = this.queriesUtil.addAndFilter(queryPart, userQuery.__filter);\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('Asset deleted.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not delete asset.'));\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('Asset deleted.'));\n this.alertService.success(alertMessage);\n } catch (error) {\n const alertMessage = this.translateService.instant(gettext('Could not delete asset.'));\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: DeviceGridColumn[], pagination: Pagination, baseQuery) {\n const query = this.queriesUtil.addAndFilter(this.getQueryObj(columns), baseQuery);\n return {\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 { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IManagedObject, InventoryService, SmartGroupsService } from '@c8y/client';\nimport { AlertService, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { DeviceGroupService } from '@c8y/ngx-components/assets-navigator';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SubAssetsService } from './sub-assets.service';\n\n@Component({\n selector: 'c8y-group-info',\n templateUrl: './group-info.component.html'\n})\nexport class GroupInfoComponent {\n @Input() group: IManagedObject;\n @Output() onGroupChange = new EventEmitter();\n canEdit: boolean;\n groupIcon: string;\n smartGroupFilter: string;\n filterHintMsg: string;\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 constructor(\n private inventory: InventoryService,\n private subAssetsService: SubAssetsService,\n private deviceGroupService: DeviceGroupService,\n private smartGroupsService: SmartGroupsService,\n private alertService: AlertService,\n private translate: TranslateService,\n private modalService: ModalService\n ) {}\n\n ngOnInit() {\n this.canEdit = this.smartGroupsService.isSmartGroupV2(this.group)\n ? this.subAssetsService.canEditSmartGroup()\n : this.subAssetsService.canEditGroup(this.group);\n this.groupIcon = this.deviceGroupService.icon(this.group);\n this.smartGroupFilter = this.group.c8y_DeviceQueryString;\n\n this.setHintMsg();\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 isSmartGroup\n ? await this.updateSmartGroup(partialGroup)\n : await this.updateGroup(partialGroup);\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 const updatedGroup = (await this.inventory.update(group)).data;\n this.setGroup(updatedGroup);\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 let updatedGroup: IManagedObject;\n\n if (!c8y_DeviceQueryString) {\n updatedGroup = (await this.smartGroupsService.update(group)).data;\n this.setGroup(updatedGroup);\n return;\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 if (!(await this.isQueryExecutable(c8y_DeviceQueryString))) {\n return;\n }\n } catch (e) {\n return;\n }\n updatedGroup = (await this.smartGroupsService.update(group)).data;\n this.setGroup(updatedGroup);\n }\n\n private setGroup(group: IManagedObject) {\n this.onGroupChange.emit(group);\n this.alertService.success(this.GROUP_UPDATED_MSG);\n }\n\n private async isQueryExecutable(query: string): Promise<boolean> {\n try {\n const filter = { q: query };\n await this.inventory.list(filter);\n return true;\n } catch (error) {\n this.alertService.addServerFailure(error);\n return false;\n }\n }\n}\n","import { Component, EventEmitter, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IIdentified, IManagedObject } from '@c8y/client';\nimport { DisplayOptions } from '@c8y/ngx-components';\nimport { DeviceGroupService } from '@c8y/ngx-components/assets-navigator';\nimport { Subscription } from 'rxjs';\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 currentGroupId: IIdentified;\n showChildrenForDevice: IManagedObject;\n title: string;\n toggle: boolean = false;\n showAddGroup: boolean = false;\n showAssignDevices: boolean = false;\n requestInProgress: boolean;\n group: IManagedObject;\n showAssignChildDevices: boolean = false;\n refresh: EventEmitter<any> = new EventEmitter();\n filterable: boolean = true;\n displayOptions: DisplayOptions;\n private dataSub: Subscription;\n\n constructor(\n private route: ActivatedRoute,\n private deviceGroupService: DeviceGroupService,\n private subAssetsService: SubAssetsService\n ) {\n this.dataSub = this.route.parent.data.subscribe(({ contextData }) => {\n this.title = contextData.name;\n this.currentGroupId = contextData.id;\n this.group = contextData;\n this.filterable = !this.deviceGroupService.isDynamicGroup(contextData);\n });\n }\n\n ngOnInit(): void {\n this.displayOptions = {\n striped: true,\n bordered: false,\n gridHeader: true,\n filter: !this.isSmartGroup()\n };\n }\n\n groupChange(group: IManagedObject): void {\n /**\n * Group is cached in the context-route guard. To avoid loading old data (when switching tabs) we need to update\n * this object in the cache.\n */\n Object.assign(this.group, group);\n this.title = group.name;\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","import { Component, Input, ViewChild } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ConfirmModalComponent,\n gettext,\n ModalLabels,\n Status,\n StatusType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\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 @Input() showWithCascadeCheckbox: boolean = true;\n @Input() showWithDeviceUserCheckbox: boolean = 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 = gettext('Delete asset');\n status: StatusType = Status.DANGER;\n config: DeleteModalCheckboxes = {\n cascade: false,\n withDeviceUser: false\n };\n message: string;\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit() {\n this.message = this.translateService.instant(\n gettext(\n 'You are about to delete asset: \"{{name}}\". This operation is irreversible. Do you want to proceed?'\n ),\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.closeSubject.next(this.config);\n this.closeSubject.complete();\n }\n\n onDismiss() {\n this.closeSubject.complete();\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ConfirmModalComponent,\n gettext,\n ModalLabels,\n Status,\n StatusType\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\n@Component({\n selector: 'c8y-unassign-modal',\n templateUrl: './unassign-modal.component.html'\n})\nexport class UnassignModalComponent {\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 devices');\n status: StatusType = Status.WARNING;\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit() {\n this.message = this.translateService.instant(\n gettext('You are about to unassign asset: \"{{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.closeSubject.next(true);\n this.closeSubject.complete();\n }\n\n onDismiss() {\n this.closeSubject.complete();\n }\n}\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 DataGridComponent,\n DataSourceModifier,\n DisplayOptions,\n gettext,\n Pagination,\n Row,\n ServerSideDataResult\n} from '@c8y/ngx-components';\nimport { DeviceGridColumn } 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 { 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})\nexport class SubAssetsGridComponent implements OnInit {\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 toolbar.'\n );\n @Input() loadingItemsLabel: string = gettext('Loading assets…');\n\n get columns() {\n return this._columns;\n }\n @Input() set columns(value: DeviceGridColumn[]) {\n if (value) {\n this._columns = this.subAssetsGridService.getUserConfiguredColumns(value);\n } else {\n this._columns = this.subAssetsGridService.getUserConfiguredColumns(\n this.subAssetsGridService.getDefaultColumns()\n );\n }\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: boolean = 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: boolean = true;\n @Input() sortable: boolean = true;\n @Output() onColumnsChange: EventEmitter<DeviceGridColumn[]> = new EventEmitter<\n DeviceGridColumn[]\n >();\n @Output() itemsSelect: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n pagination: Pagination = this.subAssetsGridService.getDefaultPagination();\n actionControls: ActionControl[];\n bulkActionControls: BulkActionControl[] = 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 private _columns: DeviceGridColumn[];\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 ) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n ngOnInit() {\n this.columns = this.subAssetsGridService.getDefaultColumns(this.filterable, this.sortable);\n if (!this.filterable || !this.sortable) {\n this.columns.forEach(column => {\n column.filterable = this.filterable;\n column.sortable = this.sortable;\n });\n }\n this.setActionControls();\n }\n\n async setActionControls() {\n const actionControls: ActionControl[] = [];\n const {\n 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 this.subAssetsGridService.uiOnlyCountersUpdate.next('DECREASE');\n await this.subAssetsGridService.deleteAsset(asset, parentRef, result);\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: DeviceGridColumn): 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 )\n );\n\n const action = this.subAssetsGridService.uiOnlyCountersUpdate.value;\n if (action) {\n counters = this.uiOnlyCountersUpdate(action);\n this.subAssetsGridService.uiOnlyCountersUpdate.next(null);\n } else {\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 )\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 configChange(config) {\n this.subAssetsGridService.saveConfig(config);\n }\n\n // workaround since the totalPages value is cached on the BE\n private uiOnlyCountersUpdate(action: 'INCREASE' | 'DECREASE') {\n const currentAllItemsCount = this.dataGrid.filteringLabelsParams.allItemsCount;\n const currentFilteredItemsCount = this.dataGrid.filteringLabelsParams.filteredItemsCount;\n let counters;\n if (action === 'DECREASE') {\n counters = {\n size: currentAllItemsCount - 1,\n filteredSize: currentFilteredItemsCount - 1\n };\n }\n if (action === 'INCREASE') {\n counters = {\n size: currentAllItemsCount + 1,\n filteredSize: currentFilteredItemsCount + 1\n };\n }\n return counters;\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/assets-navigator';\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: string = '',\n groupContextId: string | number\n ): Partial<IManagedObject> {\n const group = {\n type: this.getGroupType(groupContextId),\n [this.GROUP_FRAGMENT_TYPE]: {},\n name,\n 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 {\n Component,\n Output,\n EventEmitter,\n ViewChild,\n Input,\n HostListener,\n ElementRef\n} from '@angular/core';\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { C8yStepper, Pagination, AlertService, gettext } from '@c8y/ngx-components';\nimport { AddGroupService } from './add-group.service';\nimport { SubAssetsService } from '../sub-assets.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: boolean = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n subscription: Subscription;\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 protected deviceGridService: DeviceGridService,\n private fb: FormBuilder,\n private addGroupService: AddGroupService,\n private alert: AlertService,\n private subAssetsService: SubAssetsService\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.stepper.selectedIndex === 1) {\n this.createGroup();\n }\n this.stepper.next();\n }\n\n @HostListener('document:keydown.escape', ['$event']) onEscapeKeyDown(event: KeyboardEvent) {\n this.onCancel.emit();\n }\n\n @HostListener('document:keydown.backspace', ['$event']) onBackspaceKeyDown(event: KeyboardEvent) {\n this.stepper.previous();\n\n setTimeout(() => {\n this.setFocusOnNameInput();\n });\n }\n\n ngOnInit() {\n this.formGroupStepOne = this.fb.group({\n name: ['', Validators.required],\n description: ['']\n });\n this.subscription = this.onCancel.subscribe(() => this.resetStepper());\n }\n\n ngAfterViewInit() {\n this.nameInput = this.nameInputRef.nativeElement as HTMLInputElement;\n this.setFocusOnNameInput();\n }\n\n async createGroup() {\n this.pendingStatus = true;\n this.subAssetsService.uiOnlyCountersUpdate.next('INCREASE');\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 this.alert.success(gettext('Group created.'));\n\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 setFocusOnNameInput() {\n if (this.nameInput) {\n this.nameInput.focus();\n this.nameInput.select();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule, HOOK_ONCE_ROUTE } 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 {\n provide: HOOK_ONCE_ROUTE,\n useValue: [\n {\n path: 'add-group',\n component: AddGroupComponent\n }\n ],\n multi: true\n },\n AddGroupService\n ]\n})\nexport class AddGroupModule {}\n","import { Component, EventEmitter, OnInit } from '@angular/core';\nimport { Permissions } from '@c8y/ngx-components';\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: boolean = false;\n sortable: boolean = true;\n\n constructor(private permissions: Permissions) {}\n\n ngOnInit() {\n if (!this.permissions.hasRole('ROLE_INVENTORY_READ')) {\n this.sortable = false;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InventoryService } from '@c8y/client';\n\n@Injectable()\nexport class AssignDevicesService {\n constructor(private inventoryService: InventoryService) {}\n\n async assignDevices(id: string | number, selectedDevices: string[]) {\n const promises = [];\n\n selectedDevices.forEach(moId => {\n promises.push(this.inventoryService.childAssetsAdd(moId, id));\n });\n\n return await Promise.all(promises);\n }\n}\n","import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';\nimport { Pagination, AlertService, gettext, ActionControl, Row } from '@c8y/ngx-components';\nimport { InventoryService } from '@c8y/client';\nimport { SubAssetsService } from '../sub-assets.service';\nimport { IManagedObject } from '@c8y/client';\nimport { QueriesUtil } from '@c8y/client';\nimport { AssignDevicesService } from './assign-devices.service';\n\n@Component({\n selector: 'c8y-assign-devices',\n templateUrl: './assign-devices.component.html'\n})\nexport class AssignDevicesComponent {\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\n deviceQueryStringOutput: string;\n pendingStatus: boolean = false;\n pagination: Pagination = { pageSize: 20, currentPage: 1 };\n selected: string[] = [];\n baseQuery: any;\n canAssignDevice: boolean = false;\n actionControls: ActionControl[] = [];\n readonly isSelectable = true;\n readonly itemsSelectLimit = 15;\n private queriesUtil: QueriesUtil;\n\n constructor(private assignDevicesService: AssignDevicesService, private alert: AlertService) {\n this.queriesUtil = new QueriesUtil();\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 ngOnInit() {\n this.setNotIncludedInGroupQuery();\n }\n\n setNotIncludedInGroupQuery() {\n const notIncludedInGroupQuery = { __not: { __bygroupid: this.currentGroupId } };\n this.baseQuery = notIncludedInGroupQuery;\n }\n\n setActionControls(showChildren: boolean) {\n const actionControls: ActionControl[] = [];\n const selectChildrenAction: ActionControl = {\n type: 'SELECT_CHILDREN',\n icon: 'enter-bottom',\n text: gettext('Select children'),\n callback: (asset: Row) => this.selectChildren(asset as IManagedObject),\n showIf: (asset: Row) =>\n asset.childDevices.references.length > 0\n };\n\n if (showChildren) {\n actionControls.push(selectChildrenAction);\n }\n this.actionControls = actionControls;\n this.refresh.emit();\n }\n\n async assignDevices() {\n this.pendingStatus = true;\n await this.assignDevicesService.assignDevices(this.currentGroupId, this.selected);\n this.pendingStatus = false;\n this.selected = [];\n\n this.onCancel.emit();\n this.refresh.emit();\n\n this.alert.success(gettext('Devices assigned to the group.'));\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","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';\nimport { AssignDevicesService } from './assign-devices.service';\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 pendingStatus: boolean = false;\n\n constructor(\n private alert: AlertService,\n private subAssetsService: SubAssetsService,\n private inventoryService: InventoryService,\n private assignDevicesService: AssignDevicesService\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 }\n\n setNotIncludedInGroupQuery() {\n const notIncludedInGroupQuery = { __not: { __bygroupid: this.currentGroupId } };\n this.baseQuery = notIncludedInGroupQuery;\n }\n\n async assignDevices() {\n this.pendingStatus = true;\n\n try {\n await this.assignDevicesService.assignDevices(this.currentGroupId, this.selected);\n this.refresh.emit();\n this.alert.success(gettext('Child devices assigned to the group.'));\n } catch (error) {\n this.alert.danger(gettext('Could not assign child devices to the group'), 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","import { NgModule } from '@angular/core';\nimport { CoreModule, gettext, HOOK_ONCE_ROUTE, ViewContext } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\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 { AssignDevicesService } from './assign-devices/assign-devices.service';\n\n@NgModule({\n declarations: [\n SubAssetsComponent,\n SubAssetsGridComponent,\n AssetTypeCellRendererComponent,\n GroupsComponent,\n GroupInfoComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent,\n AssignDevicesComponent,\n AssignChildDevicesComponent\n ],\n imports: [CoreModule, DeviceGridModule, AddGroupModule, PopoverModule],\n entryComponents: [\n SubAssetsComponent,\n AssetTypeCellRendererComponent,\n GroupsComponent,\n DeleteAssetsModalComponent,\n UnassignModalComponent\n ],\n exports: [],\n providers: [\n {\n provide: HOOK_ONCE_ROUTE,\n useValue: [\n {\n context: ViewContext.Group,\n path: 'subassets',\n priority: 1000,\n icon: 'c8y-group-open',\n label: gettext('Subassets'),\n component: SubAssetsComponent\n },\n {\n path: 'group',\n component: GroupsComponent\n }\n ],\n multi: true\n },\n SubAssetsService,\n AssignDevicesService\n ]\n})\nexport class SubAssetsModule {}\n"]}
@@ -1,19 +1,16 @@
1
1
  import * as tslib_1 from "tslib";
2
2
  import { Component, EventEmitter } from '@angular/core';
3
3
  import { ActivatedRoute } from '@angular/router';
4
- import { AppStateService, DisplayOptions } from '@c8y/ngx-components';
5
4
  import { DeviceGroupService } from '@c8y/ngx-components/assets-navigator';
6
5
  import { SubAssetsService } from './sub-assets.service';
7
6
  let SubAssetsComponent = class SubAssetsComponent {
8
- constructor(route, appState, deviceGroupService, subAssetsService) {
7
+ constructor(route, deviceGroupService, subAssetsService) {
9
8
  this.route = route;
10
- this.appState = appState;
11
9
  this.deviceGroupService = deviceGroupService;
12
10
  this.subAssetsService = subAssetsService;
13
11
  this.toggle = false;
14
12
  this.showAddGroup = false;
15
13
  this.showAssignDevices = false;
16
- this.showGroupInfo = true;
17
14
  this.showAssignChildDevices = false;
18
15
  this.refresh = new EventEmitter();
19
16
  this.filterable = true;
@@ -25,9 +22,6 @@ let SubAssetsComponent = class SubAssetsComponent {
25
22
  });
26
23
  }
27
24
  ngOnInit() {
28
- this.appState.state$.subscribe(state => {
29
- this.showGroupInfo = state.app.name === 'cockpit' || state.app.name === 'devicemanagement';
30
- });
31
25
  this.displayOptions = {
32
26
  striped: true,
33
27
  bordered: false,
@@ -55,15 +49,14 @@ let SubAssetsComponent = class SubAssetsComponent {
55
49
  };
56
50
  SubAssetsComponent.ctorParameters = () => [
57
51
  { type: ActivatedRoute },
58
- { type: AppStateService },
59
52
  { type: DeviceGroupService },
60
53
  { type: SubAssetsService }
61
54
  ];
62
55
  SubAssetsComponent = tslib_1.__decorate([
63
56
  Component({
64
57
  selector: 'c8y-sub-assets',
65
- template: "<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"!isSmartGroup()\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"showAddGroup = !showAddGroup\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i><span translate>Add group</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"!isSmartGroup()\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Assign devices' | translate }}\"\n (click)=\"showAssignDevices = !showAssignDevices\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i><span translate>Assign devices</span>\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-flex d-col\">\n <c8y-group-info\n *ngIf=\"showGroupInfo\"\n [group]=\"group\"\n (onGroupChange)=\"groupChange($event)\"\n ></c8y-group-info>\n <c8y-sub-assets-grid\n [refresh]=\"refresh\"\n [parent-group]=\"group\"\n [filterable]=\"filterable\"\n [displayOptions]=\"displayOptions\"\n class=\"d-contents\"\n ></c8y-sub-assets-grid>\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 }\" *ngIf=\"showAssignChildDevices\">\n <div class=\"bottom-drawer m-t-40\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-child-devices\n class=\"d-contents\"\n (onCancel)=\"showAssignChildDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n [parentDevice]=\"showChildrenForDevice\"\n ></c8y-assign-child-devices>\n </div>\n </div>\n</div>\n"
58
+ template: "<c8y-title>\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"!isSmartGroup()\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add group' | translate }}\"\n (click)=\"showAddGroup = !showAddGroup\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i><span translate>Add group</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"!isSmartGroup()\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Assign devices' | translate }}\"\n (click)=\"showAssignDevices = !showAssignDevices\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i><span translate>Assign devices</span>\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-flex d-col\">\n <c8y-group-info [group]=\"group\" (onGroupChange)=\"groupChange($event)\"></c8y-group-info>\n <c8y-sub-assets-grid\n [refresh]=\"refresh\"\n [parent-group]=\"group\"\n [filterable]=\"filterable\"\n [displayOptions]=\"displayOptions\"\n class=\"d-contents\"\n ></c8y-sub-assets-grid>\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 }\" *ngIf=\"showAssignChildDevices\">\n <div class=\"bottom-drawer m-t-40\">\n <div class=\"d-flex d-col no-align-items fit-h\">\n <c8y-assign-child-devices\n class=\"d-contents\"\n (onCancel)=\"showAssignChildDevices = false\"\n [refresh]=\"refresh\"\n [currentGroupId]=\"currentGroupId\"\n [parentDevice]=\"showChildrenForDevice\"\n ></c8y-assign-child-devices>\n </div>\n </div>\n</div>\n"
66
59
  })
67
60
  ], SubAssetsComponent);
68
61
  export { SubAssetsComponent };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWFzc2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYzh5L25neC1jb21wb25lbnRzL3N1Yi1hc3NldHMvIiwic291cmNlcyI6WyJzdWItYXNzZXRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBTXhELElBQWEsa0JBQWtCLEdBQS9CLE1BQWEsa0JBQWtCO0lBZ0I3QixZQUNVLEtBQXFCLEVBQ3JCLFFBQXlCLEVBQ3pCLGtCQUFzQyxFQUN0QyxnQkFBa0M7UUFIbEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBaEI1QyxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUduQyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hELGVBQVUsR0FBWSxJQUFJLENBQUM7UUFVekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQztRQUM3RixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7U0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBcUI7UUFDL0I7OztXQUdHO1FBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztDQUNGLENBQUE7O1lBN0NrQixjQUFjO1lBQ1gsZUFBZTtZQUNMLGtCQUFrQjtZQUNwQixnQkFBZ0I7O0FBcEJqQyxrQkFBa0I7SUFKOUIsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixxN0VBQTBDO0tBQzNDLENBQUM7R0FDVyxrQkFBa0IsQ0E4RDlCO1NBOURZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlLCBEaXNwbGF5T3B0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGV2aWNlR3JvdXBTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hc3NldHMtbmF2aWdhdG9yJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3ViQXNzZXRzU2VydmljZSB9IGZyb20gJy4vc3ViLWFzc2V0cy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXN1Yi1hc3NldHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3ViLWFzc2V0cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3ViQXNzZXRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjdXJyZW50R3JvdXBJZDogSUlkZW50aWZpZWQ7XG4gIHNob3dDaGlsZHJlbkZvckRldmljZTogSU1hbmFnZWRPYmplY3Q7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRvZ2dsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93QWRkR3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0Fzc2lnbkRldmljZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVxdWVzdEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIGdyb3VwOiBJTWFuYWdlZE9iamVjdDtcbiAgc2hvd0dyb3VwSW5mbzogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dBc3NpZ25DaGlsZERldmljZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVmcmVzaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGZpbHRlcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBkaXNwbGF5T3B0aW9uczogRGlzcGxheU9wdGlvbnM7XG4gIHByaXZhdGUgZGF0YVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGRldmljZUdyb3VwU2VydmljZTogRGV2aWNlR3JvdXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ViQXNzZXRzU2VydmljZTogU3ViQXNzZXRzU2VydmljZVxuICApIHtcbiAgICB0aGlzLmRhdGFTdWIgPSB0aGlzLnJvdXRlLnBhcmVudC5kYXRhLnN1YnNjcmliZSgoeyBjb250ZXh0RGF0YSB9KSA9PiB7XG4gICAgICB0aGlzLnRpdGxlID0gY29udGV4dERhdGEubmFtZTtcbiAgICAgIHRoaXMuY3VycmVudEdyb3VwSWQgPSBjb250ZXh0RGF0YS5pZDtcbiAgICAgIHRoaXMuZ3JvdXAgPSBjb250ZXh0RGF0YTtcbiAgICAgIHRoaXMuZmlsdGVyYWJsZSA9ICF0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0R5bmFtaWNHcm91cChjb250ZXh0RGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcFN0YXRlLnN0YXRlJC5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgdGhpcy5zaG93R3JvdXBJbmZvID0gc3RhdGUuYXBwLm5hbWUgPT09ICdjb2NrcGl0JyB8fCBzdGF0ZS5hcHAubmFtZSA9PT0gJ2RldmljZW1hbmFnZW1lbnQnO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kaXNwbGF5T3B0aW9ucyA9IHtcbiAgICAgIHN0cmlwZWQ6IHRydWUsXG4gICAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgICBncmlkSGVhZGVyOiB0cnVlLFxuICAgICAgZmlsdGVyOiAhdGhpcy5pc1NtYXJ0R3JvdXAoKVxuICAgIH07XG4gIH1cblxuICBncm91cENoYW5nZShncm91cDogSU1hbmFnZWRPYmplY3QpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBHcm91cCBpcyBjYWNoZWQgaW4gdGhlIGNvbnRleHQtcm91dGUgZ3VhcmQuIFRvIGF2b2lkIGxvYWRpbmcgb2xkIGRhdGEgKHdoZW4gc3dpdGNoaW5nIHRhYnMpIHdlIG5lZWQgdG8gdXBkYXRlXG4gICAgICogdGhpcyBvYmplY3QgaW4gdGhlIGNhY2hlLlxuICAgICAqL1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5ncm91cCwgZ3JvdXApO1xuICAgIHRoaXMudGl0bGUgPSBncm91cC5uYW1lO1xuICAgIHRoaXMucmVmcmVzaC5lbWl0KCk7XG4gIH1cblxuICBpc1NtYXJ0R3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViQXNzZXRzU2VydmljZS5pc1NtYXJ0R3JvdXAodGhpcy5ncm91cCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhU3ViKSB7XG4gICAgICB0aGlzLmRhdGFTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWFzc2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYzh5L25neC1jb21wb25lbnRzL3N1Yi1hc3NldHMvIiwic291cmNlcyI6WyJzdWItYXNzZXRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU14RCxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFrQjtJQWU3QixZQUNVLEtBQXFCLEVBQ3JCLGtCQUFzQyxFQUN0QyxnQkFBa0M7UUFGbEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBZDVDLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBR25DLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4QyxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsZUFBVSxHQUFZLElBQUksQ0FBQztRQVN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7WUFDbEUsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtTQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFxQjtRQUMvQjs7O1dBR0c7UUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0NBQ0YsQ0FBQTs7WUF4Q2tCLGNBQWM7WUFDRCxrQkFBa0I7WUFDcEIsZ0JBQWdCOztBQWxCakMsa0JBQWtCO0lBSjlCLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIsODRFQUEwQztLQUMzQyxDQUFDO0dBQ1csa0JBQWtCLENBd0Q5QjtTQXhEWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElJZGVudGlmaWVkLCBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IERpc3BsYXlPcHRpb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEZXZpY2VHcm91cFNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJBc3NldHNTZXJ2aWNlIH0gZnJvbSAnLi9zdWItYXNzZXRzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc3ViLWFzc2V0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdWItYXNzZXRzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWJBc3NldHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGN1cnJlbnRHcm91cElkOiBJSWRlbnRpZmllZDtcbiAgc2hvd0NoaWxkcmVuRm9yRGV2aWNlOiBJTWFuYWdlZE9iamVjdDtcbiAgdGl0bGU6IHN0cmluZztcbiAgdG9nZ2xlOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dBZGRHcm91cDogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93QXNzaWduRGV2aWNlczogYm9vbGVhbiA9IGZhbHNlO1xuICByZXF1ZXN0SW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgZ3JvdXA6IElNYW5hZ2VkT2JqZWN0O1xuICBzaG93QXNzaWduQ2hpbGREZXZpY2VzOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnJlc2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBmaWx0ZXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zO1xuICBwcml2YXRlIGRhdGFTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGRldmljZUdyb3VwU2VydmljZTogRGV2aWNlR3JvdXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ViQXNzZXRzU2VydmljZTogU3ViQXNzZXRzU2VydmljZVxuICApIHtcbiAgICB0aGlzLmRhdGFTdWIgPSB0aGlzLnJvdXRlLnBhcmVudC5kYXRhLnN1YnNjcmliZSgoeyBjb250ZXh0RGF0YSB9KSA9PiB7XG4gICAgICB0aGlzLnRpdGxlID0gY29udGV4dERhdGEubmFtZTtcbiAgICAgIHRoaXMuY3VycmVudEdyb3VwSWQgPSBjb250ZXh0RGF0YS5pZDtcbiAgICAgIHRoaXMuZ3JvdXAgPSBjb250ZXh0RGF0YTtcbiAgICAgIHRoaXMuZmlsdGVyYWJsZSA9ICF0aGlzLmRldmljZUdyb3VwU2VydmljZS5pc0R5bmFtaWNHcm91cChjb250ZXh0RGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0ge1xuICAgICAgc3RyaXBlZDogdHJ1ZSxcbiAgICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICAgIGdyaWRIZWFkZXI6IHRydWUsXG4gICAgICBmaWx0ZXI6ICF0aGlzLmlzU21hcnRHcm91cCgpXG4gICAgfTtcbiAgfVxuXG4gIGdyb3VwQ2hhbmdlKGdyb3VwOiBJTWFuYWdlZE9iamVjdCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEdyb3VwIGlzIGNhY2hlZCBpbiB0aGUgY29udGV4dC1yb3V0ZSBndWFyZC4gVG8gYXZvaWQgbG9hZGluZyBvbGQgZGF0YSAod2hlbiBzd2l0Y2hpbmcgdGFicykgd2UgbmVlZCB0byB1cGRhdGVcbiAgICAgKiB0aGlzIG9iamVjdCBpbiB0aGUgY2FjaGUuXG4gICAgICovXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmdyb3VwLCBncm91cCk7XG4gICAgdGhpcy50aXRsZSA9IGdyb3VwLm5hbWU7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgfVxuXG4gIGlzU21hcnRHcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmlzU21hcnRHcm91cCh0aGlzLmdyb3VwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIl19