@c8y/ngx-components 1011.0.18 → 1011.0.21

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.
Files changed (49) hide show
  1. package/assets-navigator/asset-node.service.d.ts +7 -3
  2. package/assets-navigator/c8y-ngx-components-assets-navigator.metadata.json +1 -1
  3. package/bundles/c8y-ngx-components-assets-navigator.umd.js +7 -2
  4. package/bundles/c8y-ngx-components-assets-navigator.umd.js.map +1 -1
  5. package/bundles/c8y-ngx-components-assets-navigator.umd.min.js +1 -1
  6. package/bundles/c8y-ngx-components-assets-navigator.umd.min.js.map +1 -1
  7. package/bundles/c8y-ngx-components-child-devices.umd.js +416 -0
  8. package/bundles/c8y-ngx-components-child-devices.umd.js.map +1 -0
  9. package/bundles/c8y-ngx-components-child-devices.umd.min.js +16 -0
  10. package/bundles/c8y-ngx-components-child-devices.umd.min.js.map +1 -0
  11. package/bundles/c8y-ngx-components-device-grid.umd.js +169 -36
  12. package/bundles/c8y-ngx-components-device-grid.umd.js.map +1 -1
  13. package/bundles/c8y-ngx-components-device-grid.umd.min.js +2 -2
  14. package/bundles/c8y-ngx-components-device-grid.umd.min.js.map +1 -1
  15. package/bundles/c8y-ngx-components-sub-assets.umd.js +5 -3
  16. package/bundles/c8y-ngx-components-sub-assets.umd.js.map +1 -1
  17. package/bundles/c8y-ngx-components-sub-assets.umd.min.js +1 -1
  18. package/bundles/c8y-ngx-components-sub-assets.umd.min.js.map +1 -1
  19. package/child-devices/c8y-ngx-components-child-devices.d.ts +5 -0
  20. package/child-devices/c8y-ngx-components-child-devices.metadata.json +1 -0
  21. package/child-devices/child-devices.component.d.ts +9 -0
  22. package/child-devices/child-devices.guard.d.ts +7 -0
  23. package/child-devices/child-devices.module.d.ts +2 -0
  24. package/child-devices/index.d.ts +2 -0
  25. package/child-devices/package.json +11 -0
  26. package/device-grid/c8y-ngx-components-device-grid.metadata.json +1 -1
  27. package/device-grid/device-grid.component.d.ts +18 -4
  28. package/device-grid/device-grid.service.d.ts +8 -3
  29. package/esm2015/assets-navigator/asset-node.service.js +8 -3
  30. package/esm2015/child-devices/c8y-ngx-components-child-devices.js +6 -0
  31. package/esm2015/child-devices/child-devices.component.js +30 -0
  32. package/esm2015/child-devices/child-devices.guard.js +30 -0
  33. package/esm2015/child-devices/child-devices.module.js +36 -0
  34. package/esm2015/child-devices/index.js +3 -0
  35. package/esm2015/device-grid/device-grid.component.js +62 -15
  36. package/esm2015/device-grid/device-grid.service.js +59 -22
  37. package/esm2015/sub-assets/sub-assets.service.js +7 -5
  38. package/fesm2015/c8y-ngx-components-assets-navigator.js +7 -2
  39. package/fesm2015/c8y-ngx-components-assets-navigator.js.map +1 -1
  40. package/fesm2015/c8y-ngx-components-child-devices.js +96 -0
  41. package/fesm2015/c8y-ngx-components-child-devices.js.map +1 -0
  42. package/fesm2015/c8y-ngx-components-device-grid.js +118 -35
  43. package/fesm2015/c8y-ngx-components-device-grid.js.map +1 -1
  44. package/fesm2015/c8y-ngx-components-sub-assets.js +6 -4
  45. package/fesm2015/c8y-ngx-components-sub-assets.js.map +1 -1
  46. package/locales/locales.pot +6 -0
  47. package/package.json +2 -2
  48. package/sub-assets/c8y-ngx-components-sub-assets.metadata.json +1 -1
  49. package/sub-assets/sub-assets.service.d.ts +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-device-grid.js","sources":["../../device-grid/schema-form.component.ts","../../device-grid/columns/base.filtering-form-renderer.component.ts","../../device-grid/columns/base.device-grid-column.ts","../../device-grid/columns/alarms.cell-renderer.component.ts","../../device-grid/columns/alarms.device-grid-column.ts","../../device-grid/columns/group.cell-renderer.component.ts","../../device-grid/columns/group.filtering-form-renderer.component.ts","../../device-grid/columns/group.device-grid-column.ts","../../device-grid/columns/imei.device-grid-column.ts","../../device-grid/columns/model.cell-renderer.component.ts","../../device-grid/columns/model.device-grid-column.ts","../../device-grid/columns/name.cell-renderer.component.ts","../../device-grid/columns/name.device-grid-column.ts","../../device-grid/columns/registration-date.cell-renderer.component.ts","../../device-grid/columns/registration-date.device-grid-column.ts","../../device-grid/columns/serial-number.cell-renderer.component.ts","../../device-grid/columns/serial-number.device-grid-column.ts","../../device-grid/columns/status.cell-renderer.component.ts","../../device-grid/columns/status.device-grid-column.ts","../../device-grid/columns/system-id.device-grid-column.ts","../../device-grid/device-grid.service.ts","../../device-grid/device-grid.component.ts","../../device-grid/device-grid.module.ts","../../device-grid/columns/custom.device-grid-column.ts","../../device-grid/columns/type.device-grid-column.ts","../../device-grid/c8y-ngx-components-device-grid.ts"],"sourcesContent":["import { Directive, ElementRef, Injector, Input } from '@angular/core';\nimport { UpgradeComponent } from '@angular/upgrade/static';\n\n// TODO: MTM-31785: find replacement for schema-form ng1 library\n@Directive({\n selector: 'c8y-schema-form'\n})\nexport class SchemaFormComponent extends UpgradeComponent {\n @Input() schema: any;\n @Input() model: any;\n @Input('form') inputForm?: any;\n @Input('options') inputOptions?: any;\n\n constructor(elementRef: ElementRef, injector: Injector) {\n super('c8ySchemaForm', elementRef, injector);\n }\n}\n","import { Component, forwardRef, OnInit, ViewChild, HostListener, ElementRef } from '@angular/core';\nimport { get, cloneDeep } from 'lodash-es';\nimport { FilteringFormRendererContext } from '@c8y/ngx-components';\nimport { SchemaFormComponent } from '../schema-form.component';\nimport { DeviceGridColumn } from '../device-grid.models';\n\n@Component({\n templateUrl: './base.filtering-form-renderer.component.html'\n})\nexport class BaseFilteringFormRendererComponent implements OnInit {\n @ViewChild(forwardRef(() => SchemaFormComponent), { static: false })\n schemaFormComponent: any;\n schema;\n form;\n model;\n options;\n\n constructor(public context: FilteringFormRendererContext) {}\n\n @HostListener('keydown.enter', ['$event']) onEnterKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.applyFilter();\n }\n @HostListener('keydown.escape', ['$event']) onEscapeKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.resetFilter();\n }\n\n ngOnInit() {\n const column: DeviceGridColumn = this.context.property;\n this.schema = cloneDeep(column.filteringConfig.schema);\n this.form = cloneDeep(column.filteringConfig.form);\n this.model = cloneDeep(column.externalFilterQuery || {});\n this.options = { formDefaults: { ngModelOptions: { debounce: 100 } } };\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n try {\n this.schemaFormComponent.elementRef.nativeElement.querySelector('input').focus();\n } catch (e) {\n // intended empty\n }\n }, 10);\n }\n\n canApply() {\n return get(this.schemaFormComponent, '$componentScope.vm.ngForm.$invalid');\n }\n\n applyFilter() {\n this.context.applyFilter({\n externalFilterQuery: this.model\n });\n }\n\n resetFilter() {\n this.context.resetFilter();\n }\n}\n","import { Type } from '@angular/core';\nimport { ColumnDataType, SortOrder, FilterPredicateFunction, ColumnConfig } from '@c8y/ngx-components';\nimport {\n DeviceGridColumn,\n DeviceGridColumnFilteringConfig,\n DeviceGridColumnSortingConfig\n} from '../device-grid.models';\nimport { BaseFilteringFormRendererComponent } from './base.filtering-form-renderer.component';\n\nexport class BaseDeviceGridColumn implements DeviceGridColumn {\n name: string;\n path?: string;\n header?: string;\n dataType?: ColumnDataType;\n\n visible?: boolean;\n positionFixed?: boolean;\n gridTrackSize?: string;\n\n headerCSSClassName?: string | string[];\n headerCellRendererComponent?: Type<any>;\n\n cellCSSClassName?: string | string[];\n cellRendererComponent?: Type<any>;\n\n sortable?: boolean;\n sortingConfig?: DeviceGridColumnSortingConfig;\n sortOrder?: SortOrder;\n\n filterable?: boolean;\n filteringConfig?: DeviceGridColumnFilteringConfig;\n filteringFormRendererComponent?: Type<any>;\n filterPredicate?: string | FilterPredicateFunction;\n externalFilterQuery?: string | object;\n\n constructor(config: ColumnConfig = {}) {\n this.filteringFormRendererComponent = BaseFilteringFormRendererComponent;\n Object.assign(this, config);\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n templateUrl: './alarms.cell-renderer.component.html'\n})\nexport class AlarmsCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { AlarmsCellRendererComponent } from './alarms.cell-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\nimport { map } from 'lodash-es';\n\nexport class AlarmsDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'alarms';\n this.header = gettext('Alarms');\n this.cellRendererComponent = AlarmsCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n critical: {\n type: 'boolean'\n },\n major: {\n type: 'boolean'\n },\n minor: {\n type: 'boolean'\n },\n warning: {\n type: 'boolean'\n },\n none: {\n type: 'boolean'\n }\n }\n },\n form: [\n {\n type: 'template',\n template: `<label><span translate>${gettext('Show devices with active')}</span>:</label>`\n },\n {\n key: 'critical',\n title: gettext('Critical alarms')\n },\n {\n key: 'major',\n title: gettext('Major alarms')\n },\n {\n key: 'minor',\n title: gettext('Minor alarms')\n },\n {\n key: 'warning',\n title: gettext('Warnings')\n },\n {\n key: 'none',\n title: gettext('No alarms')\n }\n ],\n getFilter(model) {\n const filter: any = {};\n const ors = [];\n if (model.critical) {\n ors.push({ 'c8y_ActiveAlarmsStatus.critical': { __gt: 0 } });\n }\n if (model.major) {\n ors.push({ 'c8y_ActiveAlarmsStatus.major': { __gt: 0 } });\n }\n if (model.minor) {\n ors.push({ 'c8y_ActiveAlarmsStatus.minor': { __gt: 0 } });\n }\n if (model.warning) {\n ors.push({ 'c8y_ActiveAlarmsStatus.warning': { __gt: 0 } });\n }\n if (model.none) {\n ors.push({ __not: { __has: 'c8y_ActiveAlarmsStatus' } });\n ors.push({\n __and: map(['critical', 'major', 'minor', 'warning'], sev => {\n const zero = {};\n const has = { __not: { __has: undefined } };\n const key = `c8y_ActiveAlarmsStatus.${sev}`;\n zero[key] = 0;\n has.__not.__has = key;\n return { __or: [zero, has] };\n })\n });\n }\n if (ors.length) {\n filter.__or = ors;\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [\n { path: 'c8y_ActiveAlarmsStatus.critical' },\n { path: 'c8y_ActiveAlarmsStatus.major' },\n { path: 'c8y_ActiveAlarmsStatus.minor' },\n { path: 'c8y_ActiveAlarmsStatus.warning' }\n ]\n };\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n templateUrl: './group.cell-renderer.component.html'\n})\nexport class GroupCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { Component, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { FilteringFormRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridColumn } from '../device-grid.models';\n\n@Component({\n templateUrl: './group.filtering-form-renderer.component.html'\n})\nexport class GroupFilteringFormRendererComponent implements OnInit {\n @ViewChild('assetSelector', { static: false, read: ElementRef }) assetSelector: ElementRef;\n model: any;\n preselected: string[] = [];\n\n constructor(public context: FilteringFormRendererContext) {}\n\n @HostListener('keydown.enter', ['$event']) onEnterKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.applyFilter();\n }\n @HostListener('keydown.escape', ['$event']) onEscapeKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.resetFilter();\n }\n\n ngOnInit() {\n const column: DeviceGridColumn = this.context.property;\n this.model = cloneDeep(column.externalFilterQuery || {});\n this.preselected = this.model.selectedNodes || [];\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n try {\n this.assetSelector.nativeElement.querySelector('input').focus();\n } catch (ex) {\n // intended empty\n }\n }, 250);\n }\n\n applyFilter() {\n this.context.applyFilter({\n externalFilterQuery: this.model\n });\n }\n\n resetFilter() {\n this.context.resetFilter();\n }\n\n selectionChanged(nodes) {\n this.model.selectedNodes = nodes;\n }\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { GroupCellRendererComponent } from './group.cell-renderer.component';\nimport { GroupFilteringFormRendererComponent } from './group.filtering-form-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\nimport { IManagedObject } from '@c8y/client';\n\nexport class GroupDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'group';\n this.header = gettext('Group');\n this.cellRendererComponent = GroupCellRendererComponent;\n this.filteringFormRendererComponent = GroupFilteringFormRendererComponent;\n this.filterable = true;\n this.filteringConfig = {\n getFilter(model) {\n const filter: any = {};\n if (model.selectedNodes) {\n filter.__or = model.selectedNodes.map((mo: IManagedObject) => {\n if (mo.c8y_DeviceQueryString) {\n return { __useFilterQueryString: mo.c8y_DeviceQueryString };\n }\n return { __bygroupid: mo.id };\n });\n }\n return filter;\n }\n };\n this.sortable = false;\n }\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class ImeiDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const self = this;\n\n this.path = 'c8y_Mobile.imei';\n this.name = 'imei';\n this.header = gettext('IMEI');\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n imeis: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'imeis',\n title: gettext('Show devices with IMEI'),\n add: gettext('Or'),\n items: [\n {\n key: 'imeis[]',\n notitle: true,\n placeholder: gettext(\n 'e.g. 46543432321, you can use an asterisk (*) as wildcard character'\n )\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.imeis.length) {\n filter[self.path] = { __in: model.imeis };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n template: `\n {{ deviceGridService.getModel(context.item) }}\n `\n})\nexport class ModelCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { ModelCellRendererComponent } from './model.cell-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class ModelDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const hardwareModelPath = 'c8y_Hardware.model';\n const vendingModelPath = 'com_nsn_startups_vendme_fragments_VendingMachineTypeInfo.model';\n\n this.name = 'model';\n this.header = gettext('Model');\n this.cellRendererComponent = ModelCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n models: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'models',\n title: gettext('Show devices with model'),\n add: gettext('Or'),\n items: [\n {\n key: 'models[]',\n notitle: true,\n placeholder: gettext(\n 'e.g. ModelName, you can use an asterisk (*) as wildcard character'\n )\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.models.length) {\n filter.__or = {\n [hardwareModelPath]: { __in: model.models },\n [vendingModelPath]: { __in: model.models }\n };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: hardwareModelPath }, { path: vendingModelPath }]\n };\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n template: `\n <a\n [href]=\"deviceGridService.getHref(context.item)\"\n title=\"{{ deviceGridService.getProperName(context.item) }}\"\n class=\"interact\"\n >\n {{ deviceGridService.getProperName(context.item) }}\n </a>\n `\n})\nexport class NameCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { NameCellRendererComponent } from './name.cell-renderer.component';\nimport { ColumnDataRecordClassName, gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class NameDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'name';\n this.path = 'name';\n this.header = gettext('Name');\n this.cellCSSClassName = ColumnDataRecordClassName.Header;\n this.cellRendererComponent = NameCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n names: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'names',\n title: gettext('Show devices with name'),\n add: gettext('Or'),\n items: [\n {\n key: 'names[]',\n notitle: true,\n placeholder: gettext(\n 'e.g. My Device, you can use an asterisk (*) as wildcard character'\n )\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.names.length) {\n filter.name = { __in: model.names };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n template: `\n {{ context.value | c8yDate }}\n `\n})\nexport class RegistrationDateCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { RegistrationDateCellRendererComponent } from './registration-date.cell-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class RegistrationDateDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const self = this;\n\n this.path = 'creationTime';\n this.name = 'registrationDate';\n this.header = gettext('Registration date');\n this.cellRendererComponent = RegistrationDateCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n registrationDate: {\n type: 'object',\n properties: {\n after: {\n type: 'string',\n format: 'datetime'\n },\n before: {\n type: 'string',\n format: 'datetime'\n }\n }\n }\n }\n },\n form: [\n {\n key: 'registrationDate.after',\n title: gettext('Show devices registered after'),\n maxDateKey: 'registrationDate.before'\n },\n {\n key: 'registrationDate.before',\n title: gettext('And before`date`'),\n minDateKey: 'registrationDate.after'\n }\n ],\n getFilter(model) {\n const filter: any = {};\n const dates = model && model.registrationDate;\n if (dates && (dates.after || dates.before)) {\n filter.__and = [];\n if (dates.after) {\n const after = self.formatDate(dates.after);\n filter.__and.push({\n __or: {\n [self.path]: { __gt: after },\n [`${self.path}.date`]: { __gt: after }\n }\n });\n }\n if (dates.before) {\n const before = self.formatDate(dates.before);\n filter.__and.push({\n __or: {\n [self.path]: { __lt: before },\n [`${self.path}.date`]: { __lt: before }\n }\n });\n }\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: `${this.path}.date` }, { path: this.path }]\n };\n }\n\n protected formatDate(dateToFormat: string): string {\n return new Date(dateToFormat).toISOString();\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n template: `\n {{ deviceGridService.getSerialNumber(context.item) }}\n `\n})\nexport class SerialNumberCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { SerialNumberCellRendererComponent } from './serial-number.cell-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class SerialNumberDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const hardwareSerialNumberPath = 'c8y_Hardware.serialNumber';\n const vendingSerialNumberPath =\n 'com_nsn_startups_vendme_fragments_VendingMachineTypeInfo.serial';\n\n this.name = 'serialNumber';\n this.header = gettext('Serial number');\n this.cellRendererComponent = SerialNumberCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n serialNumbers: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'serialNumbers',\n title: gettext('Show devices with serial number'),\n add: gettext('Or'),\n items: [\n {\n key: 'serialNumbers[]',\n notitle: true,\n placeholder: gettext(\n 'e.g. 54321-123, you can use an asterisk (*) as wildcard character'\n )\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.serialNumbers.length) {\n filter.__or = {\n [hardwareSerialNumberPath]: { __in: model.serialNumbers },\n [vendingSerialNumberPath]: { __in: model.serialNumbers }\n };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: hardwareSerialNumberPath }, { path: vendingSerialNumberPath }]\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n template: `\n <device-status [mo]=\"context.item\"></device-status>\n `\n})\nexport class StatusCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { StatusCellRendererComponent } from './status.cell-renderer.component';\nimport { ColumnDataType, PushStatus, SendStatus, gettext } from '@c8y/ngx-components';\n\nexport class StatusDeviceGridColumn extends BaseDeviceGridColumn {\n constructor() {\n super();\n\n const responseIntervalPath = 'c8y_RequiredAvailability.responseInterval';\n const responseIntervalLessThanOrEqualTo0 = { [responseIntervalPath]: { __le: 0 } };\n const responseIntervalNotDefined = { __not: { __has: responseIntervalPath } };\n\n const availabilityStatusPath = 'c8y_Availability.status';\n const availabilityStatusAvailable = { [availabilityStatusPath]: SendStatus.AVAILABLE };\n const availabilityStatusUnavailable = { [availabilityStatusPath]: SendStatus.UNAVAILABLE };\n const availabilityStatusMaintenance = { [availabilityStatusPath]: SendStatus.MAINTENANCE };\n const availabilityStatusNotDefined = { __not: { __has: availabilityStatusPath } };\n\n const connectionStatusPath = 'c8y_Connection.status';\n const connectionStatusConnected = { [connectionStatusPath]: PushStatus.CONNECTED };\n const connectionStatusDisconnected = { [connectionStatusPath]: PushStatus.DISCONNECTED };\n const connectionStatusMaintenance = { [connectionStatusPath]: PushStatus.MAINTENANCE };\n\n const deviceUnderMaintenance = {\n __or: [\n responseIntervalLessThanOrEqualTo0,\n availabilityStatusMaintenance,\n connectionStatusMaintenance\n ]\n };\n const deviceNotUnderMaintenance = {\n // using __and of __nots because backend does not support __not with __ors\n __and: [\n { __not: responseIntervalLessThanOrEqualTo0 },\n { __not: availabilityStatusMaintenance },\n { __not: connectionStatusMaintenance }\n ]\n };\n\n this.name = 'status';\n this.header = gettext('Status');\n this.dataType = ColumnDataType.Icon;\n this.cellRendererComponent = StatusCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n sendOnline: {\n type: 'boolean'\n },\n sendOffline: {\n type: 'boolean'\n },\n sendUnknown: {\n type: 'boolean'\n },\n sendNotMonitored: {\n type: 'boolean'\n },\n pushOnline: {\n type: 'boolean'\n },\n pushOffline: {\n type: 'boolean'\n },\n pushNotMonitored: {\n type: 'boolean'\n },\n maintenance: {\n type: 'boolean'\n }\n }\n },\n form: [\n {\n type: 'template',\n template: `<label><span translate>${gettext(\n 'Show devices with send status'\n )}</span>:</label>`\n },\n {\n key: 'sendOnline',\n title: gettext('Online')\n },\n {\n key: 'sendOffline',\n title: gettext('Offline')\n },\n {\n key: 'sendUnknown',\n title: gettext('Unknown')\n },\n {\n key: 'sendNotMonitored',\n title: gettext('Not monitored')\n },\n {\n type: 'template',\n template: `<label><span translate>${gettext(\n 'Show devices with push status'\n )}</span>:</label>`\n },\n {\n key: 'pushOnline',\n title: gettext('Online')\n },\n {\n key: 'pushOffline',\n title: gettext('Offline')\n },\n {\n key: 'pushNotMonitored',\n title: gettext('Not monitored')\n },\n {\n type: 'template',\n template: `<label><span translate>${gettext(\n 'Show devices with maintenance status'\n )}</span>:</label>`\n },\n {\n key: 'maintenance',\n title: gettext('Device is under maintenance')\n }\n ],\n getFilter(model) {\n const filter: any = {};\n const ors = [];\n\n if (model) {\n if (model.sendOnline) {\n ors.push({\n __and: [deviceNotUnderMaintenance, availabilityStatusAvailable]\n });\n }\n if (model.sendOffline) {\n ors.push({\n __and: [deviceNotUnderMaintenance, availabilityStatusUnavailable]\n });\n }\n if (model.sendUnknown) {\n ors.push({\n __and: [deviceNotUnderMaintenance, availabilityStatusNotDefined]\n });\n }\n if (model.sendNotMonitored || model.pushNotMonitored) {\n ors.push(responseIntervalNotDefined);\n }\n if (model.pushOnline) {\n ors.push({\n __and: [deviceNotUnderMaintenance, connectionStatusConnected]\n });\n }\n if (model.pushOffline) {\n ors.push({\n __and: [deviceNotUnderMaintenance, connectionStatusDisconnected]\n });\n }\n if (model.maintenance) {\n ors.push(deviceUnderMaintenance);\n }\n\n if (ors.length) {\n filter.__or = ors;\n }\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: availabilityStatusPath }]\n };\n }\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class SystemIdDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const self = this;\n this.path = 'id';\n this.name = 'systemId';\n this.header = gettext('System ID');\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n ids: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'ids',\n title: gettext('Show devices with system ID'),\n add: gettext('Or'),\n items: [\n {\n key: 'ids[]',\n notitle: true,\n placeholder: gettext('e.g. 10300, you can use an asterisk (*) as wildcard character')\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.ids.length) {\n filter[self.path] = { __in: model.ids };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IManagedObject, InventoryService, QueriesUtil } from '@c8y/client';\nimport {\n ActionControl,\n BulkActionControl,\n Pagination,\n Row,\n GridConfig,\n Column\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { assign, forEach, get, identity, map, remove, sortBy, transform } from 'lodash-es';\nimport { AlarmsDeviceGridColumn } from './columns/alarms.device-grid-column';\nimport { GroupDeviceGridColumn } from './columns/group.device-grid-column';\nimport { ImeiDeviceGridColumn } from './columns/imei.device-grid-column';\nimport { ModelDeviceGridColumn } from './columns/model.device-grid-column';\nimport { NameDeviceGridColumn } from './columns/name.device-grid-column';\nimport { RegistrationDateDeviceGridColumn } from './columns/registration-date.device-grid-column';\nimport { SerialNumberDeviceGridColumn } from './columns/serial-number.device-grid-column';\nimport { StatusDeviceGridColumn } from './columns/status.device-grid-column';\nimport { SystemIdDeviceGridColumn } from './columns/system-id.device-grid-column';\nimport { DeviceGridActionType, DeviceGridColumn } from './device-grid.models';\n\n@Injectable()\nexport class DeviceGridService {\n protected queriesUtil: QueriesUtil;\n protected GRID_CONFIG_DEFAULT_STORAGE_KEY = 'device-grid-config';\n protected DEFAULT_PAGE_SIZE = 20;\n\n constructor(\n protected inventoryService: InventoryService,\n protected translateService: TranslateService\n ) {\n this.queriesUtil = new QueriesUtil();\n }\n\n getDefaultColumns(): DeviceGridColumn[] {\n const defaultColumns = [\n new StatusDeviceGridColumn(),\n new NameDeviceGridColumn(),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn(),\n new GroupDeviceGridColumn(),\n new RegistrationDateDeviceGridColumn(),\n new SystemIdDeviceGridColumn(),\n new ImeiDeviceGridColumn(),\n new AlarmsDeviceGridColumn()\n ];\n\n return defaultColumns;\n }\n\n getDefaultPagination(): Pagination {\n return {\n pageSize: 10,\n currentPage: 1\n };\n }\n\n getInfiniteScrollPagination(): Pagination {\n return {\n pageSize: 50,\n currentPage: 1\n };\n }\n\n getDefaultActionControls(): ActionControl[] {\n return [\n {\n type: DeviceGridActionType.Delete,\n callback: (item: Row) => this.delete(item as IManagedObject)\n }\n ];\n }\n\n getDefaultBulkActionControls(): BulkActionControl[] {\n return [];\n }\n\n getProperName(device: IManagedObject): string {\n const { id, name } = device;\n return name ? name : this.translateService.instant('Device {{id}}', { id });\n }\n\n getModel(device: IManagedObject): string {\n const hardware = this.getHardware(device);\n return hardware && hardware.model;\n }\n\n getSerialNumber(device: IManagedObject): string {\n const hardware = this.getHardware(device);\n const serialPropertyName = this.isVendme(device) ? 'serial' : 'serialNumber';\n return hardware && hardware[serialPropertyName];\n }\n\n getParentsNames(device: IManagedObject, featuredParentId?: string | number): string {\n const assetParentsReferences = device.assetParents.references;\n const assetParents = map(assetParentsReferences, 'managedObject');\n const sortedByName = sortBy(assetParents, ['name']);\n const featuredItems = remove(sortedByName, { id: featuredParentId });\n const items = featuredItems.concat(sortedByName);\n const names = map(items, 'name');\n return names.join(', ');\n }\n\n getHref(groupOrDevice: IManagedObject, prefix = '#/'): string {\n if (groupOrDevice.c8y_IsDeviceGroup || groupOrDevice.c8y_IsDynamicGroup) {\n return `${prefix}group/${groupOrDevice.id}`;\n }\n return `${prefix}device/${groupOrDevice.id}`;\n }\n\n getAlarmsHref(device: IManagedObject): string {\n return `${this.getHref(device)}/alarms`;\n }\n\n getUserConfiguredColumns(columns: Column[]) {\n const config = this.getConfig();\n if (config.columns.length > 0) {\n const reOrderedColumns = [];\n let noConfigColumns = [];\n try {\n noConfigColumns = columns.filter(col => !config.columns.includes(col));\n config.columns.forEach(({ visible, name, sortOrder }) => {\n const columnToReorder = columns.find(col => col.name === name);\n if (columnToReorder) {\n columnToReorder.visible = visible;\n columnToReorder.sortOrder = sortOrder;\n reOrderedColumns.push(columnToReorder);\n }\n });\n } catch (ex) {\n this.clearConfig();\n }\n return [...reOrderedColumns, ...noConfigColumns];\n }\n return columns;\n }\n\n delete(device: IManagedObject) {\n console.log('should delete', device);\n }\n\n async getData(\n columns: DeviceGridColumn[],\n pagination: Pagination,\n query: any = {},\n withChildren: boolean = false\n ) {\n const filters = {\n ...this.getDevicesFilters(columns, pagination, query),\n withParents: true,\n withChildren\n };\n return this.inventoryService.list(filters);\n }\n\n async getCount(columns: DeviceGridColumn[], pagination: Pagination, query: any = {}) {\n const filters = {\n ...this.getDevicesFilters(columns, pagination, query),\n pageSize: 1,\n currentPage: 1\n };\n return (await this.inventoryService.list(filters)).paging.totalPages;\n }\n\n async getTotal(query: any = {}): Promise<number> {\n const filters = {\n q: this.queriesUtil.buildQuery(query),\n pageSize: 1,\n withTotalPages: true\n };\n return (await this.inventoryService.list(filters)).paging.totalPages;\n }\n\n getDeviceQueryString(columns: DeviceGridColumn[], query: any): string {\n let fullQuery = this.getQueryObj(columns);\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, query);\n return this.queriesUtil.buildQuery(fullQuery);\n }\n\n getQueryObj(columns: DeviceGridColumn[], defaultFilter = {}): any {\n return transform(columns, (query, column) => this.extendQueryByColumn(query, column), {\n __filter: {},\n __orderby: [],\n ...defaultFilter\n });\n }\n\n getConfig(key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY): GridConfig {\n const config = JSON.parse(localStorage.getItem(key));\n if (config === null) {\n return { columns: [], pagination: { pageSize: this.DEFAULT_PAGE_SIZE, currentPage: 1 } };\n }\n return config as GridConfig;\n }\n\n saveConfig(config: GridConfig, key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY) {\n localStorage.setItem(key, JSON.stringify(config));\n }\n\n clearConfig(key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY) {\n localStorage.removeItem(key);\n }\n\n private getHardware(device: IManagedObject): any {\n const hardwarePropertyName = this.isVendme(device)\n ? 'com_nsn_startups_vendme_fragments_VendingMachineTypeInfo'\n : 'c8y_Hardware';\n return device && device[hardwarePropertyName];\n }\n\n private isVendme(device: IManagedObject) {\n return device.type === 'com_nsn_startups_vendme_VendingMachine';\n }\n\n private getDevicesFilters(columns: DeviceGridColumn[], pagination: Pagination, query: any) {\n return {\n q: this.getDeviceQueryString(columns, query),\n pageSize: pagination.pageSize,\n currentPage: pagination.currentPage,\n withChildren: false,\n withTotalPages: true\n };\n }\n\n private extendQueryByColumn(query: any, column: DeviceGridColumn): void {\n if (column.filterable && column.externalFilterQuery) {\n const getFilter = column.filteringConfig.getFilter || identity;\n const queryObj = getFilter(column.externalFilterQuery);\n\n if (queryObj.__or) {\n query.__filter.__and = query.__filter.__and || [];\n query.__filter.__and.push(queryObj);\n } else if (queryObj.__and && get(query, '__filter.__and')) {\n queryObj.__and.map(obj => query.__filter.__and.push(obj));\n } else {\n assign(query.__filter, queryObj);\n }\n }\n\n if (column.sortable && column.sortOrder) {\n const cs = {};\n forEach(column.sortingConfig.pathSortingConfigs, pathSortingConfig => {\n cs[pathSortingConfig.path] =\n (column.sortOrder === 'asc' ? 1 : -1) * (pathSortingConfig.sortOrderModifier || 1);\n });\n query.__orderby.push(cs);\n }\n return query;\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport {\n ActionControl,\n BulkActionControl,\n DataGridComponent,\n DataSourceModifier,\n FilteringActionType,\n FilteringModifier,\n gettext,\n LoadMoreMode,\n Pagination,\n ServerSideDataResult,\n GridConfig\n} from '@c8y/ngx-components';\nimport { DeviceGridColumn, DataCallback } from './device-grid.models';\nimport { DeviceGridService } from './device-grid.service';\n\n@Component({\n selector: 'c8y-device-grid',\n templateUrl: './device-grid.component.html'\n})\nexport class DeviceGridComponent {\n @Input() dataCallback: DataCallback;\n @Input() refresh: EventEmitter<any>;\n @Input() title: string = gettext('Devices');\n @Input() loadMoreItemsLabel = gettext('Load more devices');\n @Input() loadingItemsLabel: string = gettext('Loading devices…');\n @Input('columns') set _columns(value: DeviceGridColumn[]) {\n if (value) {\n this.columns = this.deviceGridService.getUserConfiguredColumns(value);\n } else {\n this.columns = this.deviceGridService.getUserConfiguredColumns(\n this.deviceGridService.getDefaultColumns()\n );\n }\n }\n @Input('pagination') set _pagination(value: Pagination) {\n if (value) {\n this.pagination = value;\n } else {\n this.pagination = this.deviceGridService.getDefaultPagination();\n }\n }\n infiniteScroll: LoadMoreMode;\n @Input('infiniteScroll') set _infiniteScroll(infiniteScroll: LoadMoreMode) {\n this.infiniteScroll = infiniteScroll;\n this.pagination = this.deviceGridService.getInfiniteScrollPagination();\n }\n @Input('actionControls') set _actionControls(value: ActionControl[]) {\n if (value) {\n this.actionControls = value;\n } else {\n this.actionControls = this.deviceGridService.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.deviceGridService.getDefaultBulkActionControls();\n }\n }\n @Input() showChildDevices: any = {};\n @Output() onColumnsChange: EventEmitter<DeviceGridColumn[]> = new EventEmitter<\n DeviceGridColumn[]\n >();\n @Output() onDeviceQueryStringChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() itemsSelect = new EventEmitter<string[]>();\n @Output() onChildDevices = new EventEmitter<boolean>();\n\n columns: DeviceGridColumn[] = this.deviceGridService.getDefaultColumns();\n pagination: Pagination = this.deviceGridService.getDefaultPagination();\n actionControls: ActionControl[] = this.deviceGridService.getDefaultActionControls();\n bulkActionControls: BulkActionControl[] = this.deviceGridService.getDefaultBulkActionControls();\n serverSideDataCallback: any;\n withChildren: boolean = false;\n\n @ViewChild(DataGridComponent, { static: true })\n dataGrid: DataGridComponent;\n\n constructor(public deviceGridService: DeviceGridService) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n trackByName(_index, column: DeviceGridColumn): string {\n return column.name;\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n let serverSideDataResult: ServerSideDataResult;\n const { res, data, paging } = await this.deviceGridService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.baseQuery,\n this.withChildren\n );\n\n const filteredSize: number = await this.deviceGridService.getCount(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.baseQuery\n );\n const size: number = await this.deviceGridService.getTotal(this.baseQuery);\n\n this.onColumnsChange.emit(dataSourceModifier.columns);\n this.onDeviceQueryStringChange.emit(\n this.deviceGridService.getDeviceQueryString(dataSourceModifier.columns, this.baseQuery)\n );\n\n serverSideDataResult = {\n res,\n data,\n paging,\n filteredSize,\n size\n };\n\n if (this.dataCallback) {\n serverSideDataResult = this.dataCallback(serverSideDataResult);\n }\n\n return serverSideDataResult;\n }\n\n updateFiltering(\n columnNames: string[],\n action: {\n type: FilteringActionType;\n payload?: { filteringModifier: FilteringModifier };\n }\n ) {\n const { type } = action;\n if (type === FilteringActionType.ResetFilter) {\n this.dataGrid.clearFilters();\n } else {\n this.dataGrid.updateFiltering(columnNames, action);\n }\n }\n\n configChange(config: GridConfig) {\n this.deviceGridService.saveConfig(config);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, DataGridModule, DeviceStatusModule, FormsModule } from '@c8y/ngx-components';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { DeviceGridComponent } from './device-grid.component';\nimport { DeviceGridService } from './device-grid.service';\n\nimport { BaseFilteringFormRendererComponent } from './columns/base.filtering-form-renderer.component';\nimport { GroupFilteringFormRendererComponent } from './columns/group.filtering-form-renderer.component';\n\nimport { StatusCellRendererComponent } from './columns/status.cell-renderer.component';\nimport { NameCellRendererComponent } from './columns/name.cell-renderer.component';\nimport { ModelCellRendererComponent } from './columns/model.cell-renderer.component';\nimport { SerialNumberCellRendererComponent } from './columns/serial-number.cell-renderer.component';\nimport { GroupCellRendererComponent } from './columns/group.cell-renderer.component';\nimport { RegistrationDateCellRendererComponent } from './columns/registration-date.cell-renderer.component';\nimport { AlarmsCellRendererComponent } from './columns/alarms.cell-renderer.component';\nimport { SchemaFormComponent } from './schema-form.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, DeviceStatusModule, DataGridModule, AssetSelectorModule],\n declarations: [\n DeviceGridComponent,\n BaseFilteringFormRendererComponent,\n GroupFilteringFormRendererComponent,\n StatusCellRendererComponent,\n NameCellRendererComponent,\n ModelCellRendererComponent,\n SerialNumberCellRendererComponent,\n GroupCellRendererComponent,\n RegistrationDateCellRendererComponent,\n AlarmsCellRendererComponent,\n SchemaFormComponent\n ],\n exports: [\n DeviceGridComponent,\n BaseFilteringFormRendererComponent,\n GroupFilteringFormRendererComponent,\n StatusCellRendererComponent,\n NameCellRendererComponent,\n ModelCellRendererComponent,\n SerialNumberCellRendererComponent,\n GroupCellRendererComponent,\n RegistrationDateCellRendererComponent,\n AlarmsCellRendererComponent,\n SchemaFormComponent\n ],\n entryComponents: [\n DeviceGridComponent,\n BaseFilteringFormRendererComponent,\n GroupFilteringFormRendererComponent,\n StatusCellRendererComponent,\n NameCellRendererComponent,\n ModelCellRendererComponent,\n SerialNumberCellRendererComponent,\n GroupCellRendererComponent,\n RegistrationDateCellRendererComponent,\n AlarmsCellRendererComponent\n ],\n providers: [DeviceGridService]\n})\nexport class DeviceGridModule {}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class CustomDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const self = this;\n\n this.name = 'custom';\n this.header = gettext('Custom');\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n exists: {\n type: 'boolean',\n default: false,\n title: gettext('Only rows where value is defined')\n },\n equals: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'exists'\n },\n {\n key: 'equals',\n title: gettext('Only rows where value equals to:'),\n add: gettext('Or'),\n items: [\n {\n key: 'equals[]',\n notitle: true,\n placeholder: gettext('e.g. value, you can use an asterisk (*) as wildcard character')\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.exists) {\n filter.__has = self.path;\n }\n if (model.equals) {\n filter[self.path] = { __in: model.equals };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { gettext, ColumnConfig } from '@c8y/ngx-components';\nimport { BaseDeviceGridColumn } from './base.device-grid-column';\n\nexport class TypeDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n this.name = 'type';\n this.path = 'type';\n this.header = gettext('Type');\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n types: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'types',\n title: gettext('Show devices with type'),\n add: gettext('Or'),\n items: [\n {\n key: 'types[]',\n notitle: true,\n placeholder: gettext('e.g. MyType, you can use an asterisk (*) as wildcard character')\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.types.length) {\n filter.type = { __in: model.types };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = { pathSortingConfigs: [{ path: 'type' }] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {AlarmsCellRendererComponent as ɵi} from './columns/alarms.cell-renderer.component';\nexport {BaseFilteringFormRendererComponent as ɵa} from './columns/base.filtering-form-renderer.component';\nexport {GroupCellRendererComponent as ɵg} from './columns/group.cell-renderer.component';\nexport {GroupFilteringFormRendererComponent as ɵb} from './columns/group.filtering-form-renderer.component';\nexport {ModelCellRendererComponent as ɵe} from './columns/model.cell-renderer.component';\nexport {NameCellRendererComponent as ɵd} from './columns/name.cell-renderer.component';\nexport {RegistrationDateCellRendererComponent as ɵh} from './columns/registration-date.cell-renderer.component';\nexport {SerialNumberCellRendererComponent as ɵf} from './columns/serial-number.cell-renderer.component';\nexport {StatusCellRendererComponent as ɵc} from './columns/status.cell-renderer.component';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-device-grid.js","sources":["../../device-grid/schema-form.component.ts","../../device-grid/columns/base.filtering-form-renderer.component.ts","../../device-grid/columns/base.device-grid-column.ts","../../device-grid/columns/alarms.cell-renderer.component.ts","../../device-grid/columns/alarms.device-grid-column.ts","../../device-grid/columns/group.cell-renderer.component.ts","../../device-grid/columns/group.filtering-form-renderer.component.ts","../../device-grid/columns/group.device-grid-column.ts","../../device-grid/columns/imei.device-grid-column.ts","../../device-grid/columns/model.cell-renderer.component.ts","../../device-grid/columns/model.device-grid-column.ts","../../device-grid/columns/name.cell-renderer.component.ts","../../device-grid/columns/name.device-grid-column.ts","../../device-grid/columns/registration-date.cell-renderer.component.ts","../../device-grid/columns/registration-date.device-grid-column.ts","../../device-grid/columns/serial-number.cell-renderer.component.ts","../../device-grid/columns/serial-number.device-grid-column.ts","../../device-grid/columns/status.cell-renderer.component.ts","../../device-grid/columns/status.device-grid-column.ts","../../device-grid/columns/system-id.device-grid-column.ts","../../device-grid/device-grid.service.ts","../../device-grid/device-grid.component.ts","../../device-grid/device-grid.module.ts","../../device-grid/columns/custom.device-grid-column.ts","../../device-grid/columns/type.device-grid-column.ts","../../device-grid/c8y-ngx-components-device-grid.ts"],"sourcesContent":["import { Directive, ElementRef, Injector, Input } from '@angular/core';\nimport { UpgradeComponent } from '@angular/upgrade/static';\n\n// TODO: MTM-31785: find replacement for schema-form ng1 library\n@Directive({\n selector: 'c8y-schema-form'\n})\nexport class SchemaFormComponent extends UpgradeComponent {\n @Input() schema: any;\n @Input() model: any;\n @Input('form') inputForm?: any;\n @Input('options') inputOptions?: any;\n\n constructor(elementRef: ElementRef, injector: Injector) {\n super('c8ySchemaForm', elementRef, injector);\n }\n}\n","import { Component, forwardRef, OnInit, ViewChild, HostListener, ElementRef } from '@angular/core';\nimport { get, cloneDeep } from 'lodash-es';\nimport { FilteringFormRendererContext } from '@c8y/ngx-components';\nimport { SchemaFormComponent } from '../schema-form.component';\nimport { DeviceGridColumn } from '../device-grid.models';\n\n@Component({\n templateUrl: './base.filtering-form-renderer.component.html'\n})\nexport class BaseFilteringFormRendererComponent implements OnInit {\n @ViewChild(forwardRef(() => SchemaFormComponent), { static: false })\n schemaFormComponent: any;\n schema;\n form;\n model;\n options;\n\n constructor(public context: FilteringFormRendererContext) {}\n\n @HostListener('keydown.enter', ['$event']) onEnterKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.applyFilter();\n }\n @HostListener('keydown.escape', ['$event']) onEscapeKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.resetFilter();\n }\n\n ngOnInit() {\n const column: DeviceGridColumn = this.context.property;\n this.schema = cloneDeep(column.filteringConfig.schema);\n this.form = cloneDeep(column.filteringConfig.form);\n this.model = cloneDeep(column.externalFilterQuery || {});\n this.options = { formDefaults: { ngModelOptions: { debounce: 100 } } };\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n try {\n this.schemaFormComponent.elementRef.nativeElement.querySelector('input').focus();\n } catch (e) {\n // intended empty\n }\n }, 10);\n }\n\n canApply() {\n return get(this.schemaFormComponent, '$componentScope.vm.ngForm.$invalid');\n }\n\n applyFilter() {\n this.context.applyFilter({\n externalFilterQuery: this.model\n });\n }\n\n resetFilter() {\n this.context.resetFilter();\n }\n}\n","import { Type } from '@angular/core';\nimport { ColumnDataType, SortOrder, FilterPredicateFunction, ColumnConfig } from '@c8y/ngx-components';\nimport {\n DeviceGridColumn,\n DeviceGridColumnFilteringConfig,\n DeviceGridColumnSortingConfig\n} from '../device-grid.models';\nimport { BaseFilteringFormRendererComponent } from './base.filtering-form-renderer.component';\n\nexport class BaseDeviceGridColumn implements DeviceGridColumn {\n name: string;\n path?: string;\n header?: string;\n dataType?: ColumnDataType;\n\n visible?: boolean;\n positionFixed?: boolean;\n gridTrackSize?: string;\n\n headerCSSClassName?: string | string[];\n headerCellRendererComponent?: Type<any>;\n\n cellCSSClassName?: string | string[];\n cellRendererComponent?: Type<any>;\n\n sortable?: boolean;\n sortingConfig?: DeviceGridColumnSortingConfig;\n sortOrder?: SortOrder;\n\n filterable?: boolean;\n filteringConfig?: DeviceGridColumnFilteringConfig;\n filteringFormRendererComponent?: Type<any>;\n filterPredicate?: string | FilterPredicateFunction;\n externalFilterQuery?: string | object;\n\n constructor(config: ColumnConfig = {}) {\n this.filteringFormRendererComponent = BaseFilteringFormRendererComponent;\n Object.assign(this, config);\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n templateUrl: './alarms.cell-renderer.component.html'\n})\nexport class AlarmsCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { AlarmsCellRendererComponent } from './alarms.cell-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\nimport { map } from 'lodash-es';\n\nexport class AlarmsDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'alarms';\n this.header = gettext('Alarms');\n this.cellRendererComponent = AlarmsCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n critical: {\n type: 'boolean'\n },\n major: {\n type: 'boolean'\n },\n minor: {\n type: 'boolean'\n },\n warning: {\n type: 'boolean'\n },\n none: {\n type: 'boolean'\n }\n }\n },\n form: [\n {\n type: 'template',\n template: `<label><span translate>${gettext('Show devices with active')}</span>:</label>`\n },\n {\n key: 'critical',\n title: gettext('Critical alarms')\n },\n {\n key: 'major',\n title: gettext('Major alarms')\n },\n {\n key: 'minor',\n title: gettext('Minor alarms')\n },\n {\n key: 'warning',\n title: gettext('Warnings')\n },\n {\n key: 'none',\n title: gettext('No alarms')\n }\n ],\n getFilter(model) {\n const filter: any = {};\n const ors = [];\n if (model.critical) {\n ors.push({ 'c8y_ActiveAlarmsStatus.critical': { __gt: 0 } });\n }\n if (model.major) {\n ors.push({ 'c8y_ActiveAlarmsStatus.major': { __gt: 0 } });\n }\n if (model.minor) {\n ors.push({ 'c8y_ActiveAlarmsStatus.minor': { __gt: 0 } });\n }\n if (model.warning) {\n ors.push({ 'c8y_ActiveAlarmsStatus.warning': { __gt: 0 } });\n }\n if (model.none) {\n ors.push({ __not: { __has: 'c8y_ActiveAlarmsStatus' } });\n ors.push({\n __and: map(['critical', 'major', 'minor', 'warning'], sev => {\n const zero = {};\n const has = { __not: { __has: undefined } };\n const key = `c8y_ActiveAlarmsStatus.${sev}`;\n zero[key] = 0;\n has.__not.__has = key;\n return { __or: [zero, has] };\n })\n });\n }\n if (ors.length) {\n filter.__or = ors;\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [\n { path: 'c8y_ActiveAlarmsStatus.critical' },\n { path: 'c8y_ActiveAlarmsStatus.major' },\n { path: 'c8y_ActiveAlarmsStatus.minor' },\n { path: 'c8y_ActiveAlarmsStatus.warning' }\n ]\n };\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n templateUrl: './group.cell-renderer.component.html'\n})\nexport class GroupCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { Component, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { FilteringFormRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridColumn } from '../device-grid.models';\n\n@Component({\n templateUrl: './group.filtering-form-renderer.component.html'\n})\nexport class GroupFilteringFormRendererComponent implements OnInit {\n @ViewChild('assetSelector', { static: false, read: ElementRef }) assetSelector: ElementRef;\n model: any;\n preselected: string[] = [];\n\n constructor(public context: FilteringFormRendererContext) {}\n\n @HostListener('keydown.enter', ['$event']) onEnterKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.applyFilter();\n }\n @HostListener('keydown.escape', ['$event']) onEscapeKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.resetFilter();\n }\n\n ngOnInit() {\n const column: DeviceGridColumn = this.context.property;\n this.model = cloneDeep(column.externalFilterQuery || {});\n this.preselected = this.model.selectedNodes || [];\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n try {\n this.assetSelector.nativeElement.querySelector('input').focus();\n } catch (ex) {\n // intended empty\n }\n }, 250);\n }\n\n applyFilter() {\n this.context.applyFilter({\n externalFilterQuery: this.model\n });\n }\n\n resetFilter() {\n this.context.resetFilter();\n }\n\n selectionChanged(nodes) {\n this.model.selectedNodes = nodes;\n }\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { GroupCellRendererComponent } from './group.cell-renderer.component';\nimport { GroupFilteringFormRendererComponent } from './group.filtering-form-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\nimport { IManagedObject } from '@c8y/client';\n\nexport class GroupDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'group';\n this.header = gettext('Group');\n this.cellRendererComponent = GroupCellRendererComponent;\n this.filteringFormRendererComponent = GroupFilteringFormRendererComponent;\n this.filterable = true;\n this.filteringConfig = {\n getFilter(model) {\n const filter: any = {};\n if (model.selectedNodes) {\n filter.__or = model.selectedNodes.map((mo: IManagedObject) => {\n if (mo.c8y_DeviceQueryString) {\n return { __useFilterQueryString: mo.c8y_DeviceQueryString };\n }\n return { __bygroupid: mo.id };\n });\n }\n return filter;\n }\n };\n this.sortable = false;\n }\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class ImeiDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const self = this;\n\n this.path = 'c8y_Mobile.imei';\n this.name = 'imei';\n this.header = gettext('IMEI');\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n imeis: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'imeis',\n title: gettext('Show devices with IMEI'),\n add: gettext('Or'),\n items: [\n {\n key: 'imeis[]',\n notitle: true,\n placeholder: gettext(\n 'e.g. 46543432321, you can use an asterisk (*) as wildcard character'\n )\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.imeis.length) {\n filter[self.path] = { __in: model.imeis };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n template: `\n {{ deviceGridService.getModel(context.item) }}\n `\n})\nexport class ModelCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { ModelCellRendererComponent } from './model.cell-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class ModelDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const hardwareModelPath = 'c8y_Hardware.model';\n const vendingModelPath = 'com_nsn_startups_vendme_fragments_VendingMachineTypeInfo.model';\n\n this.name = 'model';\n this.header = gettext('Model');\n this.cellRendererComponent = ModelCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n models: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'models',\n title: gettext('Show devices with model'),\n add: gettext('Or'),\n items: [\n {\n key: 'models[]',\n notitle: true,\n placeholder: gettext(\n 'e.g. ModelName, you can use an asterisk (*) as wildcard character'\n )\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.models.length) {\n filter.__or = {\n [hardwareModelPath]: { __in: model.models },\n [vendingModelPath]: { __in: model.models }\n };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: hardwareModelPath }, { path: vendingModelPath }]\n };\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n template: `\n <a\n [href]=\"deviceGridService.getHref(context.item)\"\n title=\"{{ deviceGridService.getProperName(context.item) }}\"\n class=\"interact\"\n >\n {{ deviceGridService.getProperName(context.item) }}\n </a>\n `\n})\nexport class NameCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { NameCellRendererComponent } from './name.cell-renderer.component';\nimport { ColumnDataRecordClassName, gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class NameDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'name';\n this.path = 'name';\n this.header = gettext('Name');\n this.cellCSSClassName = ColumnDataRecordClassName.Header;\n this.cellRendererComponent = NameCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n names: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'names',\n title: gettext('Show devices with name'),\n add: gettext('Or'),\n items: [\n {\n key: 'names[]',\n notitle: true,\n placeholder: gettext(\n 'e.g. My Device, you can use an asterisk (*) as wildcard character'\n )\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.names.length) {\n filter.name = { __in: model.names };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n template: `\n {{ context.value | c8yDate }}\n `\n})\nexport class RegistrationDateCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { RegistrationDateCellRendererComponent } from './registration-date.cell-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class RegistrationDateDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const self = this;\n\n this.path = 'creationTime';\n this.name = 'registrationDate';\n this.header = gettext('Registration date');\n this.cellRendererComponent = RegistrationDateCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n registrationDate: {\n type: 'object',\n properties: {\n after: {\n type: 'string',\n format: 'datetime'\n },\n before: {\n type: 'string',\n format: 'datetime'\n }\n }\n }\n }\n },\n form: [\n {\n key: 'registrationDate.after',\n title: gettext('Show devices registered after'),\n maxDateKey: 'registrationDate.before'\n },\n {\n key: 'registrationDate.before',\n title: gettext('And before`date`'),\n minDateKey: 'registrationDate.after'\n }\n ],\n getFilter(model) {\n const filter: any = {};\n const dates = model && model.registrationDate;\n if (dates && (dates.after || dates.before)) {\n filter.__and = [];\n if (dates.after) {\n const after = self.formatDate(dates.after);\n filter.__and.push({\n __or: {\n [self.path]: { __gt: after },\n [`${self.path}.date`]: { __gt: after }\n }\n });\n }\n if (dates.before) {\n const before = self.formatDate(dates.before);\n filter.__and.push({\n __or: {\n [self.path]: { __lt: before },\n [`${self.path}.date`]: { __lt: before }\n }\n });\n }\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: `${this.path}.date` }, { path: this.path }]\n };\n }\n\n protected formatDate(dateToFormat: string): string {\n return new Date(dateToFormat).toISOString();\n }\n}\n","import { Component, forwardRef, Inject } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { DeviceGridService } from '../device-grid.service';\n\n@Component({\n template: `\n {{ deviceGridService.getSerialNumber(context.item) }}\n `\n})\nexport class SerialNumberCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n @Inject(forwardRef(() => DeviceGridService)) public deviceGridService: DeviceGridService\n ) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { SerialNumberCellRendererComponent } from './serial-number.cell-renderer.component';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class SerialNumberDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const hardwareSerialNumberPath = 'c8y_Hardware.serialNumber';\n const vendingSerialNumberPath =\n 'com_nsn_startups_vendme_fragments_VendingMachineTypeInfo.serial';\n\n this.name = 'serialNumber';\n this.header = gettext('Serial number');\n this.cellRendererComponent = SerialNumberCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n serialNumbers: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'serialNumbers',\n title: gettext('Show devices with serial number'),\n add: gettext('Or'),\n items: [\n {\n key: 'serialNumbers[]',\n notitle: true,\n placeholder: gettext(\n 'e.g. 54321-123, you can use an asterisk (*) as wildcard character'\n )\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.serialNumbers.length) {\n filter.__or = {\n [hardwareSerialNumberPath]: { __in: model.serialNumbers },\n [vendingSerialNumberPath]: { __in: model.serialNumbers }\n };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: hardwareSerialNumberPath }, { path: vendingSerialNumberPath }]\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n template: `\n <device-status [mo]=\"context.item\"></device-status>\n `\n})\nexport class StatusCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { StatusCellRendererComponent } from './status.cell-renderer.component';\nimport { ColumnDataType, PushStatus, SendStatus, gettext } from '@c8y/ngx-components';\n\nexport class StatusDeviceGridColumn extends BaseDeviceGridColumn {\n constructor() {\n super();\n\n const responseIntervalPath = 'c8y_RequiredAvailability.responseInterval';\n const responseIntervalLessThanOrEqualTo0 = { [responseIntervalPath]: { __le: 0 } };\n const responseIntervalNotDefined = { __not: { __has: responseIntervalPath } };\n\n const availabilityStatusPath = 'c8y_Availability.status';\n const availabilityStatusAvailable = { [availabilityStatusPath]: SendStatus.AVAILABLE };\n const availabilityStatusUnavailable = { [availabilityStatusPath]: SendStatus.UNAVAILABLE };\n const availabilityStatusMaintenance = { [availabilityStatusPath]: SendStatus.MAINTENANCE };\n const availabilityStatusNotDefined = { __not: { __has: availabilityStatusPath } };\n\n const connectionStatusPath = 'c8y_Connection.status';\n const connectionStatusConnected = { [connectionStatusPath]: PushStatus.CONNECTED };\n const connectionStatusDisconnected = { [connectionStatusPath]: PushStatus.DISCONNECTED };\n const connectionStatusMaintenance = { [connectionStatusPath]: PushStatus.MAINTENANCE };\n\n const deviceUnderMaintenance = {\n __or: [\n responseIntervalLessThanOrEqualTo0,\n availabilityStatusMaintenance,\n connectionStatusMaintenance\n ]\n };\n const deviceNotUnderMaintenance = {\n // using __and of __nots because backend does not support __not with __ors\n __and: [\n { __not: responseIntervalLessThanOrEqualTo0 },\n { __not: availabilityStatusMaintenance },\n { __not: connectionStatusMaintenance }\n ]\n };\n\n this.name = 'status';\n this.header = gettext('Status');\n this.dataType = ColumnDataType.Icon;\n this.cellRendererComponent = StatusCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n sendOnline: {\n type: 'boolean'\n },\n sendOffline: {\n type: 'boolean'\n },\n sendUnknown: {\n type: 'boolean'\n },\n sendNotMonitored: {\n type: 'boolean'\n },\n pushOnline: {\n type: 'boolean'\n },\n pushOffline: {\n type: 'boolean'\n },\n pushNotMonitored: {\n type: 'boolean'\n },\n maintenance: {\n type: 'boolean'\n }\n }\n },\n form: [\n {\n type: 'template',\n template: `<label><span translate>${gettext(\n 'Show devices with send status'\n )}</span>:</label>`\n },\n {\n key: 'sendOnline',\n title: gettext('Online')\n },\n {\n key: 'sendOffline',\n title: gettext('Offline')\n },\n {\n key: 'sendUnknown',\n title: gettext('Unknown')\n },\n {\n key: 'sendNotMonitored',\n title: gettext('Not monitored')\n },\n {\n type: 'template',\n template: `<label><span translate>${gettext(\n 'Show devices with push status'\n )}</span>:</label>`\n },\n {\n key: 'pushOnline',\n title: gettext('Online')\n },\n {\n key: 'pushOffline',\n title: gettext('Offline')\n },\n {\n key: 'pushNotMonitored',\n title: gettext('Not monitored')\n },\n {\n type: 'template',\n template: `<label><span translate>${gettext(\n 'Show devices with maintenance status'\n )}</span>:</label>`\n },\n {\n key: 'maintenance',\n title: gettext('Device is under maintenance')\n }\n ],\n getFilter(model) {\n const filter: any = {};\n const ors = [];\n\n if (model) {\n if (model.sendOnline) {\n ors.push({\n __and: [deviceNotUnderMaintenance, availabilityStatusAvailable]\n });\n }\n if (model.sendOffline) {\n ors.push({\n __and: [deviceNotUnderMaintenance, availabilityStatusUnavailable]\n });\n }\n if (model.sendUnknown) {\n ors.push({\n __and: [deviceNotUnderMaintenance, availabilityStatusNotDefined]\n });\n }\n if (model.sendNotMonitored || model.pushNotMonitored) {\n ors.push(responseIntervalNotDefined);\n }\n if (model.pushOnline) {\n ors.push({\n __and: [deviceNotUnderMaintenance, connectionStatusConnected]\n });\n }\n if (model.pushOffline) {\n ors.push({\n __and: [deviceNotUnderMaintenance, connectionStatusDisconnected]\n });\n }\n if (model.maintenance) {\n ors.push(deviceUnderMaintenance);\n }\n\n if (ors.length) {\n filter.__or = ors;\n }\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: availabilityStatusPath }]\n };\n }\n}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class SystemIdDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const self = this;\n this.path = 'id';\n this.name = 'systemId';\n this.header = gettext('System ID');\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n ids: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'ids',\n title: gettext('Show devices with system ID'),\n add: gettext('Or'),\n items: [\n {\n key: 'ids[]',\n notitle: true,\n placeholder: gettext('e.g. 10300, you can use an asterisk (*) as wildcard character')\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.ids.length) {\n filter[self.path] = { __in: model.ids };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IManagedObject, InventoryService, QueriesUtil } from '@c8y/client';\nimport {\n ActionControl,\n BulkActionControl,\n Column,\n GridConfig,\n AlertService,\n ModalService,\n Status,\n gettext,\n Pagination,\n Row,\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { assign, forEach, get, identity, map, remove, sortBy, transform } from 'lodash-es';\nimport { AlarmsDeviceGridColumn } from './columns/alarms.device-grid-column';\nimport { GroupDeviceGridColumn } from './columns/group.device-grid-column';\nimport { ImeiDeviceGridColumn } from './columns/imei.device-grid-column';\nimport { ModelDeviceGridColumn } from './columns/model.device-grid-column';\nimport { NameDeviceGridColumn } from './columns/name.device-grid-column';\nimport { RegistrationDateDeviceGridColumn } from './columns/registration-date.device-grid-column';\nimport { SerialNumberDeviceGridColumn } from './columns/serial-number.device-grid-column';\nimport { StatusDeviceGridColumn } from './columns/status.device-grid-column';\nimport { SystemIdDeviceGridColumn } from './columns/system-id.device-grid-column';\nimport { DeviceGridActionType, DeviceGridColumn } from './device-grid.models';\n\n@Injectable()\nexport class DeviceGridService {\n protected queriesUtil: QueriesUtil;\n protected GRID_CONFIG_DEFAULT_STORAGE_KEY = 'device-grid-config';\n protected DEFAULT_PAGE_SIZE = 20;\n\n constructor(\n protected inventoryService: InventoryService,\n protected translateService: TranslateService,\n protected alertService: AlertService,\n protected modal: ModalService\n ) {\n this.queriesUtil = new QueriesUtil();\n }\n\n getDefaultColumns(): DeviceGridColumn[] {\n const defaultColumns = [\n new StatusDeviceGridColumn(),\n new NameDeviceGridColumn(),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn(),\n new GroupDeviceGridColumn(),\n new RegistrationDateDeviceGridColumn(),\n new SystemIdDeviceGridColumn(),\n new ImeiDeviceGridColumn(),\n new AlarmsDeviceGridColumn(),\n ];\n\n return defaultColumns;\n }\n\n getDefaultPagination(): Pagination {\n return {\n pageSize: 10,\n currentPage: 1,\n };\n }\n\n getInfiniteScrollPagination(): Pagination {\n return {\n pageSize: 50,\n currentPage: 1,\n };\n }\n\n getDefaultActionControls(): ActionControl[] {\n return [\n {\n type: DeviceGridActionType.Delete,\n callback: (item: Row) => this.delete(item as IManagedObject),\n },\n ];\n }\n\n getDefaultBulkActionControls(): BulkActionControl[] {\n return [];\n }\n\n getProperName(device: IManagedObject): string {\n const { id, name } = device;\n return name ? name : this.translateService.instant('Device {{id}}', { id });\n }\n\n getModel(device: IManagedObject): string {\n const hardware = this.getHardware(device);\n return hardware && hardware.model;\n }\n\n getSerialNumber(device: IManagedObject): string {\n const hardware = this.getHardware(device);\n const serialPropertyName = this.isVendme(device) ? 'serial' : 'serialNumber';\n return hardware && hardware[serialPropertyName];\n }\n\n getParentsNames(device: IManagedObject, featuredParentId?: string | number): string {\n const assetParentsReferences = device.assetParents.references;\n const assetParents = map(assetParentsReferences, 'managedObject');\n const sortedByName = sortBy(assetParents, ['name']);\n const featuredItems = remove(sortedByName, { id: featuredParentId });\n const items = featuredItems.concat(sortedByName);\n const names = map(items, 'name');\n return names.join(', ');\n }\n\n getHref(groupOrDevice: IManagedObject, prefix = '#/'): string {\n if (groupOrDevice.c8y_IsDeviceGroup || groupOrDevice.c8y_IsDynamicGroup) {\n return `${prefix}group/${groupOrDevice.id}`;\n }\n return `${prefix}device/${groupOrDevice.id}`;\n }\n\n getAlarmsHref(device: IManagedObject): string {\n return `${this.getHref(device)}/alarms`;\n }\n\n getUserConfiguredColumns(columns: Column[]) {\n const config = this.getConfig();\n if (config.columns.length > 0) {\n const reOrderedColumns = [];\n let noConfigColumns = [];\n try {\n noConfigColumns = columns.filter((col) => !config.columns.includes(col));\n config.columns.forEach(({ visible, name, sortOrder }) => {\n const columnToReorder = columns.find((col) => col.name === name);\n if (columnToReorder) {\n columnToReorder.visible = visible;\n columnToReorder.sortOrder = sortOrder;\n reOrderedColumns.push(columnToReorder);\n }\n });\n } catch (ex) {\n this.clearConfig();\n }\n return [...reOrderedColumns, ...noConfigColumns];\n }\n return columns;\n }\n\n async delete(device: IManagedObject) {\n try {\n await this.modal.confirm(\n gettext('Delete device'),\n this.translateService.instant(\n gettext(`You are about to delete device: \"{{ name }}\". Do you want to proceed?`),\n { name: device.name }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n await this.inventoryService.delete(device);\n this.alertService.success(gettext('Device deleted.'));\n } catch (ex) {\n // only if not cancel from modal\n\n if (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n }\n\n async getData(\n columns: DeviceGridColumn[],\n pagination: Pagination,\n query: any = {},\n withChildren: boolean = false\n ) {\n const filters = {\n ...this.getDevicesFilters(columns, pagination, query),\n withParents: true,\n withChildren,\n };\n return this.inventoryService.list(filters);\n }\n\n async getChildDeviceData(\n columns: DeviceGridColumn[],\n pagination: Pagination,\n query: any = {},\n withChildren: boolean = false,\n id: string\n ) {\n const childDeviceFilters = true;\n const filters = {\n ...this.getDevicesFilters(columns, pagination, query, childDeviceFilters),\n withParents: true,\n withChildren,\n };\n return this.inventoryService.childDevicesList(id, filters);\n }\n\n async getCount(columns: DeviceGridColumn[], pagination: Pagination, query: any = {}) {\n const filters = {\n ...this.getDevicesFilters(columns, pagination, query),\n pageSize: 1,\n currentPage: 1,\n };\n return (await this.inventoryService.list(filters)).paging.totalPages;\n }\n\n async getCountChildDevices(\n columns: DeviceGridColumn[],\n pagination: Pagination,\n query: any = {},\n id: string\n ) {\n const childDeviceFilters = true;\n const filters = {\n ...this.getDevicesFilters(columns, pagination, query, childDeviceFilters),\n pageSize: 1,\n currentPage: 1,\n };\n return (await this.inventoryService.childDevicesList(id, filters)).paging.totalPages;\n }\n\n async getTotalChildDevices(query: any = {}, id: string): Promise<number> {\n const filters = {\n q: this.queriesUtil.buildQuery(query),\n pageSize: 1,\n withTotalPages: true,\n };\n return (await this.inventoryService.childDevicesList(id, filters)).paging.totalPages;\n }\n\n async getTotal(query: any = {}): Promise<number> {\n const filters = {\n q: this.queriesUtil.buildQuery(query),\n pageSize: 1,\n withTotalPages: true,\n };\n return (await this.inventoryService.list(filters)).paging.totalPages;\n }\n\n getDeviceQueryString(columns: DeviceGridColumn[], query: any): string {\n let fullQuery = this.getQueryObj(columns);\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, query);\n return this.queriesUtil.buildQuery(fullQuery);\n }\n\n getQueryObj(columns: DeviceGridColumn[], defaultFilter = {}): any {\n return transform(columns, (query, column) => this.extendQueryByColumn(query, column), {\n __filter: {},\n __orderby: [],\n ...defaultFilter,\n });\n }\n\n getConfig(key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY): GridConfig {\n const config = JSON.parse(localStorage.getItem(key));\n if (config === null) {\n return { columns: [], pagination: { pageSize: this.DEFAULT_PAGE_SIZE, currentPage: 1 } };\n }\n return config as GridConfig;\n }\n\n saveConfig(config: GridConfig, key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY) {\n localStorage.setItem(key, JSON.stringify(config));\n }\n\n clearConfig(key: string = this.GRID_CONFIG_DEFAULT_STORAGE_KEY) {\n localStorage.removeItem(key);\n }\n\n private getHardware(device: IManagedObject): any {\n const hardwarePropertyName = this.isVendme(device)\n ? 'com_nsn_startups_vendme_fragments_VendingMachineTypeInfo'\n : 'c8y_Hardware';\n return device && device[hardwarePropertyName];\n }\n\n private isVendme(device: IManagedObject) {\n return device.type === 'com_nsn_startups_vendme_VendingMachine';\n }\n\n private getDevicesFilters(\n columns: DeviceGridColumn[],\n pagination: Pagination,\n query: any,\n childDeviceFilters?: boolean\n ) {\n return {\n ...(childDeviceFilters\n ? { query: this.getDeviceQueryString(columns, query) }\n : { q: this.getDeviceQueryString(columns, query) }),\n pageSize: pagination.pageSize,\n currentPage: pagination.currentPage,\n withChildren: false,\n withTotalPages: true,\n };\n }\n\n private extendQueryByColumn(query: any, column: DeviceGridColumn): void {\n if (column.filterable && column.externalFilterQuery) {\n const getFilter = column.filteringConfig.getFilter || identity;\n const queryObj = getFilter(column.externalFilterQuery);\n\n if (queryObj.__or) {\n query.__filter.__and = query.__filter.__and || [];\n query.__filter.__and.push(queryObj);\n } else if (queryObj.__and && get(query, '__filter.__and')) {\n queryObj.__and.map((obj) => query.__filter.__and.push(obj));\n } else {\n assign(query.__filter, queryObj);\n }\n }\n\n if (column.sortable && column.sortOrder) {\n const cs = {};\n forEach(column.sortingConfig.pathSortingConfigs, (pathSortingConfig) => {\n cs[pathSortingConfig.path] =\n (column.sortOrder === 'asc' ? 1 : -1) * (pathSortingConfig.sortOrderModifier || 1);\n });\n query.__orderby.push(cs);\n }\n return query;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport {\n ActionControl,\n BulkActionControl,\n DataGridComponent,\n DataSourceModifier,\n FilteringActionType,\n FilteringModifier,\n gettext,\n LoadMoreMode,\n Pagination,\n ServerSideDataResult,\n GridConfig,\n BuiltInActionType,\n Row,\n} from '@c8y/ngx-components';\nimport { DeviceGridColumn, DataCallback } from './device-grid.models';\nimport { DeviceGridService } from './device-grid.service';\n\n@Component({\n selector: 'c8y-device-grid',\n templateUrl: './device-grid.component.html',\n})\nexport class DeviceGridComponent implements OnInit {\n /** Optional callback function that allows to modify server side data result before it's rendered. */\n @Input() dataCallback: DataCallback;\n @Input() refresh: EventEmitter<any>;\n @Input() title: string = gettext('Devices');\n @Input() loadMoreItemsLabel = gettext('Load more devices');\n @Input() loadingItemsLabel: string = gettext('Loading devices…');\n @Input('columns') set _columns(value: DeviceGridColumn[]) {\n if (value) {\n this.columns = this.deviceGridService.getUserConfiguredColumns(value);\n } else {\n this.columns = this.deviceGridService.getUserConfiguredColumns(\n this.deviceGridService.getDefaultColumns()\n );\n }\n }\n @Input('pagination') set _pagination(value: Pagination) {\n if (value) {\n this.pagination = value;\n } else {\n this.pagination = this.deviceGridService.getDefaultPagination();\n }\n }\n infiniteScroll: LoadMoreMode;\n @Input('infiniteScroll') set _infiniteScroll(infiniteScroll: LoadMoreMode) {\n this.infiniteScroll = infiniteScroll;\n this.pagination = this.deviceGridService.getInfiniteScrollPagination();\n }\n @Input('actionControls') set _actionControls(value: ActionControl[]) {\n if (value) {\n this.actionControls = value;\n } else {\n this.actionControls = this.deviceGridService.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.deviceGridService.getDefaultBulkActionControls();\n }\n }\n @Input() childDeviceGrid: boolean = false;\n @Input() parentDeviceId: string;\n /**\n * Determines if additional \"Show child devices\" toggle should be shown and in what state it should be.\n * @deprecated It's going to be replaced with a generic hook allowing to easily add custom actions in the grid header.\n */\n @Input() showChildDevices: { show: boolean; value: boolean } = { show: false, value: false };\n /** Emits an event when columns configuration changes. */\n @Output() onColumnsChange: EventEmitter<DeviceGridColumn[]> = new EventEmitter<\n DeviceGridColumn[]\n >();\n @Output() onDeviceQueryStringChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() itemsSelect = new EventEmitter<string[]>();\n @Output() onChildDevices = new EventEmitter<boolean>();\n\n actionControls: ActionControl[] = [];\n columns: DeviceGridColumn[] = this.deviceGridService.getDefaultColumns();\n pagination: Pagination = this.deviceGridService.getDefaultPagination();\n bulkActionControls: BulkActionControl[] = this.deviceGridService.getDefaultBulkActionControls();\n serverSideDataCallback: any;\n withChildren: boolean = false;\n\n @ViewChild(DataGridComponent, { static: true })\n dataGrid: DataGridComponent;\n\n constructor(public deviceGridService: DeviceGridService) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n ngOnInit() {\n this.setActionControls();\n }\n\n trackByName(_index, column: DeviceGridColumn): string {\n return column.name;\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n let serverSideDataResult: ServerSideDataResult;\n let filteredSize: number;\n let size: number;\n if (this.childDeviceGrid) {\n const { res, data, paging } = await this.deviceGridService.getChildDeviceData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.baseQuery,\n this.withChildren,\n this.parentDeviceId\n );\n\n filteredSize = await this.deviceGridService.getCountChildDevices(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.baseQuery,\n this.parentDeviceId\n );\n size = await this.deviceGridService.getTotalChildDevices(this.baseQuery, this.parentDeviceId);\n\n serverSideDataResult = {\n res,\n data,\n paging,\n filteredSize,\n size,\n };\n } else {\n const { res, data, paging } = await this.deviceGridService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.baseQuery,\n this.withChildren\n );\n\n filteredSize = await this.deviceGridService.getCount(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n this.baseQuery\n );\n size = await this.deviceGridService.getTotal(this.baseQuery);\n\n serverSideDataResult = {\n res,\n data,\n paging,\n filteredSize,\n size,\n };\n }\n\n this.onColumnsChange.emit(dataSourceModifier.columns);\n this.onDeviceQueryStringChange.emit(\n this.deviceGridService.getDeviceQueryString(dataSourceModifier.columns, this.baseQuery)\n );\n\n if (this.dataCallback) {\n serverSideDataResult = this.dataCallback(serverSideDataResult);\n }\n\n return serverSideDataResult;\n }\n\n async setActionControls() {\n if (this.childDeviceGrid) {\n const deleteAction: ActionControl = {\n type: BuiltInActionType.Delete,\n callback: (device: Row) => this.onDeleteDevice(device as IManagedObject),\n };\n this.actionControls.push(deleteAction);\n } else {\n this.actionControls = this.deviceGridService.getDefaultActionControls();\n }\n }\n\n async onDeleteDevice(device) {\n await this.deviceGridService.delete(device);\n this.refresh.emit();\n }\n\n updateFiltering(\n columnNames: string[],\n action: {\n type: FilteringActionType;\n payload?: { filteringModifier: FilteringModifier };\n }\n ) {\n const { type } = action;\n if (type === FilteringActionType.ResetFilter) {\n this.dataGrid.clearFilters();\n } else {\n this.dataGrid.updateFiltering(columnNames, action);\n }\n }\n\n configChange(config: GridConfig) {\n this.deviceGridService.saveConfig(config);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, DataGridModule, DeviceStatusModule, FormsModule } from '@c8y/ngx-components';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { DeviceGridComponent } from './device-grid.component';\nimport { DeviceGridService } from './device-grid.service';\n\nimport { BaseFilteringFormRendererComponent } from './columns/base.filtering-form-renderer.component';\nimport { GroupFilteringFormRendererComponent } from './columns/group.filtering-form-renderer.component';\n\nimport { StatusCellRendererComponent } from './columns/status.cell-renderer.component';\nimport { NameCellRendererComponent } from './columns/name.cell-renderer.component';\nimport { ModelCellRendererComponent } from './columns/model.cell-renderer.component';\nimport { SerialNumberCellRendererComponent } from './columns/serial-number.cell-renderer.component';\nimport { GroupCellRendererComponent } from './columns/group.cell-renderer.component';\nimport { RegistrationDateCellRendererComponent } from './columns/registration-date.cell-renderer.component';\nimport { AlarmsCellRendererComponent } from './columns/alarms.cell-renderer.component';\nimport { SchemaFormComponent } from './schema-form.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, DeviceStatusModule, DataGridModule, AssetSelectorModule],\n declarations: [\n DeviceGridComponent,\n BaseFilteringFormRendererComponent,\n GroupFilteringFormRendererComponent,\n StatusCellRendererComponent,\n NameCellRendererComponent,\n ModelCellRendererComponent,\n SerialNumberCellRendererComponent,\n GroupCellRendererComponent,\n RegistrationDateCellRendererComponent,\n AlarmsCellRendererComponent,\n SchemaFormComponent\n ],\n exports: [\n DeviceGridComponent,\n BaseFilteringFormRendererComponent,\n GroupFilteringFormRendererComponent,\n StatusCellRendererComponent,\n NameCellRendererComponent,\n ModelCellRendererComponent,\n SerialNumberCellRendererComponent,\n GroupCellRendererComponent,\n RegistrationDateCellRendererComponent,\n AlarmsCellRendererComponent,\n SchemaFormComponent\n ],\n entryComponents: [\n DeviceGridComponent,\n BaseFilteringFormRendererComponent,\n GroupFilteringFormRendererComponent,\n StatusCellRendererComponent,\n NameCellRendererComponent,\n ModelCellRendererComponent,\n SerialNumberCellRendererComponent,\n GroupCellRendererComponent,\n RegistrationDateCellRendererComponent,\n AlarmsCellRendererComponent\n ],\n providers: [DeviceGridService]\n})\nexport class DeviceGridModule {}\n","import { BaseDeviceGridColumn } from './base.device-grid-column';\nimport { gettext, ColumnConfig } from '@c8y/ngx-components';\n\nexport class CustomDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n const self = this;\n\n this.name = 'custom';\n this.header = gettext('Custom');\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n exists: {\n type: 'boolean',\n default: false,\n title: gettext('Only rows where value is defined')\n },\n equals: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'exists'\n },\n {\n key: 'equals',\n title: gettext('Only rows where value equals to:'),\n add: gettext('Or'),\n items: [\n {\n key: 'equals[]',\n notitle: true,\n placeholder: gettext('e.g. value, you can use an asterisk (*) as wildcard character')\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.exists) {\n filter.__has = self.path;\n }\n if (model.equals) {\n filter[self.path] = { __in: model.equals };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { gettext, ColumnConfig } from '@c8y/ngx-components';\nimport { BaseDeviceGridColumn } from './base.device-grid-column';\n\nexport class TypeDeviceGridColumn extends BaseDeviceGridColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n this.name = 'type';\n this.path = 'type';\n this.header = gettext('Type');\n\n this.filterable = true;\n this.filteringConfig = {\n schema: {\n type: 'object',\n properties: {\n types: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n }\n },\n form: [\n {\n key: 'types',\n title: gettext('Show devices with type'),\n add: gettext('Or'),\n items: [\n {\n key: 'types[]',\n notitle: true,\n placeholder: gettext('e.g. MyType, you can use an asterisk (*) as wildcard character')\n }\n ]\n }\n ],\n getFilter(model: any): any {\n const filter: any = {};\n if (model.types.length) {\n filter.type = { __in: model.types };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = { pathSortingConfigs: [{ path: 'type' }] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {AlarmsCellRendererComponent as ɵi} from './columns/alarms.cell-renderer.component';\nexport {BaseFilteringFormRendererComponent as ɵa} from './columns/base.filtering-form-renderer.component';\nexport {GroupCellRendererComponent as ɵg} from './columns/group.cell-renderer.component';\nexport {GroupFilteringFormRendererComponent as ɵb} from './columns/group.filtering-form-renderer.component';\nexport {ModelCellRendererComponent as ɵe} from './columns/model.cell-renderer.component';\nexport {NameCellRendererComponent as ɵd} from './columns/name.cell-renderer.component';\nexport {RegistrationDateCellRendererComponent as ɵh} from './columns/registration-date.cell-renderer.component';\nexport {SerialNumberCellRendererComponent as ɵf} from './columns/serial-number.cell-renderer.component';\nexport {StatusCellRendererComponent as ɵc} from './columns/status.cell-renderer.component';"],"names":[],"mappings":";;;;;;;;;AAGA;MAIa,mBAAoB,SAAQ,gBAAgB;IAMvD,YAAY,UAAsB,EAAE,QAAkB;QACpD,KAAK,CAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;KAC9C;;;YAXF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;aAC5B;;;YANmB,UAAU;YAAE,QAAQ;;;qBAQrC,KAAK;oBACL,KAAK;wBACL,KAAK,SAAC,MAAM;2BACZ,KAAK,SAAC,SAAS;;;MCFL,kCAAkC;IAQ7C,YAAmB,OAAqC;QAArC,YAAO,GAAP,OAAO,CAA8B;KAAI;IAEjB,cAAc,CAAC,KAAoB;QAC5E,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAC2C,eAAe,CAAC,KAAoB;QAC9E,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,QAAQ;QACN,MAAM,MAAM,GAAqB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;KACxE;IAED,eAAe;QACb,UAAU,CAAC;YACT,IAAI;gBACF,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;aAClF;YAAC,OAAO,CAAC,EAAE;;aAEX;SACF,EAAE,EAAE,CAAC,CAAC;KACR;IAED,QAAQ;QACN,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,oCAAoC,CAAC,CAAC;KAC5E;IAED,WAAW;QACT,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YACvB,mBAAmB,EAAE,IAAI,CAAC,KAAK;SAChC,CAAC,CAAC;KACJ;IAED,WAAW;QACT,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;KAC5B;;;YApDF,SAAS,SAAC;gBACT,0lBAA4D;aAC7D;;;YANQ,4BAA4B;;;kCAQlC,SAAS,SAAC,UAAU,CAAC,MAAM,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;6BASlE,YAAY,SAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;8BAIxC,YAAY,SAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MCd/B,oBAAoB;IA0B/B,YAAY,SAAuB,EAAE;QACnC,IAAI,CAAC,8BAA8B,GAAG,kCAAkC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC7B;;;MC/BU,2BAA2B;IACtC,YACS,OAA4B,EACiB,iBAAoC;QADjF,YAAO,GAAP,OAAO,CAAqB;QACiB,sBAAiB,GAAjB,iBAAiB,CAAmB;KACtF;;;YAPL,SAAS,SAAC;gBACT,y9BAAoD;aACrD;;;YALQ,mBAAmB;YACnB,iBAAiB,uBAQrB,MAAM,SAAC,UAAU,CAAC,MAAM,iBAAiB,CAAC;;;MCLlC,sBAAuB,SAAQ,oBAAoB;IAC9D,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,qBAAqB,GAAG,2BAA2B,CAAC;QAEzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,QAAQ,EAAE;wBACR,IAAI,EAAE,SAAS;qBAChB;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,SAAS;qBAChB;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,SAAS;qBAChB;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,SAAS;qBAChB;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,SAAS;qBAChB;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,0BAA0B,OAAO,CAAC,0BAA0B,CAAC,kBAAkB;iBAC1F;gBACD;oBACE,GAAG,EAAE,UAAU;oBACf,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC;iBAClC;gBACD;oBACE,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC;iBAC/B;gBACD;oBACE,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC;iBAC/B;gBACD;oBACE,GAAG,EAAE,SAAS;oBACd,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;iBAC3B;gBACD;oBACE,GAAG,EAAE,MAAM;oBACX,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;iBAC5B;aACF;YACD,SAAS,CAAC,KAAK;gBACb,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,EAAE,CAAC;gBACf,IAAI,KAAK,CAAC,QAAQ,EAAE;oBAClB,GAAG,CAAC,IAAI,CAAC,EAAE,iCAAiC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC9D;gBACD,IAAI,KAAK,CAAC,KAAK,EAAE;oBACf,GAAG,CAAC,IAAI,CAAC,EAAE,8BAA8B,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC3D;gBACD,IAAI,KAAK,CAAC,KAAK,EAAE;oBACf,GAAG,CAAC,IAAI,CAAC,EAAE,8BAA8B,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC3D;gBACD,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,GAAG,CAAC,IAAI,CAAC,EAAE,gCAAgC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC7D;gBACD,IAAI,KAAK,CAAC,IAAI,EAAE;oBACd,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;oBACzD,GAAG,CAAC,IAAI,CAAC;wBACP,KAAK,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG;4BACvD,MAAM,IAAI,GAAG,EAAE,CAAC;4BAChB,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;4BAC5C,MAAM,GAAG,GAAG,0BAA0B,GAAG,EAAE,CAAC;4BAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;4BACd,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;4BACtB,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;yBAC9B,CAAC;qBACH,CAAC,CAAC;iBACJ;gBACD,IAAI,GAAG,CAAC,MAAM,EAAE;oBACd,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;iBACnB;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE;gBAClB,EAAE,IAAI,EAAE,iCAAiC,EAAE;gBAC3C,EAAE,IAAI,EAAE,8BAA8B,EAAE;gBACxC,EAAE,IAAI,EAAE,8BAA8B,EAAE;gBACxC,EAAE,IAAI,EAAE,gCAAgC,EAAE;aAC3C;SACF,CAAC;KACH;;;MCjGU,0BAA0B;IACrC,YACS,OAA4B,EACiB,iBAAoC;QADjF,YAAO,GAAP,OAAO,CAAqB;QACiB,sBAAiB,GAAjB,iBAAiB,CAAmB;KACtF;;;YAPL,SAAS,SAAC;gBACT,0VAAmD;aACpD;;;YALQ,mBAAmB;YACnB,iBAAiB,uBAQrB,MAAM,SAAC,UAAU,CAAC,MAAM,iBAAiB,CAAC;;;MCFlC,mCAAmC;IAK9C,YAAmB,OAAqC;QAArC,YAAO,GAAP,OAAO,CAA8B;QAFxD,gBAAW,GAAa,EAAE,CAAC;KAEiC;IAEjB,cAAc,CAAC,KAAoB;QAC5E,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAC2C,eAAe,CAAC,KAAoB;QAC9E,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,QAAQ;QACN,MAAM,MAAM,GAAqB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;KACnD;IAED,eAAe;QACb,UAAU,CAAC;YACT,IAAI;gBACF,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;aACjE;YAAC,OAAO,EAAE,EAAE;;aAEZ;SACF,EAAE,GAAG,CAAC,CAAC;KACT;IAED,WAAW;QACT,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YACvB,mBAAmB,EAAE,IAAI,CAAC,KAAK;SAChC,CAAC,CAAC;KACJ;IAED,WAAW;QACT,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;KAC5B;IAED,gBAAgB,CAAC,KAAK;QACpB,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;KAClC;;;YA/CF,SAAS,SAAC;gBACT,skBAA6D;aAC9D;;;YALQ,4BAA4B;;;4BAOlC,SAAS,SAAC,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;6BAM9D,YAAY,SAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;8BAIxC,YAAY,SAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MCb/B,qBAAsB,SAAQ,oBAAoB;IAC7D,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,qBAAqB,GAAG,0BAA0B,CAAC;QACxD,IAAI,CAAC,8BAA8B,GAAG,mCAAmC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,SAAS,CAAC,KAAK;gBACb,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,aAAa,EAAE;oBACvB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAkB;wBACvD,IAAI,EAAE,CAAC,qBAAqB,EAAE;4BAC5B,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC;yBAC7D;wBACD,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;qBAC/B,CAAC,CAAC;iBACJ;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;;;MC1BU,oBAAqB,SAAQ,oBAAoB;IAC5D,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC;oBACxC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE;wBACL;4BACE,GAAG,EAAE,SAAS;4BACd,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,OAAO,CAClB,qEAAqE,CACtE;yBACF;qBACF;iBACF;aACF;YACD,SAAS,CAAC,KAAU;gBAClB,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;oBACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;iBAC3C;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1C,CAAC;KACH;;;MC9CU,0BAA0B;IACrC,YACS,OAA4B,EACiB,iBAAoC;QADjF,YAAO,GAAP,OAAO,CAAqB;QACiB,sBAAiB,GAAjB,iBAAiB,CAAmB;KACtF;;;YATL,SAAS,SAAC;gBACT,QAAQ,EAAE;;GAET;aACF;;;YAPQ,mBAAmB;YACnB,iBAAiB,uBAUrB,MAAM,SAAC,UAAU,CAAC,MAAM,iBAAiB,CAAC;;;MCRlC,qBAAsB,SAAQ,oBAAoB;IAC7D,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE3B,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;QAC/C,MAAM,gBAAgB,GAAG,gEAAgE,CAAC;QAE1F,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,qBAAqB,GAAG,0BAA0B,CAAC;QAExD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC;oBACzC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE;wBACL;4BACE,GAAG,EAAE,UAAU;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,OAAO,CAClB,mEAAmE,CACpE;yBACF;qBACF;iBACF;aACF;YACD,SAAS,CAAC,KAAU;gBAClB,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;oBACvB,MAAM,CAAC,IAAI,GAAG;wBACZ,CAAC,iBAAiB,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE;wBAC3C,CAAC,gBAAgB,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE;qBAC3C,CAAC;iBACH;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;SAC9E,CAAC;KACH;;;MC7CU,yBAAyB;IACpC,YACS,OAA4B,EACiB,iBAAoC;QADjF,YAAO,GAAP,OAAO,CAAqB;QACiB,sBAAiB,GAAjB,iBAAiB,CAAmB;KACtF;;;YAfL,SAAS,SAAC;gBACT,QAAQ,EAAE;;;;;;;;GAQT;aACF;;;YAbQ,mBAAmB;YACnB,iBAAiB,uBAgBrB,MAAM,SAAC,UAAU,CAAC,MAAM,iBAAiB,CAAC;;;MCdlC,oBAAqB,SAAQ,oBAAoB;IAC5D,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,qCAAoC;QACzD,IAAI,CAAC,qBAAqB,GAAG,yBAAyB,CAAC;QAEvD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC;oBACxC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE;wBACL;4BACE,GAAG,EAAE,SAAS;4BACd,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,OAAO,CAClB,mEAAmE,CACpE;yBACF;qBACF;iBACF;aACF;YACD,SAAS,CAAC,KAAU;gBAClB,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;oBACtB,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;iBACrC;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1C,CAAC;KACH;;;MC/CU,qCAAqC;IAChD,YAAmB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;KAAI;;;YANpD,SAAS,SAAC;gBACT,QAAQ,EAAE;;GAET;aACF;;;YANQ,mBAAmB;;;MCGf,gCAAiC,SAAQ,oBAAoB;IACxE,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC3C,IAAI,CAAC,qBAAqB,GAAG,qCAAqC,CAAC;QAEnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,gBAAgB,EAAE;wBAChB,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,MAAM,EAAE,UAAU;6BACnB;4BACD,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,MAAM,EAAE,UAAU;6BACnB;yBACF;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,GAAG,EAAE,wBAAwB;oBAC7B,KAAK,EAAE,OAAO,CAAC,+BAA+B,CAAC;oBAC/C,UAAU,EAAE,yBAAyB;iBACtC;gBACD;oBACE,GAAG,EAAE,yBAAyB;oBAC9B,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC;oBAClC,UAAU,EAAE,wBAAwB;iBACrC;aACF;YACD,SAAS,CAAC,KAAK;gBACb,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC;gBAC9C,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;oBAC1C,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;oBAClB,IAAI,KAAK,CAAC,KAAK,EAAE;wBACf,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;4BAChB,IAAI,EAAE;gCACJ,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;gCAC5B,CAAC,GAAG,IAAI,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;6BACvC;yBACF,CAAC,CAAC;qBACJ;oBACD,IAAI,KAAK,CAAC,MAAM,EAAE;wBAChB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBAC7C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;4BAChB,IAAI,EAAE;gCACJ,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;gCAC7B,CAAC,GAAG,IAAI,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;6BACxC;yBACF,CAAC,CAAC;qBACJ;iBACF;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACzE,CAAC;KACH;IAES,UAAU,CAAC,YAAoB;QACvC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;KAC7C;;;MC1EU,iCAAiC;IAC5C,YACS,OAA4B,EACiB,iBAAoC;QADjF,YAAO,GAAP,OAAO,CAAqB;QACiB,sBAAiB,GAAjB,iBAAiB,CAAmB;KACtF;;;YATL,SAAS,SAAC;gBACT,QAAQ,EAAE;;GAET;aACF;;;YAPQ,mBAAmB;YACnB,iBAAiB,uBAUrB,MAAM,SAAC,UAAU,CAAC,MAAM,iBAAiB,CAAC;;;MCRlC,4BAA6B,SAAQ,oBAAoB;IACpE,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE3B,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;QAC7D,MAAM,uBAAuB,GAC3B,iEAAiE,CAAC;QAEpE,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QACvC,IAAI,CAAC,qBAAqB,GAAG,iCAAiC,CAAC;QAE/D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,aAAa,EAAE;wBACb,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,GAAG,EAAE,eAAe;oBACpB,KAAK,EAAE,OAAO,CAAC,iCAAiC,CAAC;oBACjD,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE;wBACL;4BACE,GAAG,EAAE,iBAAiB;4BACtB,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,OAAO,CAClB,mEAAmE,CACpE;yBACF;qBACF;iBACF;aACF;YACD,SAAS,CAAC,KAAU;gBAClB,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;oBAC9B,MAAM,CAAC,IAAI,GAAG;wBACZ,CAAC,wBAAwB,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE;wBACzD,CAAC,uBAAuB,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE;qBACzD,CAAC;iBACH;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;SAC5F,CAAC;KACH;;;MCrDU,2BAA2B;IACtC,YAAmB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;KAAI;;;YANpD,SAAS,SAAC;gBACT,QAAQ,EAAE;;GAET;aACF;;;YANQ,mBAAmB;;;MCGf,sBAAuB,SAAQ,oBAAoB;IAC9D;QACE,KAAK,EAAE,CAAC;QAER,MAAM,oBAAoB,GAAG,2CAA2C,CAAC;QACzE,MAAM,kCAAkC,GAAG,EAAE,CAAC,oBAAoB,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QACnF,MAAM,0BAA0B,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,CAAC;QAE9E,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;QACzD,MAAM,2BAA2B,GAAG,EAAE,CAAC,sBAAsB,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QACvF,MAAM,6BAA6B,GAAG,EAAE,CAAC,sBAAsB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3F,MAAM,6BAA6B,GAAG,EAAE,CAAC,sBAAsB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3F,MAAM,4BAA4B,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,CAAC;QAElF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;QACrD,MAAM,yBAAyB,GAAG,EAAE,CAAC,oBAAoB,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QACnF,MAAM,4BAA4B,GAAG,EAAE,CAAC,oBAAoB,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;QACzF,MAAM,2BAA2B,GAAG,EAAE,CAAC,oBAAoB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAEvF,MAAM,sBAAsB,GAAG;YAC7B,IAAI,EAAE;gBACJ,kCAAkC;gBAClC,6BAA6B;gBAC7B,2BAA2B;aAC5B;SACF,CAAC;QACF,MAAM,yBAAyB,GAAG;;YAEhC,KAAK,EAAE;gBACL,EAAE,KAAK,EAAE,kCAAkC,EAAE;gBAC7C,EAAE,KAAK,EAAE,6BAA6B,EAAE;gBACxC,EAAE,KAAK,EAAE,2BAA2B,EAAE;aACvC;SACF,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,qBAAuB;QACpC,IAAI,CAAC,qBAAqB,GAAG,2BAA2B,CAAC;QAEzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV,IAAI,EAAE,SAAS;qBAChB;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;qBAChB;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;qBAChB;oBACD,gBAAgB,EAAE;wBAChB,IAAI,EAAE,SAAS;qBAChB;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,SAAS;qBAChB;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;qBAChB;oBACD,gBAAgB,EAAE;wBAChB,IAAI,EAAE,SAAS;qBAChB;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;qBAChB;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,0BAA0B,OAAO,CACzC,+BAA+B,CAChC,kBAAkB;iBACpB;gBACD;oBACE,GAAG,EAAE,YAAY;oBACjB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;iBACzB;gBACD;oBACE,GAAG,EAAE,aAAa;oBAClB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;iBAC1B;gBACD;oBACE,GAAG,EAAE,aAAa;oBAClB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;iBAC1B;gBACD;oBACE,GAAG,EAAE,kBAAkB;oBACvB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC;iBAChC;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,0BAA0B,OAAO,CACzC,+BAA+B,CAChC,kBAAkB;iBACpB;gBACD;oBACE,GAAG,EAAE,YAAY;oBACjB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;iBACzB;gBACD;oBACE,GAAG,EAAE,aAAa;oBAClB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;iBAC1B;gBACD;oBACE,GAAG,EAAE,kBAAkB;oBACvB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC;iBAChC;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,0BAA0B,OAAO,CACzC,sCAAsC,CACvC,kBAAkB;iBACpB;gBACD;oBACE,GAAG,EAAE,aAAa;oBAClB,KAAK,EAAE,OAAO,CAAC,6BAA6B,CAAC;iBAC9C;aACF;YACD,SAAS,CAAC,KAAK;gBACb,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,EAAE,CAAC;gBAEf,IAAI,KAAK,EAAE;oBACT,IAAI,KAAK,CAAC,UAAU,EAAE;wBACpB,GAAG,CAAC,IAAI,CAAC;4BACP,KAAK,EAAE,CAAC,yBAAyB,EAAE,2BAA2B,CAAC;yBAChE,CAAC,CAAC;qBACJ;oBACD,IAAI,KAAK,CAAC,WAAW,EAAE;wBACrB,GAAG,CAAC,IAAI,CAAC;4BACP,KAAK,EAAE,CAAC,yBAAyB,EAAE,6BAA6B,CAAC;yBAClE,CAAC,CAAC;qBACJ;oBACD,IAAI,KAAK,CAAC,WAAW,EAAE;wBACrB,GAAG,CAAC,IAAI,CAAC;4BACP,KAAK,EAAE,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;yBACjE,CAAC,CAAC;qBACJ;oBACD,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,EAAE;wBACpD,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;qBACtC;oBACD,IAAI,KAAK,CAAC,UAAU,EAAE;wBACpB,GAAG,CAAC,IAAI,CAAC;4BACP,KAAK,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;yBAC9D,CAAC,CAAC;qBACJ;oBACD,IAAI,KAAK,CAAC,WAAW,EAAE;wBACrB,GAAG,CAAC,IAAI,CAAC;4BACP,KAAK,EAAE,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;yBACjE,CAAC,CAAC;qBACJ;oBACD,IAAI,KAAK,CAAC,WAAW,EAAE;wBACrB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;qBAClC;oBAED,IAAI,GAAG,CAAC,MAAM,EAAE;wBACd,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;qBACnB;iBACF;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;SACvD,CAAC;KACH;;;MC7KU,wBAAyB,SAAQ,oBAAoB;IAChE,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE;wBACH,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,GAAG,EAAE,KAAK;oBACV,KAAK,EAAE,OAAO,CAAC,6BAA6B,CAAC;oBAC7C,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE;wBACL;4BACE,GAAG,EAAE,OAAO;4BACZ,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,OAAO,CAAC,+DAA+D,CAAC;yBACtF;qBACF;iBACF;aACF;YACD,SAAS,CAAC,KAAU;gBAClB,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;oBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;iBACzC;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1C,CAAC;KACH;;;MCxBU,iBAAiB;IAK5B,YACY,gBAAkC,EAClC,gBAAkC,EAClC,YAA0B,EAC1B,KAAmB;QAHnB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,UAAK,GAAL,KAAK,CAAc;QAPrB,oCAA+B,GAAG,oBAAoB,CAAC;QACvD,sBAAiB,GAAG,EAAE,CAAC;QAQ/B,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;KACtC;IAED,iBAAiB;QACf,MAAM,cAAc,GAAG;YACrB,IAAI,sBAAsB,EAAE;YAC5B,IAAI,oBAAoB,EAAE;YAC1B,IAAI,qBAAqB,EAAE;YAC3B,IAAI,4BAA4B,EAAE;YAClC,IAAI,qBAAqB,EAAE;YAC3B,IAAI,gCAAgC,EAAE;YACtC,IAAI,wBAAwB,EAAE;YAC9B,IAAI,oBAAoB,EAAE;YAC1B,IAAI,sBAAsB,EAAE;SAC7B,CAAC;QAEF,OAAO,cAAc,CAAC;KACvB;IAED,oBAAoB;QAClB,OAAO;YACL,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,CAAC;SACf,CAAC;KACH;IAED,2BAA2B;QACzB,OAAO;YACL,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,CAAC;SACf,CAAC;KACH;IAED,wBAAwB;QACtB,OAAO;YACL;gBACE,IAAI;gBACJ,QAAQ,EAAE,CAAC,IAAS,KAAK,IAAI,CAAC,MAAM,CAAC,IAAsB,CAAC;aAC7D;SACF,CAAC;KACH;IAED,4BAA4B;QAC1B,OAAO,EAAE,CAAC;KACX;IAED,aAAa,CAAC,MAAsB;QAClC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAC5B,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;KAC7E;IAED,QAAQ,CAAC,MAAsB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC;KACnC;IAED,eAAe,CAAC,MAAsB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,GAAG,cAAc,CAAC;QAC7E,OAAO,QAAQ,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC;KACjD;IAED,eAAe,CAAC,MAAsB,EAAE,gBAAkC;QACxE,MAAM,sBAAsB,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;QAC9D,MAAM,YAAY,GAAG,GAAG,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzB;IAED,OAAO,CAAC,aAA6B,EAAE,MAAM,GAAG,IAAI;QAClD,IAAI,aAAa,CAAC,iBAAiB,IAAI,aAAa,CAAC,kBAAkB,EAAE;YACvE,OAAO,GAAG,MAAM,SAAS,aAAa,CAAC,EAAE,EAAE,CAAC;SAC7C;QACD,OAAO,GAAG,MAAM,UAAU,aAAa,CAAC,EAAE,EAAE,CAAC;KAC9C;IAED,aAAa,CAAC,MAAsB;QAClC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;KACzC;IAED,wBAAwB,CAAC,OAAiB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,gBAAgB,GAAG,EAAE,CAAC;YAC5B,IAAI,eAAe,GAAG,EAAE,CAAC;YACzB,IAAI;gBACF,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;oBAClD,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;oBACjE,IAAI,eAAe,EAAE;wBACnB,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC;wBAClC,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC;wBACtC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;qBACxC;iBACF,CAAC,CAAC;aACJ;YAAC,OAAO,EAAE,EAAE;gBACX,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;YACD,OAAO,CAAC,GAAG,gBAAgB,EAAE,GAAG,eAAe,CAAC,CAAC;SAClD;QACD,OAAO,OAAO,CAAC;KAChB;IAEK,MAAM,CAAC,MAAsB;;YACjC,IAAI;gBACF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACtB,OAAO,CAAC,eAAe,CAAC,EACxB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC3B,OAAO,CAAC,uEAAuE,CAAC,EAChF,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CACtB,EACD,MAAM,CAAC,MAAM,EACb,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CACrD,CAAC;gBACF,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;aACvD;YAAC,OAAO,EAAE,EAAE;;gBAGX,IAAI,EAAE,EAAE;oBACN,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;iBACxC;aACF;SACF;KAAA;IAEK,OAAO,CACX,OAA2B,EAC3B,UAAsB,EACtB,QAAa,EAAE,EACf,eAAwB,KAAK;;YAE7B,MAAM,OAAO,mCACR,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,KACrD,WAAW,EAAE,IAAI,EACjB,YAAY,GACb,CAAC;YACF,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5C;KAAA;IAEK,kBAAkB,CACtB,OAA2B,EAC3B,UAAsB,EACtB,QAAa,EAAE,EACf,eAAwB,KAAK,EAC7B,EAAU;;YAEV,MAAM,kBAAkB,GAAG,IAAI,CAAC;YAChC,MAAM,OAAO,mCACR,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,CAAC,KACzE,WAAW,EAAE,IAAI,EACjB,YAAY,GACb,CAAC;YACF,OAAO,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;SAC5D;KAAA;IAEK,QAAQ,CAAC,OAA2B,EAAE,UAAsB,EAAE,QAAa,EAAE;;YACjF,MAAM,OAAO,mCACR,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,KACrD,QAAQ,EAAE,CAAC,EACX,WAAW,EAAE,CAAC,GACf,CAAC;YACF,OAAO,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;SACtE;KAAA;IAEK,oBAAoB,CACxB,OAA2B,EAC3B,UAAsB,EACtB,QAAa,EAAE,EACf,EAAU;;YAEV,MAAM,kBAAkB,GAAG,IAAI,CAAC;YAChC,MAAM,OAAO,mCACR,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,CAAC,KACzE,QAAQ,EAAE,CAAC,EACX,WAAW,EAAE,CAAC,GACf,CAAC;YACF,OAAO,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;SACtF;KAAA;IAEK,oBAAoB,CAAC,QAAa,EAAE,EAAE,EAAU;;YACpD,MAAM,OAAO,GAAG;gBACd,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;gBACrC,QAAQ,EAAE,CAAC;gBACX,cAAc,EAAE,IAAI;aACrB,CAAC;YACF,OAAO,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;SACtF;KAAA;IAEK,QAAQ,CAAC,QAAa,EAAE;;YAC5B,MAAM,OAAO,GAAG;gBACd,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;gBACrC,QAAQ,EAAE,CAAC;gBACX,cAAc,EAAE,IAAI;aACrB,CAAC;YACF,OAAO,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;SACtE;KAAA;IAED,oBAAoB,CAAC,OAA2B,EAAE,KAAU;QAC1D,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KAC/C;IAED,WAAW,CAAC,OAA2B,EAAE,aAAa,GAAG,EAAE;QACzD,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,kBAClF,QAAQ,EAAE,EAAE,EACZ,SAAS,EAAE,EAAE,IACV,aAAa,EAChB,CAAC;KACJ;IAED,SAAS,CAAC,MAAc,IAAI,CAAC,+BAA+B;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;SAC1F;QACD,OAAO,MAAoB,CAAC;KAC7B;IAED,UAAU,CAAC,MAAkB,EAAE,MAAc,IAAI,CAAC,+BAA+B;QAC/E,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;KACnD;IAED,WAAW,CAAC,MAAc,IAAI,CAAC,+BAA+B;QAC5D,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAC9B;IAEO,WAAW,CAAC,MAAsB;QACxC,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;cAC9C,0DAA0D;cAC1D,cAAc,CAAC;QACnB,OAAO,MAAM,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAAC;KAC/C;IAEO,QAAQ,CAAC,MAAsB;QACrC,OAAO,MAAM,CAAC,IAAI,KAAK,wCAAwC,CAAC;KACjE;IAEO,iBAAiB,CACvB,OAA2B,EAC3B,UAAsB,EACtB,KAAU,EACV,kBAA4B;QAE5B,wCACM,kBAAkB;cAClB,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;cACpD,EAAE,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MACpD,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAC7B,WAAW,EAAE,UAAU,CAAC,WAAW,EACnC,YAAY,EAAE,KAAK,EACnB,cAAc,EAAE,IAAI,IACpB;KACH;IAEO,mBAAmB,CAAC,KAAU,EAAE,MAAwB;QAC9D,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,mBAAmB,EAAE;YACnD,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,IAAI,QAAQ,CAAC;YAC/D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAEvD,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACjB,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;gBAClD,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACrC;iBAAM,IAAI,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE;gBACzD,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aAC7D;iBAAM;gBACL,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;aAClC;SACF;QAED,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;YACvC,MAAM,EAAE,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,iBAAiB;gBACjE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;oBACxB,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,iBAAiB,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC;aACtF,CAAC,CAAC;YACH,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1B;QACD,OAAO,KAAK,CAAC;KACd;;;YAtSF,UAAU;;;YA1Bc,gBAAgB;YAahC,gBAAgB;YAPvB,YAAY;YACZ,YAAY;;;MCgBD,mBAAmB;IAqE9B,YAAmB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAjE9C,UAAK,GAAW,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,uBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAClD,sBAAiB,GAAW,OAAO,CAAC,kBAAkB,CAAC,CAAC;QA6BxD,eAAU,GAAY,KAAK,CAAC;QAC5B,cAAS,GAAQ,EAAE,CAAC;QAQpB,oBAAe,GAAY,KAAK,CAAC;;;;;QAMjC,qBAAgB,GAAsC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;;QAEnF,oBAAe,GAAqC,IAAI,YAAY,EAE3E,CAAC;QACM,8BAAyB,GAAyB,IAAI,YAAY,EAAU,CAAC;QAC7E,gBAAW,GAAG,IAAI,YAAY,EAAY,CAAC;QAC3C,mBAAc,GAAG,IAAI,YAAY,EAAW,CAAC;QAEvD,mBAAc,GAAoB,EAAE,CAAC;QACrC,YAAO,GAAuB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;QACzE,eAAU,GAAe,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;QACvE,uBAAkB,GAAwB,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,EAAE,CAAC;QAEhG,iBAAY,GAAY,KAAK,CAAC;QAM5B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpE;IAhED,IAAsB,QAAQ,CAAC,KAAyB;QACtD,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;SACvE;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAC5D,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAC3C,CAAC;SACH;KACF;IACD,IAAyB,WAAW,CAAC,KAAiB;QACpD,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;SACjE;KACF;IAED,IAA6B,eAAe,CAAC,cAA4B;QACvE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,EAAE,CAAC;KACxE;IACD,IAA6B,eAAe,CAAC,KAAsB;QACjE,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,CAAC;SACzE;KACF;IAGD,IAAiC,mBAAmB,CAAC,KAA0B;QAC7E,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACjC;aAAM;YACL,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,EAAE,CAAC;SACjF;KACF;IA8BD,QAAQ;QACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,WAAW,CAAC,MAAM,EAAE,MAAwB;QAC1C,OAAO,MAAM,CAAC,IAAI,CAAC;KACpB;IAEK,oBAAoB,CACxB,kBAAsC;;YAEtC,IAAI,oBAA0C,CAAC;YAC/C,IAAI,YAAoB,CAAC;YACzB,IAAI,IAAY,CAAC;YACjB,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAC3E,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,UAAU,EAC7B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,cAAc,CACpB,CAAC;gBAEF,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAC9D,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,UAAU,EAC7B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,CACpB,CAAC;gBACF,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBAE9F,oBAAoB,GAAG;oBACrB,GAAG;oBACH,IAAI;oBACJ,MAAM;oBACN,YAAY;oBACZ,IAAI;iBACL,CAAC;aACH;iBAAM;gBACL,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAChE,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,UAAU,EAC7B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,CAClB,CAAC;gBAEF,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAClD,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,UAAU,EAC7B,IAAI,CAAC,SAAS,CACf,CAAC;gBACF,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAE7D,oBAAoB,GAAG;oBACrB,GAAG;oBACH,IAAI;oBACJ,MAAM;oBACN,YAAY;oBACZ,IAAI;iBACL,CAAC;aACH;YAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CACjC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CACxF,CAAC;YAEF,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;aAChE;YAED,OAAO,oBAAoB,CAAC;SAC7B;KAAA;IAEK,iBAAiB;;YACrB,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,MAAM,YAAY,GAAkB;oBAClC,IAAI;oBACJ,QAAQ,EAAE,CAAC,MAAW,KAAK,IAAI,CAAC,cAAc,CAAC,MAAwB,CAAC;iBACzE,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACxC;iBAAM;gBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,CAAC;aACzE;SACF;KAAA;IAEK,cAAc,CAAC,MAAM;;YACzB,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACrB;KAAA;IAED,eAAe,CACb,WAAqB,EACrB,MAGC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QACxB,IAAI,IAAI,KAAK,mBAAmB,CAAC,WAAW,EAAE;YAC5C,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;SACpD;KACF;IAED,YAAY,CAAC,MAAkB;QAC7B,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KAC3C;;;YAzLF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,4iCAA2C;aAC5C;;;YALQ,iBAAiB;;;2BAQvB,KAAK;sBACL,KAAK;oBACL,KAAK;iCACL,KAAK;gCACL,KAAK;uBACL,KAAK,SAAC,SAAS;0BASf,KAAK,SAAC,YAAY;8BAQlB,KAAK,SAAC,gBAAgB;8BAItB,KAAK,SAAC,gBAAgB;yBAOtB,KAAK;wBACL,KAAK;kCACL,KAAK,SAAC,oBAAoB;8BAO1B,KAAK;6BACL,KAAK;+BAKL,KAAK;8BAEL,MAAM;wCAGN,MAAM;0BACN,MAAM;6BACN,MAAM;uBASN,SAAS,SAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MC9BnC,gBAAgB;;;YA1C5B,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,CAAC;gBAC7F,YAAY,EAAE;oBACZ,mBAAmB;oBACnB,kCAAkC;oBAClC,mCAAmC;oBACnC,2BAA2B;oBAC3B,yBAAyB;oBACzB,0BAA0B;oBAC1B,iCAAiC;oBACjC,0BAA0B;oBAC1B,qCAAqC;oBACrC,2BAA2B;oBAC3B,mBAAmB;iBACpB;gBACD,OAAO,EAAE;oBACP,mBAAmB;oBACnB,kCAAkC;oBAClC,mCAAmC;oBACnC,2BAA2B;oBAC3B,yBAAyB;oBACzB,0BAA0B;oBAC1B,iCAAiC;oBACjC,0BAA0B;oBAC1B,qCAAqC;oBACrC,2BAA2B;oBAC3B,mBAAmB;iBACpB;gBACD,eAAe,EAAE;oBACf,mBAAmB;oBACnB,kCAAkC;oBAClC,mCAAmC;oBACnC,2BAA2B;oBAC3B,yBAAyB;oBACzB,0BAA0B;oBAC1B,iCAAiC;oBACjC,0BAA0B;oBAC1B,qCAAqC;oBACrC,2BAA2B;iBAC5B;gBACD,SAAS,EAAE,CAAC,iBAAiB,CAAC;aAC/B;;;MCxDY,sBAAuB,SAAQ,oBAAoB;IAC9D,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,OAAO,CAAC,kCAAkC,CAAC;qBACnD;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,GAAG,EAAE,QAAQ;iBACd;gBACD;oBACE,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,OAAO,CAAC,kCAAkC,CAAC;oBAClD,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE;wBACL;4BACE,GAAG,EAAE,UAAU;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,OAAO,CAAC,+DAA+D,CAAC;yBACtF;qBACF;iBACF;aACF;YACD,SAAS,CAAC,KAAU;gBAClB,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,MAAM,EAAE;oBAChB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;iBAC1B;gBACD,IAAI,KAAK,CAAC,MAAM,EAAE;oBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;iBAC5C;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1C,CAAC;KACH;;;MC5DU,oBAAqB,SAAQ,oBAAoB;IAC5D,YAAY,mBAAkC;QAC5C,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC;oBACxC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC;oBAClB,KAAK,EAAE;wBACL;4BACE,GAAG,EAAE,SAAS;4BACd,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,OAAO,CAAC,gEAAgE,CAAC;yBACvF;qBACF;iBACF;aACF;YACD,SAAS,CAAC,KAAU;gBAClB,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;oBACtB,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;iBACrC;gBACD,OAAO,MAAM,CAAC;aACf;SACF,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,EAAE,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KACjE;;;ACjDH;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { Component, Injectable, EventEmitter, Input, Output, ViewChild, HostListener, NgModule } from '@angular/core';
3
3
  import { InventoryService, UserService, SmartGroupsService, SmartRulesService } from '@c8y/client';
4
- import { gettext, CellRendererContext, AppStateService, AlertService, Permissions, Status, ModalService, DataGridComponent, C8yStepper, CoreModule, HOOK_ONCE_ROUTE, ViewContext } from '@c8y/ngx-components';
4
+ import { gettext, CellRendererContext, AppStateService, AlertService, Permissions, ModalService, Status, DataGridComponent, C8yStepper, CoreModule, HOOK_ONCE_ROUTE, ViewContext } from '@c8y/ngx-components';
5
5
  import { DeviceGroupService, AssetNodeService, GroupFragment } from '@c8y/ngx-components/assets-navigator';
6
6
  import { TranslateService } from '@ngx-translate/core';
7
7
  import { BaseDeviceGridColumn, DeviceGridService, NameDeviceGridColumn, ModelDeviceGridColumn, SerialNumberDeviceGridColumn, RegistrationDateDeviceGridColumn, SystemIdDeviceGridColumn, ImeiDeviceGridColumn, AlarmsDeviceGridColumn, DeviceGridModule } from '@c8y/ngx-components/device-grid';
@@ -62,8 +62,8 @@ class AssetTypeGridColumn extends BaseDeviceGridColumn {
62
62
  }
63
63
 
64
64
  class SubAssetsService extends DeviceGridService {
65
- constructor(translateService, inventoryService, appState, user, assetNodeService, deviceGroupService, smartGroupsService, smartRulesService, alertService, permissionsService) {
66
- super(inventoryService, translateService);
65
+ constructor(translateService, inventoryService, appState, user, assetNodeService, deviceGroupService, smartGroupsService, smartRulesService, alertService, permissionsService, modal) {
66
+ super(inventoryService, translateService, alertService, modal);
67
67
  this.translateService = translateService;
68
68
  this.inventoryService = inventoryService;
69
69
  this.appState = appState;
@@ -74,6 +74,7 @@ class SubAssetsService extends DeviceGridService {
74
74
  this.smartRulesService = smartRulesService;
75
75
  this.alertService = alertService;
76
76
  this.permissionsService = permissionsService;
77
+ this.modal = modal;
77
78
  this.uiOnlyCountersUpdate = new BehaviorSubject(null);
78
79
  this.GRID_CONFIG_DEFAULT_STORAGE_KEY = 'sub-assets-grid-config';
79
80
  this.IS_DEVICE_GROUP_FRAGMENT = 'c8y_IsDeviceGroup';
@@ -342,7 +343,8 @@ SubAssetsService.ctorParameters = () => [
342
343
  { type: SmartGroupsService },
343
344
  { type: SmartRulesService },
344
345
  { type: AlertService },
345
- { type: Permissions }
346
+ { type: Permissions },
347
+ { type: ModalService }
346
348
  ];
347
349
 
348
350
  class GroupInfoComponent {