@c8y/ngx-components 1010.0.29 → 1010.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets-navigator/asset-node.service.d.ts +7 -3
- package/assets-navigator/c8y-ngx-components-assets-navigator.metadata.json +1 -1
- package/bundles/c8y-ngx-components-assets-navigator.umd.js +7 -2
- package/bundles/c8y-ngx-components-assets-navigator.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-assets-navigator.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-assets-navigator.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-repository.umd.js +8 -4
- package/bundles/c8y-ngx-components-repository.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-repository.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-repository.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-sensor-phone.umd.js +1 -1
- package/bundles/c8y-ngx-components-sensor-phone.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-sensor-phone.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-sensor-phone.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.js +14 -8
- package/bundles/c8y-ngx-components.umd.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.min.js +1 -1
- package/bundles/c8y-ngx-components.umd.min.js.map +1 -1
- package/c8y-ngx-components.metadata.json +1 -1
- package/core/file-picker/file-picker.component.d.ts +8 -0
- package/esm2015/assets-navigator/asset-node.service.js +8 -3
- package/esm2015/core/file-picker/file-picker.component.js +12 -2
- package/esm2015/core/file-picker/file-picker.module.js +6 -8
- package/esm2015/repository/configuration/configuration-detail.component.js +7 -2
- package/esm2015/repository/firmware/add-firmware-modal.component.js +7 -2
- package/esm2015/repository/firmware/add-firmware-patch-modal.component.js +7 -2
- package/esm2015/repository/software/add-software-modal.component.js +7 -2
- package/esm2015/sensor-phone/sensor-phone-modal.component.js +2 -2
- package/esm5/assets-navigator/asset-node.service.js +8 -3
- package/esm5/core/file-picker/file-picker.component.js +12 -2
- package/esm5/core/file-picker/file-picker.module.js +6 -8
- package/esm5/repository/configuration/configuration-detail.component.js +3 -2
- package/esm5/repository/firmware/add-firmware-modal.component.js +3 -2
- package/esm5/repository/firmware/add-firmware-patch-modal.component.js +3 -2
- package/esm5/repository/software/add-software-modal.component.js +3 -2
- package/esm5/sensor-phone/sensor-phone-modal.component.js +2 -2
- package/fesm2015/c8y-ngx-components-assets-navigator.js +7 -2
- package/fesm2015/c8y-ngx-components-assets-navigator.js.map +1 -1
- package/fesm2015/c8y-ngx-components-repository.js +24 -4
- package/fesm2015/c8y-ngx-components-repository.js.map +1 -1
- package/fesm2015/c8y-ngx-components-sensor-phone.js +1 -1
- package/fesm2015/c8y-ngx-components-sensor-phone.js.map +1 -1
- package/fesm2015/c8y-ngx-components.js +14 -8
- package/fesm2015/c8y-ngx-components.js.map +1 -1
- package/fesm5/c8y-ngx-components-assets-navigator.js +7 -2
- package/fesm5/c8y-ngx-components-assets-navigator.js.map +1 -1
- package/fesm5/c8y-ngx-components-repository.js +8 -4
- package/fesm5/c8y-ngx-components-repository.js.map +1 -1
- package/fesm5/c8y-ngx-components-sensor-phone.js +1 -1
- package/fesm5/c8y-ngx-components-sensor-phone.js.map +1 -1
- package/fesm5/c8y-ngx-components.js +14 -8
- package/fesm5/c8y-ngx-components.js.map +1 -1
- package/locales/locales.pot +30 -9
- package/package.json +2 -2
- package/repository/c8y-ngx-components-repository.metadata.json +1 -1
- package/repository/configuration/configuration-detail.component.d.ts +1 -0
- package/repository/firmware/add-firmware-modal.component.d.ts +1 -0
- package/repository/firmware/add-firmware-patch-modal.component.d.ts +1 -0
- package/repository/software/add-software-modal.component.d.ts +1 -0
- package/sensor-phone/c8y-ngx-components-sensor-phone.metadata.json +1 -1
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
13
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
14
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */var d=function(e,t){return(d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function l(e,t){function r(){this.constructor=e}d(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var h=function(){return(h=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function y(e,t,r,o){var n,i=arguments.length,s=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(s=(i<3?n(s):i>3?n(t,r,s):n(t,r))||s);return i>3&&s&&Object.defineProperty(t,r,s),s}function f(e,t){return function(r,o){t(r,o,e)}}function v(e,t,r,o){return new(r||(r=Promise))((function(n,i){function s(e){try{a(o.next(e))}catch(e){i(e)}}function c(e){try{a(o.throw(e))}catch(e){i(e)}}function a(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,c)}a((o=o.apply(e,t||[])).next())}))}function g(e,t){var r,o,n,i,s={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(n=s.trys,(n=n.length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]<n[3])){s.label=i[1];break}if(6===i[0]&&s.label<n[1]){s.label=n[1],n=i;break}if(n&&s.label<n[2]){s.label=n[2],s.ops.push(i);break}n[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],o=0}finally{r=n=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function m(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],o=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var b,S,G=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.priority=-1/0,r.label=t.gettext("Load more"),r.icon="plus",r.droppable=!0,r}return l(r,e),r}(t.NavigatorNode);(b=e.GroupFragment||(e.GroupFragment={})).groupType="c8y_DeviceGroup",b.subGroupType="c8y_DeviceSubgroup",b.groupFragmentType="c8y_IsDeviceGroup",b.dataBrokerSourceFragment="c8y_BrokerSource",b.dynamicGroupType="c8y_DynamicGroup",b.dynamicGroupFragment="c8y_IsDynamicGroup",b.dynamicGroupColumnConfig="c8y_UIDeviceFilterConfig",b.dynamicGroupQueryString="c8y_DeviceQueryString",(S=e.Action||(e.Action={}))[S.FETCH=0]="FETCH",S[S.NEXT=1]="NEXT",S[S.REFRESH=2]="REFRESH",S[S.LOADING_DONE=3]="LOADING_DONE";var N=function(n){function i(e,t){void 0===t&&(t={});var r=n.call(this,t)||this;return r.service=e,r.root=r.root||!1,r.mo=r.mo||{},r.path=r.root?"group":r.isDeviceOrProbablyChildDevice?"device/"+r.mo.id:"group/"+r.mo.id,r.draggable=!r.service.moduleConfig.disableDragAndDrop&&!r.root,r.droppable=!r.service.moduleConfig.disableDragAndDrop&&!r.isDeviceOrProbablyChildDevice,r.routerLinkExact=r.root,r.updateIcon(!1),r.onUpdateSubscription=r.service.onUpdate(r).subscribe((function(e){var t=e.data,o=e.method;return r.refresh(t,o)})),r}return l(i,n),Object.defineProperty(i.prototype,"label",{get:function(){return this.root&&t.gettext("Groups")||this.mo.name||"--"},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"hasChildren",{get:function(){return this.root||this.service.groups.isGroup(this.mo)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"iconComponent",{get:function(){return this.isDeviceOrProbablyChildDevice?t.DeviceStatusComponent:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"isDevice",{get:function(){return!!this.mo.c8y_IsDevice},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"isDeviceOrProbablyChildDevice",{get:function(){return this.isDevice||this.isNeitherDeviceOrGroup},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"isNeitherDeviceOrGroup",{get:function(){var e=this.service.groups,t=e.isGroup,r=e.isDynamicGroup;return!(t(this.mo)||r(this.mo)||this.isDevice||this.root)},enumerable:!0,configurable:!0}),i.prototype.openOnStart=function(e){if(this.root&&(this.service.moduleConfig.openOnStart||/^\/group\//.test(e)))return!0;var t=e.match(/\/(group)\/(\d+)/);if(t){var o=t[2];return[].concat(r.get(this.mo,"childAssets.references",[])).some((function(e){return e.managedObject.id===o}))}return!1},i.prototype.refresh=function(t,r){if(void 0===t&&(t={}),void 0===r&&(r="GET"),t.id===this.mo.id)this.mo=t;else if("DELETE"===r)return void this.parents.forEach((function(e){return e.refresh()}));this.events&&this.events.next(e.Action.REFRESH)},i.prototype.click=function(t){void 0===t&&(t={}),this.isDeviceOrProbablyChildDevice?this.service.preferBreadcrumb(this.parents):(this.hookEvents(),this.updateIcon(t.open),t.open&&this.events.next(e.Action.FETCH))},i.prototype.sort=function(){this.children.sort((function(e,t){return e.priority>t.priority?-1:e.priority<t.priority?1:0}))},i.prototype.addManagedObject=function(e){var t=this.mo.childAdditions;this.isChildAddition(t,e)||this.add(this.service.createChildNode(e))},i.prototype.isChildAddition=function(e,t){return e&&e.references.some((function(e){return e.managedObject.id===t.id}))},i.prototype.destroy=function(){this.onUpdateSubscription.unsubscribe()},Object.defineProperty(i.prototype,"canDrop",{get:function(){var e=this,t=this.service.draggedData;if(t){var r=!!t.find((function(t){return t===e})),o=this.children.some((function(e){return e.mo&&e.mo.id===t.mo.id})),n=this===t||r||o;return this.droppable&&!n}return this.droppable},enumerable:!0,configurable:!0}),i.prototype.dragStart=function(e){n.prototype.dragStart.call(this,e),this.service.draggedData=this,this.service.rootNode.droppable=!this.isDeviceOrProbablyChildDevice},i.prototype.dragEnd=function(e){n.prototype.dragEnd.call(this,e)},i.prototype.drop=function(e){return v(this,void 0,void 0,(function(){var t;return g(this,(function(r){switch(r.label){case 0:return n.prototype.drop.call(this,e),t=this.service.draggedData,this.canDrop?[4,this.moveNode(t)]:[3,2];case 1:return r.sent(),[3,3];case 2:this.draggedHover=!1,this.service.draggedData=void 0,r.label=3;case 3:return[2]}}))}))},i.prototype.hookEvents=function(){var e=this;this.events||(this.events=new o.Subject,this.events.subscribe((function(t){e.loading||e.handleEvent(t)})))},i.prototype.fetch=function(){return this.root?this.service.getRootNodes():this.service.getGroupItems(this.mo.id)},i.prototype.handleEvent=function(t){return v(this,void 0,void 0,(function(){var r,o;return g(this,(function(n){switch(n.label){case 0:return this.children.length||t!==e.Action.FETCH?[3,2]:(this.loading=!0,r=this.addNodes,[4,this.fetch()]);case 1:return r.apply(this,[n.sent()]),this.loading=!1,[3,5];case 2:return t!==e.Action.NEXT?[3,4]:(this.loadMoreNode.loading=!0,o=this.addNodes,[4,this.paging.next()]);case 3:return o.apply(this,[n.sent()]),this.loadMoreNode.loading=!1,[3,5];case 4:t===e.Action.REFRESH&&(this.loading=!1,this.paging=void 0,this.loadMoreNode=void 0,this.empty(),this.events.next(e.Action.FETCH)),n.label=5;case 5:return[2]}}))}))},i.prototype.addNodes=function(t){var r=this;if(t.paging){var o=this.paging=t.paging,n=o.currentPage,i=o.nextPage,s=o.pageSize;1===n&&this.empty();var c=t.data.length,a=!!i&&c===s;this.toggleLoadMore(a)}(t.data||t).map((function(e){return r.addManagedObject(e)})),this.events.next(e.Action.LOADING_DONE)},i.prototype.toggleLoadMore=function(t){var r=this;!this.loadMoreNode&&t&&(this.loadMoreNode=new G,this.add(this.loadMoreNode),this.loadMoreNode.click=function(){return r.events.next(e.Action.NEXT)}),this.loadMoreNode&&(this.loadMoreNode.hidden=!t)},i.prototype.moveNode=function(e){return v(this,void 0,void 0,(function(){var t,r;return g(this,(function(o){switch(o.label){case 0:return o.trys.push([0,6,7,8]),[4,this.showDropConfirm(e)];case 1:return t=o.sent(),[4,this.verifyNodeAccess(e)];case 2:return o.sent(),[4,this.addMovedNode(e)];case 3:return o.sent(),t?[3,5]:[4,this.removeMovedNode(e)];case 4:o.sent(),o.label=5;case 5:return this.expand(),[3,8];case 6:return(r=o.sent())&&this.service.alert.addServerFailure(r),[3,8];case 7:return this.draggedHover=!1,this.service.draggedData=void 0,[7];case 8:return[2]}}))}))},i.prototype.showDropConfirm=function(e){return v(this,void 0,void 0,(function(){var r;return g(this,(function(o){return this.confirm.title=t.gettext("Move"),this.confirm.message=t.gettext("Do you want to move the group?"),r=[{label:t.gettext("Cancel"),action:function(){return Promise.reject()}},{label:t.gettext("Move"),status:"default",action:function(){return Promise.resolve(!1)}}],e.isDeviceOrProbablyChildDevice&&(this.confirm.title=t.gettext("Move or add"),this.confirm.message=t.gettext("Do you want to move or add the device?"),r.push({label:t.gettext("Add"),status:"primary",action:function(){return Promise.resolve(!0)}})),[2,this.confirm.show(r)]}))}))},i.prototype.verifyNodeAccess=function(e){return v(this,void 0,void 0,(function(){return g(this,(function(t){return[2,this.service.inventory.update({id:e.mo.id})]}))}))},i.prototype.addMovedNode=function(t){return v(this,void 0,void 0,(function(){var r,o;return g(this,(function(n){switch(n.label){case 0:return this.root?[4,this.service.inventory.update({id:t.mo.id,type:e.GroupFragment.groupType})]:[3,2];case 1:return o=n.sent().data,r=o,[3,4];case 2:return[4,this.service.inventory.childAssetsAdd(t.mo,this.mo)];case 3:o=n.sent().data,r=o,n.label=4;case 4:return this.addManagedObject(r),[2]}}))}))},i.prototype.removeMovedNode=function(t){return v(this,void 0,void 0,(function(){var r,o,n,i,s,c;return g(this,(function(a){switch(a.label){case 0:a.trys.push([0,8,9,10]),r=m(t.parents),o=r.next(),a.label=1;case 1:return o.done||(n=o.value).mo&&n.mo.type===e.GroupFragment.dynamicGroupType?[3,7]:n.root?[4,this.service.inventory.update({id:t.mo.id,type:e.GroupFragment.subGroupType})]:[3,3];case 2:return a.sent(),[3,5];case 3:return[4,this.service.inventory.childAssetsRemove(t.mo,n.mo)];case 4:a.sent(),a.label=5;case 5:n.remove(t),a.label=6;case 6:return o=r.next(),[3,1];case 7:return[3,10];case 8:return i=a.sent(),s={error:i},[3,10];case 9:try{o&&!o.done&&(c=r.return)&&c.call(r)}finally{if(s)throw s.error}return[7];case 10:return[2]}}))}))},i.prototype.updateIcon=function(t){this.icon=this.service.groups.icon(this.root?{type:e.GroupFragment.groupType}:this.mo,t)},i}(t.NavigatorNode),x=function(e){function t(t,r){void 0===r&&(r={});var o=e.call(this,t,r)||this;return o.service=t,o.draggable=!1,o.droppable=!1,o}return l(t,e),Object.defineProperty(t.prototype,"hasChildren",{get:function(){return!0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"query",{get:function(){return this.mo.c8y_DeviceQueryString},enumerable:!0,configurable:!0}),t.prototype.fetch=function(){return this.service.getDynamicGroupItems(this.query)},t}(N),D=new n.InjectionToken("AssetNodeConfig"),O=function(){function t(){this.icons={brokerSourceInactive:{icon:"c8y-group-remote-inactive"},brokerSource:{icon:"c8y-group-remote",iconOpen:"c8y-group-remote-open"},group:{icon:"c8y-group",iconOpen:"c8y-group-open"},dynamicGroup:{icon:"c8y-group-smart",iconOpen:"c8y-group-smart-open"},other:{icon:"circle",iconClass:"statusUnknown"}},this.dataBrokerSourceFragmentInactive="_"+e.GroupFragment.dataBrokerSourceFragment}return t.prototype.isGroup=function(t){return!!t[e.GroupFragment.groupFragmentType]||t.type===e.GroupFragment.groupType||t.type===e.GroupFragment.subGroupType},t.prototype.isDynamicGroup=function(t){return!!t[e.GroupFragment.dynamicGroupFragment]||t.type===e.GroupFragment.dynamicGroupType},t.prototype.isDataBroker=function(t){return!!t[e.GroupFragment.dataBrokerSourceFragment]||!!t[this.dataBrokerSourceFragmentInactive]},t.prototype.isDataBrokerActive=function(t){return!!t[e.GroupFragment.dataBrokerSourceFragment]&&!t[this.dataBrokerSourceFragmentInactive]},t.prototype.isDevice=function(e){return!!e.c8y_IsDevice},t.prototype.icon=function(e,t){void 0===t&&(t=!1);var r="other";this.isDynamicGroup(e)?r="dynamicGroup":this.isDataBrokerActive(e)?r="brokerSource":this.isDataBroker(e)?r="brokerSourceInactive":this.isGroup(e)&&(r="group");var o=this.icons[r];return t&&o.iconOpen||o.icon},t.prototype.isAnyGroup=function(e){return this.isGroup(e)||this.isDynamicGroup(e)||this.isDataBroker(e)||this.isDataBrokerActive(e)},t=y([n.Injectable()],t)}(),F=function(){function r(e,t,r,o,n,s,c,a,u){this.inventory=e,this.groups=t,this.apiService=r,this.modal=o,this.alert=n,this.breadcrumbService=s,this.user=c,this.appState=a,this.moduleConfig=u,this.firstUrl=!0,this.PAGE_SIZE=20,this.moduleConfig=h({rootNodePriority:2e3},u||{}),this.queriesUtil=new i.QueriesUtil}return r.prototype.createRootNode=function(){return this.rootNode=this.createAssetNode({root:!0,priority:this.moduleConfig.rootNodePriority}),this.rootNode},r.prototype.createDynamicGroupNode=function(e){return new x(this,e)},r.prototype.createAssetNode=function(e){return new N(this,e)},r.prototype.createChildNode=function(t){var r={mo:t};return t.type===e.GroupFragment.dynamicGroupType?this.createDynamicGroupNode(r):this.createAssetNode(r)},r.prototype.getRootNodes=function(t){var r={pageSize:this.PAGE_SIZE,withChildren:!1,query:this.queriesUtil.buildQuery(this.rootQueryFilter())},o=t||r;return this.user.hasRole(this.appState.currentUser.value,"ROLE_INVENTORY_READ")||(delete o.query,Object.assign(o,{fragmentType:e.GroupFragment.groupFragmentType,onlyRoots:!0})),this.inventory.list(this.createFilter(o))},r.prototype.getGroupItems=function(e,t){void 0===t&&(t={});var r={withChildren:!1,pageSize:this.PAGE_SIZE,query:this.groupQueryFilter(e)};return this.inventory.childAssetsList(e,h({},r,t))},r.prototype.getDynamicGroupItems=function(e,t){void 0===t&&(t={});var r=t.query,o=function(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(r[o[n]]=e[o[n]])}return r}(t,["query"]),n=r,i=h({q:this.buildCombinedQuery(e,n)},o);return this.inventory.list(this.createFilter(i))},r.prototype.getDeviceChildren=function(e,t){void 0===t&&(t={});var r={withChildren:!1,pageSize:this.PAGE_SIZE,query:this.groupQueryFilter(e)};return this.inventory.childDevicesList(e,h({},r,t))},r.prototype.groupQueryFilter=function(e){return"$filter=(bygroupid("+e+"))$orderby=name"},r.prototype.rootQueryFilter=function(){var t=this.moduleConfig,r={__filter:{type:""+e.GroupFragment.groupType},__orderby:[{name:1}]};if(t.smartGroups){var o={__filter:{__and:[{type:""+e.GroupFragment.dynamicGroupType},{__has:""+e.GroupFragment.dynamicGroupFragment},{__not:{__has:e.GroupFragment.dynamicGroupFragment+".invisible"}}]}};this.queriesUtil.addOrFilter(r,o)}return r},r.prototype.onUpdate=function(e){var t=this,r=e.mo,n=e.root;return r.id?this.apiService.hookResponse((function(e){var t=e.url,o=e.method;return["PUT","DELETE","POST"].includes(o)&&RegExp("((inventory/managedObjects)|(service/smartgroup/smartgroups))/"+r.id).test(t)})).pipe(c.filter((function(){return!t.draggedData})),c.mergeMap(this.apiService.resolveData),c.filter((function(e){return!e.data.c8y_Dashboard}))):n?this.apiService.hookResponse((function(e){var t=e.url,r=e.method;return RegExp("((inventory/managedObjects)|(service/smartgroup/smartgroups))/?$").test(t)&&"POST"===r})).pipe(c.mergeMap(this.apiService.resolveData),c.filter((function(e){return t.isNewManagedObjectRoot(e)}))):o.empty()},r.prototype.isNewManagedObjectRoot=function(t){void 0===t&&(t={});var r=t.data,o=!1;return"object"==typeof r&&!(o=!!r[e.GroupFragment.groupFragmentType])&&this.moduleConfig.smartGroups&&(o=!!r[e.GroupFragment.dynamicGroupFragment]),o},r.prototype.preferBreadcrumb=function(e){1===e.length&&this.breadcrumbService.selectPreferredByPath(e[0].path)},r.prototype.createFilter=function(e){void 0===e&&(e={});return h({},{currentPage:1,withTotalPages:!0,pageSize:10},e)},r.prototype.buildCombinedQuery=function(e,t){var r;e&&t?r=this.queriesUtil.buildQuery({__useFilterQueryString:e})+" "+t:r=e||t||"";return r},r.ctorParameters=function(){return[{type:i.InventoryService},{type:O},{type:s.ApiService},{type:t.ModalService},{type:t.AlertService},{type:t.BreadcrumbService},{type:i.UserService},{type:t.AppStateService},{type:void 0,decorators:[{type:n.Optional},{type:n.Inject,args:[D]}]}]},r=y([n.Injectable(),f(8,n.Optional()),f(8,n.Inject(D))],r)}(),E=function(){function e(e){this.service=e}return e.prototype.get=function(){return this.service.rootNode||this.service.createRootNode(),this.service.rootNode},e.ctorParameters=function(){return[{type:F}]},e=y([n.Injectable()],e)}(),A=function(){function e(){}var r;return r=e,e.config=function(e){return{ngModule:r,providers:[{provide:D,useValue:e}]}},e=r=y([n.NgModule({declarations:[],imports:[t.ModalModule,t.DeviceStatusModule],providers:[t.ModalService,F,O,{provide:t.HOOK_NAVIGATOR_NODES,useClass:E,multi:!0}],entryComponents:[t.DeviceStatusComponent]})],e)}(),C=function(e){function t(t,r){void 0===r&&(r={});var o=e.call(this,t,r)||this;return o.service=t,o}return l(t,e),t}(N),I=function(t){function r(){var e=null!==t&&t.apply(this,arguments)||this;return e.PAGE_SIZE=5,e}return l(r,t),r.prototype.createGroupNode=function(e){return new C(this,e)},r.prototype.createChildNode=function(e){var t={mo:e};return this.createGroupNode(t)},r.prototype.subAssetsQueryFilter=function(){var t=this.rootQueryFilter(),r=this.queriesUtil.addOrFilter(t,{type:e.GroupFragment.subGroupType});return this.queriesUtil.buildQuery(r)},r.prototype.getGroupItems=function(e){return this.inventory.childAssetsList(e,{query:this.subAssetsQueryFilter(),withChildren:!1,pageSize:this.PAGE_SIZE,withTotalPages:!0})},r=y([n.Injectable()],r)}(F),w=function(){function e(e){this.groupNodeService=e,this.selected=[],this.onChange=new n.EventEmitter}return e.prototype.ngOnInit=function(){this.rootNode=this.groupNodeService.createGroupNode({root:!0})},e.prototype.select=function(e){-1===this.getIndexOfSelected(this.selected,e)&&this.selected.push(e),this.onChange.emit(this.selected)},e.prototype.deselect=function(e){var t=this.getIndexOfSelected(this.selected,e);t>-1&&this.selected.splice(t,1),this.onChange.emit(this.selected)},e.prototype.getIndexOfSelected=function(e,t){return e.findIndex((function(e){return e.id===t.id}))},e.ctorParameters=function(){return[{type:I}]},y([n.Input()],e.prototype,"selected",void 0),y([n.Output()],e.prototype,"onChange",void 0),e=y([n.Component({selector:"c8y-asset-selector",template:'<c8y-asset-selector-node [node]="rootNode" [preselected]="selected"></c8y-asset-selector-node>\n'})],e)}(),P=function(){function r(e,t,r){this.translateService=e,this.cd=t,this.parentNode=r,this.preselected=[],this.showPath=!1,this.level=0,this.checked=!1,this.unsubscribe$=new o.Subject}return Object.defineProperty(r.prototype,"expandTitle",{get:function(){return this.node.open?t.gettext("Collapse"):t.gettext("Expand")},enumerable:!0,configurable:!0}),r.prototype.ngOnInit=function(){return v(this,void 0,void 0,(function(){var t=this;return g(this,(function(r){return this.breadcrumb=this.node.label,this.setupBreadcrumbsAndLevel(this.node),this.node instanceof C&&this.node.hookEvents(),this.node.root&&this.click(),this.node.events&&this.node.events.pipe(c.takeUntil(this.unsubscribe$),c.filter((function(t){return t===e.Action.LOADING_DONE}))).subscribe((function(){t.cd.markForCheck()})),this.checked=this.isPreselected(),[2]}))}))},r.prototype.click=function(){this.node.open=!this.node.open,this.node.click({open:this.node.open})},r.prototype.setupBreadcrumbsAndLevel=function(e){if(e.parents&&e.parents.length){var t=e.parents[0];this.breadcrumb=this.translateService.instant(t.label)+" > "+this.breadcrumb,this.level++,this.setupBreadcrumbsAndLevel(t)}},r.prototype.selected=function(e){this.checked=!this.checked,this.updateSelection(e.mo)},r.prototype.ngOnDestroy=function(){this.unsubscribe$.next(!0),this.unsubscribe$.complete()},r.prototype.isPreselected=function(){return!(this.node.root||!this.node.mo)&&this.parentNode.getIndexOfSelected(this.preselected,this.node.mo)>-1},r.prototype.updateSelection=function(e){this.checked?this.parentNode.select(e):this.parentNode.deselect(e)},r.ctorParameters=function(){return[{type:p.TranslateService},{type:n.ChangeDetectorRef},{type:w}]},y([n.Input()],r.prototype,"node",void 0),y([n.Input()],r.prototype,"preselected",void 0),y([n.Input()],r.prototype,"showPath",void 0),r=y([n.Component({selector:"c8y-asset-selector-node",template:'<div\n class="d-flex collapsible"\n [ngClass]="{ \'expanded separator-top\': node.open }"\n title="{{ breadcrumb | translate }}"\n *ngIf="!node.root && !node.hidden"\n>\n <div\n class="p-t-8 p-b-8 m-r-8"\n [ngStyle]="{ \'padding-left\': level < 6 ? (level - 1) * 8 + \'px\' : \'24px\' }"\n [style.visibility]="node.routerLinkExact ? \'hidden\' : \'visible\'"\n >\n <label class="c8y-checkbox">\n <input type="checkbox" (change)="selected(node)" [checked]="checked" />\n <span></span>\n </label>\n </div>\n <div\n class="flex-grow flex-item-middle p-t-8 p-b-8 text-truncate p-r-8"\n [style.cursor]="node.routerLinkExact ? \'pointer\' : \'normal\'"\n (click)="node.routerLinkExact ? node.click() : \'\'"\n >\n <i\n [c8yIcon]="node.icon"\n *ngIf="node.icon === \'c8y-group-smart\'"\n [title]="\'Smart group\' | translate"\n class="c8y-icon c8y-icon-duocolor m-r-4 text-16"\n ></i>\n <i\n [c8yIcon]="node.icon"\n *ngIf="node.icon !== \'c8y-group-smart\'"\n [title]="\'Group\' | translate"\n class="c8y-icon c8y-icon-duocolor m-r-4 text-16"\n ></i>\n <span title="{{ breadcrumb }}">\n {{ node.label | translate }}\n \x3c!-- use just for search results to display the path --\x3e\n <p *ngIf="showPath" class="text-truncate">\n <small class="text-muted" title="{{ breadcrumb }}">\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n \x3c!-- up to here --\x3e\n </span>\n </div>\n <div>\n <button\n [title]="expandTitle"\n class="collapse-btn btn"\n (click)="click()"\n [attr.aria-expanded]="!node.open"\n >\n <i c8yIcon="angle-down" [ngClass]="{ \'text-primary\': node.open }"></i>\n </button>\n </div>\n</div>\n<div class="collapse" [ngClass]="{ \'separator-bottom\': node.open }" [collapse]="!node.open">\n <c8y-asset-selector-node\n *ngFor="let childNode of node.children"\n [node]="childNode"\n [preselected]="preselected || []"\n ></c8y-asset-selector-node>\n</div>\n'})],r)}(),_=function(){function e(){}return e=y([n.NgModule({imports:[t.CommonModule,a.CollapseModule,u.BsDropdownModule],exports:[P,w],providers:[I],declarations:[P,w]})],e)}();e.ASSET_NAVIGATOR_CONFIG=D,e.AssetNode=N,e.AssetNodeFactory=E,e.AssetNodeService=F,e.AssetSelectorComponent=w,e.AssetSelectorModule=_,e.AssetSelectorNodeComponent=P,e.AssetsNavigatorModule=A,e.DeviceGroupService=O,e.DynamicGroupNode=x,e.GroupNode=C,e.GroupNodeService=I,e.LoadMoreNode=G,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
15
|
+
***************************************************************************** */var d=function(e,t){return(d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function l(e,t){function r(){this.constructor=e}d(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var h=function(){return(h=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function y(e,t,r,o){var n,i=arguments.length,s=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(s=(i<3?n(s):i>3?n(t,r,s):n(t,r))||s);return i>3&&s&&Object.defineProperty(t,r,s),s}function f(e,t){return function(r,o){t(r,o,e)}}function v(e,t,r,o){return new(r||(r=Promise))((function(n,i){function s(e){try{a(o.next(e))}catch(e){i(e)}}function c(e){try{a(o.throw(e))}catch(e){i(e)}}function a(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,c)}a((o=o.apply(e,t||[])).next())}))}function g(e,t){var r,o,n,i,s={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(n=s.trys,(n=n.length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]<n[3])){s.label=i[1];break}if(6===i[0]&&s.label<n[1]){s.label=n[1],n=i;break}if(n&&s.label<n[2]){s.label=n[2],s.ops.push(i);break}n[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],o=0}finally{r=n=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function m(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],o=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var b,S,G=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.priority=-1/0,r.label=t.gettext("Load more"),r.icon="plus",r.droppable=!0,r}return l(r,e),r}(t.NavigatorNode);(b=e.GroupFragment||(e.GroupFragment={})).groupType="c8y_DeviceGroup",b.subGroupType="c8y_DeviceSubgroup",b.groupFragmentType="c8y_IsDeviceGroup",b.dataBrokerSourceFragment="c8y_BrokerSource",b.dynamicGroupType="c8y_DynamicGroup",b.dynamicGroupFragment="c8y_IsDynamicGroup",b.dynamicGroupColumnConfig="c8y_UIDeviceFilterConfig",b.dynamicGroupQueryString="c8y_DeviceQueryString",(S=e.Action||(e.Action={}))[S.FETCH=0]="FETCH",S[S.NEXT=1]="NEXT",S[S.REFRESH=2]="REFRESH",S[S.LOADING_DONE=3]="LOADING_DONE";var N=function(n){function i(e,t){void 0===t&&(t={});var r=n.call(this,t)||this;return r.service=e,r.root=r.root||!1,r.mo=r.mo||{},r.path=r.root?"group":r.isDeviceOrProbablyChildDevice?"device/"+r.mo.id:"group/"+r.mo.id,r.draggable=!r.service.moduleConfig.disableDragAndDrop&&!r.root,r.droppable=!r.service.moduleConfig.disableDragAndDrop&&!r.isDeviceOrProbablyChildDevice,r.routerLinkExact=r.root,r.updateIcon(!1),r.onUpdateSubscription=r.service.onUpdate(r).subscribe((function(e){var t=e.data,o=e.method;return r.refresh(t,o)})),r}return l(i,n),Object.defineProperty(i.prototype,"label",{get:function(){return this.root&&t.gettext("Groups")||this.mo.name||"--"},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"hasChildren",{get:function(){return this.root||this.service.groups.isGroup(this.mo)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"iconComponent",{get:function(){return this.isDeviceOrProbablyChildDevice?t.DeviceStatusComponent:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"isDevice",{get:function(){return!!this.mo.c8y_IsDevice},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"isDeviceOrProbablyChildDevice",{get:function(){return this.isDevice||this.isNeitherDeviceOrGroup},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"isNeitherDeviceOrGroup",{get:function(){var e=this.service.groups,t=e.isGroup,r=e.isDynamicGroup;return!(t(this.mo)||r(this.mo)||this.isDevice||this.root)},enumerable:!0,configurable:!0}),i.prototype.openOnStart=function(e){if(this.root&&(this.service.moduleConfig.openOnStart||/^\/group\//.test(e)))return!0;var t=e.match(/\/(group)\/(\d+)/);if(t){var o=t[2];return[].concat(r.get(this.mo,"childAssets.references",[])).some((function(e){return e.managedObject.id===o}))}return!1},i.prototype.refresh=function(t,r){if(void 0===t&&(t={}),void 0===r&&(r="GET"),t.id===this.mo.id)this.mo=t;else if("DELETE"===r)return void this.parents.forEach((function(e){return e.refresh()}));this.events&&this.events.next(e.Action.REFRESH)},i.prototype.click=function(t){void 0===t&&(t={}),this.isDeviceOrProbablyChildDevice?this.service.preferBreadcrumb(this.parents):(this.hookEvents(),this.updateIcon(t.open),t.open&&this.events.next(e.Action.FETCH))},i.prototype.sort=function(){this.children.sort((function(e,t){return e.priority>t.priority?-1:e.priority<t.priority?1:0}))},i.prototype.addManagedObject=function(e){var t=this.mo.childAdditions;this.isChildAddition(t,e)||this.add(this.service.createChildNode(e))},i.prototype.isChildAddition=function(e,t){return e&&e.references.some((function(e){return e.managedObject.id===t.id}))},i.prototype.destroy=function(){this.onUpdateSubscription.unsubscribe()},Object.defineProperty(i.prototype,"canDrop",{get:function(){var e=this,t=this.service.draggedData;if(t){var r=!!t.find((function(t){return t===e})),o=this.children.some((function(e){return e.mo&&e.mo.id===t.mo.id})),n=this===t||r||o;return this.droppable&&!n}return this.droppable},enumerable:!0,configurable:!0}),i.prototype.dragStart=function(e){n.prototype.dragStart.call(this,e),this.service.draggedData=this,this.service.rootNode.droppable=!this.isDeviceOrProbablyChildDevice},i.prototype.dragEnd=function(e){n.prototype.dragEnd.call(this,e)},i.prototype.drop=function(e){return v(this,void 0,void 0,(function(){var t;return g(this,(function(r){switch(r.label){case 0:return n.prototype.drop.call(this,e),t=this.service.draggedData,this.canDrop?[4,this.moveNode(t)]:[3,2];case 1:return r.sent(),[3,3];case 2:this.draggedHover=!1,this.service.draggedData=void 0,r.label=3;case 3:return[2]}}))}))},i.prototype.hookEvents=function(){var e=this;this.events||(this.events=new o.Subject,this.events.subscribe((function(t){e.loading||e.handleEvent(t)})))},i.prototype.fetch=function(){return this.root?this.service.getRootNodes():this.service.getGroupItems(this.mo.id)},i.prototype.handleEvent=function(t){return v(this,void 0,void 0,(function(){var r,o;return g(this,(function(n){switch(n.label){case 0:return this.children.length||t!==e.Action.FETCH?[3,2]:(this.loading=!0,r=this.addNodes,[4,this.fetch()]);case 1:return r.apply(this,[n.sent()]),this.loading=!1,[3,5];case 2:return t!==e.Action.NEXT?[3,4]:(this.loadMoreNode.loading=!0,o=this.addNodes,[4,this.paging.next()]);case 3:return o.apply(this,[n.sent()]),this.loadMoreNode.loading=!1,[3,5];case 4:t===e.Action.REFRESH&&(this.loading=!1,this.paging=void 0,this.loadMoreNode=void 0,this.empty(),this.events.next(e.Action.FETCH)),n.label=5;case 5:return[2]}}))}))},i.prototype.addNodes=function(t){var r=this;if(t.paging){var o=this.paging=t.paging,n=o.currentPage,i=o.nextPage,s=o.pageSize;1===n&&this.empty();var c=t.data.length,a=!!i&&c===s;this.toggleLoadMore(a)}(t.data||t).map((function(e){return r.addManagedObject(e)})),this.events.next(e.Action.LOADING_DONE)},i.prototype.toggleLoadMore=function(t){var r=this;!this.loadMoreNode&&t&&(this.loadMoreNode=new G,this.add(this.loadMoreNode),this.loadMoreNode.click=function(){return r.events.next(e.Action.NEXT)}),this.loadMoreNode&&(this.loadMoreNode.hidden=!t)},i.prototype.moveNode=function(e){return v(this,void 0,void 0,(function(){var t,r;return g(this,(function(o){switch(o.label){case 0:return o.trys.push([0,6,7,8]),[4,this.showDropConfirm(e)];case 1:return t=o.sent(),[4,this.verifyNodeAccess(e)];case 2:return o.sent(),[4,this.addMovedNode(e)];case 3:return o.sent(),t?[3,5]:[4,this.removeMovedNode(e)];case 4:o.sent(),o.label=5;case 5:return this.expand(),[3,8];case 6:return(r=o.sent())&&this.service.alert.addServerFailure(r),[3,8];case 7:return this.draggedHover=!1,this.service.draggedData=void 0,[7];case 8:return[2]}}))}))},i.prototype.showDropConfirm=function(e){return v(this,void 0,void 0,(function(){var r;return g(this,(function(o){return this.confirm.title=t.gettext("Move"),this.confirm.message=t.gettext("Do you want to move the group?"),r=[{label:t.gettext("Cancel"),action:function(){return Promise.reject()}},{label:t.gettext("Move"),status:"default",action:function(){return Promise.resolve(!1)}}],e.isDeviceOrProbablyChildDevice&&(this.confirm.title=t.gettext("Move or add"),this.confirm.message=t.gettext("Do you want to move or add the device?"),r.push({label:t.gettext("Add"),status:"primary",action:function(){return Promise.resolve(!0)}})),[2,this.confirm.show(r)]}))}))},i.prototype.verifyNodeAccess=function(e){return v(this,void 0,void 0,(function(){return g(this,(function(t){return[2,this.service.inventory.update({id:e.mo.id})]}))}))},i.prototype.addMovedNode=function(t){return v(this,void 0,void 0,(function(){var r,o;return g(this,(function(n){switch(n.label){case 0:return this.root?[4,this.service.inventory.update({id:t.mo.id,type:e.GroupFragment.groupType})]:[3,2];case 1:return o=n.sent().data,r=o,[3,4];case 2:return[4,this.service.inventory.childAssetsAdd(t.mo,this.mo)];case 3:o=n.sent().data,r=o,n.label=4;case 4:return this.addManagedObject(r),[2]}}))}))},i.prototype.removeMovedNode=function(t){return v(this,void 0,void 0,(function(){var r,o,n,i,s,c;return g(this,(function(a){switch(a.label){case 0:a.trys.push([0,8,9,10]),r=m(t.parents),o=r.next(),a.label=1;case 1:return o.done||(n=o.value).mo&&n.mo.type===e.GroupFragment.dynamicGroupType?[3,7]:n.root?[4,this.service.inventory.update({id:t.mo.id,type:e.GroupFragment.subGroupType})]:[3,3];case 2:return a.sent(),[3,5];case 3:return[4,this.service.inventory.childAssetsRemove(t.mo,n.mo)];case 4:a.sent(),a.label=5;case 5:n.remove(t),a.label=6;case 6:return o=r.next(),[3,1];case 7:return[3,10];case 8:return i=a.sent(),s={error:i},[3,10];case 9:try{o&&!o.done&&(c=r.return)&&c.call(r)}finally{if(s)throw s.error}return[7];case 10:return[2]}}))}))},i.prototype.updateIcon=function(t){this.icon=this.service.groups.icon(this.root?{type:e.GroupFragment.groupType}:this.mo,t)},i}(t.NavigatorNode),x=function(e){function t(t,r){void 0===r&&(r={});var o=e.call(this,t,r)||this;return o.service=t,o.draggable=!1,o.droppable=!1,o}return l(t,e),Object.defineProperty(t.prototype,"hasChildren",{get:function(){return!0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"query",{get:function(){return this.mo.c8y_DeviceQueryString},enumerable:!0,configurable:!0}),t.prototype.fetch=function(){return this.service.getDynamicGroupItems(this.query)},t}(N),D=new n.InjectionToken("AssetNodeConfig"),O=function(){function t(){this.icons={brokerSourceInactive:{icon:"c8y-group-remote-inactive"},brokerSource:{icon:"c8y-group-remote",iconOpen:"c8y-group-remote-open"},group:{icon:"c8y-group",iconOpen:"c8y-group-open"},dynamicGroup:{icon:"c8y-group-smart",iconOpen:"c8y-group-smart-open"},other:{icon:"circle",iconClass:"statusUnknown"}},this.dataBrokerSourceFragmentInactive="_"+e.GroupFragment.dataBrokerSourceFragment}return t.prototype.isGroup=function(t){return!!t[e.GroupFragment.groupFragmentType]||t.type===e.GroupFragment.groupType||t.type===e.GroupFragment.subGroupType},t.prototype.isDynamicGroup=function(t){return!!t[e.GroupFragment.dynamicGroupFragment]||t.type===e.GroupFragment.dynamicGroupType},t.prototype.isDataBroker=function(t){return!!t[e.GroupFragment.dataBrokerSourceFragment]||!!t[this.dataBrokerSourceFragmentInactive]},t.prototype.isDataBrokerActive=function(t){return!!t[e.GroupFragment.dataBrokerSourceFragment]&&!t[this.dataBrokerSourceFragmentInactive]},t.prototype.isDevice=function(e){return!!e.c8y_IsDevice},t.prototype.icon=function(e,t){void 0===t&&(t=!1);var r="other";this.isDynamicGroup(e)?r="dynamicGroup":this.isDataBrokerActive(e)?r="brokerSource":this.isDataBroker(e)?r="brokerSourceInactive":this.isGroup(e)&&(r="group");var o=this.icons[r];return t&&o.iconOpen||o.icon},t.prototype.isAnyGroup=function(e){return this.isGroup(e)||this.isDynamicGroup(e)||this.isDataBroker(e)||this.isDataBrokerActive(e)},t=y([n.Injectable()],t)}(),F=function(){function r(e,t,r,o,n,s,c,a,u){this.inventory=e,this.groups=t,this.apiService=r,this.modal=o,this.alert=n,this.breadcrumbService=s,this.user=c,this.appState=a,this.moduleConfig=u,this.firstUrl=!0,this.PAGE_SIZE=20,this.moduleConfig=h({rootNodePriority:2e3},u||{}),this.queriesUtil=new i.QueriesUtil}return r.prototype.createRootNode=function(){return this.rootNode=this.createAssetNode({root:!0,priority:this.moduleConfig.rootNodePriority}),this.rootNode},r.prototype.createDynamicGroupNode=function(e){return new x(this,e)},r.prototype.createAssetNode=function(e){return new N(this,e)},r.prototype.createChildNode=function(t){var r={mo:t};return t.type===e.GroupFragment.dynamicGroupType?this.createDynamicGroupNode(r):this.createAssetNode(r)},r.prototype.getRootNodes=function(t){var r={pageSize:this.PAGE_SIZE,withChildren:!1,query:this.queriesUtil.buildQuery(this.navRootQueryFilter())},o=t||r;return this.user.hasRole(this.appState.currentUser.value,"ROLE_INVENTORY_READ")||(delete o.query,Object.assign(o,{fragmentType:e.GroupFragment.groupFragmentType,onlyRoots:!0})),this.inventory.list(this.createFilter(o))},r.prototype.getGroupItems=function(e,t){void 0===t&&(t={});var r={withChildren:!1,pageSize:this.PAGE_SIZE,query:this.groupQueryFilter(e)};return this.inventory.childAssetsList(e,h({},r,t))},r.prototype.getDynamicGroupItems=function(e,t){void 0===t&&(t={});var r=t.query,o=function(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(r[o[n]]=e[o[n]])}return r}(t,["query"]),n=r,i=h({q:this.buildCombinedQuery(e,n)},o);return this.inventory.list(this.createFilter(i))},r.prototype.getDeviceChildren=function(e,t){void 0===t&&(t={});var r={withChildren:!1,pageSize:this.PAGE_SIZE,query:this.groupQueryFilter(e)};return this.inventory.childDevicesList(e,h({},r,t))},r.prototype.groupQueryFilter=function(e){return"$filter=(bygroupid("+e+"))$orderby=name"},r.prototype.navRootQueryFilter=function(){var e=this.rootQueryFilter();return e.__orderby=[{name:1}],e},r.prototype.rootQueryFilter=function(){var t=this.moduleConfig,r={__filter:{type:""+e.GroupFragment.groupType},__orderby:[]};if(t.smartGroups){var o={__filter:{__and:[{type:""+e.GroupFragment.dynamicGroupType},{__has:""+e.GroupFragment.dynamicGroupFragment},{__not:{__has:e.GroupFragment.dynamicGroupFragment+".invisible"}}]}};this.queriesUtil.addOrFilter(r,o)}return r},r.prototype.onUpdate=function(e){var t=this,r=e.mo,n=e.root;return r.id?this.apiService.hookResponse((function(e){var t=e.url,o=e.method;return["PUT","DELETE","POST"].includes(o)&&RegExp("((inventory/managedObjects)|(service/smartgroup/smartgroups))/"+r.id).test(t)})).pipe(c.filter((function(){return!t.draggedData})),c.mergeMap(this.apiService.resolveData),c.filter((function(e){return!e.data.c8y_Dashboard}))):n?this.apiService.hookResponse((function(e){var t=e.url,r=e.method;return RegExp("((inventory/managedObjects)|(service/smartgroup/smartgroups))/?$").test(t)&&"POST"===r})).pipe(c.mergeMap(this.apiService.resolveData),c.filter((function(e){return t.isNewManagedObjectRoot(e)}))):o.empty()},r.prototype.isNewManagedObjectRoot=function(t){void 0===t&&(t={});var r=t.data,o=!1;return"object"==typeof r&&!(o=!!r[e.GroupFragment.groupFragmentType])&&this.moduleConfig.smartGroups&&(o=!!r[e.GroupFragment.dynamicGroupFragment]),o},r.prototype.preferBreadcrumb=function(e){1===e.length&&this.breadcrumbService.selectPreferredByPath(e[0].path)},r.prototype.createFilter=function(e){void 0===e&&(e={});return h({},{currentPage:1,withTotalPages:!0,pageSize:10},e)},r.prototype.buildCombinedQuery=function(e,t){var r;e&&t?r=this.queriesUtil.buildQuery({__useFilterQueryString:e})+" "+t:r=e||t||"";return r},r.ctorParameters=function(){return[{type:i.InventoryService},{type:O},{type:s.ApiService},{type:t.ModalService},{type:t.AlertService},{type:t.BreadcrumbService},{type:i.UserService},{type:t.AppStateService},{type:void 0,decorators:[{type:n.Optional},{type:n.Inject,args:[D]}]}]},r=y([n.Injectable(),f(8,n.Optional()),f(8,n.Inject(D))],r)}(),E=function(){function e(e){this.service=e}return e.prototype.get=function(){return this.service.rootNode||this.service.createRootNode(),this.service.rootNode},e.ctorParameters=function(){return[{type:F}]},e=y([n.Injectable()],e)}(),A=function(){function e(){}var r;return r=e,e.config=function(e){return{ngModule:r,providers:[{provide:D,useValue:e}]}},e=r=y([n.NgModule({declarations:[],imports:[t.ModalModule,t.DeviceStatusModule],providers:[t.ModalService,F,O,{provide:t.HOOK_NAVIGATOR_NODES,useClass:E,multi:!0}],entryComponents:[t.DeviceStatusComponent]})],e)}(),C=function(e){function t(t,r){void 0===r&&(r={});var o=e.call(this,t,r)||this;return o.service=t,o}return l(t,e),t}(N),I=function(t){function r(){var e=null!==t&&t.apply(this,arguments)||this;return e.PAGE_SIZE=5,e}return l(r,t),r.prototype.createGroupNode=function(e){return new C(this,e)},r.prototype.createChildNode=function(e){var t={mo:e};return this.createGroupNode(t)},r.prototype.subAssetsQueryFilter=function(){var t=this.rootQueryFilter(),r=this.queriesUtil.addOrFilter(t,{type:e.GroupFragment.subGroupType});return this.queriesUtil.buildQuery(r)},r.prototype.getGroupItems=function(e){return this.inventory.childAssetsList(e,{query:this.subAssetsQueryFilter(),withChildren:!1,pageSize:this.PAGE_SIZE,withTotalPages:!0})},r=y([n.Injectable()],r)}(F),w=function(){function e(e){this.groupNodeService=e,this.selected=[],this.onChange=new n.EventEmitter}return e.prototype.ngOnInit=function(){this.rootNode=this.groupNodeService.createGroupNode({root:!0})},e.prototype.select=function(e){-1===this.getIndexOfSelected(this.selected,e)&&this.selected.push(e),this.onChange.emit(this.selected)},e.prototype.deselect=function(e){var t=this.getIndexOfSelected(this.selected,e);t>-1&&this.selected.splice(t,1),this.onChange.emit(this.selected)},e.prototype.getIndexOfSelected=function(e,t){return e.findIndex((function(e){return e.id===t.id}))},e.ctorParameters=function(){return[{type:I}]},y([n.Input()],e.prototype,"selected",void 0),y([n.Output()],e.prototype,"onChange",void 0),e=y([n.Component({selector:"c8y-asset-selector",template:'<c8y-asset-selector-node [node]="rootNode" [preselected]="selected"></c8y-asset-selector-node>\n'})],e)}(),P=function(){function r(e,t,r){this.translateService=e,this.cd=t,this.parentNode=r,this.preselected=[],this.showPath=!1,this.level=0,this.checked=!1,this.unsubscribe$=new o.Subject}return Object.defineProperty(r.prototype,"expandTitle",{get:function(){return this.node.open?t.gettext("Collapse"):t.gettext("Expand")},enumerable:!0,configurable:!0}),r.prototype.ngOnInit=function(){return v(this,void 0,void 0,(function(){var t=this;return g(this,(function(r){return this.breadcrumb=this.node.label,this.setupBreadcrumbsAndLevel(this.node),this.node instanceof C&&this.node.hookEvents(),this.node.root&&this.click(),this.node.events&&this.node.events.pipe(c.takeUntil(this.unsubscribe$),c.filter((function(t){return t===e.Action.LOADING_DONE}))).subscribe((function(){t.cd.markForCheck()})),this.checked=this.isPreselected(),[2]}))}))},r.prototype.click=function(){this.node.open=!this.node.open,this.node.click({open:this.node.open})},r.prototype.setupBreadcrumbsAndLevel=function(e){if(e.parents&&e.parents.length){var t=e.parents[0];this.breadcrumb=this.translateService.instant(t.label)+" > "+this.breadcrumb,this.level++,this.setupBreadcrumbsAndLevel(t)}},r.prototype.selected=function(e){this.checked=!this.checked,this.updateSelection(e.mo)},r.prototype.ngOnDestroy=function(){this.unsubscribe$.next(!0),this.unsubscribe$.complete()},r.prototype.isPreselected=function(){return!(this.node.root||!this.node.mo)&&this.parentNode.getIndexOfSelected(this.preselected,this.node.mo)>-1},r.prototype.updateSelection=function(e){this.checked?this.parentNode.select(e):this.parentNode.deselect(e)},r.ctorParameters=function(){return[{type:p.TranslateService},{type:n.ChangeDetectorRef},{type:w}]},y([n.Input()],r.prototype,"node",void 0),y([n.Input()],r.prototype,"preselected",void 0),y([n.Input()],r.prototype,"showPath",void 0),r=y([n.Component({selector:"c8y-asset-selector-node",template:'<div\n class="d-flex collapsible"\n [ngClass]="{ \'expanded separator-top\': node.open }"\n title="{{ breadcrumb | translate }}"\n *ngIf="!node.root && !node.hidden"\n>\n <div\n class="p-t-8 p-b-8 m-r-8"\n [ngStyle]="{ \'padding-left\': level < 6 ? (level - 1) * 8 + \'px\' : \'24px\' }"\n [style.visibility]="node.routerLinkExact ? \'hidden\' : \'visible\'"\n >\n <label class="c8y-checkbox">\n <input type="checkbox" (change)="selected(node)" [checked]="checked" />\n <span></span>\n </label>\n </div>\n <div\n class="flex-grow flex-item-middle p-t-8 p-b-8 text-truncate p-r-8"\n [style.cursor]="node.routerLinkExact ? \'pointer\' : \'normal\'"\n (click)="node.routerLinkExact ? node.click() : \'\'"\n >\n <i\n [c8yIcon]="node.icon"\n *ngIf="node.icon === \'c8y-group-smart\'"\n [title]="\'Smart group\' | translate"\n class="c8y-icon c8y-icon-duocolor m-r-4 text-16"\n ></i>\n <i\n [c8yIcon]="node.icon"\n *ngIf="node.icon !== \'c8y-group-smart\'"\n [title]="\'Group\' | translate"\n class="c8y-icon c8y-icon-duocolor m-r-4 text-16"\n ></i>\n <span title="{{ breadcrumb }}">\n {{ node.label | translate }}\n \x3c!-- use just for search results to display the path --\x3e\n <p *ngIf="showPath" class="text-truncate">\n <small class="text-muted" title="{{ breadcrumb }}">\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n \x3c!-- up to here --\x3e\n </span>\n </div>\n <div>\n <button\n [title]="expandTitle"\n class="collapse-btn btn"\n (click)="click()"\n [attr.aria-expanded]="!node.open"\n >\n <i c8yIcon="angle-down" [ngClass]="{ \'text-primary\': node.open }"></i>\n </button>\n </div>\n</div>\n<div class="collapse" [ngClass]="{ \'separator-bottom\': node.open }" [collapse]="!node.open">\n <c8y-asset-selector-node\n *ngFor="let childNode of node.children"\n [node]="childNode"\n [preselected]="preselected || []"\n ></c8y-asset-selector-node>\n</div>\n'})],r)}(),_=function(){function e(){}return e=y([n.NgModule({imports:[t.CommonModule,a.CollapseModule,u.BsDropdownModule],exports:[P,w],providers:[I],declarations:[P,w]})],e)}();e.ASSET_NAVIGATOR_CONFIG=D,e.AssetNode=N,e.AssetNodeFactory=E,e.AssetNodeService=F,e.AssetSelectorComponent=w,e.AssetSelectorModule=_,e.AssetSelectorNodeComponent=P,e.AssetsNavigatorModule=A,e.DeviceGroupService=O,e.DynamicGroupNode=x,e.GroupNode=C,e.GroupNodeService=I,e.LoadMoreNode=G,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
16
16
|
//# sourceMappingURL=c8y-ngx-components-assets-navigator.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@c8y/ngx-components/assets-navigator/group-fragment.model.ts","ng://@c8y/ngx-components/assets-navigator/action.enum.ts","ng://@c8y/ngx-components/assets-navigator/load-more-node.ts","ng://@c8y/ngx-components/assets-navigator/asset-node.ts","ng://@c8y/ngx-components/assets-navigator/dynamic-group-node.ts","ng://@c8y/ngx-components/assets-navigator/asset-node-config.model.ts","ng://@c8y/ngx-components/assets-navigator/group.service.ts","ng://@c8y/ngx-components/assets-navigator/asset-node.service.ts","ng://@c8y/ngx-components/assets-navigator/asset-node.factory.ts","ng://@c8y/ngx-components/assets-navigator/assets-navigator.module.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/group-node.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/group-node.service.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/asset-selector.component.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/asset-selector-node.component.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/asset-selector.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","GroupFragment","Action","LoadMoreNode","_this","_super","priority","Infinity","gettext","icon","droppable","tslib_1.__extends","NavigatorNode","AssetNode","service","config","root","mo","path","isDeviceOrProbablyChildDevice","id","draggable","moduleConfig","disableDragAndDrop","routerLinkExact","updateIcon","onUpdateSubscription","onUpdate","subscribe","_a","data","method","refresh","name","groups","isGroup","DeviceStatusComponent","undefined","c8y_IsDevice","isDevice","isNeitherDeviceOrGroup","isDynamicGroup","openOnStart","url","test","matches","match","id_1","concat","get","some","managedObject","parents","forEach","node","events","REFRESH","click","options","preferBreadcrumb","hookEvents","open","FETCH","sort","children","a","addManagedObject","childAdditions","isChildAddition","add","createChildNode","references","destroy","unsubscribe","nodeToMove","draggedData","shouldGetChildOfItsOwn","find","child","isAlreadyChild","preventMove","dragStart","$event","rootNode","dragEnd","drop","canDrop","moveNode","draggedHover","Subject","evt","loading","handleEvent","fetch","getRootNodes","getGroupItems","addNodes","_c","NEXT","loadMoreNode","_b","paging","empty","res","currentPage","nextPage","pageSize","itemsCount","moreItemsAvailable","toggleLoadMore","map","LOADING_DONE","show","hidden","showDropConfirm","isCopy","verifyNodeAccess","addMovedNode","removeMovedNode","expand","alert","addServerFailure","ex_1","confirm","title","message","buttons","action","status","inventory","update","type","groupType","childAssetsAdd","tslib_1.__values","parent_1","dynamicGroupType","subGroupType","_d","childAssetsRemove","remove","DynamicGroupNode","c8y_DeviceQueryString","getDynamicGroupItems","query","ASSET_NAVIGATOR_CONFIG","InjectionToken","DeviceGroupService","icons","brokerSourceInactive","brokerSource","iconOpen","group","dynamicGroup","other","iconClass","dataBrokerSourceFragmentInactive","dataBrokerSourceFragment","groupFragmentType","dynamicGroupFragment","isDataBroker","isDataBrokerActive","isAnyGroup","Injectable","AssetNodeService","apiService","modal","breadcrumbService","user","appState","firstUrl","PAGE_SIZE","rootNodePriority","queriesUtil","QueriesUtil","createRootNode","createAssetNode","createDynamicGroupNode","customFilter","defaultFilter","withChildren","buildQuery","rootQueryFilter","groupFilter","hasRole","currentUser","fragmentType","onlyRoots","list","createFilter","moId","extraFilter","queryFilter","groupQueryFilter","childAssetsList","groupQuery","filterObj","queryParams","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","orderByQuery","q","buildCombinedQuery","getDeviceChildren","childDevicesList","rootFilter","__filter","__orderby","smartGroups","__and","__has","__not","addOrFilter","hookResponse","includes","RegExp","pipe","filter","mergeMap","resolveData","response","c8y_Dashboard","isNewManagedObjectRoot","isRootAsset","selectPreferredByPath","extraParams","withTotalPages","combinedQuery","__useFilterQueryString","InventoryService","ApiService","ModalService","AlertService","BreadcrumbService","UserService","AppStateService","Optional","Inject","args","tslib_1.__param","AssetNodeFactory","AssetsNavigatorModule","ngModule","AssetsNavigatorModule_1","providers","provide","useValue","NgModule","declarations","imports","ModalModule","DeviceStatusModule","HOOK_NAVIGATOR_NODES","useClass","multi","entryComponents","GroupNode","GroupNodeService","createGroupNode","subAssetsQueryFilter","AssetSelectorComponent","groupNodeService","selected","onChange","EventEmitter","ngOnInit","select","selectedMo","getIndexOfSelected","emit","deselect","index","splice","findIndex","tslib_1.__decorate","Input","Output","Component","selector","template","AssetSelectorNodeComponent","translateService","cd","parentNode","preselected","showPath","level","checked","unsubscribe$","breadcrumb","setupBreadcrumbsAndLevel","takeUntil","markForCheck","isPreselected","instant","updateSelection","ngOnDestroy","complete","TranslateService","ChangeDetectorRef","AssetSelectorModule","CommonModule","CollapseModule","BsDropdownModule","exports"],"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","export enum GroupFragment {\n groupType = 'c8y_DeviceGroup',\n subGroupType = 'c8y_DeviceSubgroup',\n groupFragmentType = 'c8y_IsDeviceGroup',\n dataBrokerSourceFragment = 'c8y_BrokerSource',\n dynamicGroupType = 'c8y_DynamicGroup',\n dynamicGroupFragment = 'c8y_IsDynamicGroup',\n dynamicGroupColumnConfig = 'c8y_UIDeviceFilterConfig',\n dynamicGroupQueryString = 'c8y_DeviceQueryString',\n}\n","export enum Action {\n FETCH,\n NEXT,\n REFRESH,\n LOADING_DONE\n}\n","import { NavigatorNode, gettext } from '@c8y/ngx-components';\n\nexport class LoadMoreNode extends NavigatorNode {\n priority = -Infinity;\n label = gettext('Load more');\n icon = 'plus';\n droppable = true;\n}\n","import { Paging } from '@c8y/client';\nimport { ClickOptions, gettext, NavigatorNode, DeviceStatusComponent } from '@c8y/ngx-components';\nimport { get, has } from 'lodash-es';\nimport { Subject, Subscription } from 'rxjs';\nimport { AssetNodeMo, AssetNodeService } from './asset-node.service';\nimport { LoadMoreNode } from './load-more-node';\nimport { GroupFragment } from './group-fragment.model';\nimport { Action } from './action.enum';\n\nexport class AssetNode extends NavigatorNode {\n root: boolean;\n mo: any;\n\n get label() {\n return (this.root && gettext('Groups')) || this.mo.name || '--';\n }\n\n get hasChildren() {\n return this.root || this.service.groups.isGroup(this.mo);\n }\n\n get iconComponent() {\n return this.isDeviceOrProbablyChildDevice ? DeviceStatusComponent : undefined;\n }\n\n get isDevice() {\n return !!this.mo.c8y_IsDevice;\n }\n\n get isDeviceOrProbablyChildDevice() {\n return this.isDevice || this.isNeitherDeviceOrGroup;\n }\n\n get isNeitherDeviceOrGroup() {\n const { isGroup, isDynamicGroup } = this.service.groups;\n return !isGroup(this.mo) && !isDynamicGroup(this.mo) && !this.isDevice && !this.root;\n }\n\n events: Subject<Action>;\n protected paging: Paging<AssetNodeMo>;\n protected loadMoreNode: LoadMoreNode;\n private onUpdateSubscription: Subscription;\n\n constructor(protected service: AssetNodeService, config = {}) {\n super(config);\n this.root = this.root || false;\n this.mo = this.mo || {};\n this.path = this.root\n ? 'group'\n : this.isDeviceOrProbablyChildDevice\n ? `device/${this.mo.id}`\n : `group/${this.mo.id}`;\n this.draggable = !this.service.moduleConfig.disableDragAndDrop && !this.root;\n this.droppable =\n !this.service.moduleConfig.disableDragAndDrop && !this.isDeviceOrProbablyChildDevice;\n this.routerLinkExact = this.root;\n this.updateIcon(false);\n this.onUpdateSubscription = this.service\n .onUpdate(this)\n .subscribe(({ data, method }) => this.refresh(data, method));\n }\n\n openOnStart(url) {\n const urlRegex = /^\\/group\\//;\n if (this.root) {\n if (this.service.moduleConfig.openOnStart || urlRegex.test(url)) {\n return true;\n }\n }\n const matches = url.match(/\\/(group)\\/(\\d+)/);\n let isMatch = false;\n if (matches) {\n const id = matches[2];\n isMatch = []\n .concat(get(this.mo, 'childAssets.references', []))\n .some(({ managedObject }) => managedObject.id === id);\n return isMatch;\n }\n return false;\n }\n\n refresh(mo: any = {}, method = 'GET') {\n if (mo.id === this.mo.id) {\n this.mo = mo;\n } else if (method === 'DELETE') {\n this.parents.forEach((node: AssetNode) => node.refresh());\n return;\n }\n if (this.events) {\n this.events.next(Action.REFRESH);\n }\n }\n\n click(options: ClickOptions = {}) {\n if (this.isDeviceOrProbablyChildDevice) {\n this.service.preferBreadcrumb(this.parents);\n return;\n }\n this.hookEvents();\n\n this.updateIcon(options.open);\n if (options.open) {\n this.events.next(Action.FETCH);\n }\n }\n\n sort() {\n this.children.sort((a, b) => {\n if (a.priority > b.priority) {\n return -1;\n } else if (a.priority < b.priority) {\n return 1;\n } else {\n return 0;\n }\n });\n }\n\n addManagedObject(mo) {\n const { childAdditions } = this.mo;\n if (!this.isChildAddition(childAdditions, mo)) {\n this.add(this.service.createChildNode(mo));\n }\n }\n\n isChildAddition(childAdditions, mo) {\n return (\n childAdditions && childAdditions.references.some(({ managedObject: { id } }) => id === mo.id)\n );\n }\n\n destroy() {\n this.onUpdateSubscription.unsubscribe();\n }\n\n get canDrop() {\n const nodeToMove = this.service.draggedData;\n if (nodeToMove) {\n const shouldGetChildOfItsOwn = !!nodeToMove.find(child => child === this);\n const isAlreadyChild = (this.children as AssetNode[]).some(\n child => child.mo && child.mo.id === nodeToMove.mo.id\n );\n const preventMove = this === nodeToMove || shouldGetChildOfItsOwn || isAlreadyChild;\n return this.droppable && !preventMove;\n }\n return this.droppable;\n }\n\n dragStart($event) {\n super.dragStart($event);\n this.service.draggedData = this;\n this.service.rootNode.droppable = !this.isDeviceOrProbablyChildDevice;\n }\n\n dragEnd($event) {\n super.dragEnd($event);\n }\n\n async drop($event) {\n super.drop($event);\n const nodeToMove = this.service.draggedData;\n if (this.canDrop) {\n await this.moveNode(nodeToMove);\n } else {\n this.draggedHover = false;\n this.service.draggedData = undefined;\n }\n }\n\n hookEvents() {\n if (!this.events) {\n this.events = new Subject();\n this.events.subscribe(evt => {\n if (!this.loading) {\n this.handleEvent(evt);\n }\n });\n }\n }\n\n protected fetch() {\n return this.root ? this.service.getRootNodes() : this.service.getGroupItems(this.mo.id);\n }\n\n protected async handleEvent(evt: Action) {\n if (!this.children.length && evt === Action.FETCH) {\n this.loading = true;\n this.addNodes(await this.fetch());\n this.loading = false;\n } else if (evt === Action.NEXT) {\n this.loadMoreNode.loading = true;\n this.addNodes(await this.paging.next());\n this.loadMoreNode.loading = false;\n } else if (evt === Action.REFRESH) {\n this.loading = false;\n this.paging = undefined;\n this.loadMoreNode = undefined;\n this.empty();\n this.events.next(Action.FETCH);\n }\n }\n\n protected addNodes(res) {\n if (res.paging) {\n const { currentPage, nextPage, pageSize } = (this.paging = res.paging);\n if (currentPage === 1) {\n this.empty();\n }\n const itemsCount = res.data.length;\n const moreItemsAvailable = !!nextPage && itemsCount === pageSize;\n this.toggleLoadMore(moreItemsAvailable);\n }\n (res.data || res).map(mo => this.addManagedObject(mo));\n this.events.next(Action.LOADING_DONE);\n }\n\n protected toggleLoadMore(show: boolean) {\n if (!this.loadMoreNode && show) {\n this.loadMoreNode = new LoadMoreNode();\n this.add(this.loadMoreNode);\n this.loadMoreNode.click = () => this.events.next(Action.NEXT);\n }\n\n if (this.loadMoreNode) {\n this.loadMoreNode.hidden = !show;\n }\n }\n\n private async moveNode(nodeToMove: AssetNode) {\n try {\n const isCopy = await this.showDropConfirm(nodeToMove);\n await this.verifyNodeAccess(nodeToMove);\n await this.addMovedNode(nodeToMove);\n if (!isCopy) {\n await this.removeMovedNode(nodeToMove);\n }\n this.expand();\n } catch (ex) {\n if (ex) {\n this.service.alert.addServerFailure(ex);\n }\n } finally {\n this.draggedHover = false;\n this.service.draggedData = undefined;\n }\n }\n\n private async showDropConfirm(nodeToMove: AssetNode) {\n this.confirm.title = gettext('Move');\n this.confirm.message = gettext('Do you want to move the group?');\n const buttons: any = [\n {\n label: gettext('Cancel'),\n action: () => Promise.reject()\n },\n {\n label: gettext('Move'),\n status: 'default',\n action: () => Promise.resolve(false)\n }\n ];\n if (nodeToMove.isDeviceOrProbablyChildDevice) {\n this.confirm.title = gettext('Move or add');\n this.confirm.message = gettext('Do you want to move or add the device?');\n buttons.push({\n label: gettext('Add'),\n status: 'primary',\n action: () => Promise.resolve(true)\n });\n }\n return this.confirm.show(buttons);\n }\n\n private async verifyNodeAccess(nodeToMove: AssetNode) {\n return this.service.inventory.update({ id: nodeToMove.mo.id });\n }\n\n private async addMovedNode(nodeToMove: AssetNode) {\n let mo;\n if (this.root) {\n const { data } = await this.service.inventory.update({\n id: nodeToMove.mo.id,\n type: GroupFragment.groupType\n });\n mo = data;\n } else {\n const { data } = await this.service.inventory.childAssetsAdd(nodeToMove.mo, this.mo);\n mo = data;\n }\n this.addManagedObject(mo);\n }\n\n private async removeMovedNode(nodeToMove: AssetNode) {\n for (const parent of nodeToMove.parents as AssetNode[]) {\n if (parent.mo && parent.mo.type === GroupFragment.dynamicGroupType) {\n break; // smart groups don't need to be changed\n }\n if (parent.root) {\n await this.service.inventory.update({\n id: nodeToMove.mo.id,\n type: GroupFragment.subGroupType\n });\n } else {\n await this.service.inventory.childAssetsRemove(nodeToMove.mo, parent.mo);\n }\n parent.remove(nodeToMove);\n }\n }\n\n private updateIcon(open) {\n this.icon = this.service.groups.icon(\n // if it's root we are going to pass a fake mo to get the same icon as groups\n this.root ? { type: GroupFragment.groupType } : this.mo,\n open\n );\n }\n}\n","\nimport { AssetNode } from './asset-node';\nimport { AssetNodeService } from './asset-node.service';\n\nexport class DynamicGroupNode extends AssetNode {\n constructor(\n protected service: AssetNodeService,\n config = {}\n ) {\n super(service, config);\n this.draggable = false;\n this.droppable = false;\n }\n\n get hasChildren() {\n return true;\n }\n\n get query() {\n return this.mo.c8y_DeviceQueryString;\n }\n\n protected fetch(): any {\n return this.service.getDynamicGroupItems(this.query);\n }\n}\n","import { InjectionToken } from '@angular/core';\r\nexport const ASSET_NAVIGATOR_CONFIG = new InjectionToken<AssetNavigatorConfig>('AssetNodeConfig');\r\n\r\nexport interface AssetNavigatorConfig {\r\n smartGroups?: boolean;\r\n openOnStart?: boolean;\r\n rootNodePriority?: number;\r\n disableDragAndDrop?: boolean;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { GroupFragment } from './group-fragment.model';\nimport { IManagedObject } from '@c8y/client';\n\n@Injectable()\nexport class DeviceGroupService {\n icons = {\n brokerSourceInactive: {\n icon: 'c8y-group-remote-inactive'\n },\n brokerSource: {\n icon: 'c8y-group-remote',\n iconOpen: 'c8y-group-remote-open'\n },\n group: {\n icon: 'c8y-group',\n iconOpen: 'c8y-group-open'\n },\n dynamicGroup: {\n icon: 'c8y-group-smart',\n iconOpen: 'c8y-group-smart-open'\n },\n other: {\n icon: 'circle',\n iconClass: 'statusUnknown'\n }\n };\n dataBrokerSourceFragmentInactive = `_${GroupFragment.dataBrokerSourceFragment}`;\n\n isGroup(mo) {\n return (\n !!mo[GroupFragment.groupFragmentType] ||\n mo.type === GroupFragment.groupType ||\n mo.type === GroupFragment.subGroupType\n );\n }\n\n isDynamicGroup(mo) {\n return !!mo[GroupFragment.dynamicGroupFragment] || mo.type === GroupFragment.dynamicGroupType;\n }\n\n isDataBroker(mo) {\n return (\n !!mo[GroupFragment.dataBrokerSourceFragment] || !!mo[this.dataBrokerSourceFragmentInactive]\n );\n }\n\n isDataBrokerActive(mo) {\n return (\n !!mo[GroupFragment.dataBrokerSourceFragment] && !mo[this.dataBrokerSourceFragmentInactive]\n );\n }\n\n isDevice(mo) {\n return !!mo.c8y_IsDevice;\n }\n\n icon(mo, open = false) {\n let type = 'other';\n if (this.isDynamicGroup(mo)) {\n type = 'dynamicGroup';\n } else if (this.isDataBrokerActive(mo)) {\n type = 'brokerSource';\n } else if (this.isDataBroker(mo)) {\n type = 'brokerSourceInactive';\n } else if (this.isGroup(mo)) {\n type = 'group';\n }\n const icon = this.icons[type];\n return (open && icon.iconOpen) || icon.icon;\n }\n\n isAnyGroup(mo: IManagedObject) {\n return (\n this.isGroup(mo) ||\n this.isDynamicGroup(mo) ||\n this.isDataBroker(mo) ||\n this.isDataBrokerActive(mo)\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { InventoryService, QueriesUtil, UserService, IManagedObject, IResult } from '@c8y/client';\nimport {\n AlertService,\n BreadcrumbService,\n ModalService,\n NavigatorNode,\n AppStateService\n} from '@c8y/ngx-components';\nimport { ApiService } from '@c8y/ngx-components/api';\nimport { empty } from 'rxjs';\nimport { filter, mergeMap } from 'rxjs/operators';\nimport { AssetNode } from './asset-node';\nimport { AssetNavigatorConfig, ASSET_NAVIGATOR_CONFIG } from './asset-node-config.model';\nimport { DynamicGroupNode } from './dynamic-group-node';\nimport { GroupFragment } from './group-fragment.model';\nimport { DeviceGroupService } from './group.service';\n\nexport interface AssetNodeMo {\n id: string;\n type: string;\n}\n\n@Injectable()\nexport class AssetNodeService {\n rootNode: AssetNode;\n firstUrl = true;\n draggedData: AssetNode;\n queriesUtil: QueriesUtil;\n protected PAGE_SIZE = 20;\n\n constructor(\n public inventory: InventoryService,\n public groups: DeviceGroupService,\n public apiService: ApiService,\n public modal: ModalService,\n public alert: AlertService,\n protected breadcrumbService: BreadcrumbService,\n protected user: UserService,\n protected appState: AppStateService,\n @Optional() @Inject(ASSET_NAVIGATOR_CONFIG) public moduleConfig: AssetNavigatorConfig\n ) {\n this.moduleConfig = {\n rootNodePriority: 2000,\n ...(moduleConfig || {})\n };\n this.queriesUtil = new QueriesUtil();\n }\n\n createRootNode() {\n this.rootNode = this.createAssetNode({\n root: true,\n priority: this.moduleConfig.rootNodePriority\n });\n return this.rootNode;\n }\n\n createDynamicGroupNode(config) {\n return new DynamicGroupNode(this, config);\n }\n\n createAssetNode(config) {\n return new AssetNode(this, config);\n }\n\n createChildNode(managedObject) {\n const { type } = managedObject;\n const config: Partial<AssetNode> = { mo: managedObject };\n if (type === GroupFragment.dynamicGroupType) {\n return this.createDynamicGroupNode(config);\n }\n return this.createAssetNode(config);\n }\n\n getRootNodes(customFilter?: any): Promise<any> {\n const defaultFilter = {\n pageSize: this.PAGE_SIZE,\n withChildren: false,\n query: this.queriesUtil.buildQuery(this.rootQueryFilter())\n };\n const groupFilter = customFilter ? customFilter : defaultFilter;\n\n // due to BE performance limitations we do not allow filtering and sorting for a user without inventory roles\n if (!this.user.hasRole(this.appState.currentUser.value, 'ROLE_INVENTORY_READ')) {\n delete groupFilter.query;\n Object.assign(groupFilter, {\n fragmentType: GroupFragment.groupFragmentType,\n onlyRoots: true\n });\n }\n return this.inventory.list(this.createFilter(groupFilter));\n }\n\n getGroupItems(moId: string, extraFilter: object = {}) {\n const queryFilter = {\n withChildren: false,\n pageSize: this.PAGE_SIZE,\n query: this.groupQueryFilter(moId)\n };\n return this.inventory.childAssetsList(moId, { ...queryFilter, ...extraFilter });\n }\n\n getDynamicGroupItems(groupQuery: string, filterObj: any = {}) {\n const { query, ...queryParams } = filterObj;\n const orderByQuery = query;\n const queryFilter = {\n q: this.buildCombinedQuery(groupQuery, orderByQuery),\n ...queryParams\n };\n return this.inventory.list(this.createFilter(queryFilter));\n }\n\n getDeviceChildren(moId: string, extraFilter: object = {}) {\n const queryFilter = {\n withChildren: false,\n pageSize: this.PAGE_SIZE,\n query: this.groupQueryFilter(moId)\n };\n return this.inventory.childDevicesList(moId, { ...queryFilter, ...extraFilter });\n }\n\n groupQueryFilter(moId: string) {\n return `$filter=(bygroupid(${moId}))$orderby=name`;\n }\n\n rootQueryFilter() {\n const { moduleConfig } = this;\n const rootFilter = {\n __filter: {\n type: `${GroupFragment.groupType}`\n },\n __orderby: [{ name: 1 }]\n };\n if (moduleConfig.smartGroups) {\n const queryFilter = {\n __filter: {\n __and: [\n {\n type: `${GroupFragment.dynamicGroupType}`\n },\n {\n __has: `${GroupFragment.dynamicGroupFragment}`\n },\n { __not: { __has: `${GroupFragment.dynamicGroupFragment}.invisible` } }\n ]\n }\n };\n this.queriesUtil.addOrFilter(rootFilter, queryFilter);\n }\n return rootFilter;\n }\n\n onUpdate({ mo, root }) {\n if (mo.id) {\n return this.apiService\n .hookResponse(\n ({ url, method }) =>\n ['PUT', 'DELETE', 'POST'].includes(method) &&\n RegExp(`((inventory/managedObjects)|(service/smartgroup/smartgroups))/${mo.id}`).test(\n url\n )\n )\n .pipe(\n filter(() => !this.draggedData),\n mergeMap(this.apiService.resolveData),\n filter(response => !response.data.c8y_Dashboard)\n );\n } else if (root) {\n return this.apiService\n .hookResponse(\n ({ url, method }) =>\n RegExp('((inventory/managedObjects)|(service/smartgroup/smartgroups))/?$').test(url) &&\n method === 'POST'\n )\n .pipe(\n mergeMap(this.apiService.resolveData),\n filter(response => this.isNewManagedObjectRoot(response))\n );\n } else {\n return empty();\n }\n }\n\n isNewManagedObjectRoot(response: Partial<IResult<IManagedObject>> = {}) {\n const { data } = response;\n let isRootAsset = false;\n\n if (typeof data === 'object') {\n isRootAsset = !!data[GroupFragment.groupFragmentType];\n if (!isRootAsset && this.moduleConfig.smartGroups) {\n isRootAsset = !!data[GroupFragment.dynamicGroupFragment];\n }\n }\n return isRootAsset;\n }\n\n /**\n * There could be multiple breadcrumbs for devices,\n * so we set a preferred one on click on a device.\n * @param parents The parent nodes of the device to select the prefered one.\n */\n preferBreadcrumb(parents: NavigatorNode[]) {\n if (parents.length === 1) {\n this.breadcrumbService.selectPreferredByPath(parents[0].path);\n }\n }\n\n protected createFilter(extraParams: any = {}) {\n const params = {\n currentPage: 1,\n withTotalPages: true,\n pageSize: 10\n };\n return { ...params, ...extraParams };\n }\n\n private buildCombinedQuery(query, orderByQuery) {\n let combinedQuery;\n if (query && orderByQuery) {\n const filterQuery = this.queriesUtil.buildQuery({\n __useFilterQueryString: query\n });\n combinedQuery = `${filterQuery} ${orderByQuery}`;\n } else {\n combinedQuery = query || orderByQuery || '';\n }\n return combinedQuery;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AssetNodeService } from './asset-node.service';\nimport { NavigatorNode } from '@c8y/ngx-components';\n\n@Injectable()\nexport class AssetNodeFactory {\n constructor(private service: AssetNodeService) {}\n\n get(): NavigatorNode {\n if (!this.service.rootNode) {\n this.service.createRootNode();\n }\n return this.service.rootNode;\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { HOOK_NAVIGATOR_NODES, ModalModule, ModalService, DeviceStatusComponent, DeviceStatusModule} from '@c8y/ngx-components';\nimport { ASSET_NAVIGATOR_CONFIG} from './asset-node-config.model';\nimport { AssetNodeFactory } from './asset-node.factory';\nimport { AssetNodeService } from './asset-node.service';\nimport { AssetNavigatorConfig } from './asset-node-config.model';\nimport { DeviceGroupService } from './group.service';\n\n@NgModule({\n declarations: [],\n imports: [\n ModalModule,\n DeviceStatusModule\n ],\n providers: [\n ModalService,\n AssetNodeService,\n DeviceGroupService,\n {\n provide: HOOK_NAVIGATOR_NODES, useClass: AssetNodeFactory, multi: true\n }\n ],\n entryComponents: [DeviceStatusComponent]\n})\nexport class AssetsNavigatorModule {\n static config(config: AssetNavigatorConfig): ModuleWithProviders {\n return {\n ngModule: AssetsNavigatorModule,\n providers: [\n {\n provide: ASSET_NAVIGATOR_CONFIG, useValue: config\n }\n ],\n };\n }\n\n}\n","import { GroupNodeService } from './group-node.service';\nimport { AssetNode } from '../asset-node';\n\nexport class GroupNode extends AssetNode {\n // FIXME: Currently hasChildren returns true if it is a group,\n // Issue is, that we disable the children in the API\n // getGroupItems service call due to performance. This leads\n // to that the dropdown chevron is shown always. Issue is,\n // that even if we return the chevrons, we have no way to determine\n // if the childAssets contain groups or other assets (like dashboards).\n // get hasChildren() {\n // return this.root || this.service.groups.isGroup(this.mo) && (this.mo as IManagedObject).childAssets.references.length > 0;\n // }\n\n /**\n * Creates a new node which shows only groups.\n *\n * @param service The service to use.\n * @param config The default configuration of the node.\n */\n constructor(protected service: GroupNodeService, config = {}) {\n super(service, config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AssetNodeService } from '../asset-node.service';\nimport { GroupNode } from './group-node';\nimport { GroupFragment } from '../group-fragment.model';\n\n@Injectable()\nexport class GroupNodeService extends AssetNodeService {\n protected PAGE_SIZE = 5;\n\n createGroupNode(config) {\n return new GroupNode(this, config);\n }\n\n createChildNode(managedObject): GroupNode {\n const config: Partial<GroupNode> = { mo: managedObject };\n return this.createGroupNode(config);\n }\n\n subAssetsQueryFilter() {\n const rootQueryFilter = this.rootQueryFilter();\n const filter = this.queriesUtil.addOrFilter(rootQueryFilter, {\n type: GroupFragment.subGroupType\n });\n return this.queriesUtil.buildQuery(filter);\n }\n\n getGroupItems(moId: string): Promise<any> {\n return this.inventory.childAssetsList(moId, {\n query: this.subAssetsQueryFilter(),\n withChildren: false,\n pageSize: this.PAGE_SIZE,\n withTotalPages: true\n });\n }\n}\n","import { Component, Output, Input, EventEmitter, OnInit } from '@angular/core';\nimport { GroupNodeService } from './group-node.service';\nimport { GroupNode } from './group-node';\nimport { IManagedObject } from '@c8y/client';\n\n/**\n * Displays a hierarchical tree selector for assets.\n */\n@Component({\n selector: 'c8y-asset-selector',\n templateUrl: './asset-selector.component.html'\n})\nexport class AssetSelectorComponent implements OnInit {\n /**\n * An array of predefined nodes.\n */\n @Input() selected: IManagedObject[] = [];\n /**\n * Emits if one item was selected (all currently selected nodes).\n */\n @Output() onChange = new EventEmitter<IManagedObject[]>();\n /**\n * @ignore\n */\n rootNode: GroupNode;\n\n /**\n * @ignore only DI\n */\n constructor(private groupNodeService: GroupNodeService) {}\n\n /**\n * @ignore\n */\n ngOnInit(): void {\n this.rootNode = this.groupNodeService.createGroupNode({ root: true });\n }\n\n /**\n * Adds an managed object to the selected array and emits the change.\n * @param selectedMo The selected asset.\n */\n select(selectedMo: IManagedObject) {\n const index = this.getIndexOfSelected(this.selected, selectedMo);\n if (index === -1) {\n this.selected.push(selectedMo);\n }\n this.onChange.emit(this.selected);\n }\n\n /**\n * Removes a managed object from the selected array and emits the change.\n * @param selectedMo The selected asset.\n */\n deselect(selectedMo: IManagedObject) {\n const index = this.getIndexOfSelected(this.selected, selectedMo);\n if (index > -1) {\n this.selected.splice(index, 1);\n }\n this.onChange.emit(this.selected);\n }\n\n getIndexOfSelected(selected: Array<Partial<IManagedObject>>, selectedMo: IManagedObject) {\n return selected.findIndex(mo => mo.id === selectedMo.id);\n }\n}\n","import { Component, Input, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GroupNode } from './group-node';\nimport { Subject } from 'rxjs';\nimport { takeUntil, filter } from 'rxjs/operators';\nimport { AssetSelectorComponent } from './asset-selector.component';\nimport { IManagedObject } from '@c8y/client';\nimport { Action } from '../action.enum';\n\n@Component({\n selector: 'c8y-asset-selector-node',\n templateUrl: './asset-selector-node.component.html'\n})\nexport class AssetSelectorNodeComponent implements OnInit {\n /**\n * The current node.\n */\n @Input() node: GroupNode;\n /**\n * All preselected items\n */\n @Input() preselected: Array<Partial<IManagedObject>> = [];\n /**\n * Should the path be shown\n */\n @Input() showPath: boolean = false;\n /**\n * The current path to the node\n */\n breadcrumb: string;\n /**\n * @ignore\n */\n level: number = 0;\n /**\n * The selection status of the node\n */\n checked: boolean = false;\n /**\n * @ignore\n */\n unsubscribe$ = new Subject<any>();\n\n /**\n * @ignore\n */\n get expandTitle() {\n return !this.node.open ? gettext('Expand') : gettext('Collapse');\n }\n\n /**\n * @ignore only di\n */\n constructor(\n private translateService: TranslateService,\n private cd: ChangeDetectorRef,\n private parentNode: AssetSelectorComponent\n ) {}\n\n /**\n * @ignore\n */\n async ngOnInit() {\n this.breadcrumb = this.node.label;\n this.setupBreadcrumbsAndLevel(this.node);\n\n if (this.node instanceof GroupNode) {\n this.node.hookEvents();\n }\n\n // open on startup\n if (this.node.root) {\n this.click();\n }\n\n if (this.node.events) {\n this.node.events\n .pipe(\n takeUntil(this.unsubscribe$),\n filter((a: Action) => a === Action.LOADING_DONE)\n )\n .subscribe(() => {\n this.cd.markForCheck();\n });\n }\n\n this.checked = this.isPreselected();\n }\n\n /**\n * Opens a node.\n */\n click() {\n this.node.open = !this.node.open;\n this.node.click({ open: this.node.open });\n }\n\n /**\n * TODO: Only level used. Breadcrumbs needs to be implemented.\n */\n setupBreadcrumbsAndLevel(node: GroupNode) {\n if (node.parents && node.parents.length) {\n const parent = node.parents[0] as GroupNode;\n this.breadcrumb = this.translateService.instant(parent.label) + ' > ' + this.breadcrumb;\n this.level++;\n\n this.setupBreadcrumbsAndLevel(parent);\n }\n }\n\n /**\n * Selects the node and emits a change on the parent component.\n * @param node The node to select.\n */\n selected(node: GroupNode) {\n this.checked = !this.checked;\n this.updateSelection(node.mo);\n }\n\n /**\n * @ignore\n */\n ngOnDestroy(): void {\n this.unsubscribe$.next(true);\n this.unsubscribe$.complete();\n }\n\n private isPreselected() {\n if (this.node.root || !this.node.mo) {\n return false;\n }\n return this.parentNode.getIndexOfSelected(this.preselected, this.node.mo) > -1;\n }\n\n private updateSelection(selectedMo: IManagedObject) {\n if (this.checked) {\n this.parentNode.select(selectedMo);\n return;\n }\n this.parentNode.deselect(selectedMo);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@c8y/ngx-components';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { GroupNodeService } from './group-node.service';\n\nimport { AssetSelectorNodeComponent } from './asset-selector-node.component';\nimport { AssetSelectorComponent } from './asset-selector.component';\n\n@NgModule({\n imports: [CommonModule, CollapseModule, BsDropdownModule ],\n exports: [AssetSelectorNodeComponent, AssetSelectorComponent],\n providers: [GroupNodeService],\n declarations: [AssetSelectorNodeComponent, AssetSelectorComponent]\n})\nexport class AssetSelectorModule {}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@c8y/ngx-components/assets-navigator/group-fragment.model.ts","ng://@c8y/ngx-components/assets-navigator/action.enum.ts","ng://@c8y/ngx-components/assets-navigator/load-more-node.ts","ng://@c8y/ngx-components/assets-navigator/asset-node.ts","ng://@c8y/ngx-components/assets-navigator/dynamic-group-node.ts","ng://@c8y/ngx-components/assets-navigator/asset-node-config.model.ts","ng://@c8y/ngx-components/assets-navigator/group.service.ts","ng://@c8y/ngx-components/assets-navigator/asset-node.service.ts","ng://@c8y/ngx-components/assets-navigator/asset-node.factory.ts","ng://@c8y/ngx-components/assets-navigator/assets-navigator.module.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/group-node.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/group-node.service.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/asset-selector.component.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/asset-selector-node.component.ts","ng://@c8y/ngx-components/assets-navigator/asset-selector/asset-selector.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","GroupFragment","Action","LoadMoreNode","_this","_super","priority","Infinity","gettext","icon","droppable","tslib_1.__extends","NavigatorNode","AssetNode","service","config","root","mo","path","isDeviceOrProbablyChildDevice","id","draggable","moduleConfig","disableDragAndDrop","routerLinkExact","updateIcon","onUpdateSubscription","onUpdate","subscribe","_a","data","method","refresh","name","groups","isGroup","DeviceStatusComponent","undefined","c8y_IsDevice","isDevice","isNeitherDeviceOrGroup","isDynamicGroup","openOnStart","url","test","matches","match","id_1","concat","get","some","managedObject","parents","forEach","node","events","REFRESH","click","options","preferBreadcrumb","hookEvents","open","FETCH","sort","children","a","addManagedObject","childAdditions","isChildAddition","add","createChildNode","references","destroy","unsubscribe","nodeToMove","draggedData","shouldGetChildOfItsOwn","find","child","isAlreadyChild","preventMove","dragStart","$event","rootNode","dragEnd","drop","canDrop","moveNode","draggedHover","Subject","evt","loading","handleEvent","fetch","getRootNodes","getGroupItems","addNodes","_c","NEXT","loadMoreNode","_b","paging","empty","res","currentPage","nextPage","pageSize","itemsCount","moreItemsAvailable","toggleLoadMore","map","LOADING_DONE","show","hidden","showDropConfirm","isCopy","verifyNodeAccess","addMovedNode","removeMovedNode","expand","alert","addServerFailure","ex_1","confirm","title","message","buttons","action","status","inventory","update","type","groupType","childAssetsAdd","tslib_1.__values","parent_1","dynamicGroupType","subGroupType","_d","childAssetsRemove","remove","DynamicGroupNode","c8y_DeviceQueryString","getDynamicGroupItems","query","ASSET_NAVIGATOR_CONFIG","InjectionToken","DeviceGroupService","icons","brokerSourceInactive","brokerSource","iconOpen","group","dynamicGroup","other","iconClass","dataBrokerSourceFragmentInactive","dataBrokerSourceFragment","groupFragmentType","dynamicGroupFragment","isDataBroker","isDataBrokerActive","isAnyGroup","Injectable","AssetNodeService","apiService","modal","breadcrumbService","user","appState","firstUrl","PAGE_SIZE","rootNodePriority","queriesUtil","QueriesUtil","createRootNode","createAssetNode","createDynamicGroupNode","customFilter","defaultFilter","withChildren","buildQuery","navRootQueryFilter","groupFilter","hasRole","currentUser","fragmentType","onlyRoots","list","createFilter","moId","extraFilter","queryFilter","groupQueryFilter","childAssetsList","groupQuery","filterObj","queryParams","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","orderByQuery","q","buildCombinedQuery","getDeviceChildren","childDevicesList","navRootFilter","rootQueryFilter","__orderby","rootFilter","__filter","smartGroups","__and","__has","__not","addOrFilter","hookResponse","includes","RegExp","pipe","filter","mergeMap","resolveData","response","c8y_Dashboard","isNewManagedObjectRoot","isRootAsset","selectPreferredByPath","extraParams","withTotalPages","combinedQuery","__useFilterQueryString","InventoryService","ApiService","ModalService","AlertService","BreadcrumbService","UserService","AppStateService","Optional","Inject","args","tslib_1.__param","AssetNodeFactory","AssetsNavigatorModule","ngModule","AssetsNavigatorModule_1","providers","provide","useValue","NgModule","declarations","imports","ModalModule","DeviceStatusModule","HOOK_NAVIGATOR_NODES","useClass","multi","entryComponents","GroupNode","GroupNodeService","createGroupNode","subAssetsQueryFilter","AssetSelectorComponent","groupNodeService","selected","onChange","EventEmitter","ngOnInit","select","selectedMo","getIndexOfSelected","emit","deselect","index","splice","findIndex","tslib_1.__decorate","Input","Output","Component","selector","template","AssetSelectorNodeComponent","translateService","cd","parentNode","preselected","showPath","level","checked","unsubscribe$","breadcrumb","setupBreadcrumbsAndLevel","takeUntil","markForCheck","isPreselected","instant","updateSelection","ngOnDestroy","complete","TranslateService","ChangeDetectorRef","AssetSelectorModule","CommonModule","CollapseModule","BsDropdownModule","exports"],"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","export enum GroupFragment {\n groupType = 'c8y_DeviceGroup',\n subGroupType = 'c8y_DeviceSubgroup',\n groupFragmentType = 'c8y_IsDeviceGroup',\n dataBrokerSourceFragment = 'c8y_BrokerSource',\n dynamicGroupType = 'c8y_DynamicGroup',\n dynamicGroupFragment = 'c8y_IsDynamicGroup',\n dynamicGroupColumnConfig = 'c8y_UIDeviceFilterConfig',\n dynamicGroupQueryString = 'c8y_DeviceQueryString',\n}\n","export enum Action {\n FETCH,\n NEXT,\n REFRESH,\n LOADING_DONE\n}\n","import { NavigatorNode, gettext } from '@c8y/ngx-components';\n\nexport class LoadMoreNode extends NavigatorNode {\n priority = -Infinity;\n label = gettext('Load more');\n icon = 'plus';\n droppable = true;\n}\n","import { Paging } from '@c8y/client';\nimport { ClickOptions, gettext, NavigatorNode, DeviceStatusComponent } from '@c8y/ngx-components';\nimport { get, has } from 'lodash-es';\nimport { Subject, Subscription } from 'rxjs';\nimport { AssetNodeMo, AssetNodeService } from './asset-node.service';\nimport { LoadMoreNode } from './load-more-node';\nimport { GroupFragment } from './group-fragment.model';\nimport { Action } from './action.enum';\n\nexport class AssetNode extends NavigatorNode {\n root: boolean;\n mo: any;\n\n get label() {\n return (this.root && gettext('Groups')) || this.mo.name || '--';\n }\n\n get hasChildren() {\n return this.root || this.service.groups.isGroup(this.mo);\n }\n\n get iconComponent() {\n return this.isDeviceOrProbablyChildDevice ? DeviceStatusComponent : undefined;\n }\n\n get isDevice() {\n return !!this.mo.c8y_IsDevice;\n }\n\n get isDeviceOrProbablyChildDevice() {\n return this.isDevice || this.isNeitherDeviceOrGroup;\n }\n\n get isNeitherDeviceOrGroup() {\n const { isGroup, isDynamicGroup } = this.service.groups;\n return !isGroup(this.mo) && !isDynamicGroup(this.mo) && !this.isDevice && !this.root;\n }\n\n events: Subject<Action>;\n protected paging: Paging<AssetNodeMo>;\n protected loadMoreNode: LoadMoreNode;\n private onUpdateSubscription: Subscription;\n\n constructor(protected service: AssetNodeService, config = {}) {\n super(config);\n this.root = this.root || false;\n this.mo = this.mo || {};\n this.path = this.root\n ? 'group'\n : this.isDeviceOrProbablyChildDevice\n ? `device/${this.mo.id}`\n : `group/${this.mo.id}`;\n this.draggable = !this.service.moduleConfig.disableDragAndDrop && !this.root;\n this.droppable =\n !this.service.moduleConfig.disableDragAndDrop && !this.isDeviceOrProbablyChildDevice;\n this.routerLinkExact = this.root;\n this.updateIcon(false);\n this.onUpdateSubscription = this.service\n .onUpdate(this)\n .subscribe(({ data, method }) => this.refresh(data, method));\n }\n\n openOnStart(url) {\n const urlRegex = /^\\/group\\//;\n if (this.root) {\n if (this.service.moduleConfig.openOnStart || urlRegex.test(url)) {\n return true;\n }\n }\n const matches = url.match(/\\/(group)\\/(\\d+)/);\n let isMatch = false;\n if (matches) {\n const id = matches[2];\n isMatch = []\n .concat(get(this.mo, 'childAssets.references', []))\n .some(({ managedObject }) => managedObject.id === id);\n return isMatch;\n }\n return false;\n }\n\n refresh(mo: any = {}, method = 'GET') {\n if (mo.id === this.mo.id) {\n this.mo = mo;\n } else if (method === 'DELETE') {\n this.parents.forEach((node: AssetNode) => node.refresh());\n return;\n }\n if (this.events) {\n this.events.next(Action.REFRESH);\n }\n }\n\n click(options: ClickOptions = {}) {\n if (this.isDeviceOrProbablyChildDevice) {\n this.service.preferBreadcrumb(this.parents);\n return;\n }\n this.hookEvents();\n\n this.updateIcon(options.open);\n if (options.open) {\n this.events.next(Action.FETCH);\n }\n }\n\n sort() {\n this.children.sort((a, b) => {\n if (a.priority > b.priority) {\n return -1;\n } else if (a.priority < b.priority) {\n return 1;\n } else {\n return 0;\n }\n });\n }\n\n addManagedObject(mo) {\n const { childAdditions } = this.mo;\n if (!this.isChildAddition(childAdditions, mo)) {\n this.add(this.service.createChildNode(mo));\n }\n }\n\n isChildAddition(childAdditions, mo) {\n return (\n childAdditions && childAdditions.references.some(({ managedObject: { id } }) => id === mo.id)\n );\n }\n\n destroy() {\n this.onUpdateSubscription.unsubscribe();\n }\n\n get canDrop() {\n const nodeToMove = this.service.draggedData;\n if (nodeToMove) {\n const shouldGetChildOfItsOwn = !!nodeToMove.find(child => child === this);\n const isAlreadyChild = (this.children as AssetNode[]).some(\n child => child.mo && child.mo.id === nodeToMove.mo.id\n );\n const preventMove = this === nodeToMove || shouldGetChildOfItsOwn || isAlreadyChild;\n return this.droppable && !preventMove;\n }\n return this.droppable;\n }\n\n dragStart($event) {\n super.dragStart($event);\n this.service.draggedData = this;\n this.service.rootNode.droppable = !this.isDeviceOrProbablyChildDevice;\n }\n\n dragEnd($event) {\n super.dragEnd($event);\n }\n\n async drop($event) {\n super.drop($event);\n const nodeToMove = this.service.draggedData;\n if (this.canDrop) {\n await this.moveNode(nodeToMove);\n } else {\n this.draggedHover = false;\n this.service.draggedData = undefined;\n }\n }\n\n hookEvents() {\n if (!this.events) {\n this.events = new Subject();\n this.events.subscribe(evt => {\n if (!this.loading) {\n this.handleEvent(evt);\n }\n });\n }\n }\n\n protected fetch() {\n return this.root ? this.service.getRootNodes() : this.service.getGroupItems(this.mo.id);\n }\n\n protected async handleEvent(evt: Action) {\n if (!this.children.length && evt === Action.FETCH) {\n this.loading = true;\n this.addNodes(await this.fetch());\n this.loading = false;\n } else if (evt === Action.NEXT) {\n this.loadMoreNode.loading = true;\n this.addNodes(await this.paging.next());\n this.loadMoreNode.loading = false;\n } else if (evt === Action.REFRESH) {\n this.loading = false;\n this.paging = undefined;\n this.loadMoreNode = undefined;\n this.empty();\n this.events.next(Action.FETCH);\n }\n }\n\n protected addNodes(res) {\n if (res.paging) {\n const { currentPage, nextPage, pageSize } = (this.paging = res.paging);\n if (currentPage === 1) {\n this.empty();\n }\n const itemsCount = res.data.length;\n const moreItemsAvailable = !!nextPage && itemsCount === pageSize;\n this.toggleLoadMore(moreItemsAvailable);\n }\n (res.data || res).map(mo => this.addManagedObject(mo));\n this.events.next(Action.LOADING_DONE);\n }\n\n protected toggleLoadMore(show: boolean) {\n if (!this.loadMoreNode && show) {\n this.loadMoreNode = new LoadMoreNode();\n this.add(this.loadMoreNode);\n this.loadMoreNode.click = () => this.events.next(Action.NEXT);\n }\n\n if (this.loadMoreNode) {\n this.loadMoreNode.hidden = !show;\n }\n }\n\n private async moveNode(nodeToMove: AssetNode) {\n try {\n const isCopy = await this.showDropConfirm(nodeToMove);\n await this.verifyNodeAccess(nodeToMove);\n await this.addMovedNode(nodeToMove);\n if (!isCopy) {\n await this.removeMovedNode(nodeToMove);\n }\n this.expand();\n } catch (ex) {\n if (ex) {\n this.service.alert.addServerFailure(ex);\n }\n } finally {\n this.draggedHover = false;\n this.service.draggedData = undefined;\n }\n }\n\n private async showDropConfirm(nodeToMove: AssetNode) {\n this.confirm.title = gettext('Move');\n this.confirm.message = gettext('Do you want to move the group?');\n const buttons: any = [\n {\n label: gettext('Cancel'),\n action: () => Promise.reject()\n },\n {\n label: gettext('Move'),\n status: 'default',\n action: () => Promise.resolve(false)\n }\n ];\n if (nodeToMove.isDeviceOrProbablyChildDevice) {\n this.confirm.title = gettext('Move or add');\n this.confirm.message = gettext('Do you want to move or add the device?');\n buttons.push({\n label: gettext('Add'),\n status: 'primary',\n action: () => Promise.resolve(true)\n });\n }\n return this.confirm.show(buttons);\n }\n\n private async verifyNodeAccess(nodeToMove: AssetNode) {\n return this.service.inventory.update({ id: nodeToMove.mo.id });\n }\n\n private async addMovedNode(nodeToMove: AssetNode) {\n let mo;\n if (this.root) {\n const { data } = await this.service.inventory.update({\n id: nodeToMove.mo.id,\n type: GroupFragment.groupType\n });\n mo = data;\n } else {\n const { data } = await this.service.inventory.childAssetsAdd(nodeToMove.mo, this.mo);\n mo = data;\n }\n this.addManagedObject(mo);\n }\n\n private async removeMovedNode(nodeToMove: AssetNode) {\n for (const parent of nodeToMove.parents as AssetNode[]) {\n if (parent.mo && parent.mo.type === GroupFragment.dynamicGroupType) {\n break; // smart groups don't need to be changed\n }\n if (parent.root) {\n await this.service.inventory.update({\n id: nodeToMove.mo.id,\n type: GroupFragment.subGroupType\n });\n } else {\n await this.service.inventory.childAssetsRemove(nodeToMove.mo, parent.mo);\n }\n parent.remove(nodeToMove);\n }\n }\n\n private updateIcon(open) {\n this.icon = this.service.groups.icon(\n // if it's root we are going to pass a fake mo to get the same icon as groups\n this.root ? { type: GroupFragment.groupType } : this.mo,\n open\n );\n }\n}\n","\nimport { AssetNode } from './asset-node';\nimport { AssetNodeService } from './asset-node.service';\n\nexport class DynamicGroupNode extends AssetNode {\n constructor(\n protected service: AssetNodeService,\n config = {}\n ) {\n super(service, config);\n this.draggable = false;\n this.droppable = false;\n }\n\n get hasChildren() {\n return true;\n }\n\n get query() {\n return this.mo.c8y_DeviceQueryString;\n }\n\n protected fetch(): any {\n return this.service.getDynamicGroupItems(this.query);\n }\n}\n","import { InjectionToken } from '@angular/core';\r\nexport const ASSET_NAVIGATOR_CONFIG = new InjectionToken<AssetNavigatorConfig>('AssetNodeConfig');\r\n\r\nexport interface AssetNavigatorConfig {\r\n smartGroups?: boolean;\r\n openOnStart?: boolean;\r\n rootNodePriority?: number;\r\n disableDragAndDrop?: boolean;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { GroupFragment } from './group-fragment.model';\nimport { IManagedObject } from '@c8y/client';\n\n@Injectable()\nexport class DeviceGroupService {\n icons = {\n brokerSourceInactive: {\n icon: 'c8y-group-remote-inactive'\n },\n brokerSource: {\n icon: 'c8y-group-remote',\n iconOpen: 'c8y-group-remote-open'\n },\n group: {\n icon: 'c8y-group',\n iconOpen: 'c8y-group-open'\n },\n dynamicGroup: {\n icon: 'c8y-group-smart',\n iconOpen: 'c8y-group-smart-open'\n },\n other: {\n icon: 'circle',\n iconClass: 'statusUnknown'\n }\n };\n dataBrokerSourceFragmentInactive = `_${GroupFragment.dataBrokerSourceFragment}`;\n\n isGroup(mo) {\n return (\n !!mo[GroupFragment.groupFragmentType] ||\n mo.type === GroupFragment.groupType ||\n mo.type === GroupFragment.subGroupType\n );\n }\n\n isDynamicGroup(mo) {\n return !!mo[GroupFragment.dynamicGroupFragment] || mo.type === GroupFragment.dynamicGroupType;\n }\n\n isDataBroker(mo) {\n return (\n !!mo[GroupFragment.dataBrokerSourceFragment] || !!mo[this.dataBrokerSourceFragmentInactive]\n );\n }\n\n isDataBrokerActive(mo) {\n return (\n !!mo[GroupFragment.dataBrokerSourceFragment] && !mo[this.dataBrokerSourceFragmentInactive]\n );\n }\n\n isDevice(mo) {\n return !!mo.c8y_IsDevice;\n }\n\n icon(mo, open = false) {\n let type = 'other';\n if (this.isDynamicGroup(mo)) {\n type = 'dynamicGroup';\n } else if (this.isDataBrokerActive(mo)) {\n type = 'brokerSource';\n } else if (this.isDataBroker(mo)) {\n type = 'brokerSourceInactive';\n } else if (this.isGroup(mo)) {\n type = 'group';\n }\n const icon = this.icons[type];\n return (open && icon.iconOpen) || icon.icon;\n }\n\n isAnyGroup(mo: IManagedObject) {\n return (\n this.isGroup(mo) ||\n this.isDynamicGroup(mo) ||\n this.isDataBroker(mo) ||\n this.isDataBrokerActive(mo)\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { InventoryService, QueriesUtil, UserService, IManagedObject, IResult } from '@c8y/client';\nimport {\n AlertService,\n BreadcrumbService,\n ModalService,\n NavigatorNode,\n AppStateService\n} from '@c8y/ngx-components';\nimport { ApiService } from '@c8y/ngx-components/api';\nimport { empty } from 'rxjs';\nimport { filter, mergeMap } from 'rxjs/operators';\nimport { AssetNode } from './asset-node';\nimport { AssetNavigatorConfig, ASSET_NAVIGATOR_CONFIG } from './asset-node-config.model';\nimport { DynamicGroupNode } from './dynamic-group-node';\nimport { GroupFragment } from './group-fragment.model';\nimport { DeviceGroupService } from './group.service';\n\nexport interface AssetNodeMo {\n id: string;\n type: string;\n}\n\n@Injectable()\nexport class AssetNodeService {\n rootNode: AssetNode;\n firstUrl = true;\n draggedData: AssetNode;\n queriesUtil: QueriesUtil;\n protected PAGE_SIZE = 20;\n\n constructor(\n public inventory: InventoryService,\n public groups: DeviceGroupService,\n public apiService: ApiService,\n public modal: ModalService,\n public alert: AlertService,\n protected breadcrumbService: BreadcrumbService,\n protected user: UserService,\n protected appState: AppStateService,\n @Optional() @Inject(ASSET_NAVIGATOR_CONFIG) public moduleConfig: AssetNavigatorConfig\n ) {\n this.moduleConfig = {\n rootNodePriority: 2000,\n ...(moduleConfig || {})\n };\n this.queriesUtil = new QueriesUtil();\n }\n\n createRootNode() {\n this.rootNode = this.createAssetNode({\n root: true,\n priority: this.moduleConfig.rootNodePriority\n });\n return this.rootNode;\n }\n\n createDynamicGroupNode(config) {\n return new DynamicGroupNode(this, config);\n }\n\n createAssetNode(config) {\n return new AssetNode(this, config);\n }\n\n createChildNode(managedObject) {\n const { type } = managedObject;\n const config: Partial<AssetNode> = { mo: managedObject };\n if (type === GroupFragment.dynamicGroupType) {\n return this.createDynamicGroupNode(config);\n }\n return this.createAssetNode(config);\n }\n\n getRootNodes(customFilter?: any): Promise<any> {\n const defaultFilter = {\n pageSize: this.PAGE_SIZE,\n withChildren: false,\n query: this.queriesUtil.buildQuery(this.navRootQueryFilter())\n };\n const groupFilter = customFilter ? customFilter : defaultFilter;\n\n // due to BE performance limitations we do not allow filtering and sorting for a user without inventory roles\n if (!this.user.hasRole(this.appState.currentUser.value, 'ROLE_INVENTORY_READ')) {\n delete groupFilter.query;\n Object.assign(groupFilter, {\n fragmentType: GroupFragment.groupFragmentType,\n onlyRoots: true\n });\n }\n return this.inventory.list(this.createFilter(groupFilter));\n }\n\n getGroupItems(moId: string, extraFilter: object = {}) {\n const queryFilter = {\n withChildren: false,\n pageSize: this.PAGE_SIZE,\n query: this.groupQueryFilter(moId)\n };\n return this.inventory.childAssetsList(moId, { ...queryFilter, ...extraFilter });\n }\n\n getDynamicGroupItems(groupQuery: string, filterObj: any = {}) {\n const { query, ...queryParams } = filterObj;\n const orderByQuery = query;\n const queryFilter = {\n q: this.buildCombinedQuery(groupQuery, orderByQuery),\n ...queryParams\n };\n return this.inventory.list(this.createFilter(queryFilter));\n }\n\n getDeviceChildren(moId: string, extraFilter: object = {}) {\n const queryFilter = {\n withChildren: false,\n pageSize: this.PAGE_SIZE,\n query: this.groupQueryFilter(moId)\n };\n return this.inventory.childDevicesList(moId, { ...queryFilter, ...extraFilter });\n }\n\n groupQueryFilter(moId: string) {\n return `$filter=(bygroupid(${moId}))$orderby=name`;\n }\n\n navRootQueryFilter() {\n const navRootFilter = this.rootQueryFilter();\n navRootFilter.__orderby = [{ name: 1 }];\n return navRootFilter;\n }\n\n rootQueryFilter() {\n const { moduleConfig } = this;\n const rootFilter = {\n __filter: {\n type: `${GroupFragment.groupType}`\n },\n __orderby: []\n };\n if (moduleConfig.smartGroups) {\n const queryFilter = {\n __filter: {\n __and: [\n {\n type: `${GroupFragment.dynamicGroupType}`\n },\n {\n __has: `${GroupFragment.dynamicGroupFragment}`\n },\n { __not: { __has: `${GroupFragment.dynamicGroupFragment}.invisible` } }\n ]\n }\n };\n this.queriesUtil.addOrFilter(rootFilter, queryFilter);\n }\n return rootFilter;\n }\n\n onUpdate({ mo, root }) {\n if (mo.id) {\n return this.apiService\n .hookResponse(\n ({ url, method }) =>\n ['PUT', 'DELETE', 'POST'].includes(method) &&\n RegExp(`((inventory/managedObjects)|(service/smartgroup/smartgroups))/${mo.id}`).test(\n url\n )\n )\n .pipe(\n filter(() => !this.draggedData),\n mergeMap(this.apiService.resolveData),\n filter(response => !response.data.c8y_Dashboard)\n );\n } else if (root) {\n return this.apiService\n .hookResponse(\n ({ url, method }) =>\n RegExp('((inventory/managedObjects)|(service/smartgroup/smartgroups))/?$').test(url) &&\n method === 'POST'\n )\n .pipe(\n mergeMap(this.apiService.resolveData),\n filter(response => this.isNewManagedObjectRoot(response))\n );\n } else {\n return empty();\n }\n }\n\n isNewManagedObjectRoot(response: Partial<IResult<IManagedObject>> = {}) {\n const { data } = response;\n let isRootAsset = false;\n\n if (typeof data === 'object') {\n isRootAsset = !!data[GroupFragment.groupFragmentType];\n if (!isRootAsset && this.moduleConfig.smartGroups) {\n isRootAsset = !!data[GroupFragment.dynamicGroupFragment];\n }\n }\n return isRootAsset;\n }\n\n /**\n * There could be multiple breadcrumbs for devices,\n * so we set a preferred one on click on a device.\n * @param parents The parent nodes of the device to select the prefered one.\n */\n preferBreadcrumb(parents: NavigatorNode[]) {\n if (parents.length === 1) {\n this.breadcrumbService.selectPreferredByPath(parents[0].path);\n }\n }\n\n protected createFilter(extraParams: any = {}) {\n const params = {\n currentPage: 1,\n withTotalPages: true,\n pageSize: 10\n };\n return { ...params, ...extraParams };\n }\n\n private buildCombinedQuery(query, orderByQuery) {\n let combinedQuery;\n if (query && orderByQuery) {\n const filterQuery = this.queriesUtil.buildQuery({\n __useFilterQueryString: query\n });\n combinedQuery = `${filterQuery} ${orderByQuery}`;\n } else {\n combinedQuery = query || orderByQuery || '';\n }\n return combinedQuery;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AssetNodeService } from './asset-node.service';\nimport { NavigatorNode } from '@c8y/ngx-components';\n\n@Injectable()\nexport class AssetNodeFactory {\n constructor(private service: AssetNodeService) {}\n\n get(): NavigatorNode {\n if (!this.service.rootNode) {\n this.service.createRootNode();\n }\n return this.service.rootNode;\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { HOOK_NAVIGATOR_NODES, ModalModule, ModalService, DeviceStatusComponent, DeviceStatusModule} from '@c8y/ngx-components';\nimport { ASSET_NAVIGATOR_CONFIG} from './asset-node-config.model';\nimport { AssetNodeFactory } from './asset-node.factory';\nimport { AssetNodeService } from './asset-node.service';\nimport { AssetNavigatorConfig } from './asset-node-config.model';\nimport { DeviceGroupService } from './group.service';\n\n@NgModule({\n declarations: [],\n imports: [\n ModalModule,\n DeviceStatusModule\n ],\n providers: [\n ModalService,\n AssetNodeService,\n DeviceGroupService,\n {\n provide: HOOK_NAVIGATOR_NODES, useClass: AssetNodeFactory, multi: true\n }\n ],\n entryComponents: [DeviceStatusComponent]\n})\nexport class AssetsNavigatorModule {\n static config(config: AssetNavigatorConfig): ModuleWithProviders {\n return {\n ngModule: AssetsNavigatorModule,\n providers: [\n {\n provide: ASSET_NAVIGATOR_CONFIG, useValue: config\n }\n ],\n };\n }\n\n}\n","import { GroupNodeService } from './group-node.service';\nimport { AssetNode } from '../asset-node';\n\nexport class GroupNode extends AssetNode {\n // FIXME: Currently hasChildren returns true if it is a group,\n // Issue is, that we disable the children in the API\n // getGroupItems service call due to performance. This leads\n // to that the dropdown chevron is shown always. Issue is,\n // that even if we return the chevrons, we have no way to determine\n // if the childAssets contain groups or other assets (like dashboards).\n // get hasChildren() {\n // return this.root || this.service.groups.isGroup(this.mo) && (this.mo as IManagedObject).childAssets.references.length > 0;\n // }\n\n /**\n * Creates a new node which shows only groups.\n *\n * @param service The service to use.\n * @param config The default configuration of the node.\n */\n constructor(protected service: GroupNodeService, config = {}) {\n super(service, config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AssetNodeService } from '../asset-node.service';\nimport { GroupNode } from './group-node';\nimport { GroupFragment } from '../group-fragment.model';\n\n@Injectable()\nexport class GroupNodeService extends AssetNodeService {\n protected PAGE_SIZE = 5;\n\n createGroupNode(config) {\n return new GroupNode(this, config);\n }\n\n createChildNode(managedObject): GroupNode {\n const config: Partial<GroupNode> = { mo: managedObject };\n return this.createGroupNode(config);\n }\n\n subAssetsQueryFilter() {\n const rootQueryFilter = this.rootQueryFilter();\n const filter = this.queriesUtil.addOrFilter(rootQueryFilter, {\n type: GroupFragment.subGroupType\n });\n return this.queriesUtil.buildQuery(filter);\n }\n\n getGroupItems(moId: string): Promise<any> {\n return this.inventory.childAssetsList(moId, {\n query: this.subAssetsQueryFilter(),\n withChildren: false,\n pageSize: this.PAGE_SIZE,\n withTotalPages: true\n });\n }\n}\n","import { Component, Output, Input, EventEmitter, OnInit } from '@angular/core';\nimport { GroupNodeService } from './group-node.service';\nimport { GroupNode } from './group-node';\nimport { IManagedObject } from '@c8y/client';\n\n/**\n * Displays a hierarchical tree selector for assets.\n */\n@Component({\n selector: 'c8y-asset-selector',\n templateUrl: './asset-selector.component.html'\n})\nexport class AssetSelectorComponent implements OnInit {\n /**\n * An array of predefined nodes.\n */\n @Input() selected: IManagedObject[] = [];\n /**\n * Emits if one item was selected (all currently selected nodes).\n */\n @Output() onChange = new EventEmitter<IManagedObject[]>();\n /**\n * @ignore\n */\n rootNode: GroupNode;\n\n /**\n * @ignore only DI\n */\n constructor(private groupNodeService: GroupNodeService) {}\n\n /**\n * @ignore\n */\n ngOnInit(): void {\n this.rootNode = this.groupNodeService.createGroupNode({ root: true });\n }\n\n /**\n * Adds an managed object to the selected array and emits the change.\n * @param selectedMo The selected asset.\n */\n select(selectedMo: IManagedObject) {\n const index = this.getIndexOfSelected(this.selected, selectedMo);\n if (index === -1) {\n this.selected.push(selectedMo);\n }\n this.onChange.emit(this.selected);\n }\n\n /**\n * Removes a managed object from the selected array and emits the change.\n * @param selectedMo The selected asset.\n */\n deselect(selectedMo: IManagedObject) {\n const index = this.getIndexOfSelected(this.selected, selectedMo);\n if (index > -1) {\n this.selected.splice(index, 1);\n }\n this.onChange.emit(this.selected);\n }\n\n getIndexOfSelected(selected: Array<Partial<IManagedObject>>, selectedMo: IManagedObject) {\n return selected.findIndex(mo => mo.id === selectedMo.id);\n }\n}\n","import { Component, Input, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GroupNode } from './group-node';\nimport { Subject } from 'rxjs';\nimport { takeUntil, filter } from 'rxjs/operators';\nimport { AssetSelectorComponent } from './asset-selector.component';\nimport { IManagedObject } from '@c8y/client';\nimport { Action } from '../action.enum';\n\n@Component({\n selector: 'c8y-asset-selector-node',\n templateUrl: './asset-selector-node.component.html'\n})\nexport class AssetSelectorNodeComponent implements OnInit {\n /**\n * The current node.\n */\n @Input() node: GroupNode;\n /**\n * All preselected items\n */\n @Input() preselected: Array<Partial<IManagedObject>> = [];\n /**\n * Should the path be shown\n */\n @Input() showPath: boolean = false;\n /**\n * The current path to the node\n */\n breadcrumb: string;\n /**\n * @ignore\n */\n level: number = 0;\n /**\n * The selection status of the node\n */\n checked: boolean = false;\n /**\n * @ignore\n */\n unsubscribe$ = new Subject<any>();\n\n /**\n * @ignore\n */\n get expandTitle() {\n return !this.node.open ? gettext('Expand') : gettext('Collapse');\n }\n\n /**\n * @ignore only di\n */\n constructor(\n private translateService: TranslateService,\n private cd: ChangeDetectorRef,\n private parentNode: AssetSelectorComponent\n ) {}\n\n /**\n * @ignore\n */\n async ngOnInit() {\n this.breadcrumb = this.node.label;\n this.setupBreadcrumbsAndLevel(this.node);\n\n if (this.node instanceof GroupNode) {\n this.node.hookEvents();\n }\n\n // open on startup\n if (this.node.root) {\n this.click();\n }\n\n if (this.node.events) {\n this.node.events\n .pipe(\n takeUntil(this.unsubscribe$),\n filter((a: Action) => a === Action.LOADING_DONE)\n )\n .subscribe(() => {\n this.cd.markForCheck();\n });\n }\n\n this.checked = this.isPreselected();\n }\n\n /**\n * Opens a node.\n */\n click() {\n this.node.open = !this.node.open;\n this.node.click({ open: this.node.open });\n }\n\n /**\n * TODO: Only level used. Breadcrumbs needs to be implemented.\n */\n setupBreadcrumbsAndLevel(node: GroupNode) {\n if (node.parents && node.parents.length) {\n const parent = node.parents[0] as GroupNode;\n this.breadcrumb = this.translateService.instant(parent.label) + ' > ' + this.breadcrumb;\n this.level++;\n\n this.setupBreadcrumbsAndLevel(parent);\n }\n }\n\n /**\n * Selects the node and emits a change on the parent component.\n * @param node The node to select.\n */\n selected(node: GroupNode) {\n this.checked = !this.checked;\n this.updateSelection(node.mo);\n }\n\n /**\n * @ignore\n */\n ngOnDestroy(): void {\n this.unsubscribe$.next(true);\n this.unsubscribe$.complete();\n }\n\n private isPreselected() {\n if (this.node.root || !this.node.mo) {\n return false;\n }\n return this.parentNode.getIndexOfSelected(this.preselected, this.node.mo) > -1;\n }\n\n private updateSelection(selectedMo: IManagedObject) {\n if (this.checked) {\n this.parentNode.select(selectedMo);\n return;\n }\n this.parentNode.deselect(selectedMo);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@c8y/ngx-components';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { GroupNodeService } from './group-node.service';\n\nimport { AssetSelectorNodeComponent } from './asset-selector-node.component';\nimport { AssetSelectorComponent } from './asset-selector.component';\n\n@NgModule({\n imports: [CommonModule, CollapseModule, BsDropdownModule ],\n exports: [AssetSelectorNodeComponent, AssetSelectorComponent],\n providers: [GroupNodeService],\n declarations: [AssetSelectorNodeComponent, AssetSelectorComponent]\n})\nexport class AssetSelectorModule {}\n"]}
|