@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,"sources":["../../node_modules/tslib/tslib.es6.js","../../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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__read","o","m","r","i","ar","error","SchemaFormComponent","elementRef","injector","_super","UpgradeComponent","Directive","args","selector","ElementRef","Injector","Input","BaseFilteringFormRendererComponent","context","onEnterKeyDown","event","stopPropagation","applyFilter","onEscapeKeyDown","resetFilter","ngOnInit","column","property","schema","cloneDeep","filteringConfig","form","model","externalFilterQuery","options","formDefaults","ngModelOptions","debounce","ngAfterViewInit","_this","setTimeout","schemaFormComponent","nativeElement","querySelector","focus","canApply","get","Component","template","FilteringFormRendererContext","ViewChild","forwardRef","static","HostListener","config","filteringFormRendererComponent","assign","deviceGridService","CellRendererContext","DeviceGridService","decorators","type","Inject","AlarmsDeviceGridColumn","initialColumnConfig","name","header","gettext","cellRendererComponent","AlarmsCellRendererComponent","filterable","properties","critical","major","minor","warning","none","key","title","getFilter","filter","ors","c8y_ActiveAlarmsStatus.critical","__gt","c8y_ActiveAlarmsStatus.major","c8y_ActiveAlarmsStatus.minor","c8y_ActiveAlarmsStatus.warning","__not","__has","__and","map","sev","zero","has","undefined","__or","sortable","sortingConfig","pathSortingConfigs","path","BaseDeviceGridColumn","GroupFilteringFormRendererComponent","preselected","selectedNodes","assetSelector","ex","selectionChanged","nodes","read","GroupDeviceGridColumn","GroupCellRendererComponent","mo","c8y_DeviceQueryString","__useFilterQueryString","__bygroupid","id","ImeiDeviceGridColumn","self","imeis","items","add","notitle","placeholder","__in","ModelDeviceGridColumn","hardwareModelPath","vendingModelPath","ModelCellRendererComponent","models","_a","NameDeviceGridColumn","cellCSSClassName","NameCellRendererComponent","names","RegistrationDateDeviceGridColumn","RegistrationDateCellRendererComponent","registrationDate","after","format","before","maxDateKey","minDateKey","dates","formatDate","_b","__lt","dateToFormat","Date","toISOString","SerialNumberDeviceGridColumn","hardwareSerialNumberPath","vendingSerialNumberPath","SerialNumberCellRendererComponent","serialNumbers","StatusDeviceGridColumn","responseIntervalPath","responseIntervalLessThanOrEqualTo0","__le","responseIntervalNotDefined","availabilityStatusPath","availabilityStatusAvailable","SendStatus","AVAILABLE","availabilityStatusUnavailable","_c","UNAVAILABLE","availabilityStatusMaintenance","_d","MAINTENANCE","availabilityStatusNotDefined","connectionStatusPath","connectionStatusConnected","_e","PushStatus","CONNECTED","connectionStatusDisconnected","_f","DISCONNECTED","connectionStatusMaintenance","_g","deviceUnderMaintenance","deviceNotUnderMaintenance","dataType","StatusCellRendererComponent","sendOnline","sendOffline","sendUnknown","sendNotMonitored","pushOnline","pushOffline","pushNotMonitored","maintenance","SystemIdDeviceGridColumn","ids","inventoryService","translateService","GRID_CONFIG_DEFAULT_STORAGE_KEY","DEFAULT_PAGE_SIZE","queriesUtil","QueriesUtil","getDefaultColumns","getDefaultPagination","pageSize","currentPage","getInfiniteScrollPagination","getDefaultActionControls","callback","item","delete","getDefaultBulkActionControls","getProperName","device","instant","getModel","hardware","getHardware","getSerialNumber","serialPropertyName","isVendme","getParentsNames","featuredParentId","assetParentsReferences","assetParents","references","sortedByName","sortBy","remove","concat","join","getHref","groupOrDevice","prefix","c8y_IsDeviceGroup","c8y_IsDynamicGroup","getAlarmsHref","getUserConfiguredColumns","columns","getConfig","reOrderedColumns_1","noConfigColumns","col","includes","forEach","visible","sortOrder","columnToReorder","find","clearConfig","arguments","__spread","console","log","getData","pagination","query","withChildren","filters","getDevicesFilters","withParents","list","getCount","paging","totalPages","getTotal","q","buildQuery","withTotalPages","getDeviceQueryString","fullQuery","getQueryObj","addAndFilter","defaultFilter","transform","extendQueryByColumn","__filter","__orderby","JSON","parse","localStorage","getItem","saveConfig","setItem","stringify","removeItem","hardwarePropertyName","queryObj","identity","obj","cs_1","pathSortingConfig","sortOrderModifier","Injectable","InventoryService","TranslateService","DeviceGridComponent","loadMoreItemsLabel","loadingItemsLabel","selectable","baseQuery","showChildDevices","onColumnsChange","EventEmitter","onDeviceQueryStringChange","itemsSelect","onChildDevices","actionControls","bulkActionControls","serverSideDataCallback","onDataSourceModifier","bind","defineProperty","infiniteScroll","trackByName","_index","dataSourceModifier","res","data","filteredSize","size","emit","serverSideDataResult","dataCallback","updateFiltering","columnNames","action","FilteringActionType","ResetFilter","dataGrid","clearFilters","configChange","Output","DataGridComponent","NgModule","imports","CommonModule","FormsModule","DeviceStatusModule","DataGridModule","AssetSelectorModule","declarations","exports","entryComponents","providers","CustomDeviceGridColumn","exists","default","equals","TypeDeviceGridColumn","types"],"mappings":";;;;;;;;;;;;;;oFAgBA,IAAIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,aAGZO,EAAUR,EAAGC,GAEzB,SAASQ,IAAOC,KAAKC,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEY,UAAkB,OAANX,EAAaC,OAAOW,OAAOZ,IAAMQ,EAAGG,UAAYX,EAAEW,UAAW,IAAIH,YAyCnEK,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,oBAItDO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOrC,OAAU2B,EACvJ,SAASM,EAAKK,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIhB,EAAG,MAAM,IAAIiB,UAAU,mCAC3B,KAAOb,OACH,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARc,EAAG,GAASf,EAAU,OAAIe,EAAG,GAAKf,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEgB,KAAKjB,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAEgB,KAAKjB,EAAGe,EAAG,KAAKrB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGc,EAAK,CAAS,EAARA,EAAG,GAAQd,EAAEb,QACzB2B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGd,EAAIc,EAAI,MACxB,KAAK,EAAc,OAAXZ,EAAEC,QAAgB,CAAEhB,MAAO2B,EAAG,GAAIrB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIe,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKZ,EAAEI,IAAIW,MAAOf,EAAEG,KAAKY,MAAO,SACxC,QACI,KAAMjB,EAAIE,EAAEG,MAAML,EAAIA,EAAEkB,OAAS,GAAKlB,EAAEA,EAAEkB,OAAS,KAAkB,IAAVJ,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEZ,EAAI,EAAG,SACjG,GAAc,IAAVY,EAAG,MAAcd,GAAMc,EAAG,GAAKd,EAAE,IAAMc,EAAG,GAAKd,EAAE,IAAM,CAAEE,EAAEC,MAAQW,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYZ,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIc,EAAI,MAC7D,GAAId,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIa,KAAKL,GAAK,MACvDd,EAAE,IAAIE,EAAEI,IAAIW,MAChBf,EAAEG,KAAKY,MAAO,SAEtBH,EAAKjB,EAAKmB,KAAKrC,EAASuB,GAC1B,MAAOZ,GAAKwB,EAAK,CAAC,EAAGxB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARc,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE3B,MAAO2B,EAAG,GAAKA,EAAG,QAAK,EAAQrB,MAAM,GArB9BL,CAAK,CAACwB,EAAGC,eA8C7CO,EAAOC,EAAGT,GACtB,IAAIU,EAAsB,mBAAXZ,QAAyBW,EAAEX,OAAOC,UACjD,IAAKW,EAAG,OAAOD,EACf,IAAmBE,EAAYjC,EAA3BkC,EAAIF,EAAEN,KAAKK,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANb,GAAgBA,KAAM,MAAQW,EAAIC,EAAEnC,QAAQI,MAAMgC,EAAGN,KAAKI,EAAEpC,OAExE,MAAOuC,GAASpC,EAAI,CAAEoC,MAAOA,WAEzB,IACQH,IAAMA,EAAE9B,OAAS6B,EAAIE,EAAU,SAAIF,EAAEN,KAAKQ,WAExC,GAAIlC,EAAG,MAAMA,EAAEoC,OAE7B,OAAOD,oBC/HT,SAAAE,EAAYC,EAAwBC,UAClCC,EAAAd,KAAA1C,KAAM,gBAAiBsD,EAAYC,IAASvD,YAPPF,EAAAuD,EAAAG,MAAAC,EAAAA,sCAHxCC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,+DALQC,EAAAA,kBAAYC,EAAAA,4CAQ7BC,EAAAA,qBACAA,EAAAA,yBACAA,EAAAA,MAAKJ,KAAA,CAAC,8BACNI,EAAAA,MAAKJ,KAAA,CAAC,+BCMP,SAAAK,EAAmBC,GAAAjE,KAAAiE,QAAAA,SAEwBD,EAAA9D,UAAAgE,eAAA,SAAeC,GACxDA,EAAMC,kBACNpE,KAAKqE,eAEqCL,EAAA9D,UAAAoE,gBAAA,SAAgBH,GAC1DA,EAAMC,kBACNpE,KAAKuE,eAGPP,EAAA9D,UAAAsE,SAAA,WACE,IAAMC,EAA2BzE,KAAKiE,QAAQS,SAC9C1E,KAAK2E,OAASC,EAAAA,UAAUH,EAAOI,gBAAgBF,QAC/C3E,KAAK8E,KAAOF,EAAAA,UAAUH,EAAOI,gBAAgBC,MAC7C9E,KAAK+E,MAAQH,EAAAA,UAAUH,EAAOO,qBAAuB,IACrDhF,KAAKiF,QAAU,CAAEC,aAAc,CAAEC,eAAgB,CAAEC,SAAU,QAG/DpB,EAAA9D,UAAAmF,gBAAA,WAAA,IAAAC,EAAAtF,KACEuF,YAAW,WACT,IACED,EAAKE,oBAAoBlC,WAAWmC,cAAcC,cAAc,SAASC,QACzE,MAAO3E,OAGR,KAGLgD,EAAA9D,UAAA0F,SAAA,WACE,OAAOC,EAAAA,IAAI7F,KAAKwF,oBAAqB,uCAGvCxB,EAAA9D,UAAAmE,YAAA,WACErE,KAAKiE,QAAQI,YAAY,CACvBW,oBAAqBhF,KAAK+E,SAI9Bf,EAAA9D,UAAAqE,YAAA,WACEvE,KAAKiE,QAAQM,wCAnDhBuB,EAAAA,UAASnC,KAAA,CAAC,CACToC,SAAA,0mBALOC,EAAAA,6EAQNC,EAAAA,UAAStC,KAAA,CAACuC,EAAAA,YAAW,WAAM,OAAA7C,KAAsB,CAAE8C,QAAQ,4BAS3DC,EAAAA,aAAYzC,KAAA,CAAC,gBAAiB,CAAC,oCAI/ByC,EAAAA,aAAYzC,KAAA,CAAC,iBAAkB,CAAC,oBCYjC,SAAY0C,QAAA,IAAAA,IAAAA,EAAA,IACVrG,KAAKsG,+BAAiCtC,EACtCxE,OAAO+G,OAAOvG,KAAMqG,MC7BtB,SACSpC,EAC6CuC,GAD7CxG,KAAAiE,QAAAA,EAC6CjE,KAAAwG,kBAAAA,uBANvDV,EAAAA,UAASnC,KAAA,CAAC,CACToC,SAAA,y+BAJOU,EAAAA,2BACAC,EAAiBC,WAAA,CAAA,CAAAC,KAQrBC,EAAAA,OAAMlD,KAAA,CAACuC,EAAAA,YAAW,WAAM,OAAAQ,6BCJ3B,SAAAI,EAAYC,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,YAC1BsF,EAAK0B,KAAO,SACZ1B,EAAK2B,OAASC,EAAAA,QAAQ,UACtB5B,EAAK6B,sBAAwBC,EAE7B9B,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACVC,SAAU,CACRX,KAAM,WAERY,MAAO,CACLZ,KAAM,WAERa,MAAO,CACLb,KAAM,WAERc,QAAS,CACPd,KAAM,WAERe,KAAM,CACJf,KAAM,aAIZ9B,KAAM,CACJ,CACE8B,KAAM,WACNb,SAAU,0BAA0BmB,EAAAA,QAAQ,4BAA2B,oBAEzE,CACEU,IAAK,WACLC,MAAOX,EAAAA,QAAQ,oBAEjB,CACEU,IAAK,QACLC,MAAOX,EAAAA,QAAQ,iBAEjB,CACEU,IAAK,QACLC,MAAOX,EAAAA,QAAQ,iBAEjB,CACEU,IAAK,UACLC,MAAOX,EAAAA,QAAQ,aAEjB,CACEU,IAAK,OACLC,MAAOX,EAAAA,QAAQ,eAGnBY,UAAS,SAAC/C,GACR,IAAMgD,EAAc,GACdC,EAAM,GA6BZ,OA5BIjD,EAAMwC,UACRS,EAAInF,KAAK,CAAEoF,kCAAmC,CAAEC,KAAM,KAEpDnD,EAAMyC,OACRQ,EAAInF,KAAK,CAAEsF,+BAAgC,CAAED,KAAM,KAEjDnD,EAAM0C,OACRO,EAAInF,KAAK,CAAEuF,+BAAgC,CAAEF,KAAM,KAEjDnD,EAAM2C,SACRM,EAAInF,KAAK,CAAEwF,iCAAkC,CAAEH,KAAM,KAEnDnD,EAAM4C,OACRK,EAAInF,KAAK,CAAEyF,MAAO,CAAEC,MAAO,4BAC3BP,EAAInF,KAAK,CACP2F,MAAOC,EAAAA,IAAI,CAAC,WAAY,QAAS,QAAS,YAAY,SAAAC,GACpD,IAAMC,EAAO,GACPC,EAAM,CAAEN,MAAO,CAAEC,WAAOM,IACxBjB,EAAM,0BAA0Bc,EAGtC,OAFAC,EAAKf,GAAO,EACZgB,EAAIN,MAAMC,MAAQX,EACX,CAAEkB,KAAM,CAACH,EAAMC,UAIxBZ,EAAIpF,SACNmF,EAAOe,KAAOd,GAETD,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CACnBC,mBAAoB,CAClB,CAAEC,KAAM,mCACR,CAAEA,KAAM,gCACR,CAAEA,KAAM,gCACR,CAAEA,KAAM,6CAhG4BpJ,EAAAgH,EAAAtD,MAAA2F,KCG1C,SACSlF,EAC6CuC,GAD7CxG,KAAAiE,QAAAA,EAC6CjE,KAAAwG,kBAAAA,uBANvDV,EAAAA,UAASnC,KAAA,CAAC,CACToC,SAAA,0XAJOU,EAAAA,2BACAC,EAAiBC,WAAA,CAAA,CAAAC,KAQrBC,EAAAA,OAAMlD,KAAA,CAACuC,EAAAA,YAAW,WAAM,OAAAQ,4BCG3B,SAAA0C,EAAmBnF,GAAAjE,KAAAiE,QAAAA,EAFnBjE,KAAAqJ,YAAwB,UAImBD,EAAAlJ,UAAAgE,eAAA,SAAeC,GACxDA,EAAMC,kBACNpE,KAAKqE,eAEqC+E,EAAAlJ,UAAAoE,gBAAA,SAAgBH,GAC1DA,EAAMC,kBACNpE,KAAKuE,eAGP6E,EAAAlJ,UAAAsE,SAAA,WACE,IAAMC,EAA2BzE,KAAKiE,QAAQS,SAC9C1E,KAAK+E,MAAQH,EAAAA,UAAUH,EAAOO,qBAAuB,IACrDhF,KAAKqJ,YAAcrJ,KAAK+E,MAAMuE,eAAiB,IAGjDF,EAAAlJ,UAAAmF,gBAAA,WAAA,IAAAC,EAAAtF,KACEuF,YAAW,WACT,IACED,EAAKiE,cAAc9D,cAAcC,cAAc,SAASC,QACxD,MAAO6D,OAGR,MAGLJ,EAAAlJ,UAAAmE,YAAA,WACErE,KAAKiE,QAAQI,YAAY,CACvBW,oBAAqBhF,KAAK+E,SAI9BqE,EAAAlJ,UAAAqE,YAAA,WACEvE,KAAKiE,QAAQM,eAGf6E,EAAAlJ,UAAAuJ,iBAAA,SAAiBC,GACf1J,KAAK+E,MAAMuE,cAAgBI,4BA9C9B5D,EAAAA,UAASnC,KAAA,CAAC,CACToC,SAAA,4lBAJOC,EAAAA,uEAONC,EAAAA,UAAStC,KAAA,CAAC,gBAAiB,CAAEwC,QAAQ,EAAOwD,KAAM9F,EAAAA,qCAMlDuC,EAAAA,aAAYzC,KAAA,CAAC,gBAAiB,CAAC,oCAI/ByC,EAAAA,aAAYzC,KAAA,CAAC,iBAAkB,CAAC,gCCZjC,SAAAiG,EAAY7C,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,YAC1BsF,EAAK0B,KAAO,QACZ1B,EAAK2B,OAASC,EAAAA,QAAQ,SACtB5B,EAAK6B,sBAAwB0C,EAC7BvE,EAAKgB,+BAAiC8C,EACtC9D,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBiD,UAAS,SAAC/C,GACR,IAAMgD,EAAc,GASpB,OARIhD,EAAMuE,gBACRvB,EAAOe,KAAO/D,EAAMuE,cAAcb,KAAI,SAACqB,GACrC,OAAIA,EAAGC,sBACE,CAAEC,uBAAwBF,EAAGC,uBAE/B,CAAEE,YAAaH,EAAGI,QAGtBnC,IAGXzC,EAAKyD,UAAW,WAtBuBjJ,EAAA8J,EAAApG,MAAA2F,iBCFzC,SAAAgB,EAAYpD,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,KAEpBoK,EAAO9E,SAEbA,EAAK4D,KAAO,kBACZ5D,EAAK0B,KAAO,OACZ1B,EAAK2B,OAASC,EAAAA,QAAQ,QAEtB5B,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACV+C,MAAO,CACLzD,KAAM,QACN0D,MAAO,CACL1D,KAAM,aAKd9B,KAAM,CACJ,CACE8C,IAAK,QACLC,MAAOX,EAAAA,QAAQ,0BACfqD,IAAKrD,EAAAA,QAAQ,MACboD,MAAO,CACL,CACE1C,IAAK,UACL4C,SAAS,EACTC,YAAavD,EAAAA,QACX,2EAMVY,UAAS,SAAC/C,GACR,IAAMgD,EAAc,GAIpB,OAHIhD,EAAMsF,MAAMzH,SACdmF,EAAOqC,EAAKlB,MAAQ,CAAEwB,KAAM3F,EAAMsF,QAE7BtC,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CACnBC,mBAAoB,CAAC,CAAEC,KAAM5D,EAAK4D,iBAlDEpJ,EAAAqK,EAAA3G,MAAA2F,KCOxC,SACSlF,EAC6CuC,GAD7CxG,KAAAiE,QAAAA,EAC6CjE,KAAAwG,kBAAAA,uBARvDV,EAAAA,UAASnC,KAAA,CAAC,CACToC,SAAU,wGAJHU,EAAAA,2BACAC,EAAiBC,WAAA,CAAA,CAAAC,KAUrBC,EAAAA,OAAMlD,KAAA,CAACuC,EAAAA,YAAW,WAAM,OAAAQ,6BCP3B,SAAAiE,EAAY5D,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,KAEpB4K,EAAoB,qBACpBC,EAAmB,wEAEzBvF,EAAK0B,KAAO,QACZ1B,EAAK2B,OAASC,EAAAA,QAAQ,SACtB5B,EAAK6B,sBAAwB2D,EAE7BxF,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACVyD,OAAQ,CACNnE,KAAM,QACN0D,MAAO,CACL1D,KAAM,aAKd9B,KAAM,CACJ,CACE8C,IAAK,SACLC,MAAOX,EAAAA,QAAQ,2BACfqD,IAAKrD,EAAAA,QAAQ,MACboD,MAAO,CACL,CACE1C,IAAK,WACL4C,SAAS,EACTC,YAAavD,EAAAA,QACX,yEAMVY,UAAS,SAAC/C,SACFgD,EAAc,GAOpB,OANIhD,EAAMgG,OAAOnI,SACfmF,EAAOe,OAAIkC,EAAA,IACRJ,GAAoB,CAAEF,KAAM3F,EAAMgG,QACnCC,EAACH,GAAmB,CAAEH,KAAM3F,EAAMgG,YAG/BhD,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CACnBC,mBAAoB,CAAC,CAAEC,KAAM0B,GAAqB,CAAE1B,KAAM2B,cAtDrB/K,EAAA6K,EAAAnH,MAAA2F,KCYzC,SACSlF,EAC6CuC,GAD7CxG,KAAAiE,QAAAA,EAC6CjE,KAAAwG,kBAAAA,uBAdvDV,EAAAA,UAASnC,KAAA,CAAC,CACToC,SAAU,2RAJHU,EAAAA,2BACAC,EAAiBC,WAAA,CAAA,CAAAC,KAgBrBC,EAAAA,OAAMlD,KAAA,CAACuC,EAAAA,YAAW,WAAM,OAAAQ,6BCb3B,SAAAuE,EAAYlE,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,YAC1BsF,EAAK0B,KAAO,OACZ1B,EAAK4D,KAAO,OACZ5D,EAAK2B,OAASC,EAAAA,QAAQ,QACtB5B,EAAK4F,iBAAgB,qBACrB5F,EAAK6B,sBAAwBgE,EAE7B7F,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACV8D,MAAO,CACLxE,KAAM,QACN0D,MAAO,CACL1D,KAAM,aAKd9B,KAAM,CACJ,CACE8C,IAAK,QACLC,MAAOX,EAAAA,QAAQ,0BACfqD,IAAKrD,EAAAA,QAAQ,MACboD,MAAO,CACL,CACE1C,IAAK,UACL4C,SAAS,EACTC,YAAavD,EAAAA,QACX,yEAMVY,UAAS,SAAC/C,GACR,IAAMgD,EAAc,GAIpB,OAHIhD,EAAMqG,MAAMxI,SACdmF,EAAOf,KAAO,CAAE0D,KAAM3F,EAAMqG,QAEvBrD,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CACnBC,mBAAoB,CAAC,CAAEC,KAAM5D,EAAK4D,iBAjDEpJ,EAAAmL,EAAAzH,MAAA2F,KCKxC,SAAmBlF,GAAAjE,KAAAiE,QAAAA,uBANpB6B,EAAAA,UAASnC,KAAA,CAAC,CACToC,SAAU,uFAHHU,EAAAA,yCCIP,SAAA4E,EAAYtE,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,KAEpBoK,EAAO9E,SAEbA,EAAK4D,KAAO,eACZ5D,EAAK0B,KAAO,mBACZ1B,EAAK2B,OAASC,EAAAA,QAAQ,qBACtB5B,EAAK6B,sBAAwBmE,EAE7BhG,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACViE,iBAAkB,CAChB3E,KAAM,SACNU,WAAY,CACVkE,MAAO,CACL5E,KAAM,SACN6E,OAAQ,YAEVC,OAAQ,CACN9E,KAAM,SACN6E,OAAQ,gBAMlB3G,KAAM,CACJ,CACE8C,IAAK,yBACLC,MAAOX,EAAAA,QAAQ,iCACfyE,WAAY,2BAEd,CACE/D,IAAK,0BACLC,MAAOX,EAAAA,QAAQ,oBACf0E,WAAY,2BAGhB9D,UAAS,SAAC/C,WACFgD,EAAc,GACd8D,EAAQ9G,GAASA,EAAMwG,iBAC7B,GAAIM,IAAUA,EAAML,OAASK,EAAMH,QAAS,CAE1C,GADA3D,EAAOS,MAAQ,GACXqD,EAAML,MAAO,CACf,IAAMA,EAAQpB,EAAK0B,WAAWD,EAAML,OACpCzD,EAAOS,MAAM3F,KAAK,CAChBiG,MAAIkC,EAAA,GACFA,EAACZ,EAAKlB,MAAO,CAAEhB,KAAMsD,GACrBR,EAAIZ,EAAKlB,KAAI,SAAU,CAAEhB,KAAMsD,QAIrC,GAAIK,EAAMH,OAAQ,CAChB,IAAMA,EAAStB,EAAK0B,WAAWD,EAAMH,QACrC3D,EAAOS,MAAM3F,KAAK,CAChBiG,MAAIiD,EAAA,GACFA,EAAC3B,EAAKlB,MAAO,CAAE8C,KAAMN,GACrBK,EAAI3B,EAAKlB,KAAI,SAAU,CAAE8C,KAAMN,SAKvC,OAAO3D,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CACnBC,mBAAoB,CAAC,CAAEC,KAAS5D,EAAK4D,KAAI,SAAW,CAAEA,KAAM5D,EAAK4D,iBAzEjBpJ,EAAAuL,EAAA7H,GA6E1C6H,EAAAnL,UAAA4L,WAAA,SAAWG,GACnB,OAAO,IAAIC,KAAKD,GAAcE,kBA9EoBhD,KCMpD,SACSlF,EAC6CuC,GAD7CxG,KAAAiE,QAAAA,EAC6CjE,KAAAwG,kBAAAA,uBARvDV,EAAAA,UAASnC,KAAA,CAAC,CACToC,SAAU,+GAJHU,EAAAA,2BACAC,EAAiBC,WAAA,CAAA,CAAAC,KAUrBC,EAAAA,OAAMlD,KAAA,CAACuC,EAAAA,YAAW,WAAM,OAAAQ,6BCP3B,SAAA0F,EAAYrF,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,KAEpBqM,EAA2B,4BAC3BC,EACJ,yEAEFhH,EAAK0B,KAAO,eACZ1B,EAAK2B,OAASC,EAAAA,QAAQ,iBACtB5B,EAAK6B,sBAAwBoF,EAE7BjH,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACVkF,cAAe,CACb5F,KAAM,QACN0D,MAAO,CACL1D,KAAM,aAKd9B,KAAM,CACJ,CACE8C,IAAK,gBACLC,MAAOX,EAAAA,QAAQ,mCACfqD,IAAKrD,EAAAA,QAAQ,MACboD,MAAO,CACL,CACE1C,IAAK,kBACL4C,SAAS,EACTC,YAAavD,EAAAA,QACX,yEAMVY,UAAS,SAAC/C,SACFgD,EAAc,GAOpB,OANIhD,EAAMyH,cAAc5J,SACtBmF,EAAOe,OAAIkC,EAAA,IACRqB,GAA2B,CAAE3B,KAAM3F,EAAMyH,eAC1CxB,EAACsB,GAA0B,CAAE5B,KAAM3F,EAAMyH,mBAGtCzE,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CACnBC,mBAAoB,CAAC,CAAEC,KAAMmD,GAA4B,CAAEnD,KAAMoD,cAvDrBxM,EAAAsM,EAAA5I,MAAA2F,KCKhD,SAAmBlF,GAAAjE,KAAAiE,QAAAA,uBANpB6B,EAAAA,UAASnC,KAAA,CAAC,CACToC,SAAU,6GAHHU,EAAAA,yCCIP,SAAAgG,sBAAAnH,EACE9B,EAAAd,KAAA1C,OAAOA,KAED0M,EAAuB,4CACvBC,IAAkC3B,EAAA,IAAM0B,GAAuB,CAAEE,KAAM,GAAG5B,GAC1E6B,EAA6B,CAAEvE,MAAO,CAAEC,MAAOmE,IAE/CI,EAAyB,0BACzBC,IAA2BhB,EAAA,IAAMe,GAAyBE,EAAAA,WAAWC,UAASlB,GAC9EmB,IAA6BC,EAAA,IAAML,GAAyBE,EAAAA,WAAWI,YAAWD,GAClFE,IAA6BC,EAAA,IAAMR,GAAyBE,EAAAA,WAAWO,YAAWD,GAClFE,EAA+B,CAAElF,MAAO,CAAEC,MAAOuE,IAEjDW,EAAuB,wBACvBC,IAAyBC,EAAA,IAAMF,GAAuBG,EAAAA,WAAWC,UAASF,GAC1EG,IAA4BC,EAAA,IAAMN,GAAuBG,EAAAA,WAAWI,aAAYD,GAChFE,IAA2BC,EAAA,IAAMT,GAAuBG,EAAAA,WAAWL,YAAWW,GAE9EC,EAAyB,CAC7BrF,KAAM,CACJ6D,EACAU,EACAY,IAGEG,EAA4B,CAEhC5F,MAAO,CACL,CAAEF,MAAOqE,GACT,CAAErE,MAAO+E,GACT,CAAE/E,MAAO2F,YAIb3I,EAAK0B,KAAO,SACZ1B,EAAK2B,OAASC,EAAAA,QAAQ,UACtB5B,EAAK+I,SAAQ,OACb/I,EAAK6B,sBAAwBmH,EAE7BhJ,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACViH,WAAY,CACV3H,KAAM,WAER4H,YAAa,CACX5H,KAAM,WAER6H,YAAa,CACX7H,KAAM,WAER8H,iBAAkB,CAChB9H,KAAM,WAER+H,WAAY,CACV/H,KAAM,WAERgI,YAAa,CACXhI,KAAM,WAERiI,iBAAkB,CAChBjI,KAAM,WAERkI,YAAa,CACXlI,KAAM,aAIZ9B,KAAM,CACJ,CACE8B,KAAM,WACNb,SAAU,0BAA0BmB,EAAAA,QAClC,iCACD,oBAEH,CACEU,IAAK,aACLC,MAAOX,EAAAA,QAAQ,WAEjB,CACEU,IAAK,cACLC,MAAOX,EAAAA,QAAQ,YAEjB,CACEU,IAAK,cACLC,MAAOX,EAAAA,QAAQ,YAEjB,CACEU,IAAK,mBACLC,MAAOX,EAAAA,QAAQ,kBAEjB,CACEN,KAAM,WACNb,SAAU,0BAA0BmB,EAAAA,QAClC,iCACD,oBAEH,CACEU,IAAK,aACLC,MAAOX,EAAAA,QAAQ,WAEjB,CACEU,IAAK,cACLC,MAAOX,EAAAA,QAAQ,YAEjB,CACEU,IAAK,mBACLC,MAAOX,EAAAA,QAAQ,kBAEjB,CACEN,KAAM,WACNb,SAAU,0BAA0BmB,EAAAA,QAClC,wCACD,oBAEH,CACEU,IAAK,cACLC,MAAOX,EAAAA,QAAQ,iCAGnBY,UAAS,SAAC/C,GACR,IAAMgD,EAAc,GACdC,EAAM,GAuCZ,OArCIjD,IACEA,EAAMwJ,YACRvG,EAAInF,KAAK,CACP2F,MAAO,CAAC4F,EAA2BrB,KAGnChI,EAAMyJ,aACRxG,EAAInF,KAAK,CACP2F,MAAO,CAAC4F,EAA2BlB,KAGnCnI,EAAM0J,aACRzG,EAAInF,KAAK,CACP2F,MAAO,CAAC4F,EAA2BZ,MAGnCzI,EAAM2J,kBAAoB3J,EAAM8J,mBAClC7G,EAAInF,KAAKgK,GAEP9H,EAAM4J,YACR3G,EAAInF,KAAK,CACP2F,MAAO,CAAC4F,EAA2BV,KAGnC3I,EAAM6J,aACR5G,EAAInF,KAAK,CACP2F,MAAO,CAAC4F,EAA2BN,KAGnC/I,EAAM+J,aACR9G,EAAInF,KAAKsL,GAGPnG,EAAIpF,SACNmF,EAAOe,KAAOd,IAGXD,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CACnBC,mBAAoB,CAAC,CAAEC,KAAM4D,cA1KShN,EAAA2M,EAAAjJ,MAAA2F,iBCA1C,SAAA4F,EAAYhI,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,KAEpBoK,EAAO9E,SACbA,EAAK4D,KAAO,KACZ5D,EAAK0B,KAAO,WACZ1B,EAAK2B,OAASC,EAAAA,QAAQ,aAEtB5B,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACV0H,IAAK,CACHpI,KAAM,QACN0D,MAAO,CACL1D,KAAM,aAKd9B,KAAM,CACJ,CACE8C,IAAK,MACLC,MAAOX,EAAAA,QAAQ,+BACfqD,IAAKrD,EAAAA,QAAQ,MACboD,MAAO,CACL,CACE1C,IAAK,QACL4C,SAAS,EACTC,YAAavD,EAAAA,QAAQ,qEAK7BY,UAAS,SAAC/C,GACR,IAAMgD,EAAc,GAIpB,OAHIhD,EAAMiK,IAAIpM,SACZmF,EAAOqC,EAAKlB,MAAQ,CAAEwB,KAAM3F,EAAMiK,MAE7BjH,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CACnBC,mBAAoB,CAAC,CAAEC,KAAM5D,EAAK4D,iBA/CMpJ,EAAAiP,EAAAvL,MAAA2F,gBC0B5C,SAAAzC,EACYuI,EACAC,GADAlP,KAAAiP,iBAAAA,EACAjP,KAAAkP,iBAAAA,EALFlP,KAAAmP,gCAAkC,qBAClCnP,KAAAoP,kBAAoB,GAM5BpP,KAAKqP,YAAc,IAAIC,EAAAA,mBAGzB5I,EAAAxG,UAAAqP,kBAAA,WAaE,MAZuB,CACrB,IAAI9C,EACJ,IAAIxB,EACJ,IAAIN,EACJ,IAAIyB,EACJ,IAAIxC,EACJ,IAAIyB,EACJ,IAAI0D,EACJ,IAAI5E,EACJ,IAAIrD,IAMRJ,EAAAxG,UAAAsP,qBAAA,WACE,MAAO,CACLC,SAAU,GACVC,YAAa,IAIjBhJ,EAAAxG,UAAAyP,4BAAA,WACE,MAAO,CACLF,SAAU,GACVC,YAAa,IAIjBhJ,EAAAxG,UAAA0P,yBAAA,WAAA,IAAAtK,EAAAtF,KACE,MAAO,CACL,CACE4G,KAAI,SACJiJ,SAAU,SAACC,GAAc,OAAAxK,EAAKyK,OAAOD,OAK3CpJ,EAAAxG,UAAA8P,6BAAA,WACE,MAAO,IAGTtJ,EAAAxG,UAAA+P,cAAA,SAAcC,GACJ,IAAAhG,EAAagG,EAAMhG,GAAflD,EAASkJ,EAAMlJ,KAC3B,OAAOA,GAAchH,KAAKkP,iBAAiBiB,QAAQ,gBAAiB,CAAEjG,GAAEA,KAG1ExD,EAAAxG,UAAAkQ,SAAA,SAASF,GACP,IAAMG,EAAWrQ,KAAKsQ,YAAYJ,GAClC,OAAOG,GAAYA,EAAStL,OAG9B2B,EAAAxG,UAAAqQ,gBAAA,SAAgBL,GACd,IAAMG,EAAWrQ,KAAKsQ,YAAYJ,GAC5BM,EAAqBxQ,KAAKyQ,SAASP,GAAU,SAAW,eAC9D,OAAOG,GAAYA,EAASG,IAG9B9J,EAAAxG,UAAAwQ,gBAAA,SAAgBR,EAAwBS,GACtC,IAAMC,EAAyBV,EAAOW,aAAaC,WAC7CD,EAAepI,EAAAA,IAAImI,EAAwB,iBAC3CG,EAAeC,EAAAA,OAAOH,EAAc,CAAC,SAErCvG,EADgB2G,EAAAA,OAAOF,EAAc,CAAE7G,GAAIyG,IACrBO,OAAOH,GAEnC,OADctI,EAAAA,IAAI6B,EAAO,QACZ6G,KAAK,OAGpBzK,EAAAxG,UAAAkR,QAAA,SAAQC,EAA+BC,GACrC,YADqC,IAAAA,IAAAA,EAAA,MACjCD,EAAcE,mBAAqBF,EAAcG,mBACzCF,EAAM,SAASD,EAAcnH,GAE/BoH,EAAM,UAAUD,EAAcnH,IAG1CxD,EAAAxG,UAAAuR,cAAA,SAAcvB,GACZ,OAAUlQ,KAAKoR,QAAQlB,GAAO,WAGhCxJ,EAAAxG,UAAAwR,yBAAA,SAAyBC,GACvB,IAAMtL,EAASrG,KAAK4R,YACpB,GAAIvL,EAAOsL,QAAQ/O,OAAS,EAAG,CAC7B,IAAMiP,EAAmB,GACrBC,EAAkB,GACtB,IACEA,EAAkBH,EAAQ5J,QAAO,SAAAgK,GAAO,OAAC1L,EAAOsL,QAAQK,SAASD,MACjE1L,EAAOsL,QAAQM,SAAQ,SAACjH,OAAEkH,EAAOlH,EAAAkH,QAAElL,EAAIgE,EAAAhE,KAAEmL,EAASnH,EAAAmH,UAC1CC,EAAkBT,EAAQU,MAAK,SAAAN,GAAO,OAAAA,EAAI/K,OAASA,KACrDoL,IACFA,EAAgBF,QAAUA,EAC1BE,EAAgBD,UAAYA,EAC5BN,EAAiBhP,KAAKuP,OAG1B,MAAO5I,GACPxJ,KAAKsS,cAEP,kBrBUF,IAAK,IAAInP,EAAK,GAAID,EAAI,EAAGA,EAAIqP,UAAU3P,OAAQM,IAC3CC,EAAKA,EAAG+N,OAAOpO,EAAOyP,UAAUrP,KACpC,OAAOC,EqBZLqP,CAAWX,EAAqBC,GAElC,OAAOH,GAGTjL,EAAAxG,UAAA6P,OAAA,SAAOG,GACLuC,QAAQC,IAAI,gBAAiBxC,IAGzBxJ,EAAAxG,UAAAyS,QAAA,SACJhB,EACAiB,EACAC,EACAC,eADA,IAAAD,IAAAA,EAAA,SACA,IAAAC,IAAAA,GAAA,qEAOA,OALMC,EAAOvT,OAAA+G,OAAA/G,OAAA+G,OAAA,GACRvG,KAAKgT,kBAAkBrB,EAASiB,EAAYC,IAAM,CACrDI,aAAa,EACbH,aAAYA,IAEd,CAAA,EAAO9S,KAAKiP,iBAAiBiE,KAAKH,WAG9BrM,EAAAxG,UAAAiT,SAAA,SAASxB,EAA6BiB,EAAwBC,eAAA,IAAAA,IAAAA,EAAA,6FAM1D,OALFE,EAAOvT,OAAA+G,OAAA/G,OAAA+G,OAAA,GACRvG,KAAKgT,kBAAkBrB,EAASiB,EAAYC,IAAM,CACrDpD,SAAU,EACVC,YAAa,IAEP,CAAA,EAAM1P,KAAKiP,iBAAiBiE,KAAKH,WAAzC,MAAA,CAAA,EAAQ/H,EAAAlJ,OAA2CsR,OAAOC,oBAGtD3M,EAAAxG,UAAAoT,SAAA,SAAST,eAAA,IAAAA,IAAAA,EAAA,6FAML,OALFE,EAAU,CACdQ,EAAGvT,KAAKqP,YAAYmE,WAAWX,GAC/BpD,SAAU,EACVgE,gBAAgB,GAEV,CAAA,EAAMzT,KAAKiP,iBAAiBiE,KAAKH,WAAzC,MAAA,CAAA,EAAQ/H,EAAAlJ,OAA2CsR,OAAOC,oBAG5D3M,EAAAxG,UAAAwT,qBAAA,SAAqB/B,EAA6BkB,GAChD,IAAIc,EAAY3T,KAAK4T,YAAYjC,GAEjC,OADAgC,EAAY3T,KAAKqP,YAAYwE,aAAaF,EAAWd,GAC9C7S,KAAKqP,YAAYmE,WAAWG,IAGrCjN,EAAAxG,UAAA0T,YAAA,SAAYjC,EAA6BmC,GAAzC,IAAAxO,EAAAtF,KACE,YADuC,IAAA8T,IAAAA,EAAA,IAChCC,EAAAA,UAAUpC,GAAS,SAACkB,EAAOpO,GAAW,OAAAa,EAAK0O,oBAAoBnB,EAAOpO,KAAOjF,OAAA+G,OAAA,CAClF0N,SAAU,GACVC,UAAW,IACRJ,KAIPpN,EAAAxG,UAAA0R,UAAA,SAAUhK,QAAA,IAAAA,IAAAA,EAAc5H,KAAKmP,iCAC3B,IAAM9I,EAAS8N,KAAKC,MAAMC,aAAaC,QAAQ1M,IAC/C,OAAe,OAAXvB,EACK,CAAEsL,QAAS,GAAIiB,WAAY,CAAEnD,SAAUzP,KAAKoP,kBAAmBM,YAAa,IAE9ErJ,GAGTK,EAAAxG,UAAAqU,WAAA,SAAWlO,EAAoBuB,QAAA,IAAAA,IAAAA,EAAc5H,KAAKmP,iCAChDkF,aAAaG,QAAQ5M,EAAKuM,KAAKM,UAAUpO,KAG3CK,EAAAxG,UAAAoS,YAAA,SAAY1K,QAAA,IAAAA,IAAAA,EAAc5H,KAAKmP,iCAC7BkF,aAAaK,WAAW9M,IAGlBlB,EAAAxG,UAAAoQ,YAAA,SAAYJ,GAClB,IAAMyE,EAAuB3U,KAAKyQ,SAASP,GACvC,2DACA,eACJ,OAAOA,GAAUA,EAAOyE,IAGlBjO,EAAAxG,UAAAuQ,SAAA,SAASP,GACf,MAAuB,2CAAhBA,EAAOtJ,MAGRF,EAAAxG,UAAA8S,kBAAA,SAAkBrB,EAA6BiB,EAAwBC,GAC7E,MAAO,CACLU,EAAGvT,KAAK0T,qBAAqB/B,EAASkB,GACtCpD,SAAUmD,EAAWnD,SACrBC,YAAakD,EAAWlD,YACxBoD,cAAc,EACdW,gBAAgB,IAIZ/M,EAAAxG,UAAA8T,oBAAA,SAAoBnB,EAAYpO,GACtC,GAAIA,EAAO4C,YAAc5C,EAAOO,oBAAqB,CACnD,IACM4P,GADYnQ,EAAOI,gBAAgBiD,WAAa+M,EAAAA,UAC3BpQ,EAAOO,qBAE9B4P,EAAS9L,MACX+J,EAAMoB,SAASzL,MAAQqK,EAAMoB,SAASzL,OAAS,GAC/CqK,EAAMoB,SAASzL,MAAM3F,KAAK+R,IACjBA,EAASpM,OAAS3C,EAAAA,IAAIgN,EAAO,kBACtC+B,EAASpM,MAAMC,KAAI,SAAAqM,GAAO,OAAAjC,EAAMoB,SAASzL,MAAM3F,KAAKiS,MAEpDvO,EAAAA,OAAOsM,EAAMoB,SAAUW,GAI3B,GAAInQ,EAAOsE,UAAYtE,EAAO0N,UAAW,CACvC,IAAM4C,EAAK,GACX9C,EAAAA,QAAQxN,EAAOuE,cAAcC,oBAAoB,SAAA+L,GAC/CD,EAAGC,EAAkB9L,OACG,QAArBzE,EAAO0N,UAAsB,GAAK,IAAM6C,EAAkBC,mBAAqB,MAEpFpC,EAAMqB,UAAUrR,KAAKkS,GAEvB,OAAOlC,4BAlOVqC,EAAAA,sDAtBwBC,EAAAA,wBAShBC,EAAAA,qCCwEP,SAAAC,EAAmB7O,GAAAxG,KAAAwG,kBAAAA,EA1DVxG,KAAA6H,MAAgBX,EAAAA,QAAQ,WACxBlH,KAAAsV,mBAAqBpO,EAAAA,QAAQ,qBAC7BlH,KAAAuV,kBAA4BrO,EAAAA,QAAQ,oBA6BpClH,KAAAwV,YAAsB,EACtBxV,KAAAyV,UAAiB,GAQjBzV,KAAA0V,iBAAwB,GACvB1V,KAAA2V,gBAAoD,IAAIC,EAAAA,aAGxD5V,KAAA6V,0BAAkD,IAAID,EAAAA,aACtD5V,KAAA8V,YAAc,IAAIF,EAAAA,aAClB5V,KAAA+V,eAAiB,IAAIH,EAAAA,aAE/B5V,KAAA2R,QAA8B3R,KAAKwG,kBAAkB+I,oBACrDvP,KAAA4S,WAAyB5S,KAAKwG,kBAAkBgJ,uBAChDxP,KAAAgW,eAAkChW,KAAKwG,kBAAkBoJ,2BACzD5P,KAAAiW,mBAA0CjW,KAAKwG,kBAAkBwJ,+BAEjEhQ,KAAA8S,cAAwB,EAMtB9S,KAAKkW,uBAAyBlW,KAAKmW,qBAAqBC,KAAKpW,aAxD/DR,OAAA6W,eAAsBhB,EAAAnV,UAAA,WAAQ,KAA9B,SAA+BW,GAE3Bb,KAAK2R,QADH9Q,EACab,KAAKwG,kBAAkBkL,yBAAyB7Q,GAEhDb,KAAKwG,kBAAkBkL,yBACpC1R,KAAKwG,kBAAkB+I,sDAI7B/P,OAAA6W,eAAyBhB,EAAAnV,UAAA,cAAW,KAApC,SAAqCW,GAEjCb,KAAK4S,WADH/R,GAGgBb,KAAKwG,kBAAkBgJ,wDAI7ChQ,OAAA6W,eAA6BhB,EAAAnV,UAAA,kBAAe,KAA5C,SAA6CoW,GAC3CtW,KAAKsW,eAAiBA,EACtBtW,KAAK4S,WAAa5S,KAAKwG,kBAAkBmJ,+DAE3CnQ,OAAA6W,eAA6BhB,EAAAnV,UAAA,kBAAe,KAA5C,SAA6CW,GAEzCb,KAAKgW,eADHnV,GAGoBb,KAAKwG,kBAAkBoJ,4DAKjDpQ,OAAA6W,eAAiChB,EAAAnV,UAAA,sBAAmB,KAApD,SAAqDW,GAEjDb,KAAKiW,mBADHpV,GAGwBb,KAAKwG,kBAAkBwJ,gEAyBrDqF,EAAAnV,UAAAqW,YAAA,SAAYC,EAAQ/R,GAClB,OAAOA,EAAOuC,MAGVqO,EAAAnV,UAAAiW,qBAAA,SACJM,+GAG8B,MAAA,CAAA,EAAMzW,KAAKwG,kBAAkBmM,QACzD8D,EAAmB9E,QACnB8E,EAAmB7D,WACnB5S,KAAKyV,UACLzV,KAAK8S,sBAGsB,OAPvB9H,EAAwBe,EAAAjK,OAAtB4U,EAAG1L,EAAA0L,IAAEC,EAAI3L,EAAA2L,KAAEvD,EAAMpI,EAAAoI,OAOI,CAAA,EAAMpT,KAAKwG,kBAAkB2M,SACxDsD,EAAmB9E,QACnB8E,EAAmB7D,WACnB5S,KAAKyV,mBAEc,OALfmB,EAAuB7K,EAAAjK,OAKR,CAAA,EAAM9B,KAAKwG,kBAAkB8M,SAAStT,KAAKyV,mBAmBhE,OAnBMoB,EAAe9K,EAAAjK,OAErB9B,KAAK2V,gBAAgBmB,KAAKL,EAAmB9E,SAC7C3R,KAAK6V,0BAA0BiB,KAC7B9W,KAAKwG,kBAAkBkN,qBAAqB+C,EAAmB9E,QAAS3R,KAAKyV,YAG/EsB,EAAuB,CACrBL,IAAGA,EACHC,KAAIA,EACJvD,OAAMA,EACNwD,aAAYA,EACZC,KAAIA,GAGF7W,KAAKgX,eACPD,EAAuB/W,KAAKgX,aAAaD,IAG3C,CAAA,EAAOA,WAGT1B,EAAAnV,UAAA+W,gBAAA,SACEC,EACAC,GAKiBA,EAAMvQ,OACVwQ,EAAAA,oBAAoBC,YAC/BrX,KAAKsX,SAASC,eAEdvX,KAAKsX,SAASL,gBAAgBC,EAAaC,IAI/C9B,EAAAnV,UAAAsX,aAAA,SAAanR,GACXrG,KAAKwG,kBAAkB+N,WAAWlO,6BA/HrCP,EAAAA,UAASnC,KAAA,CAAC,CACTC,SAAU,kBACVmC,SAAA,2iCAJOW,2CAON3C,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,kCACAA,EAAAA,iCACAA,EAAAA,wBACAA,EAAAA,MAAKJ,KAAA,CAAC,gCASNI,EAAAA,MAAKJ,KAAA,CAAC,uCAQNI,EAAAA,MAAKJ,KAAA,CAAC,2CAINI,EAAAA,MAAKJ,KAAA,CAAC,sCAONI,EAAAA,yBACAA,EAAAA,mCACAA,EAAAA,MAAKJ,KAAA,CAAC,gDAONI,EAAAA,+BACA0T,EAAAA,0CAGAA,EAAAA,4BACAA,EAAAA,+BACAA,EAAAA,yBASAxR,EAAAA,UAAStC,KAAA,CAAC+T,EAAAA,kBAAmB,CAAEvR,QAAQ,aCnB1C,iCA1CCwR,EAAAA,SAAQhU,KAAA,CAAC,CACRiU,QAAS,CAACC,EAAAA,aAAcC,EAAAA,YAAaC,EAAAA,mBAAoBC,EAAAA,eAAgBC,EAAAA,qBACzEC,aAAc,CACZ7C,EACArR,EACAoF,EACAkF,EACAnD,EACAL,EACAyB,EACA1C,EACAyB,EACAlE,EACA/D,GAEF8U,QAAS,CACP9C,EACArR,EACAoF,EACAkF,EACAnD,EACAL,EACAyB,EACA1C,EACAyB,EACAlE,EACA/D,GAEF+U,gBAAiB,CACf/C,EACArR,EACAoF,EACAkF,EACAnD,EACAL,EACAyB,EACA1C,EACAyB,EACAlE,GAEFiR,UAAW,CAAC3R,yBCtDZ,SAAA4R,EAAYvR,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,KAEpBoK,EAAO9E,SAEbA,EAAK0B,KAAO,SACZ1B,EAAK2B,OAASC,EAAAA,QAAQ,UAEtB5B,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACViR,OAAQ,CACN3R,KAAM,UACN4R,SAAS,EACT3Q,MAAOX,EAAAA,QAAQ,qCAEjBuR,OAAQ,CACN7R,KAAM,QACN0D,MAAO,CACL1D,KAAM,aAKd9B,KAAM,CACJ,CACE8C,IAAK,UAEP,CACEA,IAAK,SACLC,MAAOX,EAAAA,QAAQ,oCACfqD,IAAKrD,EAAAA,QAAQ,MACboD,MAAO,CACL,CACE1C,IAAK,WACL4C,SAAS,EACTC,YAAavD,EAAAA,QAAQ,qEAK7BY,UAAS,SAAC/C,GACR,IAAMgD,EAAc,GAOpB,OANIhD,EAAMwT,SACRxQ,EAAOQ,MAAQ6B,EAAKlB,MAElBnE,EAAM0T,SACR1Q,EAAOqC,EAAKlB,MAAQ,CAAEwB,KAAM3F,EAAM0T,SAE7B1Q,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CACnBC,mBAAoB,CAAC,CAAEC,KAAM5D,EAAK4D,iBA1DIpJ,EAAAwY,EAAA9U,MAAA2F,iBCC1C,SAAAuP,EAAY3R,GAAZ,IAAAzB,EACE9B,EAAAd,KAAA1C,KAAM+G,IAAoB/G,YAE1BsF,EAAK0B,KAAO,OACZ1B,EAAK4D,KAAO,OACZ5D,EAAK2B,OAASC,EAAAA,QAAQ,QAEtB5B,EAAK+B,YAAa,EAClB/B,EAAKT,gBAAkB,CACrBF,OAAQ,CACNiC,KAAM,SACNU,WAAY,CACVqR,MAAO,CACL/R,KAAM,QACN0D,MAAO,CACL1D,KAAM,aAKd9B,KAAM,CACJ,CACE8C,IAAK,QACLC,MAAOX,EAAAA,QAAQ,0BACfqD,IAAKrD,EAAAA,QAAQ,MACboD,MAAO,CACL,CACE1C,IAAK,UACL4C,SAAS,EACTC,YAAavD,EAAAA,QAAQ,sEAK7BY,UAAS,SAAC/C,GACR,IAAMgD,EAAc,GAIpB,OAHIhD,EAAM4T,MAAM/V,SACdmF,EAAOnB,KAAO,CAAE8D,KAAM3F,EAAM4T,QAEvB5Q,IAIXzC,EAAKyD,UAAW,EAChBzD,EAAK0D,cAAgB,CAAEC,mBAAoB,CAAC,CAAEC,KAAM,mBA7CdpJ,EAAA4Y,EAAAlV,MAAA2F","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { 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"]}
1
+ {"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__read","o","m","r","i","ar","error","SchemaFormComponent","elementRef","injector","_super","UpgradeComponent","Directive","args","selector","ElementRef","Injector","Input","BaseFilteringFormRendererComponent","context","onEnterKeyDown","event","stopPropagation","applyFilter","onEscapeKeyDown","resetFilter","ngOnInit","column","property","schema","cloneDeep","filteringConfig","form","model","externalFilterQuery","options","formDefaults","ngModelOptions","debounce","ngAfterViewInit","_this","setTimeout","schemaFormComponent","nativeElement","querySelector","focus","canApply","get","Component","template","FilteringFormRendererContext","ViewChild","forwardRef","static","HostListener","config","filteringFormRendererComponent","assign","deviceGridService","CellRendererContext","DeviceGridService","decorators","type","Inject","AlarmsDeviceGridColumn","initialColumnConfig","name","header","gettext","cellRendererComponent","AlarmsCellRendererComponent","filterable","properties","critical","major","minor","warning","none","key","title","getFilter","filter","ors","c8y_ActiveAlarmsStatus.critical","__gt","c8y_ActiveAlarmsStatus.major","c8y_ActiveAlarmsStatus.minor","c8y_ActiveAlarmsStatus.warning","__not","__has","__and","map","sev","zero","has","undefined","__or","sortable","sortingConfig","pathSortingConfigs","path","BaseDeviceGridColumn","GroupFilteringFormRendererComponent","preselected","selectedNodes","assetSelector","ex","selectionChanged","nodes","read","GroupDeviceGridColumn","GroupCellRendererComponent","mo","c8y_DeviceQueryString","__useFilterQueryString","__bygroupid","id","ImeiDeviceGridColumn","self","imeis","items","add","notitle","placeholder","__in","ModelDeviceGridColumn","hardwareModelPath","vendingModelPath","ModelCellRendererComponent","models","_a","NameDeviceGridColumn","cellCSSClassName","NameCellRendererComponent","names","RegistrationDateDeviceGridColumn","RegistrationDateCellRendererComponent","registrationDate","after","format","before","maxDateKey","minDateKey","dates","formatDate","_b","__lt","dateToFormat","Date","toISOString","SerialNumberDeviceGridColumn","hardwareSerialNumberPath","vendingSerialNumberPath","SerialNumberCellRendererComponent","serialNumbers","StatusDeviceGridColumn","responseIntervalPath","responseIntervalLessThanOrEqualTo0","__le","responseIntervalNotDefined","availabilityStatusPath","availabilityStatusAvailable","SendStatus","AVAILABLE","availabilityStatusUnavailable","_c","UNAVAILABLE","availabilityStatusMaintenance","_d","MAINTENANCE","availabilityStatusNotDefined","connectionStatusPath","connectionStatusConnected","_e","PushStatus","CONNECTED","connectionStatusDisconnected","_f","DISCONNECTED","connectionStatusMaintenance","_g","deviceUnderMaintenance","deviceNotUnderMaintenance","dataType","StatusCellRendererComponent","sendOnline","sendOffline","sendUnknown","sendNotMonitored","pushOnline","pushOffline","pushNotMonitored","maintenance","SystemIdDeviceGridColumn","ids","inventoryService","translateService","alertService","modal","GRID_CONFIG_DEFAULT_STORAGE_KEY","DEFAULT_PAGE_SIZE","queriesUtil","QueriesUtil","getDefaultColumns","getDefaultPagination","pageSize","currentPage","getInfiniteScrollPagination","getDefaultActionControls","callback","item","delete","getDefaultBulkActionControls","getProperName","device","instant","getModel","hardware","getHardware","getSerialNumber","serialPropertyName","isVendme","getParentsNames","featuredParentId","assetParentsReferences","assetParents","references","sortedByName","sortBy","remove","concat","join","getHref","groupOrDevice","prefix","c8y_IsDeviceGroup","c8y_IsDynamicGroup","getAlarmsHref","getUserConfiguredColumns","columns","getConfig","reOrderedColumns_1","noConfigColumns","col","includes","forEach","visible","sortOrder","columnToReorder","find","clearConfig","arguments","__spread","confirm","Status","DANGER","ok","cancel","success","addServerFailure","ex_1","getData","pagination","query","withChildren","filters","getDevicesFilters","withParents","list","getChildDeviceData","childDevicesList","getCount","paging","totalPages","getCountChildDevices","getTotalChildDevices","q","buildQuery","withTotalPages","getTotal","getDeviceQueryString","fullQuery","getQueryObj","addAndFilter","defaultFilter","transform","extendQueryByColumn","__filter","__orderby","JSON","parse","localStorage","getItem","saveConfig","setItem","stringify","removeItem","hardwarePropertyName","childDeviceFilters","queryObj","identity","obj","cs_1","pathSortingConfig","sortOrderModifier","Injectable","InventoryService","TranslateService","AlertService","ModalService","DeviceGridComponent","loadMoreItemsLabel","loadingItemsLabel","selectable","baseQuery","childDeviceGrid","showChildDevices","show","onColumnsChange","EventEmitter","onDeviceQueryStringChange","itemsSelect","onChildDevices","actionControls","bulkActionControls","serverSideDataCallback","onDataSourceModifier","bind","defineProperty","infiniteScroll","setActionControls","trackByName","_index","dataSourceModifier","parentDeviceId","res","data","filteredSize","size","serverSideDataResult","emit","dataCallback","deleteAction","onDeleteDevice","refresh","updateFiltering","columnNames","action","FilteringActionType","ResetFilter","dataGrid","clearFilters","configChange","Output","DataGridComponent","NgModule","imports","CommonModule","FormsModule","DeviceStatusModule","DataGridModule","AssetSelectorModule","declarations","exports","entryComponents","providers","CustomDeviceGridColumn","exists","default","equals","TypeDeviceGridColumn","types"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { 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"]}
@@ -352,8 +352,8 @@
352
352
 
353
353
  var SubAssetsService = /** @class */ (function (_super) {
354
354
  __extends(SubAssetsService, _super);
355
- function SubAssetsService(translateService, inventoryService, appState, user, assetNodeService, deviceGroupService, smartGroupsService, smartRulesService, alertService, permissionsService) {
356
- var _this = _super.call(this, inventoryService, translateService) || this;
355
+ function SubAssetsService(translateService, inventoryService, appState, user, assetNodeService, deviceGroupService, smartGroupsService, smartRulesService, alertService, permissionsService, modal) {
356
+ var _this = _super.call(this, inventoryService, translateService, alertService, modal) || this;
357
357
  _this.translateService = translateService;
358
358
  _this.inventoryService = inventoryService;
359
359
  _this.appState = appState;
@@ -364,6 +364,7 @@
364
364
  _this.smartRulesService = smartRulesService;
365
365
  _this.alertService = alertService;
366
366
  _this.permissionsService = permissionsService;
367
+ _this.modal = modal;
367
368
  _this.uiOnlyCountersUpdate = new rxjs.BehaviorSubject(null);
368
369
  _this.GRID_CONFIG_DEFAULT_STORAGE_KEY = 'sub-assets-grid-config';
369
370
  _this.IS_DEVICE_GROUP_FRAGMENT = 'c8y_IsDeviceGroup';
@@ -757,7 +758,8 @@
757
758
  { type: client.SmartGroupsService },
758
759
  { type: client.SmartRulesService },
759
760
  { type: ngxComponents.AlertService },
760
- { type: ngxComponents.Permissions }
761
+ { type: ngxComponents.Permissions },
762
+ { type: ngxComponents.ModalService }
761
763
  ]; };
762
764
 
763
765
  var GroupInfoComponent = /** @class */ (function () {