@c8y/ng1-modules 1019.24.2 → 1020.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/NOTICES +8357 -6666
  2. package/app-logs/app-logs.service.js +1 -1
  3. package/asset-notes/assetNotes.component.js +1 -1
  4. package/assetPropertyWidget/main.controller.js +1 -1
  5. package/cell-id-information-activator/cell-id-information-activator.config.js +1 -1
  6. package/cell-id-information-activator/cell-id-information-activator.service.js +1 -1
  7. package/cell-id-usage-statistics/cell-id-usage-statistics.component.js +1 -1
  8. package/cell-id-usage-statistics/cell-id-usage-statistics.service.js +1 -1
  9. package/commandTemplates/controllers/commandTemplates.js +1 -1
  10. package/commandTemplates/views/commandTemplates.html +83 -41
  11. package/core/core/services/alarms.js +1 -1
  12. package/core/core/services/application.js +1 -1
  13. package/core/core/services/auth.js +1 -1
  14. package/core/core/services/base.js +1 -1
  15. package/core/core/services/deviceShell.js +1 -1
  16. package/core/core/services/devices.js +1 -1
  17. package/core/core/services/dynamicGroups.js +1 -1
  18. package/core/core/services/geo.js +1 -1
  19. package/core/core/services/groups.js +1 -1
  20. package/core/core/services/inventory.js +1 -1
  21. package/core/core/services/kpi.js +1 -1
  22. package/core/core/services/measurements.js +1 -1
  23. package/core/core/services/settings.js +1 -1
  24. package/core/core/services/tenant.js +1 -1
  25. package/core/core/services/user.js +1 -1
  26. package/core/core/services/util.js +1 -1
  27. package/core/locales/de.po +553 -306
  28. package/core/locales/en.po +69 -0
  29. package/core/locales/es.po +562 -314
  30. package/core/locales/fr.po +560 -313
  31. package/core/locales/ja_JP.po +587 -299
  32. package/core/locales/ko.po +334 -327
  33. package/core/locales/nl.po +636 -389
  34. package/core/locales/pl.po +558 -310
  35. package/core/locales/pt_BR.po +575 -328
  36. package/core/locales/ru.po +21 -320
  37. package/core/locales/zh_CN.po +330 -323
  38. package/core/locales/zh_TW.po +330 -323
  39. package/core/ui/components/passwordStrengthChecklist.html +1 -1
  40. package/core/ui/configurable-device-list-columns/configurable-columns.service.js +1 -1
  41. package/core/ui/configurable-device-list-columns/modal-columns-configure.component.js +1 -1
  42. package/core/ui/controllers/deviceList.js +1 -1
  43. package/core/ui/controllers/eventList.js +1 -1
  44. package/core/ui/csvExporter/csvExporter.controller.js +1 -1
  45. package/core/ui/directives/alarmList.js +1 -1
  46. package/core/ui/directives/map.js +1 -1
  47. package/core/ui/directives/map2.js +1 -1
  48. package/core/ui/operations/operations-timeline.html +24 -10
  49. package/core/ui/properties/lastDeviceMessage.computedProperty.js +1 -1
  50. package/core/ui/schemaForm/schemaForm.component.js +1 -1
  51. package/core/ui/services/deviceListColumns.js +1 -1
  52. package/core/ui/services/measurementsReport.js +1 -1
  53. package/core/ui/user/editUser.directive.html +2 -0
  54. package/core/ui/views/eventList.html +3 -1
  55. package/dataBroker/connectors/connectors.html +1 -0
  56. package/dataBroker/connectorsAlarms/connectorAlarms.component.js +1 -1
  57. package/device-protocol-actility/actility-device.provider.js +1 -1
  58. package/device-protocol-canbus/canbus-device.provider.js +1 -1
  59. package/device-protocol-canopen/canopen-device.provider.js +1 -1
  60. package/device-protocol-deviceDatabase4/device-type-protocol-base.provider.js +1 -1
  61. package/device-protocol-lora/lora-device.provider.js +1 -1
  62. package/device-protocol-lpwan/lpwan-device.provider.js +1 -1
  63. package/device-protocol-modbus/modbus-device.provider.js +1 -1
  64. package/device-protocol-opcua/opcua-device.provider.js +1 -1
  65. package/device-protocol-profibus/profibus-device.provider.js +1 -1
  66. package/device-protocol-sigfox/sigfox-device.provider.js +1 -1
  67. package/device-protocol-snmp/snmp-device.provider.js +1 -1
  68. package/device-protocols/device-protocol-import-button.component.js +1 -1
  69. package/deviceDatabase4/detail/device-type-detail.component.js +1 -1
  70. package/deviceDatabase4/device-database.service.js +1 -1
  71. package/deviceDatabase4/device-type-list.component.js +1 -1
  72. package/deviceDatabase4/modals/configure-discrete-io.component.js +1 -1
  73. package/deviceDatabase4/modals/configure-register.component.js +1 -1
  74. package/deviceDatabase4/modals/import-device-type.component.js +1 -1
  75. package/deviceDatabase4/unique.directive.js +1 -1
  76. package/deviceDetail/cumulocity.json +0 -1
  77. package/deviceSelector/controllers/deviceSelectorComboCtrl.js +1 -1
  78. package/deviceStatusWidget/deviceStatus.component.js +1 -1
  79. package/deviceStatusWidget/ownerStatus.component.js +1 -1
  80. package/devicemanagement-availability/controllers/availability.js +1 -1
  81. package/devicemanagement-availability/views/detail.html +2 -2
  82. package/devicemanagement-eventList/controllers/eventList.js +1 -1
  83. package/enterpriseEdition/customBranding/brandingConfigurationUi.provider.js +1 -1
  84. package/enterpriseEdition/sslCertificate/manageCertificateForm.html +1 -1
  85. package/eventList/eventList.controller.js +1 -1
  86. package/generic-ui/generic-ui-inventory-property.component.js +1 -1
  87. package/groupsHierarchy/controllers/groupsListCtrl.js +1 -1
  88. package/kpi/controllers/pieChart.js +1 -1
  89. package/measurements/fragmentChart/fragmentChart.component.js +1 -1
  90. package/modbusConfiguration4/fieldbus-config.component.js +1 -1
  91. package/modbusConfiguration4/fieldbus-device-list.component.js +1 -1
  92. package/modbusWidget4/modbus-widget.service.js +1 -1
  93. package/modbusWidget4/widget-config.component.js +1 -1
  94. package/modbusWidget4/widget.component.js +1 -1
  95. package/package.json +5 -5
  96. package/remoteAccess/remoteAccess.service.js +1 -1
  97. package/remoteAccess/remoteAccessSettings/remoteAccessSettings.component.js +1 -1
  98. package/roles/detail/roleDetailInventory.html +33 -14
  99. package/scada/mapping.directive.js +1 -1
  100. package/simulators/simulatorsUi.provider.js +1 -1
  101. package/smartRestEditor/views/list.html +1 -0
  102. package/smartRules/directives/smartRuleParamInputKpi.js +1 -1
  103. package/smartRules/list/smartRulesList.html +25 -0
  104. package/smartRules/views/edit.html +95 -27
  105. package/smartRules/views/list.html +39 -5
  106. package/tenantStatistics/tenant-statistics.component.js +1 -1
  107. package/userRoles/inventoryRolesTab/inventoryRolesTab.component.js +1 -1
  108. package/users/userListView/userListView.component.js +1 -1
  109. package/users/userListView/userListView.html +1 -0
  110. package/users/userRemovalModal/userRemovalModal.component.html +1 -0
  111. package/alarmAssets/cumulocity.json +0 -14
  112. package/alarmAssets/img/all-critical-alarms-widget-pr.png +0 -0
  113. package/alarmAssets/index.js +0 -1
  114. package/alarmAssets/views/component.html +0 -8
  115. package/alarms/cumulocity.json +0 -21
  116. package/alarms/img/alarm-list-widget-pr.png +0 -0
  117. package/alarms/index.js +0 -1
  118. package/alarms/index.mock.js +0 -1
  119. package/alarms/severity.directive.js +0 -1
  120. package/alarms/severity.html +0 -13
  121. package/alarms/styles.css +0 -3
  122. package/alarms/widget-config.controller.js +0 -1
  123. package/alarms/widget-config.html +0 -116
  124. package/alarms/widget.config.js +0 -1
  125. package/alarms/widget.controller.js +0 -1
  126. package/alarms/widget.html +0 -15
  127. package/alarms/widget.module.js +0 -1
  128. package/alarms/widget.module.mock.js +0 -1
  129. package/cockpit-alarmRecent/cumulocity.json +0 -18
  130. package/cockpit-alarmRecent/img/recent-alarms-widget-pr.png +0 -0
  131. package/cockpit-alarmRecent/index.js +0 -1
  132. package/cockpit-alarmRecent/views/component.html +0 -7
  133. package/devicemanagement-aclManagement/controllers/aclManagementCtrl.js +0 -1
  134. package/devicemanagement-aclManagement/cumulocity.json +0 -21
  135. package/devicemanagement-aclManagement/index.js +0 -1
  136. package/devicemanagement-aclManagement/views/index.html +0 -207
  137. package/devicemanagement-alarmList/controllers/alarmList.js +0 -1
  138. package/devicemanagement-alarmList/cumulocity.json +0 -24
  139. package/devicemanagement-alarmList/gallery/alarms.png +0 -0
  140. package/devicemanagement-alarmList/index.js +0 -1
  141. package/devicemanagement-alarmList/views/index.html +0 -155
  142. package/devicemanagement-tracking/controllers/config.js +0 -1
  143. package/devicemanagement-tracking/controllers/tracking.js +0 -1
  144. package/devicemanagement-tracking/cumulocity.json +0 -19
  145. package/devicemanagement-tracking/index.js +0 -1
  146. package/devicemanagement-tracking/views/index.html +0 -103
  147. package/devicemanagement-vendMeDeviceControl/controllers/vendMeDeviceControl.js +0 -1
  148. package/devicemanagement-vendMeDeviceControl/cumulocity.json +0 -18
  149. package/devicemanagement-vendMeDeviceControl/index.js +0 -1
  150. package/devicemanagement-vendMeDeviceControl/views/index.html +0 -229
@@ -101,22 +101,28 @@
101
101
  class="card-group"
102
102
  ng-class="vm.listClass"
103
103
  >
104
- <div class="smart-rules-list-head page-sticky-header p-t-8">
104
+ <div class="smart-rules-list-head page-sticky-header card-block">
105
105
  <label
106
- class="smart-rule-group text-center p-t-4"
106
+ class="smart-rule-group"
107
107
  translate
108
108
  >
109
109
  Status
110
110
  </label>
111
111
  <label
112
- class="smart-rule-children p-t-4"
112
+ class="smart-rule-group text-center p-l-0 p-r-4"
113
+ translate
114
+ >
115
+ Type
116
+ </label>
117
+ <label
118
+ class="smart-rule-children p-l-0"
113
119
  ng-if="children.length > 0"
114
120
  translate
115
121
  >
116
122
  Children
117
123
  </label>
118
124
  <label
119
- class="smart-rule-description p-t-4"
125
+ class="smart-rule-description p-l-0"
120
126
  translate
121
127
  >
122
128
  Smart rule
@@ -206,7 +212,10 @@
206
212
  </div>
207
213
 
208
214
  <div class="card-header">
209
- <label class="text-center text-muted m-b-16" data-cy="smartRulesList--card-header">
215
+ <label
216
+ class="text-center text-muted m-b-16"
217
+ data-cy="smartRulesList--card-header"
218
+ >
210
219
  <i c8y-icon="c8y-smart-rules"></i>
211
220
  {{ getRuleCardTitle(rule) | translate }}
212
221
  </label>
@@ -286,6 +295,31 @@
286
295
  </div>
287
296
  </div>
288
297
 
298
+ <div class="smart-rule-state">
299
+ <div
300
+ class="list-icon"
301
+ ng-if="rule.type !== 'c8y_SmartRule'"
302
+ >
303
+ <i
304
+ c8y-icon="user-account"
305
+ uib-tooltip="{{ 'Local smart rule' | translate }}"
306
+ tooltip-popup-delay="500"
307
+ tooltip-append-to-body="true"
308
+ ></i>
309
+ </div>
310
+ <div
311
+ class="list-icon"
312
+ ng-if="rule.type === 'c8y_SmartRule'"
313
+ >
314
+ <i
315
+ c8y-icon="people"
316
+ uib-tooltip="{{ 'Global smart rule' | translate }}"
317
+ tooltip-popup-delay="500"
318
+ tooltip-append-to-body="true"
319
+ ></i>
320
+ </div>
321
+ </div>
322
+
289
323
  <div
290
324
  class="smart-rule-children"
291
325
  ng-if="children.length > 0"
@@ -1 +1 @@
1
- "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ownKeys(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach(function(t){_defineProperty(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function _defineProperty(t,e,n){return(e=_toPropertyKey(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function _toPropertyKey(t){t=_toPrimitive(t,"string");return"symbol"==_typeof(t)?t:String(t)}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0===n)return("string"===e?String:Number)(t);n=n.call(t,e||"default");if("object"!=_typeof(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}!function(){function t(t,e,n,o,r,i,u,a,s,c,l,m,f,g,p){var d=this,y=l.another(l.paths.Tenants),C=c.stringToDate(i.fromThisMonthStartFilter().dateFrom),l=g("No tenants to display.");function h(){d.refreshLoading=!0,a.isCurrentUserTopTenant().then(function(t){d.isTopTenant=t}).then(b).then(S).then(v).then(j).then(D).then(w).then(function(){d.refreshLoading=!1})}function b(){d.storageLimitFeatureEnabled=i.appOption("storageLimitationFeatureEnabled")}function S(){d.dateFrom=c.stringToDate(n.dateFrom)||C,d.dateTo=c.stringToDate(n.dateTo)}function v(){return u.list(T()).then(P)}function T(){return{dateFrom:c.dateToStringWithTimeZone(d.dateFrom),dateTo:void 0!==d.dateTo?c.dateToStringWithTimeZone(moment(d.dateTo).endOf("day")):void 0}}function P(t){d.statistics=_.map(t,function(t){return _objectSpread(_objectSpread({},t),{},{storageQuota:O(function(t){var e=t.storageLimitPerDevice,t=t.deviceWithChildrenCount;e&&(e*=t||1);return e}(t)),storageSize:O(t.storageSize),peakStorageSize:O(t.peakStorageSize)})})}function O(t){return!_.isUndefined(t)&&Number((t/Math.pow(2,20)).toFixed(2))}function j(){return y.list().then(function(t){return _.filter(t,{id:"c8ySchema!!customProperties"})}).then(function(t){return y.getSchema(t)}).then(function(t){return _.get(t,"properties.customProperties.properties",{})}).then(function(t){return _.map(t,function(t,e){return{title:t.title,key:e,schema:t}})}).then(function(t){d.customProperties=_.sortBy(t,"title")})}function D(){d.columns=_([m.getTenantNameColumn(),m.getTenantIdColumn(),m.getTenantDomainColumn(),m.getApiRequestsColumn(),m.getDeviceApiRequestsColumn(),d.storageLimitFeatureEnabled?m.getStorageQuotaColumn():null,m.getStorageSizeColumn(),m.getPeakStorageSizeColumn(),m.getRootDevicesColumn(),m.getPeakRootDevicesColumn(),m.getDevicesColumn(),m.getPeakDevicesColumn(),m.getDeviceEndpointCountColumn(),m.getSubscribedApplicationsColumn(),m.getCreationTimeColumn(),m.getAlarmsCreatedCountColumn(),m.getAlarmsUpdatedCountColumn(),m.getInventoriesCreatedCountColumn(),m.getInventoriesUpdatedCountColumn(),m.getEventsCreatedCountColumn(),m.getEventsUpdatedCountColumn(),m.getMeasurementsCreatedCountColumn(),m.getTotalInboundTransferColumn(),m.getCpuUsageColumn(),m.getMemoryUsageColumn(),d.isTopTenant?m.getParentTenantIdColumn():null,_.map(d.customProperties,function(t){return m.getCustomPropertyColumn(t)})]).flattenDeep().compact().orderBy([function(t){return t.priority||0}],["desc"]).value(),d.columnsConfig={}}function w(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:d.columnsConfig;d.columnsConfig=t,d.filteredSortedStatistics=f.filterSort(d.statistics,d.columns,d.columnsConfig)}_.assign(d,{noItemsMessage:l,getSubtitle:function(){var t=_.get(d.statistics,"length"),e=p.getPlural(t,"1 tenant","{{$count}} tenants",{});return _.isNumber(t)?e:""},$onInit:h,onColumnsConfigChanged:function(t){w(t)},getCsvHeaders:function(){return _(d.columns).map(function(t){return _.result(t,"getCsvHeaders")||_.get(t,"header.text")||_.get(t,"header")}).flatten().value()},getCsvData:function(){return _.map(d.filteredSortedStatistics,function(e){return _(d.columns).map(function(t){return t.getCsvValues(e)}).flatten().value()})},detail:function(t){o.path("/tenants/".concat(t.tenantId))},filter:function(){_.isEqual(T().dateFrom,C)&&_.isUndefined(T().dateTo)||o.search(T())},clearFilter:function(){d.onColumnsConfigChanged({}),o.search({})},refresh:function(){h()}})}t.$inject=["$scope","$q","$routeParams","$location","$filter","c8yBase","c8yStatistics","c8yTenant","c8yTitle","c8yUtil","c8yPropertiesLibrary","c8yTenantStatisticsColumns","c8yFilteringSortingCollections","gettext","gettextCatalog"],angular.module("c8y.tenantStatistics").component("c8yTenantStatistics",{templateUrl:":::PLUGIN_PATH:::/tenant-statistics.html",controller:t,controllerAs:"vm"})}();
1
+ "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ownKeys(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach(function(t){_defineProperty(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function _defineProperty(t,e,n){return(e=_toPropertyKey(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function _toPropertyKey(t){t=_toPrimitive(t,"string");return"symbol"==_typeof(t)?t:t+""}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0===n)return("string"===e?String:Number)(t);n=n.call(t,e||"default");if("object"!=_typeof(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}!function(){function t(t,e,n,o,r,i,u,a,s,c,l,m,f,g,p){var d=this,y=l.another(l.paths.Tenants),C=c.stringToDate(i.fromThisMonthStartFilter().dateFrom),l=g("No tenants to display.");function h(){d.refreshLoading=!0,a.isCurrentUserTopTenant().then(function(t){d.isTopTenant=t}).then(b).then(S).then(v).then(j).then(D).then(w).then(function(){d.refreshLoading=!1})}function b(){d.storageLimitFeatureEnabled=i.appOption("storageLimitationFeatureEnabled")}function S(){d.dateFrom=c.stringToDate(n.dateFrom)||C,d.dateTo=c.stringToDate(n.dateTo)}function v(){return u.list(T()).then(P)}function T(){return{dateFrom:c.dateToStringWithTimeZone(d.dateFrom),dateTo:void 0!==d.dateTo?c.dateToStringWithTimeZone(moment(d.dateTo).endOf("day")):void 0}}function P(t){d.statistics=_.map(t,function(t){return _objectSpread(_objectSpread({},t),{},{storageQuota:O(function(t){var e=t.storageLimitPerDevice,t=t.deviceWithChildrenCount;e&&(e*=t||1);return e}(t)),storageSize:O(t.storageSize),peakStorageSize:O(t.peakStorageSize)})})}function O(t){return!_.isUndefined(t)&&Number((t/Math.pow(2,20)).toFixed(2))}function j(){return y.list().then(function(t){return _.filter(t,{id:"c8ySchema!!customProperties"})}).then(function(t){return y.getSchema(t)}).then(function(t){return _.get(t,"properties.customProperties.properties",{})}).then(function(t){return _.map(t,function(t,e){return{title:t.title,key:e,schema:t}})}).then(function(t){d.customProperties=_.sortBy(t,"title")})}function D(){d.columns=_([m.getTenantNameColumn(),m.getTenantIdColumn(),m.getTenantDomainColumn(),m.getApiRequestsColumn(),m.getDeviceApiRequestsColumn(),d.storageLimitFeatureEnabled?m.getStorageQuotaColumn():null,m.getStorageSizeColumn(),m.getPeakStorageSizeColumn(),m.getRootDevicesColumn(),m.getPeakRootDevicesColumn(),m.getDevicesColumn(),m.getPeakDevicesColumn(),m.getDeviceEndpointCountColumn(),m.getSubscribedApplicationsColumn(),m.getCreationTimeColumn(),m.getAlarmsCreatedCountColumn(),m.getAlarmsUpdatedCountColumn(),m.getInventoriesCreatedCountColumn(),m.getInventoriesUpdatedCountColumn(),m.getEventsCreatedCountColumn(),m.getEventsUpdatedCountColumn(),m.getMeasurementsCreatedCountColumn(),m.getTotalInboundTransferColumn(),m.getCpuUsageColumn(),m.getMemoryUsageColumn(),d.isTopTenant?m.getParentTenantIdColumn():null,_.map(d.customProperties,function(t){return m.getCustomPropertyColumn(t)})]).flattenDeep().compact().orderBy([function(t){return t.priority||0}],["desc"]).value(),d.columnsConfig={}}function w(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:d.columnsConfig;d.columnsConfig=t,d.filteredSortedStatistics=f.filterSort(d.statistics,d.columns,d.columnsConfig)}_.assign(d,{noItemsMessage:l,getSubtitle:function(){var t=_.get(d.statistics,"length"),e=p.getPlural(t,"1 tenant","{{$count}} tenants",{});return _.isNumber(t)?e:""},$onInit:h,onColumnsConfigChanged:function(t){w(t)},getCsvHeaders:function(){return _(d.columns).map(function(t){return _.result(t,"getCsvHeaders")||_.get(t,"header.text")||_.get(t,"header")}).flatten().value()},getCsvData:function(){return _.map(d.filteredSortedStatistics,function(e){return _(d.columns).map(function(t){return t.getCsvValues(e)}).flatten().value()})},detail:function(t){o.path("/tenants/".concat(t.tenantId))},filter:function(){_.isEqual(T().dateFrom,C)&&_.isUndefined(T().dateTo)||o.search(T())},clearFilter:function(){d.onColumnsConfigChanged({}),o.search({})},refresh:function(){h()}})}t.$inject=["$scope","$q","$routeParams","$location","$filter","c8yBase","c8yStatistics","c8yTenant","c8yTitle","c8yUtil","c8yPropertiesLibrary","c8yTenantStatisticsColumns","c8yFilteringSortingCollections","gettext","gettextCatalog"],angular.module("c8y.tenantStatistics").component("c8yTenantStatistics",{templateUrl:":::PLUGIN_PATH:::/tenant-statistics.html",controller:t,controllerAs:"vm"})}();
@@ -1 +1 @@
1
- "use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ownKeys(t,e){var r,n=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)),n}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _defineProperty(e,t,r){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"==_typeof(e)?e:String(e)}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);r=r.call(e,t||"default");if("object"!=_typeof(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var r;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(r="Object"===(r=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,s,a=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(a.push(n.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(c)throw o}}return a}}function _arrayWithHoles(e){if(Array.isArray(e))return e}!function(){function e(e,t,r,n,o,i,s,a,l,c){var u=this,y=c("You cannot edit inventory roles for user with external origin, since it is managed via your authorization server.");function f(){t.listInventoryRoles(u.userId).then(r.getResData).then(function(e){u.assignedRoles=_.keyBy(e.inventoryAssignments,"managedObject")}),t.detail(u.userId).then(r.getResData).then(function(e){u.user=e,u.user.owner?t.listInventoryRoles(u.user.owner).then(r.getResData).then(function(e){u.ownerAssignedRoles=_.keyBy(e.inventoryAssignments,"managedObject"),_.isEmpty(u.ownerAssignedRoles)&&(u.displayNoOwnerRolesAlert=!0),u.failedToFetchOwnerInventoryRoles=!1}).catch(function(){u.failedToFetchOwnerInventoryRoles=!0}):u.failedToFetchOwnerInventoryRoles=!1})}function d(){f(),a.success(l.getPlural(p(),"Inventory role updated","Inventory roles updated",{}))}function p(){return _.filter(u.assignedRoles,"isModified").length}function g(e){var t="replace"===e.process,e=e.roles,r=_.map(u.assignedRoles);return n.copyUserRoles(e,r,u.userId,t).then(f).then(o.successUserRolesCopy)}_.assign(u,{$onInit:function(){t.detail(u.userId).then(r.getResData).then(function(e){return t.hasExternalOrigin(e)?s.isSsoClearingUserRolesOnEveryLogin().then(function(e){return u.disableEditForExternalUsers=e,u.disableEditForExternalUsers&&a.warning(y),u.disableEditForExternalUsers}):u.disableEditForExternalUsers=!1})},$onChange:function(e){e.user&&f()},onChangeRoles:function(e){var t=e.roles,e=e.managedObjectId;u.assignedRoles[e]=u.assignedRoles[e]||{},_.assign(u.assignedRoles[e],{managedObject:e,roles:t,isModified:!0}),u.assignedRoles=_objectSpread({},u.assignedRoles)},onSaveInventoryRoles:function(){n.onSaveInventoryRoles(u.userId,u.assignedRoles).then(d)},copyRoles:function(){o.copyFromUserDialog(u.userId).then(g)},loadAssignedRoles:f,isUnchanged:function(){return 0===p()},pageSize:20,scrollToTop:function(){var e=_slicedToArray(angular.element(document.querySelector("#inventory-roles-container")),1)[0];e&&e.scrollTo(0,0)},helpLink:i.getUserGuideLink(_.get(o.STRINGS,"LINKS.ROLES_INVENTORY")),stopEventPropagation:function(e){e.stopPropagation()},displayNoOwnerRolesAlert:!1,failedToFetchOwnerInventoryRoles:null,disableEditForExternalUsers:!1}),f()}e.$inject=["$q","c8yUser","c8yBase","c8yUserInventoryRoles","c8yUserRolesUi","c8yDocs","c8yLoginOptions","c8yAlert","gettextCatalog","gettext"],angular.module("c8y.userRoles").component("c8yUserInventoryRolesTab",{templateUrl:":::PLUGIN_PATH:::/inventoryRolesTab/inventoryRolesTab.html",controllerAs:"vm",controller:e,bindings:{userId:"<"}})}();
1
+ "use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ownKeys(t,e){var r,n=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)),n}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _defineProperty(e,t,r){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"==_typeof(e)?e:e+""}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);r=r.call(e,t||"default");if("object"!=_typeof(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var r;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(r="Object"===(r=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,s,a=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(a.push(n.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(c)throw o}}return a}}function _arrayWithHoles(e){if(Array.isArray(e))return e}!function(){function e(e,t,r,n,o,i,s,a,l,c){var u=this,y=c("You cannot edit inventory roles for user with external origin, since it is managed via your authorization server.");function f(){t.listInventoryRoles(u.userId).then(r.getResData).then(function(e){u.assignedRoles=_.keyBy(e.inventoryAssignments,"managedObject")}),t.detail(u.userId).then(r.getResData).then(function(e){u.user=e,u.user.owner?t.listInventoryRoles(u.user.owner).then(r.getResData).then(function(e){u.ownerAssignedRoles=_.keyBy(e.inventoryAssignments,"managedObject"),_.isEmpty(u.ownerAssignedRoles)&&(u.displayNoOwnerRolesAlert=!0),u.failedToFetchOwnerInventoryRoles=!1}).catch(function(){u.failedToFetchOwnerInventoryRoles=!0}):u.failedToFetchOwnerInventoryRoles=!1})}function d(){f(),a.success(l.getPlural(p(),"Inventory role updated","Inventory roles updated",{}))}function p(){return _.filter(u.assignedRoles,"isModified").length}function g(e){var t="replace"===e.process,e=e.roles,r=_.map(u.assignedRoles);return n.copyUserRoles(e,r,u.userId,t).then(f).then(o.successUserRolesCopy)}_.assign(u,{$onInit:function(){t.detail(u.userId).then(r.getResData).then(function(e){return t.hasExternalOrigin(e)?s.isSsoClearingUserRolesOnEveryLogin().then(function(e){return u.disableEditForExternalUsers=e,u.disableEditForExternalUsers&&a.warning(y),u.disableEditForExternalUsers}):u.disableEditForExternalUsers=!1})},$onChange:function(e){e.user&&f()},onChangeRoles:function(e){var t=e.roles,e=e.managedObjectId;u.assignedRoles[e]=u.assignedRoles[e]||{},_.assign(u.assignedRoles[e],{managedObject:e,roles:t,isModified:!0}),u.assignedRoles=_objectSpread({},u.assignedRoles)},onSaveInventoryRoles:function(){n.onSaveInventoryRoles(u.userId,u.assignedRoles).then(d)},copyRoles:function(){o.copyFromUserDialog(u.userId).then(g)},loadAssignedRoles:f,isUnchanged:function(){return 0===p()},pageSize:20,scrollToTop:function(){var e=_slicedToArray(angular.element(document.querySelector("#inventory-roles-container")),1)[0];e&&e.scrollTo(0,0)},helpLink:i.getUserGuideLink(_.get(o.STRINGS,"LINKS.ROLES_INVENTORY")),stopEventPropagation:function(e){e.stopPropagation()},displayNoOwnerRolesAlert:!1,failedToFetchOwnerInventoryRoles:null,disableEditForExternalUsers:!1}),f()}e.$inject=["$q","c8yUser","c8yBase","c8yUserInventoryRoles","c8yUserRolesUi","c8yDocs","c8yLoginOptions","c8yAlert","gettextCatalog","gettext"],angular.module("c8y.userRoles").component("c8yUserInventoryRolesTab",{templateUrl:":::PLUGIN_PATH:::/inventoryRolesTab/inventoryRolesTab.html",controllerAs:"vm",controller:e,bindings:{userId:"<"}})}();
@@ -1 +1 @@
1
- "use strict";!function(){function e(s,n,o,r,t,e,i,u,a,l,c){var f,g=this;function d(e){return f=e?[]:g.users,g.users=[],o.list((e=_.get(g.filters,"text"),n=(n=_.map(_.get(g.filters,"globalRoles"),"id")).length?n.join(","):void 0,{withSubusersCount:!0,username:e,groups:n,withApps:!1,withGroups:!1,withRoles:!1,onlyRoots:_.isEmpty(e)})).then(h);var n}function h(e){p(e),g.users.paging=e.paging}function p(e){var n=g.users,t=n.paging,r=o.getTfaStrategy();_.forEach(e,function(t){var e=_.find(f,{id:t.id});t.twoFactorAuthenticationEnabled||s.all({enforced:o.isTfaActive(t),strategy:r}).then(function(e){var n=e.enforced,e=e.strategy;"SMS"!==e&&e||n&&(t.twoFactorAuthenticationEnabled=n)}),e&&(t._expanded=e._expanded),_.some(n,{id:t.id})||(n=n.concat([t]))}),n.paging=t,g.users=n}function E(e){g.globalRoles=e}function R(e){return e._globalRoles=_.map(_.get(e,"groups.references"),function(e){return _.find(g.globalRoles,{id:e.group.id})}),e}function A(){o.current().then(function(e){g.canAddUser=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")||g.FEATURE_USER_HIERARCHY&&o.hasRole(e,"ROLE_USER_MANAGEMENT_CREATE"),g.canRevokeTokens=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")})}function U(e){return f=g.users,o.listAll({owner:e.id,withSubusersCount:!0}).then(p)}_.assign(g,{ROUTE_NEW_USER:t.ROUTE_NEW_USER,$onInit:function(){s.all([d(),e.global.list({pageSize:1e4}).then(E)]).then(function(){return _.forEach(g.users,R)}),t.userHierarchyActive().then(function(e){g.FEATURE_USER_HIERARCHY=e}).then(A)},loadMore:function(){g.users.paging.loading=!0,g.users.paging.next().then(h).finally(function(){g.users.paging.loading=!1})},loadUsers:d,loadSubusers:U,changeUser:function(s,e){var n="changeGlobalRoles"===e.name;return t.warnAboutUserLogOutIfNeeded(s,{rolesChanged:n}).then(function(){return t.changeUser(s,e)}).then(function(e){var n,t,r=s;return(e=e||{}).removeUser&&(g.users=_.reject(g.users,{id:r.id}),t=_.get(r,"_owner.id"),g.users=_.map(g.users,function(e){return t&&t===e.id?(e.subusersCount--,angular.copy(e)):e})),e.refresh||e.removeUser||(n=o.list({username:r.id,withSubusersCount:!0}).then(_.first).then(function(t){var r=t.id,e=_.map(g.users,function(e){var n=r===e.id;return n&&(t._expanded=e._expanded),n?R(t):e});_.assign(e,_.pick(g.users,["statistics","paging"])),g.users=e})),n=e.refresh?d():n})},showExpandCollapse:function(){return g.FEATURE_USER_HIERARCHY&&_.some(g.users,function(e){return 0<e.subusersCount||_.get(e,"_owns.length")})},collapseAll:function(){t.collapseAll(g.users)},expandAll:function(){t.expandAll(g.users),s.all(_.map(g.users,function(e){return e.subusersCount>e._owns.length?U(e).then(function(){return!0}):s.resolve(!1)})).then(function(e){_.some(e)&&n(g.expandAll)})},filters:{},applyFilters:function(){d(!0)},clearFilters:function(){g.filters={},d(!0)},isAnyFilterSelected:function(){return _.some(g.filters,_.identity)},refresh:function(){return d(!0).then(function(){return _.forEach(g.users,R)})},revokeTokens:function(){function e(){return o.current().then(function(e){return t(e)}).then(function(e){return e?r.logoutAndReloadPage():s.resolve()})}var n=c.get("c8yAuthBridgeService").getPreferredLoginOption(),t=function(e){return!(!o.hasExternalOrigin(e)&&"BASIC"===n.type)};i({title:l("Confirm log out all users?"),body:l('You are about to log out all users currently logged with "OAI-Secure" or "Single sign-on redirect". The JWT tokens retrieved by all devices in the current tenant will also be invalidated. Do you want to proceed?'),status:"warning",size:"sm",labels:{ok:l("Log out all users and invalidate tokens")}}).then(function(){return o.revokeTokens()}).then(e).then(function(){return u.success(l("User tokens revoked."))}).catch(function(e){e&&u.danger(a.getResErrorMessage(e))})}})}e.$inject=["$q","$timeout","c8yUser","c8yUserUtil","c8yUsersUi","c8yRoles","c8yModal","c8yAlert","c8yBase","gettext","$injector"],angular.module("c8y.users").component("c8yUserListView",{templateUrl:":::PLUGIN_PATH:::/userListView/userListView.html",controller:e,controllerAs:"vm"})}();
1
+ "use strict";!function(){function e(s,n,o,r,t,e,i,u,a,l,c,g){var f,d=this;function h(e){return f=e?[]:d.users,d.users=[],o.list((e=_.get(d.filters,"text"),n=(n=_.map(_.get(d.filters,"globalRoles"),"id")).length?n.join(","):void 0,{withSubusersCount:!0,username:e,groups:n,withApps:!1,withGroups:!1,withRoles:!1,onlyRoots:_.isEmpty(e)})).then(p);var n}function p(e){E(e),d.users.paging=e.paging}function E(e){var n=d.users,t=n.paging,r=o.getTfaStrategy();_.forEach(e,function(t){var e=_.find(f,{id:t.id});t.twoFactorAuthenticationEnabled||s.all({enforced:o.isTfaActive(t),strategy:r}).then(function(e){var n=e.enforced,e=e.strategy;"SMS"!==e&&e||n&&(t.twoFactorAuthenticationEnabled=n)}),e&&(t._expanded=e._expanded),_.some(n,{id:t.id})||(n=n.concat([t]))}),n.paging=t,d.users=n}function R(e){d.globalRoles=e}function A(e){return e._globalRoles=_.map(_.get(e,"groups.references"),function(e){return _.find(d.globalRoles,{id:e.group.id})}),e}function U(){o.current().then(function(e){d.canAddUser=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")||d.FEATURE_USER_HIERARCHY&&o.hasRole(e,"ROLE_USER_MANAGEMENT_CREATE"),d.canRevokeTokens=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")})}function v(e){return f=d.users,o.listAll({owner:e.id,withSubusersCount:!0}).then(E)}_.assign(d,{ROUTE_NEW_USER:t.ROUTE_NEW_USER,$onInit:function(){s.all([h(),e.global.list({pageSize:1e4}).then(R)]).then(function(){return _.forEach(d.users,A)}),t.userHierarchyActive().then(function(e){d.FEATURE_USER_HIERARCHY=e}).then(U)},loadMore:function(){d.users.paging.loading=!0,d.users.paging.next().then(p).finally(function(){d.users.paging.loading=!1})},loadUsers:h,loadSubusers:v,changeUser:function(s,e){var n="changeGlobalRoles"===e.name;return t.warnAboutUserLogOutIfNeeded(s,{rolesChanged:n}).then(function(){return t.changeUser(s,e)}).then(function(e){var n,t,r=s;return(e=e||{}).removeUser&&(d.users=_.reject(d.users,{id:r.id}),t=_.get(r,"_owner.id"),d.users=_.map(d.users,function(e){return t&&t===e.id?(e.subusersCount--,angular.copy(e)):e})),e.refresh||e.removeUser||(n=o.list({username:r.id,withSubusersCount:!0}).then(_.first).then(function(t){var r=t.id,e=_.map(d.users,function(e){var n=r===e.id;return n&&(t._expanded=e._expanded),n?A(t):e});_.assign(e,_.pick(d.users,["statistics","paging"])),d.users=e})),n=e.refresh?h():n})},showExpandCollapse:function(){return d.FEATURE_USER_HIERARCHY&&_.some(d.users,function(e){return 0<e.subusersCount||_.get(e,"_owns.length")})},collapseAll:function(){t.collapseAll(d.users)},expandAll:function(){t.expandAll(d.users),s.all(_.map(d.users,function(e){return e.subusersCount>e._owns.length?v(e).then(function(){return!0}):s.resolve(!1)})).then(function(e){_.some(e)&&n(d.expandAll)})},filters:{},applyFilters:function(){h(!0)},clearFilters:function(){d.filters={},h(!0)},isAnyFilterSelected:function(){return _.some(d.filters,_.identity)},refresh:function(){return h(!0).then(function(){return _.forEach(d.users,A)})},revokeTokens:function(){function e(){return o.current().then(function(e){return t(e)}).then(function(e){return e?r.logoutAndReloadPage():s.resolve()})}var n=g.get("c8yAuthBridgeService").getPreferredLoginOption(),t=function(e){return!(!o.hasExternalOrigin(e)&&"BASIC"===n.type)};i({title:l("Confirm log out all users?"),body:c.getString('You are about to log out all users currently logged with "OAI-Secure" or "Single sign-on redirect". The JWT tokens retrieved by all devices in the current tenant will also be invalidated. Do you want to proceed?'),status:"warning",size:"sm",labels:{ok:l("Confirm")}}).then(function(){return o.revokeTokens()}).then(e).then(function(){return u.success(l("Logged out all users and invalidated tokens."))}).catch(function(e){e&&u.danger(a.getResErrorMessage(e))})}})}e.$inject=["$q","$timeout","c8yUser","c8yUserUtil","c8yUsersUi","c8yRoles","c8yModal","c8yAlert","c8yBase","gettext","gettextCatalog","$injector"],angular.module("c8y.users").component("c8yUserListView",{templateUrl:":::PLUGIN_PATH:::/userListView/userListView.html",controller:e,controllerAs:"vm"})}();
@@ -47,6 +47,7 @@
47
47
  items-selected="vm.filters.globalRoles"
48
48
  on-apply="vm.filters.globalRoles = items"
49
49
  text-apply="{{ 'Done' | translate }}"
50
+ data-cy="c8y-users--filter-user-by-roles"
50
51
  text-placeholder="{{ 'Filter by global roles' | translate }}"
51
52
  ></c8y-item-selector>
52
53
  </div>
@@ -90,6 +90,7 @@
90
90
  type="button"
91
91
  title="{{ 'Delete' | translate }}"
92
92
  ng-disabled="!vm.canConfirm()"
93
+ data-cy="c8y-users--delete-user-button"
93
94
  ng-click="vm.confirm()"
94
95
  >
95
96
  {{ 'Delete' | translate }}
@@ -1,14 +0,0 @@
1
- {
2
- "name": "Alarm for assets",
3
- "ngModules": [
4
- "c8y.cockpit.alarmassets"
5
- ],
6
- "category": "Device",
7
- "description": "Display the active alarms for each asset",
8
- "js": [
9
- "index.js"
10
- ],
11
- "copy": [
12
- "img/*"
13
- ]
14
- }
@@ -1 +0,0 @@
1
- "use strict";angular.module("c8y.cockpit.alarmassets",[]).config(["c8yComponentsProvider","gettext",function(a,e){a.add({name:"Asset Alarms",nameDisplay:e("All critical alarms"),description:e("Displays active critical alarms from all devices"),templateUrl:":::PLUGIN_PATH:::/views/component.html",previewImage:":::PLUGIN_PATH:::/img/all-critical-alarms-widget-pr.png",options:{noDeviceTarget:!0}})}]);
@@ -1,8 +0,0 @@
1
- <c8y-alarm-list
2
- filter="{status: {ACTIVE: true}}"
3
- active-severities="{CRITICAL: true}"
4
- realtime="true"
5
- hide-header-actions="true"
6
- paginate="true"
7
- >
8
- </c8y-alarm-list>
@@ -1,21 +0,0 @@
1
- {
2
- "name": "Alarms widget",
3
- "description": "A configurable component that display list of alarms depending on the type, status or device target",
4
- "category": "",
5
- "ngModules": [
6
- "c8y.alarms"
7
- ],
8
- "js": [
9
- "widget.module.js",
10
- "widget.config.js",
11
- "widget.controller.js",
12
- "widget-config.controller.js",
13
- "severity.directive.js"
14
- ],
15
- "copy": [
16
- "img/*"
17
- ],
18
- "css": [
19
- "styles.css"
20
- ]
21
- }
Binary file
package/alarms/index.js DELETED
@@ -1 +0,0 @@
1
- "use strict";angular.module("c8y.alarms",[]).config(["c8yComponentsProvider","gettext",function(e,a){e.add({name:"Alarm list",nameDisplay:a("Alarm list"),description:a("Displays a list of alarms filtered by object, severity and status"),templateUrl:":::PLUGIN_PATH:::/views/alarms.html",configTemplateUrl:":::PLUGIN_PATH:::/views/alarmListConfig.html",previewImage:":::PLUGIN_PATH:::/img/alarm-list-widget-pr.png",options:{groupsSelectable:!0}})}]);
@@ -1 +0,0 @@
1
- "use strict";angular.module("c8y.alarms",[]);
@@ -1 +0,0 @@
1
- "use strict";!function(){function t(t){this.icon=t.icon}t.$inject=["c8yAlarms"],angular.module("c8y.alarms").directive("c8yAlarmsSeverity",function(){return{restrict:"E",templateUrl:":::PLUGIN_PATH:::/severity.html",scope:{options:"=",severity:"="},controller:t,controllerAs:"vm",bindToController:!0}})}();
@@ -1,13 +0,0 @@
1
- <div class="btn-group" style="margin-bottom:20px;" ng-repeat="(key, value) in vm.options.severity">
2
- <button
3
- title="{{ key | capitalizeString }}"
4
- type="button"
5
- class="btn btn-default"
6
- ng-if="value"
7
- ng-model="vm.severity[key]"
8
- uib-btn-checkbox
9
- >
10
- <i c8y-icon="{{ vm.icon(key) }}" class="status" ng-class="key | lowercase"></i>
11
- {{ key | capitalizeString }}
12
- </button>
13
- </div>
package/alarms/styles.css DELETED
@@ -1,3 +0,0 @@
1
- .alarms-widget-config .alarm-type {
2
- margin-bottom: 8px;
3
- }
@@ -1 +0,0 @@
1
- "use strict";!function(){function t(n,t){var i=this,t=(_.assign(i,{status:t.status,severity:t.severity,icon:t.icon,options:{orderMode:"ACTIVE_FIRST"},alarmTypes:[],updateOptions:e,addAlarmType:s,removeAlarmType:function(t){_.pullAt(i.alarmTypes,t)}}),n.config.options);t?_.assign(i.options,t):(o("status"),o("severity"));t=(t=n.config.options)?t.types:[];function o(t){i.options[t]=_(i[t]).invert().mapValues(_.stubTrue).value()}function e(){n.config.options=i.options}function s(t){i.alarmTypes.push({name:t||""})}_.isEmpty(t)?s():_.forEach(t,s),n.$watch("config.device",function(t){t&&(i.options.device=t.id,e())}),n.$watch("vm.options.severity",function(t){var t=0<_.filter(t).length,o=n.forms;i.severityValid=t,o&&o.componentForm.$setValidity("severity",t)},!0),n.$watch("vm.alarmTypes",function(){i.options.types=_(i.alarmTypes).map("name").compact().uniq().value(),e()},!0)}t.$inject=["$scope","c8yAlarms"],angular.module("c8y.alarms").controller("AlarmsConfigController",t)}();
@@ -1,116 +0,0 @@
1
- <div class="alarms-widget-config p-t-8" ng-controller="AlarmsConfigController as vm">
2
- <label translate>Status</label>
3
- <div class="form-group d-flex gap-16">
4
- <div ng-repeat="(key, value) in vm.status">
5
- <label class="c8y-checkbox">
6
- <input type="checkbox" ng-model="vm.options.status[value]" ng-change="vm.updateOptions()" />
7
- <span></span>
8
- <span>{{ value | translate }}</span>
9
- </label>
10
- </div>
11
- </div>
12
-
13
- <label translate>Types</label>
14
- <div class="form-group">
15
- <ul class="list-unstyled">
16
- <li class="input-group alarm-type" ng-repeat="alarmType in vm.alarmTypes track by $index">
17
- <input
18
- class="form-control"
19
- placeholder="{{ 'Alarm type' | translate }}"
20
- ng-model="alarmType.name"
21
- />
22
- <span class="input-group-btn">
23
- <button
24
- class="btn btn-dot btn-dot--danger"
25
- type="button"
26
- aria-label="{{ 'Remove' | translate }}"
27
- uib-tooltip="{{ 'Remove' | translate }}"
28
- tooltip-popup-delay="500"
29
- tooltip-append-to-body="true"
30
- ng-disabled="vm.alarmTypes.length <= 1"
31
- ng-click="vm.removeAlarmType($index)"
32
- >
33
- <i c8y-icon="minus-circle"></i>
34
- </button>
35
- </span>
36
- </li>
37
- </ul>
38
- <button
39
- class="btn btn-sm btn-default"
40
- type="button"
41
- title="{{ 'Add alarm type' | translate }}"
42
- ng-click="vm.addAlarmType()"
43
- >
44
- <i c8y-icon="plus-circle"></i>
45
- <span translate>Add alarm type</span>
46
- </button>
47
- </div>
48
-
49
- <label translate>Severities</label>
50
- <div class="alert alert-warning" ng-show="!vm.severityValid" translate>
51
- Select at least one severity.
52
- </div>
53
- <div class="form-group d-flex gap-16">
54
- <div ng-repeat="(key, value) in vm.severity">
55
- <label class="c8y-checkbox">
56
- <input
57
- type="checkbox"
58
- ng-model="vm.options.severity[value]"
59
- ng-change="vm.updateOptions()"
60
- />
61
- <span></span>
62
- <span>
63
- <i
64
- c8y-icon="{{ vm.icon(value) }}"
65
- class="status icon-lg stroked-icon"
66
- ng-class="value | lowercase"
67
- ></i>
68
- {{ value | translate }}
69
- </span>
70
- </label>
71
- </div>
72
- </div>
73
- <label translate>Order</label>
74
- <div class="form-group d-flex gap-16">
75
- <div class="d-flex">
76
- <label class="c8y-checkbox">
77
- <input
78
- type="radio"
79
- value="ACTIVE_FIRST"
80
- ng-model="vm.options.orderMode"
81
- ng-change="vm.updateOptions()"
82
- />
83
- <span></span>
84
- <span translate>By active status</span>
85
- </label>
86
- <button
87
- class="btn-help btn-help--sm"
88
- type="button"
89
- aria-label="{{ 'Help' | translate }}"
90
- uib-popover="{{ 'Order alarms by active status, severity, and time' | translate }}"
91
- popover-placement="top-left"
92
- popover-trigger="'focus'"
93
- ></button>
94
- </div>
95
- <div class="d-flex">
96
- <label class="c8y-radio">
97
- <input
98
- type="radio"
99
- value="SEVERITY_FIRST"
100
- ng-model="vm.options.orderMode"
101
- ng-change="vm.updateOptions()"
102
- />
103
- <span></span>
104
- <span translate>By severity</span>
105
- </label>
106
- <button
107
- class="btn-help btn-help--sm"
108
- type="button"
109
- aria-label="{{ 'Help' | translate }}"
110
- uib-popover="{{ 'Order alarms by severity and time' | translate }}"
111
- popover-placement="top-left"
112
- popover-trigger="'focus'"
113
- ></button>
114
- </div>
115
- </div>
116
- </div>
@@ -1 +0,0 @@
1
- "use strict";!function(){function t(t,e){t.add({name:"Alarm list",nameDisplay:e("Alarm list"),description:e("Displays a list of alarms filtered by object, severity and status"),templateUrl:":::PLUGIN_PATH:::/widget.html",configTemplateUrl:":::PLUGIN_PATH:::/widget-config.html",previewImage:":::PLUGIN_PATH:::/img/alarm-list-widget-pr.png",options:{groupsSelectable:!0}})}t.$inject=["c8yComponentsProvider","gettext"],angular.module("c8y.alarms").config(t)}();
@@ -1 +0,0 @@
1
- "use strict";!function(){function o(i){var e=this;i.$watch("child.config.options",function(o){o&&!function(o){var t=i.child.config.device,o=(e.options=_.cloneDeep(o),e.options.source=t&&t.id,_.filter(e.options.status).length),t=_.get(e.options.status,"CLEARED");o&&(1===o&&t||!t)&&(e.options.resolved=t);_.unset(e,"options.device"),e.activeSeverities=_.pickBy(e.options.severity,_.curry(_.isEqual)(!0)),_.unset(e,"options.severity")}(o)})}o.$inject=["$scope"],angular.module("c8y.alarms").controller("AlarmsController",o)}();
@@ -1,15 +0,0 @@
1
- <div ng-controller="AlarmsController as vm">
2
- <c8y-alarms-severity
3
- severity="vm.activeSeverities"
4
- options="vm.options"
5
- >
6
- </c8y-alarms-severity>
7
- <c8y-alarm-list
8
- class="alarm-list"
9
- active-severities="vm.activeSeverities"
10
- filter="vm.options"
11
- realtime="true"
12
- hide-header-actions="true"
13
- >
14
- </c8y-alarm-list>
15
- </div>
@@ -1 +0,0 @@
1
- "use strict";angular.module("c8y.alarms",[]);
@@ -1 +0,0 @@
1
- "use strict";angular.module("c8y.alarms",[]);
@@ -1,18 +0,0 @@
1
- {
2
- "name": "Recent alarms",
3
- "ngModules": [
4
- "c8y.cockpit.alarmrecent"
5
- ],
6
- "category": "Alarms",
7
- "description": "Display a table with the most recent alarms",
8
- "js": [
9
- "index.js"
10
- ],
11
- "folderName": "alarmRecent",
12
- "appsInclude": [
13
- "cockpit"
14
- ],
15
- "copy": [
16
- "img/*"
17
- ]
18
- }
@@ -1 +0,0 @@
1
- "use strict";angular.module("c8y.cockpit.alarmrecent",[]).config(["c8yComponentsProvider","gettext",function(e,t){e.add({name:"Recent Alarms",nameDisplay:t("Recent alarms"),description:t("Log of recent alarms from all devices with any severity and status"),templateUrl:":::PLUGIN_PATH:::/views/component.html",previewImage:":::PLUGIN_PATH:::/img/recent-alarms-widget-pr.png",options:{noDeviceTarget:!0}})}]);
@@ -1,7 +0,0 @@
1
- <c8y-alarm-list
2
- filter="{pageSize: 10, orderMode: 'ACTIVE_FIRST'}"
3
- realtime="true"
4
- hide-header-actions="true"
5
- paginate="false"
6
- >
7
- </c8y-alarm-list>
@@ -1 +0,0 @@
1
- "use strict";angular.module("c8y.aclManagement").controller("aclManagementCtrl",["$scope","$q","c8yBase","c8yUser","c8yUserGroup","c8yAlert","gettext","gettextCatalog",function(r,e,n,s,i,t,o,c){var u={},a=n.createEnum([o("GROUP"),o("USER")]);function l(){r.user={},r.permission={},r.permission.type=null,r.permission.scope=null,r.permission.access=null,r.permission.source=null,r.sourceType=a.GROUP,r.addPermission=!0,s.current().then(function(e){r.allowEdit=s.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")})}function p(e){return e&&null!==e&&""!==e}function d(e){e=e.split(":");return{scope:{value:e[0]},type:e[1],access:{value:e[2]}}}function m(e){i.save(e).then(_.partial(t.success,o("Permissions updated."))).then(v).then(g)}function f(e){delete e.name,s.save(e).then(_.partial(t.success,o("Permissions updated."))).then(h).then(g)}function g(){l()}function h(){var e=s.listAll();e.then(function(e){r.users=e,_.forEach(e,function(e){e.name=e.id})}),P(e).then(function(e){r.userPermissions=e})}function v(){var e=i.list(u);e.then(function(e){r.groups=e,r.sources=r.groups}),P(e).then(function(e){r.groupPermissions=e})}function y(e){return e.toLowerCase().replace("_"," ")}function P(e){return e.then(_.partialRight(_.map,R))}function R(e){return{source:e,permissions:e.devicePermissions[r.device.id]||[]}}function S(e,n,s){var i,t,e=e.source;i=e.devicePermissions,t=n,i[r.device.id]=_.filter(i[r.device.id],function(e){return e!==t}),s(e)}r.emptyPermission=function(e){return(e=(e||{}).permissions)&&e.length},r.toggleAddPermission=function(){r.addPermission=!r.addPermission},r.sourceTypes=a.values(),r.setSourceType=function(e){r.sourceType=e},r.create=function(e){var n=e.source,s=n.devicePermissions[r.device.id]||[];n.devicePermissions[r.device.id]=_.union(s,[[e.scope.value,e.type,e.access.value].join(":")]),(r.sourceType===a.GROUP?m:f)(n)},r.cancel=g,r.isValid=function(e){return p(e.source)&&p(e.scope)&&p(e.type)&&p(e.access)},r.humanizeScope=function(e){return"*"===e?c.getString("all types of objects"):"MANAGED_OBJECT"===e?y(e):"".concat(y(e),"s")},r.humanizeAccess=function(e){return"*"===e?c.getString("Read and write"):"ADMIN"===e?c.getString("Write"):c.getString("Read")},r.humanizeFragment=function(e){return"*"===e?c.getString("any"):e},r.translatePermission=function(e){return e=e.split(":"),[c.getString(e[0]),e[1],c.getString(e[2])].join(":")},r.removeGroupPermission=_.partialRight(S,m),r.removeUserPermission=_.partialRight(S,f),r.helpText=o('"Check user permissions" section allows you to verify permissions granted to selected user for the device also inherited from parent devices or assigned to global role. "Granted permissions" section allows you to check and manage permissions for the device.'),r.$watch("user.selected",function(e){e&&s.getDevicePermissions(e,r.device.id).then(n.getResData).then(_.partialRight(_.map,d)).then(function(e){r.permissions=e})}),r.$watch("device",function(e){_.isObjectLike(e)&&0<_.keys(e).length&&(h(),v())}),r.$watch("sourceType",function(e){delete r.permission.source,e===a.GROUP?r.sources=r.groups:r.sources=r.users}),l()}]);
@@ -1,21 +0,0 @@
1
- {
2
- "name": "Device permission management",
3
- "ngModules": [
4
- "c8y.aclManagement"
5
- ],
6
- "imports": [
7
- "core/aclManagement"
8
- ],
9
- "category": "Device",
10
- "icon": "security",
11
- "color": "#F03F0F",
12
- "description": "Manage access control list for device.",
13
- "js": [
14
- "index.js",
15
- "controllers/aclManagementCtrl.js"
16
- ],
17
- "folderName": "aclManagement",
18
- "appsInclude": [
19
- "devicemanagement"
20
- ]
21
- }
@@ -1 +0,0 @@
1
- "use strict";!function(){function e(n,t){function c(n,e,t,c){e=e.deviceId||e.groupId,n.device={},c.detailCached(e).then(t.getResData).then(function(e){n.device=e})}function i(e){return e.getFlag("deprecated")}c.$inject=["$scope","$routeParams","c8yBase","c8yInventory"];i.$inject=["c8yBase"],_.forEach(["/group/:groupId","/device/:deviceId"],function(e){n.when(e,{templateUrl:":::PLUGIN_PATH:::/views/index.html",icon:"shield",name:t("Permissions"),controller:c,showIf:i,showIfPermissions:{allRoles:["ROLE_USER_MANAGEMENT_READ"]}})})}e.$inject=["c8yViewsProvider","gettext"],angular.module("c8y.aclManagement",["c8y.parts.aclManagement"]).config(e)}();