@c8y/ng1-modules 1019.24.6 → 1020.0.8
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/NOTICES +8357 -6666
- package/app-logs/app-logs.service.js +1 -1
- package/asset-notes/assetNotes.component.js +1 -1
- package/assetPropertyWidget/main.controller.js +1 -1
- package/cell-id-information-activator/cell-id-information-activator.config.js +1 -1
- package/cell-id-information-activator/cell-id-information-activator.service.js +1 -1
- package/cell-id-usage-statistics/cell-id-usage-statistics.component.js +1 -1
- package/cell-id-usage-statistics/cell-id-usage-statistics.service.js +1 -1
- package/commandTemplates/controllers/commandTemplates.js +1 -1
- package/commandTemplates/views/commandTemplates.html +83 -41
- package/core/core/services/alarms.js +1 -1
- package/core/core/services/application.js +1 -1
- package/core/core/services/auth.js +1 -1
- package/core/core/services/base.js +1 -1
- package/core/core/services/deviceShell.js +1 -1
- package/core/core/services/devices.js +1 -1
- package/core/core/services/dynamicGroups.js +1 -1
- package/core/core/services/geo.js +1 -1
- package/core/core/services/groups.js +1 -1
- package/core/core/services/inventory.js +1 -1
- package/core/core/services/kpi.js +1 -1
- package/core/core/services/measurements.js +1 -1
- package/core/core/services/settings.js +1 -1
- package/core/core/services/tenant.js +1 -1
- package/core/core/services/user.js +1 -1
- package/core/core/services/util.js +1 -1
- package/core/locales/de.po +553 -306
- package/core/locales/en.po +69 -0
- package/core/locales/es.po +562 -314
- package/core/locales/fr.po +560 -313
- package/core/locales/ja_JP.po +587 -299
- package/core/locales/ko.po +334 -327
- package/core/locales/nl.po +636 -389
- package/core/locales/pl.po +558 -310
- package/core/locales/pt_BR.po +575 -328
- package/core/locales/ru.po +21 -320
- package/core/locales/zh_CN.po +330 -323
- package/core/locales/zh_TW.po +330 -323
- package/core/ui/components/passwordStrengthChecklist.html +1 -1
- package/core/ui/configurable-device-list-columns/configurable-columns.service.js +1 -1
- package/core/ui/configurable-device-list-columns/modal-columns-configure.component.js +1 -1
- package/core/ui/controllers/deviceList.js +1 -1
- package/core/ui/controllers/eventList.js +1 -1
- package/core/ui/csvExporter/csvExporter.controller.js +1 -1
- package/core/ui/directives/alarmList.js +1 -1
- package/core/ui/directives/map.js +1 -1
- package/core/ui/directives/map2.js +1 -1
- package/core/ui/operations/operations-timeline.html +24 -10
- package/core/ui/properties/lastDeviceMessage.computedProperty.js +1 -1
- package/core/ui/schemaForm/schemaForm.component.js +1 -1
- package/core/ui/services/deviceListColumns.js +1 -1
- package/core/ui/services/measurementsReport.js +1 -1
- package/core/ui/user/editUser.directive.html +2 -0
- package/core/ui/views/eventList.html +3 -1
- package/dataBroker/connectors/connectors.html +1 -0
- package/dataBroker/connectorsAlarms/connectorAlarms.component.js +1 -1
- package/device-protocol-actility/actility-device.provider.js +1 -1
- package/device-protocol-canbus/canbus-device.provider.js +1 -1
- package/device-protocol-canopen/canopen-device.provider.js +1 -1
- package/device-protocol-deviceDatabase4/device-type-protocol-base.provider.js +1 -1
- package/device-protocol-lora/lora-device.provider.js +1 -1
- package/device-protocol-lpwan/lpwan-device.provider.js +1 -1
- package/device-protocol-modbus/modbus-device.provider.js +1 -1
- package/device-protocol-opcua/opcua-device.provider.js +1 -1
- package/device-protocol-profibus/profibus-device.provider.js +1 -1
- package/device-protocol-sigfox/sigfox-device.provider.js +1 -1
- package/device-protocol-snmp/snmp-device.provider.js +1 -1
- package/device-protocols/device-protocol-import-button.component.js +1 -1
- package/deviceDatabase4/detail/device-type-detail.component.js +1 -1
- package/deviceDatabase4/device-database.service.js +1 -1
- package/deviceDatabase4/device-type-list.component.js +1 -1
- package/deviceDatabase4/modals/configure-discrete-io.component.js +1 -1
- package/deviceDatabase4/modals/configure-register.component.js +1 -1
- package/deviceDatabase4/modals/import-device-type.component.js +1 -1
- package/deviceDatabase4/unique.directive.js +1 -1
- package/deviceDetail/cumulocity.json +0 -1
- package/deviceSelector/controllers/deviceSelectorComboCtrl.js +1 -1
- package/deviceStatusWidget/deviceStatus.component.js +1 -1
- package/deviceStatusWidget/ownerStatus.component.js +1 -1
- package/devicemanagement-availability/controllers/availability.js +1 -1
- package/devicemanagement-availability/views/detail.html +2 -2
- package/devicemanagement-eventList/controllers/eventList.js +1 -1
- package/enterpriseEdition/customBranding/brandingConfigurationUi.provider.js +1 -1
- package/enterpriseEdition/sslCertificate/manageCertificateForm.html +1 -1
- package/eventList/eventList.controller.js +1 -1
- package/generic-ui/generic-ui-inventory-property.component.js +1 -1
- package/groupsHierarchy/controllers/groupsListCtrl.js +1 -1
- package/kpi/controllers/pieChart.js +1 -1
- package/measurements/fragmentChart/fragmentChart.component.js +1 -1
- package/modbusConfiguration4/fieldbus-config.component.js +1 -1
- package/modbusConfiguration4/fieldbus-device-list.component.js +1 -1
- package/modbusWidget4/modbus-widget.service.js +1 -1
- package/modbusWidget4/widget-config.component.js +1 -1
- package/modbusWidget4/widget.component.js +1 -1
- package/package.json +5 -5
- package/remoteAccess/remoteAccess.service.js +1 -1
- package/remoteAccess/remoteAccessSettings/remoteAccessSettings.component.js +1 -1
- package/roles/detail/roleDetailInventory.html +33 -14
- package/scada/mapping.directive.js +1 -1
- package/simulators/simulatorsUi.provider.js +1 -1
- package/smartRestEditor/views/list.html +1 -0
- package/smartRules/directives/smartRuleParamInputKpi.js +1 -1
- package/smartRules/list/smartRulesList.html +25 -0
- package/smartRules/views/edit.html +95 -27
- package/smartRules/views/list.html +39 -5
- package/tenantStatistics/tenant-statistics.component.js +1 -1
- package/userRoles/inventoryRolesTab/inventoryRolesTab.component.js +1 -1
- package/users/userListView/userListView.component.js +1 -1
- package/users/userListView/userListView.html +1 -0
- package/users/userRemovalModal/userRemovalModal.component.html +1 -0
- package/alarmAssets/cumulocity.json +0 -14
- package/alarmAssets/img/all-critical-alarms-widget-pr.png +0 -0
- package/alarmAssets/index.js +0 -1
- package/alarmAssets/views/component.html +0 -8
- package/alarms/cumulocity.json +0 -21
- package/alarms/img/alarm-list-widget-pr.png +0 -0
- package/alarms/index.js +0 -1
- package/alarms/index.mock.js +0 -1
- package/alarms/severity.directive.js +0 -1
- package/alarms/severity.html +0 -13
- package/alarms/styles.css +0 -3
- package/alarms/widget-config.controller.js +0 -1
- package/alarms/widget-config.html +0 -116
- package/alarms/widget.config.js +0 -1
- package/alarms/widget.controller.js +0 -1
- package/alarms/widget.html +0 -15
- package/alarms/widget.module.js +0 -1
- package/alarms/widget.module.mock.js +0 -1
- package/cockpit-alarmRecent/cumulocity.json +0 -18
- package/cockpit-alarmRecent/img/recent-alarms-widget-pr.png +0 -0
- package/cockpit-alarmRecent/index.js +0 -1
- package/cockpit-alarmRecent/views/component.html +0 -7
- package/devicemanagement-aclManagement/controllers/aclManagementCtrl.js +0 -1
- package/devicemanagement-aclManagement/cumulocity.json +0 -21
- package/devicemanagement-aclManagement/index.js +0 -1
- package/devicemanagement-aclManagement/views/index.html +0 -207
- package/devicemanagement-alarmList/controllers/alarmList.js +0 -1
- package/devicemanagement-alarmList/cumulocity.json +0 -24
- package/devicemanagement-alarmList/gallery/alarms.png +0 -0
- package/devicemanagement-alarmList/index.js +0 -1
- package/devicemanagement-alarmList/views/index.html +0 -155
- package/devicemanagement-tracking/controllers/config.js +0 -1
- package/devicemanagement-tracking/controllers/tracking.js +0 -1
- package/devicemanagement-tracking/cumulocity.json +0 -19
- package/devicemanagement-tracking/index.js +0 -1
- package/devicemanagement-tracking/views/index.html +0 -103
- package/devicemanagement-vendMeDeviceControl/controllers/vendMeDeviceControl.js +0 -1
- package/devicemanagement-vendMeDeviceControl/cumulocity.json +0 -18
- package/devicemanagement-vendMeDeviceControl/index.js +0 -1
- 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
|
|
104
|
+
<div class="smart-rules-list-head page-sticky-header card-block">
|
|
105
105
|
<label
|
|
106
|
-
class="smart-rule-group
|
|
106
|
+
class="smart-rule-group"
|
|
107
107
|
translate
|
|
108
108
|
>
|
|
109
109
|
Status
|
|
110
110
|
</label>
|
|
111
111
|
<label
|
|
112
|
-
class="smart-rule-
|
|
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-
|
|
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
|
|
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:
|
|
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:
|
|
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,
|
|
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>
|
|
Binary file
|
package/alarmAssets/index.js
DELETED
|
@@ -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}})}]);
|
package/alarms/cumulocity.json
DELETED
|
@@ -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}})}]);
|
package/alarms/index.mock.js
DELETED
|
@@ -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}})}();
|
package/alarms/severity.html
DELETED
|
@@ -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 +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>
|
package/alarms/widget.config.js
DELETED
|
@@ -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)}();
|
package/alarms/widget.html
DELETED
|
@@ -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>
|
package/alarms/widget.module.js
DELETED
|
@@ -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
|
-
}
|
|
Binary file
|
|
@@ -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 +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)}();
|