@c8y/ng1-modules 1021.22.163 → 1021.22.165

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c8y/ng1-modules",
3
- "version": "1021.22.163",
3
+ "version": "1021.22.165",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Cumulocity",
6
6
  "description": "AngularJS modules for Cumulocity IoT applications.",
@@ -1 +1 @@
1
- (()=>{function e(i,r,e,o,t,n,a,P,c,u,l,s,d,f,h,g,m,v){var p,S=r.deviceId||r.groupId,C={},A={},R={done:!1,inProgress:!1},y={true:{text:m("Enabled`rule`"),icon:"check-circle",cls:"text-success"},false:{text:m("Disabled`rule`"),icon:"ban",cls:"text-danger"}},x=s.getContext(),E=m("Global smart rules");function b(){return o.when().then(T).then(k).then(D).then(w).then(I).catch(j)}function T(){R.inProgress=!0}function I(){R.inProgress=!1,R.done=!0,R.error=!1}function j(e){e.data&&e.data.message&&l.danger(e.data.message),R.inProgress=!1,R.done=!0,R.error=!0}function k(){return h.list().then($)}function $(e){_.forEach(e||[],function(e){C[e.name]=e})}function D(){var e=S?g.listByContext(S):o.resolve([]),t=f.hasPermissions().then(function(e){return e?g.list():o.when([])});return o.all({listByContext:e,list:t}).then(function(e){i.rules=(e=>{var t=e;return t=S?_.reject(e,(e=>{var n=new RegExp("".concat(e,"/dashboard"));return function(e){var t=_.get(e,"config.url","");return N(e)&&!n.test(t)}})(S)):t})(_.concat(e.listByContext,e.list))})}function N(e){return"sendDashboardsViaEmail"===e.ruleTemplateName}function O(e){return g.hasSource(e,S)}function w(){var e,t;return!(Array.isArray(i.rules)&&0<i.rules.length)||null===(t=s.getContext()).context?o.resolve():(e=a.childAssets(t.id,{skipDetail:!0,params:{pageSize:2e3,withChildren:!1}}),t=a.childDevices(t.id,{params:{pageSize:2e3,withChildren:!1}}),o.all([e,t]).then(_.flatten).then(function(e){i.children=e}).then(function(){i.ruleChildren={},_.forEach(i.rules,function(e){i.ruleChildren[e.id]=M(e)})}))}function M(t){return _.filter(i.children,function(e){return g.hasSource(t,e)})}function U(e){var t=_.get(C,"".concat(_.get(e,"ruleTemplateName"),"._active")),n=A.canAddRules;return e&&!t&&(n=!1),_.isUndefined(n)&&(e=i.context?c.isAllowed({adminMOs:[i.context.id]}):o.all({isAllowedInventory:c.isAllowed({anyRole:["ROLE_INVENTORY_ADMIN","ROLE_MANAGED_OBJECT_ADMIN"]}),isAllowedSmartRules:c.isAllowed({anyRole:["ROLE_SMARTRULE_ADMIN","ROLE_CEP_MANAGEMENT_ADMIN"]})}).then(function(e){return e.isAllowedInventory&&e.isAllowedSmartRules}),A.canAddRules=e.then(function(e){return A.canAddRules=e,A.canAddRules}),n=!1),n}function G(t){A.rules=A.rules||{};var n=A.rules,e=n[t.id];return _.isUndefined(e)&&(n[t.id]=c.isAllowed({adminMOs:[t.id]}).then(function(e){return n[t.id]=e,n[t.id]}),e=!1),e}function L(e){var t=!0;return t=x.context!==s.CONTEXT.DEVICE&&x.context!==s.CONTEXT.GROUP?t:t&&e&&"c8y_SmartRule"!==e.type}_.assign(i,{isOpen:{},moId:S,loadingStatus:R,refresh:b,paging:{refresh:b},ruleTemplates:C,getLinkToDM:function(){var e={deviceId:S};return t(p||"")(e)},add:function(){g.addNewWithUI().then(b)},edit:function(e){g.editWithUI(e).then(b)},clone:function(e){var t=e&&e.c8y_Context&&e.c8y_Context.id;(t?g.cloneWithUI(e,t,!0):g.cloneWithUI(e)).then(b)},remove:function(e){u({title:m("Delete smart rule"),body:v.getString('You are about to delete smart rule "{{name}}". Do you want to proceed?',e),labels:{ok:m("Delete")},status:"danger"}).then(angular.bind(g,g.remove,e)).then(function(){return _.pull(i.rules,e)}).then(function(){return l.success(m("Smart rule deleted."))})},hasSource:O,getChildrenEnabledForSmartRule:M,toggleRuleActivationForContextMO:function(e){if(O(e))return g.deactivate(e,S,!1).then(function(){l.success(v.getString('Smart rule "{{name}}" deactivated.',e))});return g.activate(e,S,!1).then(function(){l.success(v.getString('Smart rule "{{name}}" activated.',e))})},toggleRuleActivationForChildrenMOs:function(e,n){var t=_.filter(n,function(t){return!_.find(i.ruleChildren[e.id],function(e){return e.id===t.id})}),r=_.filter(i.ruleChildren[e.id],function(t){return!_.find(n,function(e){return t.id===e.id})});return g.updateSources(e,t,r,!1).then(D).then(w).then(function(){l.success(v.getString('Smart rule "{{name}}" activated/deactivated for children.',e))})},tooltip:function(e){var t={activate:{"for group":m("Activate for this group"),"for device":m("Activate for this device"),"for object":m("Activate for this object")},deactivate:{"for group":m("Deactivate for this group"),"for device":m("Deactivate for this device"),"for object":m("Deactivate for this object")}},e=e.enabled&&O(e)?"deactivate":"activate",n=r.groupId?s.CONTEXT.GROUP:"object";return n=r.deviceId?s.CONTEXT.DEVICE:n,t[e]["for ".concat(n)]},type:function(e){var t,e=C[e.ruleTemplateName];e&&(t=e.label.full?v.getString(e.label.full):"".concat(v.getString(e.label.input)," ").concat(v.getString(e.label.output)));return t},status:function(e){return y[e.enabled].text},statusIcon:function(e){return y[e.enabled].icon},statusClass:function(e){return y[e.enabled].cls},showTitle:function(){return null!==s.getContext().context},title:E,context:x,inputIcon:function(e){var t,e=C[e.ruleTemplateName];e&&(t=e.paramGroups.input.icon);return t},outputIcon:function(e){var t,e=C[e.ruleTemplateName];e&&(t=e.paramGroups.output.icon);return t},canAddRules:U,canDuplicate:function(e){return U(e)&&L(e)},canEdit:function(e){return G(e)&&L(e)},canRemove:G,canModify:G,canApplyOnChildren:function(e){return!N(e)},canSeeSection:function(){var e=A.canSeeSection;_.isUndefined(e)&&(A.canSeeSection=(n.checkIfModulesExist(["c8y.cockpit.config"])?f.shouldShowLocalSmartRules():o.when(!1)).then(function(e){return A.canSeeSection=e,A.canSeeSection}),e=!1);return e},isConfigurationGlobalSmartRulesContext:void 0,getRuleCardTitle:function(e){return"c8y_SmartRule"===e.type?m("Global smart rule"):m("Local smart rule")}}),i.isConfigurationGlobalSmartRulesContext=e.path().includes("/rules"),b(),null===s.getContext().context&&d.changeTitle({title:E}),x.context===s.CONTEXT.DEVICE&&n.getStaticLinkTemplate("devicemanagementDeviceDetails").then(function(e){p=e})}e.$inject=["$scope","$routeParams","$location","$q","$interpolate","c8yBase","c8yInventory","c8yApplication","c8yPermissions","c8yModal","c8yAlert","c8yUiUtil","c8yTitle","c8ySmartRulesAvailability","smartRuleTemplatesSvc","smartRulesSvc","gettext","gettextCatalog"],angular.module("c8y.smartRules").controller("SmartRulesListCtrl",e)})();
1
+ (()=>{function e(i,r,e,o,t,n,c,G,a,u,l,s,d,f,h,m,g,v){var p,C=r.deviceId||r.groupId,S={},A={},y={done:!1,inProgress:!1},T={true:{text:g("Enabled`rule`"),icon:"check-circle",cls:"text-success"},false:{text:g("Disabled`rule`"),icon:"ban",cls:"text-danger"}},x=s.getContext(),E=g("Global smart rules");function R(){return o.when().then(I).then(j).then(N).then(w).then(b).catch(X)}function I(){y.inProgress=!0}function b(){y.inProgress=!1,y.done=!0,y.error=!1}function X(e){e.data&&e.data.message&&l.danger(e.data.message),y.inProgress=!1,y.done=!0,y.error=!0}function j(){return h.list().then(k)}function k(e){_.forEach(e||[],function(e){S[e.name]=e})}function N(){var e=C?m.listByContext(C):o.resolve([]),t=f.hasPermissions().then(function(e){return e?m.list():o.when([])});return o.all({listByContext:e,list:t}).then(function(e){i.rules=(e=>{var t=e;return t=C?_.reject(e,(e=>{var n=new RegExp("".concat(e,"/dashboard"));return function(e){var t=_.get(e,"config.url","");return O(e)&&!n.test(t)}})(C)):t})(_.concat(e.listByContext,e.list))})}function O(e){return"sendDashboardsViaEmail"===e.ruleTemplateName}function D(e){return m.hasSource(e,C)}function w(){var e,t;return!(Array.isArray(i.rules)&&0<i.rules.length)||null===(t=s.getContext()).context?o.resolve():(e=c.childAssets(t.id,{skipDetail:!0,params:{pageSize:2e3,withChildren:!1}}),t=c.childDevices(t.id,{params:{pageSize:2e3,withChildren:!1}}),o.all([e,t]).then(_.flatten).then(function(e){i.children=e}).then(function(){i.ruleChildren={},_.forEach(i.rules,function(e){i.ruleChildren[e.id]=M(e)})}))}function M(t){return _.filter(i.children,function(e){return m.hasSource(t,e)})}function P(e){var t=_.get(S,"".concat(_.get(e,"ruleTemplateName"),"._active")),n=A.canAddRules;return e&&!t&&(n=!1),_.isUndefined(n)&&(e=i.context?a.isAllowed({adminMOs:[i.context.id]}):o.all({isAllowedInventory:a.isAllowed({anyRole:["ROLE_INVENTORY_ADMIN","ROLE_MANAGED_OBJECT_ADMIN"]}),isAllowedSmartRules:a.isAllowed({anyRole:["ROLE_SMARTRULE_ADMIN","ROLE_CEP_MANAGEMENT_ADMIN"]})}).then(function(e){return e.isAllowedInventory&&e.isAllowedSmartRules}),A.canAddRules=e.then(function(e){return A.canAddRules=e,A.canAddRules}),n=!1),n}function L(t){A.rules=A.rules||{};var n=A.rules,e=n[t.id];return _.isUndefined(e)&&(n[t.id]=a.isAllowed({adminMOs:[t.id]}).then(function(e){return n[t.id]=e,n[t.id]}),e=!1),e}function U(e){var e=e&&"c8y_SmartRule"===e.type,t=x.context===s.CONTEXT.DEVICE||x.context===s.CONTEXT.GROUP||x.context===s.CONTEXT.APPLICATION||"ecosystem/microservice/microservices"===x.context;return!e||!t}_.assign(i,{isOpen:{},moId:C,loadingStatus:y,refresh:R,paging:{refresh:R},ruleTemplates:S,getLinkToDM:function(){var e={deviceId:C};return t(p||"")(e)},add:function(){m.addNewWithUI().then(R)},edit:function(e){m.editWithUI(e).then(R)},clone:function(e){var t=e&&e.c8y_Context&&e.c8y_Context.id;(t?m.cloneWithUI(e,t,!0):m.cloneWithUI(e)).then(R)},cloneAsLocal:function(e){m.cloneWithUI(e,C).then(R)},remove:function(e){u({title:g("Delete smart rule"),body:v.getString('You are about to delete smart rule "{{name}}". Do you want to proceed?',e),labels:{ok:g("Delete")},status:"danger"}).then(angular.bind(m,m.remove,e)).then(function(){return _.pull(i.rules,e)}).then(function(){return l.success(g("Smart rule deleted."))})},hasSource:D,getChildrenEnabledForSmartRule:M,toggleRuleActivationForContextMO:function(e){if(D(e))return m.deactivate(e,C,!1).then(function(){l.success(v.getString('Smart rule "{{name}}" deactivated.',e))});return m.activate(e,C,!1).then(function(){l.success(v.getString('Smart rule "{{name}}" activated.',e))})},toggleRuleActivationForChildrenMOs:function(e,n){var t=_.filter(n,function(t){return!_.find(i.ruleChildren[e.id],function(e){return e.id===t.id})}),r=_.filter(i.ruleChildren[e.id],function(t){return!_.find(n,function(e){return t.id===e.id})});return m.updateSources(e,t,r,!1).then(N).then(w).then(function(){l.success(v.getString('Smart rule "{{name}}" activated/deactivated for children.',e))})},tooltip:function(e){var t={activate:{"for group":g("Activate for this group"),"for device":g("Activate for this device"),"for object":g("Activate for this object")},deactivate:{"for group":g("Deactivate for this group"),"for device":g("Deactivate for this device"),"for object":g("Deactivate for this object")}},e=e.enabled&&D(e)?"deactivate":"activate",n=r.groupId?s.CONTEXT.GROUP:"object";return n=r.deviceId?s.CONTEXT.DEVICE:n,t[e]["for ".concat(n)]},type:function(e){var t,e=S[e.ruleTemplateName];e&&(t=e.label.full?v.getString(e.label.full):"".concat(v.getString(e.label.input)," ").concat(v.getString(e.label.output)));return t},status:function(e){return T[e.enabled].text},statusIcon:function(e){return T[e.enabled].icon},statusClass:function(e){return T[e.enabled].cls},showTitle:function(){return null!==s.getContext().context},title:E,context:x,inputIcon:function(e){var t,e=S[e.ruleTemplateName];e&&(t=e.paramGroups.input.icon);return t},outputIcon:function(e){var t,e=S[e.ruleTemplateName];e&&(t=e.paramGroups.output.icon);return t},canAddRules:P,canDuplicate:function(e){return P(e)&&U(e)},canDuplicateAsLocal:function(e){return P(e)&&(e=>{var e=e&&"c8y_SmartRule"===e.type,t=x.context===s.CONTEXT.DEVICE||x.context===s.CONTEXT.GROUP||x.context===s.CONTEXT.APPLICATION||"ecosystem/microservice/microservices"===x.context;return e&&t})(e)},canEdit:function(e){return L(e)&&U(e)},canRemove:L,canModify:L,canApplyOnChildren:function(e){return!O(e)},canSeeSection:function(){var e=A.canSeeSection;_.isUndefined(e)&&(A.canSeeSection=(n.checkIfModulesExist(["c8y.cockpit.config"])?f.shouldShowLocalSmartRules():o.when(!1)).then(function(e){return A.canSeeSection=e,A.canSeeSection}),e=!1);return e},isConfigurationGlobalSmartRulesContext:void 0,getRuleCardTitle:function(e){return"c8y_SmartRule"===e.type?g("Global smart rule"):g("Local smart rule")}}),i.isConfigurationGlobalSmartRulesContext=e.path().includes("/rules"),R(),null===s.getContext().context&&d.changeTitle({title:E}),x.context===s.CONTEXT.DEVICE&&n.getStaticLinkTemplate("devicemanagementDeviceDetails").then(function(e){p=e})}e.$inject=["$scope","$routeParams","$location","$q","$interpolate","c8yBase","c8yInventory","c8yApplication","c8yPermissions","c8yModal","c8yAlert","c8yUiUtil","c8yTitle","c8ySmartRulesAvailability","smartRuleTemplatesSvc","smartRulesSvc","gettext","gettextCatalog"],angular.module("c8y.smartRules").controller("SmartRulesListCtrl",e)})();
@@ -1 +1 @@
1
- (()=>{function e(e,r,i,t,n,o,c,a,u,l,s,d,f,h){var m=this,v={},g={},p={done:!1,inProgress:!1},A={true:{text:f("Active`rule`"),icon:"check-circle",cls:"text-success"},false:{text:f("Inactive`rule`"),icon:"ban",cls:"text-warning"}};function R(){return i.when().then(S).then(x).then(b).then(N).then(C).catch(E)}function S(){p.inProgress=!0}function C(){p.inProgress=!1,p.done=!0,p.error=!1}function E(e){e.data&&e.data.message&&a.danger(e.data.message),p.inProgress=!1,p.done=!0,p.error=!0}function x(){return s.list().then(y)}function y(e){_.forEach(e,function(e){v[e.name]=e})}function b(){var e=m.mo?d.listByContext(m.mo):i.resolve([]),t=l.hasPermissions().then(function(e){return e?d.list():i.when([])});return i.all({listByContext:e,list:t}).then(function(e){m.rules=(e=>(m.mo&&(e=_.reject(e,(e=>{var n=new RegExp("".concat(e,"/dashboard"));return function(e){var t=_.get(e,"config.url","");return I(e)&&!n.test(t)}})(m.mo))),e=m.filter?_.filter(e,m.filter):e))(_.concat(e.listByContext,e.list)),"function"==typeof m.onRules&&m.onRules()(m.rules)})}function I(e){return"sendDashboardsViaEmail"===e.ruleTemplateName}function T(e){return d.hasSource(e,m.mo)}function N(){var e,t;return Array.isArray(m.rules)&&0<m.rules.length&&(e=u.getContext(),t=(e=>(e=e.id,m.mo?_.get(m,"mo.id")||m.mo:e))(e),null!==e.context)?n.childAssets(t,{skipDetail:!0,params:{pageSize:2e3,withChildren:!1}}).then(function(e){m.children=e}).then(function(){m.ruleChildren={},_.forEach(m.rules,function(e){m.ruleChildren[e.id]=O(e)})}):i.resolve()}function O(t){return _.filter(m.children,function(e){return t.enabled&&d.hasSource(t,e)})}function w(){var e,t=g.canAddRules;return _.isUndefined(t)&&(e=m.context?c.isAllowed({adminMOs:[m.context.id]}):i.all({isAllowedInventory:c.isAllowed({anyRole:["ROLE_INVENTORY_ADMIN","ROLE_MANAGED_OBJECT_ADMIN"]}),isAllowedSmartRules:c.isAllowed({anyRole:["ROLE_SMARTRULE_ADMIN","ROLE_CEP_MANAGEMENT_ADMIN"]})}).then(function(e){return e.isAllowedInventory&&e.isAllowedSmartRules}),g.canAddRules=e.then(function(e){return g.canAddRules=e,g.canAddRules}),t=!1),t}function D(t){g.rules=g.rules||{};var n=g.rules,e=n[t.id];return _.isUndefined(e)&&(n[t.id]=c.isAllowed({adminMOs:[t.id]}).then(function(e){return n[t.id]=e,n[t.id]}),e=!1),e}function M(e){var t=!0;return t=m.context.context!==u.CONTEXT.DEVICE&&m.context.context!==u.CONTEXT.GROUP&&m.context.context!==u.CONTEXT.APPLICATION&&"ecosystem/microservice/microservices"!==m.context.context?t:t&&e&&"c8y_SmartRule"!==e.type}_.assign(m,{ruleTemplates:v,loadingStatus:p,isOpen:{},listClass:"interact-list",$onInit:function(){m.context=u.getContext(),e.$on("smartRulesListReload",R),R()},add:function(){d.addNewWithUI().then(R)},edit:function(e){d.editWithUI(e,m.mo).then(R)},clone:function(e){d.cloneWithUI(e,m.mo).then(R)},remove:function(e){t({title:f("Delete smart rule"),body:h.getString('You are about to delete smart rule "{{name}}". Do you want to proceed?',e),status:"danger",labels:{ok:f("Delete")}}).then(d.remove.bind(d,e)).then(function(){return _.pull(m.rules,e)}).then(function(){return a.success(f("Smart rule deleted."))})},hasSource:T,getChildrenEnabledForSmartRule:O,toggleRuleActivationForContextMO:function(e){if(e.enabled&&T(e))return d.deactivate(e,m.mo,!1).then(function(){a.success(h.getString('Smart rule "{{name}}" deactivated.',e))});return d.activate(e,m.mo,!1).then(function(){a.success(h.getString('Smart rule "{{name}}" activated.',e))})},toggleRuleActivationForChildrenMOs:function(t,n){var r=[];return _.forEach(n,function(e){_.find(m.ruleChildren[t.id],{id:e.id})||r.push(d.activate(t,e,!1))}),_.forEach(m.ruleChildren[t.id],function(e){_.find(n,{id:e.id})||r.push(d.deactivate(t,e,!1))}),i.all(r).then(b).then(N).then(function(){a.success(h.getString('Smart rule "{{name}}" activated/deactivated for children.',t))})},tooltip:function(e){var t,n={activate:{"for group":f("Activate for this group."),"for device":f("Activate for this device."),"for object":f("Activate for this object.")},deactivate:{"for group":f("Deactivate for this group."),"for device":f("Deactivate for this device."),"for object":f("Deactivate for this object.")}},e=e.enabled&&T(e)?"deactivate":"activate";t=r.deviceId?u.CONTEXT.DEVICE:r.groupId?u.CONTEXT.GROUP:"object";return n[e]["for ".concat(t)]},type:function(e){var t,e=v[e.ruleTemplateName];e&&(t=e.label.full?h.getString(e.label.full):"".concat(h.getString(e.label.input)," ").concat(h.getString(e.label.output)));return t},status:function(e){e=e.enabled&&T(e);return A[e].text},statusIcon:function(e){e=e.enabled&&T(e);return A[e].icon},statusClass:function(e){e=e.enabled&&T(e);return A[e].cls},context:u.getContext(),inputIcon:function(e){var t,e=v[e.ruleTemplateName];e&&(t=e.paramGroups.input.icon);return t},outputIcon:function(e){var t,e=v[e.ruleTemplateName];e&&(t=e.paramGroups.output.icon);return t},canDuplicate:function(e){return w()&&M(e)},canEdit:function(e){return D(e)&&M(e)},canRemove:D,canAddRules:w,canModify:D,canApplyOnChildren:function(e){return!I(e)},canSeeSection:function(){var e=g.canSeeSection;_.isUndefined(e)&&(g.canSeeSection=l.shouldShowLocalSmartRules().then(function(e){return g.canSeeSection=e,g.canSeeSection}),e=!1);return e}}),_.assign(e,{refresh:R,paging:{refresh:R}})}e.$inject=["$scope","$routeParams","$q","c8yModal","c8yInventory","c8yApplication","c8yPermissions","c8yAlert","c8yUiUtil","c8ySmartRulesAvailability","smartRuleTemplatesSvc","smartRulesSvc","gettext","gettextCatalog"],angular.module("c8y.smartRules").component("smartRulesList",{bindings:{mo:"<?",filter:"<?",disableEditAndCreate:"<?",onRules:"&?"},templateUrl:":::PLUGIN_PATH:::/list/smartRulesList.html",controller:e,controllerAs:"vm"})})();
1
+ (()=>{function e(e,r,o,t,n,i,c,a,u,l,s,d,f,m){var h=this,v={},g={},p={done:!1,inProgress:!1},A={true:{text:f("Active`rule`"),icon:"check-circle",cls:"text-success"},false:{text:f("Inactive`rule`"),icon:"ban",cls:"text-warning"}};function R(){return o.when().then(S).then(E).then(T).then(O).then(x).catch(C)}function S(){p.inProgress=!0}function x(){p.inProgress=!1,p.done=!0,p.error=!1}function C(e){e.data&&e.data.message&&a.danger(e.data.message),p.inProgress=!1,p.done=!0,p.error=!0}function E(){return s.list().then(y)}function y(e){_.forEach(e,function(e){v[e.name]=e})}function T(){var e=h.mo?d.listByContext(h.mo):o.resolve([]),t=l.hasPermissions().then(function(e){return e?d.list():o.when([])});return o.all({listByContext:e,list:t}).then(function(e){h.rules=(e=>(h.mo&&(e=_.reject(e,(e=>{var n=new RegExp("".concat(e,"/dashboard"));return function(e){var t=_.get(e,"config.url","");return b(e)&&!n.test(t)}})(h.mo))),e=h.filter?_.filter(e,h.filter):e))(_.concat(e.listByContext,e.list)),"function"==typeof h.onRules&&h.onRules()(h.rules)})}function b(e){return"sendDashboardsViaEmail"===e.ruleTemplateName}function I(e){d.cloneWithUI(e,h.mo).then(R)}function N(e){return d.hasSource(e,h.mo)}function O(){var e,t;return Array.isArray(h.rules)&&0<h.rules.length&&(e=u.getContext(),t=(e=>(e=e.id,h.mo?_.get(h,"mo.id")||h.mo:e))(e),null!==e.context)?n.childAssets(t,{skipDetail:!0,params:{pageSize:2e3,withChildren:!1}}).then(function(e){h.children=e}).then(function(){h.ruleChildren={},_.forEach(h.rules,function(e){h.ruleChildren[e.id]=D(e)})}):o.resolve()}function D(t){return _.filter(h.children,function(e){return t.enabled&&d.hasSource(t,e)})}function P(){var e,t=g.canAddRules;return _.isUndefined(t)&&(e=h.context?c.isAllowed({adminMOs:[h.context.id]}):o.all({isAllowedInventory:c.isAllowed({anyRole:["ROLE_INVENTORY_ADMIN","ROLE_MANAGED_OBJECT_ADMIN"]}),isAllowedSmartRules:c.isAllowed({anyRole:["ROLE_SMARTRULE_ADMIN","ROLE_CEP_MANAGEMENT_ADMIN"]})}).then(function(e){return e.isAllowedInventory&&e.isAllowedSmartRules}),g.canAddRules=e.then(function(e){return g.canAddRules=e,g.canAddRules}),t=!1),t}function w(t){g.rules=g.rules||{};var n=g.rules,e=n[t.id];return _.isUndefined(e)&&(n[t.id]=c.isAllowed({adminMOs:[t.id]}).then(function(e){return n[t.id]=e,n[t.id]}),e=!1),e}function L(e){var e=e&&"c8y_SmartRule"===e.type,t=h.context.context===u.CONTEXT.DEVICE||h.context.context===u.CONTEXT.GROUP||h.context.context===u.CONTEXT.APPLICATION||"ecosystem/microservice/microservices"===h.context.context;return!e||!t}_.assign(h,{ruleTemplates:v,loadingStatus:p,isOpen:{},listClass:"interact-list",$onInit:function(){h.context=u.getContext(),e.$on("smartRulesListReload",R),R()},add:function(){d.addNewWithUI().then(R)},edit:function(e){d.editWithUI(e,h.mo).then(R)},clone:I,remove:function(e){t({title:f("Delete smart rule"),body:m.getString('You are about to delete smart rule "{{name}}". Do you want to proceed?',e),status:"danger",labels:{ok:f("Delete")}}).then(d.remove.bind(d,e)).then(function(){return _.pull(h.rules,e)}).then(function(){return a.success(f("Smart rule deleted."))})},hasSource:N,getChildrenEnabledForSmartRule:D,toggleRuleActivationForContextMO:function(e){if(e.enabled&&N(e))return d.deactivate(e,h.mo,!1).then(function(){a.success(m.getString('Smart rule "{{name}}" deactivated.',e))});return d.activate(e,h.mo,!1).then(function(){a.success(m.getString('Smart rule "{{name}}" activated.',e))})},toggleRuleActivationForChildrenMOs:function(t,n){var r=[];return _.forEach(n,function(e){_.find(h.ruleChildren[t.id],{id:e.id})||r.push(d.activate(t,e,!1))}),_.forEach(h.ruleChildren[t.id],function(e){_.find(n,{id:e.id})||r.push(d.deactivate(t,e,!1))}),o.all(r).then(T).then(O).then(function(){a.success(m.getString('Smart rule "{{name}}" activated/deactivated for children.',t))})},tooltip:function(e){var t,n={activate:{"for group":f("Activate for this group."),"for device":f("Activate for this device."),"for object":f("Activate for this object.")},deactivate:{"for group":f("Deactivate for this group."),"for device":f("Deactivate for this device."),"for object":f("Deactivate for this object.")}},e=e.enabled&&N(e)?"deactivate":"activate";t=r.deviceId?u.CONTEXT.DEVICE:r.groupId?u.CONTEXT.GROUP:"object";return n[e]["for ".concat(t)]},type:function(e){var t,e=v[e.ruleTemplateName];e&&(t=e.label.full?m.getString(e.label.full):"".concat(m.getString(e.label.input)," ").concat(m.getString(e.label.output)));return t},status:function(e){e=e.enabled&&N(e);return A[e].text},statusIcon:function(e){e=e.enabled&&N(e);return A[e].icon},statusClass:function(e){e=e.enabled&&N(e);return A[e].cls},context:u.getContext(),inputIcon:function(e){var t,e=v[e.ruleTemplateName];e&&(t=e.paramGroups.input.icon);return t},outputIcon:function(e){var t,e=v[e.ruleTemplateName];e&&(t=e.paramGroups.output.icon);return t},canDuplicate:function(e){return P()&&L(e)},canDuplicateAsLocal:function(e){return P()&&(e=>{var e=e&&"c8y_SmartRule"===e.type,t=h.context.context===u.CONTEXT.DEVICE||h.context.context===u.CONTEXT.GROUP||h.context.context===u.CONTEXT.APPLICATION||"ecosystem/microservice/microservices"===h.context.context;return e&&t})(e)},canEdit:function(e){return w(e)&&L(e)},canRemove:w,cloneAsLocal:function(e){I(e)},canAddRules:P,canModify:w,canApplyOnChildren:function(e){return!b(e)},canSeeSection:function(){var e=g.canSeeSection;_.isUndefined(e)&&(g.canSeeSection=l.shouldShowLocalSmartRules().then(function(e){return g.canSeeSection=e,g.canSeeSection}),e=!1);return e}}),_.assign(e,{refresh:R,paging:{refresh:R}})}e.$inject=["$scope","$routeParams","$q","c8yModal","c8yInventory","c8yApplication","c8yPermissions","c8yAlert","c8yUiUtil","c8ySmartRulesAvailability","smartRuleTemplatesSvc","smartRulesSvc","gettext","gettextCatalog"],angular.module("c8y.smartRules").component("smartRulesList",{bindings:{mo:"<?",filter:"<?",disableEditAndCreate:"<?",onRules:"&?"},templateUrl:":::PLUGIN_PATH:::/list/smartRulesList.html",controller:e,controllerAs:"vm"})})();
@@ -139,6 +139,16 @@
139
139
  {{ 'Duplicate' | translate }}
140
140
  </button>
141
141
  </li>
142
+ <li ng-if="vm.canDuplicateAsLocal(rule) && !vm.disableEditAndCreate">
143
+ <button
144
+ title="{{ 'Duplicate as local smart rule' | translate }}"
145
+ type="button"
146
+ ng-click="vm.cloneAsLocal(rule)"
147
+ >
148
+ <i c8y-icon="copy"></i>
149
+ {{ 'Duplicate as local' | translate }}
150
+ </button>
151
+ </li>
142
152
  <li ng-if="vm.canRemove(rule)">
143
153
  <button
144
154
  title="{{ 'Delete smart rule' | translate }}"
@@ -198,6 +198,16 @@
198
198
  {{ 'Duplicate' | translate }}
199
199
  </button>
200
200
  </li>
201
+ <li ng-if="canDuplicateAsLocal(rule)">
202
+ <button
203
+ title="{{ 'Duplicate as local smart rule' | translate }}"
204
+ type="button"
205
+ ng-click="cloneAsLocal(rule)"
206
+ >
207
+ <i c8y-icon="copy"></i>
208
+ {{ 'Duplicate as local' | translate }}
209
+ </button>
210
+ </li>
201
211
  <li ng-if="canRemove(rule)">
202
212
  <button
203
213
  title="{{ 'Delete smart rule' | translate }}"