@c8y/ng1-modules 1021.81.0 → 1022.3.2

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 (112) hide show
  1. package/alarmsEventsExplorer/alarmsEventsTimelinesConfig/alarmsEventsTimelinesConfig.html +1 -1
  2. package/assetPropertyWidget/img/asset-properties-widget-pr.png +0 -0
  3. package/assetPropertyWidget/views/config.html +1 -1
  4. package/assetTable/assetTable2/img/asset-table-widget-pr.png +0 -0
  5. package/assetTable/img/asset-table-widget-pr.png +0 -0
  6. package/core/core/services/audits.js +1 -1
  7. package/core/core/services/retentions.js +1 -1
  8. package/core/core/services/tenant.js +1 -1
  9. package/core/core/services/user.js +1 -1
  10. package/core/cumulocity.json +0 -1
  11. package/core/locales/de.po +472 -720
  12. package/core/locales/es.po +422 -671
  13. package/core/locales/fr.po +501 -751
  14. package/core/locales/ja_JP.po +494 -740
  15. package/core/locales/ko.po +421 -671
  16. package/core/locales/nl.po +424 -672
  17. package/core/locales/pl.po +422 -672
  18. package/core/locales/pt_BR.po +519 -768
  19. package/core/locales/zh_CN.po +421 -671
  20. package/core/locales/zh_TW.po +422 -671
  21. package/core/ui/properties/propertySelector.html +156 -109
  22. package/core/ui/views/auditList.html +2 -2
  23. package/core/ui/views/eventList.html +2 -2
  24. package/core/ui/views/filePicker.html +1 -1
  25. package/dataBroker/connectors/connectors.service.js +1 -1
  26. package/dataPointExplorer/img/data-points-graph-widget-pr.png +0 -0
  27. package/dataPointExplorer/views/widgetConfig.html +92 -94
  28. package/device-protocols/object-mapping.component.js +1 -1
  29. package/device-protocols/object-mapping.html +1 -1
  30. package/deviceDatabase4/modals/configure-discrete-io.html +1 -1
  31. package/deviceDatabase4/modals/configure-register.html +1 -1
  32. package/deviceDetail/cumulocity.json +1 -2
  33. package/deviceStatusWidget/ownerStatus.html +2 -2
  34. package/deviceStatusWidget/requiredAvailabilityIntervalSetting.html +4 -4
  35. package/devicemanagement-eventList/index.js +1 -1
  36. package/enterpriseEdition/cumulocity.json +0 -13
  37. package/enterpriseEdition/enterpriseEdition.module.js +1 -1
  38. package/eventList/img/events-list-widget-pr.png +0 -0
  39. package/eventList/views/eventListConfig.html +39 -32
  40. package/export/cumulocity.json +0 -1
  41. package/export/index.js +1 -1
  42. package/export/services/config.js +1 -1
  43. package/htmlWidget/index.js +1 -1
  44. package/kpi/img/data-points-list-widget-pr.png +0 -0
  45. package/kpi/views/gaugeConfig.html +28 -34
  46. package/kpi/views/listConfig.html +14 -18
  47. package/kpi/views/pieChartConfig.html +30 -36
  48. package/modbusConfiguration4/fieldbus-device-list.component.js +1 -1
  49. package/modbusWidget4/widget-config.html +74 -84
  50. package/package.json +11 -13
  51. package/propertiesLibrary/index.js +1 -1
  52. package/roles/list/rolesList.html +0 -2
  53. package/scada/views/componentConfig.html +23 -23
  54. package/scada/views/mapping.html +41 -39
  55. package/smartRules/controllers/add.js +1 -1
  56. package/smartRules/controllers/list.js +1 -1
  57. package/smartRules/list/smartRulesList.component.js +1 -1
  58. package/smartRules/list/smartRulesList.html +2 -2
  59. package/smartRules/services/smartRules.js +1 -1
  60. package/smartRules/views/add.html +32 -10
  61. package/smartRules/views/list.html +4 -3
  62. package/trafficLightWidget/states-mapping.html +82 -69
  63. package/administration-config/administration-config.module.js +0 -1
  64. package/administration-config/cumulocity.json +0 -13
  65. package/asset-notes/assetNotes.component.js +0 -1
  66. package/asset-notes/assetNotes.html +0 -93
  67. package/asset-notes/assetNotes.module.js +0 -1
  68. package/asset-notes/assetNotes.service.js +0 -1
  69. package/asset-notes/cumulocity.json +0 -13
  70. package/core/ui/forms/ssh-key-input.html +0 -33
  71. package/core/ui/forms/ssh-key-input.js +0 -1
  72. package/devicemanagement-deviceListMap/controllers/deviceListMap.js +0 -1
  73. package/devicemanagement-deviceListMap/cumulocity.json +0 -19
  74. package/devicemanagement-deviceListMap/index.js +0 -1
  75. package/devicemanagement-deviceListMap/views/index.html +0 -21
  76. package/enterpriseEdition/customBranding/brandingConfiguration.constants.js +0 -1
  77. package/enterpriseEdition/customBranding/brandingConfiguration.service.js +0 -1
  78. package/enterpriseEdition/customBranding/brandingConfigurationForm.component.js +0 -1
  79. package/enterpriseEdition/customBranding/brandingConfigurationForm.html +0 -141
  80. package/enterpriseEdition/customBranding/brandingConfigurationUi.provider.js +0 -1
  81. package/enterpriseEdition/customBranding/brandingDeploy.service.js +0 -1
  82. package/enterpriseEdition/customBranding/brandingProcessExecution.component.js +0 -1
  83. package/enterpriseEdition/customBranding/brandingProcessExecution.html +0 -120
  84. package/enterpriseEdition/customBranding/custom-branding.module.js +0 -1
  85. package/enterpriseEdition/customBranding/microservice.value.js +0 -1
  86. package/enterpriseEdition/ui-assets/index.js +0 -1
  87. package/enterpriseEdition/ui-assets/public-options.service.js +0 -1
  88. package/enterpriseEdition/ui-assets/static-assets.service.js +0 -1
  89. package/enterpriseEdition/ui-assets/ui-assets.service.js +0 -1
  90. package/export/controllers/list.js +0 -1
  91. package/export/views/list.html +0 -298
  92. package/remoteAccess/clients/remoteAccessClients.service.js +0 -1
  93. package/remoteAccess/clients/terminal/index.html +0 -30
  94. package/remoteAccess/clients/terminal/index.js +0 -1
  95. package/remoteAccess/clients/terminal/shell-adapter.js +0 -1
  96. package/remoteAccess/clients/terminal/style.css +0 -25
  97. package/remoteAccess/clients/terminal/telnet-negotiator.js +0 -1
  98. package/remoteAccess/clients/vnc/vncClient.html +0 -60
  99. package/remoteAccess/clients/vnc/vncClient.js +0 -1
  100. package/remoteAccess/cumulocity.json +0 -69
  101. package/remoteAccess/remoteAccess.module.js +0 -1
  102. package/remoteAccess/remoteAccess.service.js +0 -1
  103. package/remoteAccess/remoteAccessEndpointCard/remoteAccessEndpointCard.component.js +0 -1
  104. package/remoteAccess/remoteAccessEndpointCard/remoteAccessEndpointCard.html +0 -89
  105. package/remoteAccess/remoteAccessEndpointModal/remoteAccessEndpointModal.component.js +0 -1
  106. package/remoteAccess/remoteAccessEndpointModal/remoteAccessEndpointModal.html +0 -484
  107. package/remoteAccess/remoteAccessEndpointModal/suggestedIPAddressTemplate.html +0 -8
  108. package/remoteAccess/remoteAccessEndpointsList/remoteAccessEndpointsList.component.js +0 -1
  109. package/remoteAccess/remoteAccessEndpointsList/remoteAccessEndpointsList.html +0 -75
  110. package/remoteAccess/remoteAccessSettings/remoteAccessSettings.component.js +0 -1
  111. package/remoteAccess/remoteAccessSettings/remoteAccessSettings.html +0 -37
  112. package/remoteAccess/remoteAccessUI.provider.js +0 -1
@@ -1,12 +1,19 @@
1
1
  <div class="viewport-modal">
2
2
  <div class="modal-header text-center separator">
3
- <h1 id="modal-title" class="h3" data-cy="smartRuleAdd--card-header">
4
- <i class="c8y-icon c8y-icon-smart-rules c8y-icon-duocolor"></i>
3
+ <h1
4
+ class="h3"
5
+ id="modal-title"
6
+ data-cy="smartRuleAdd--card-header"
7
+ >
8
+ <i c8y-icon="{{ icon }}"></i>
5
9
  {{ title | translate }}
6
10
  </h1>
7
11
  </div>
8
12
 
9
- <div class="inner-scroll" id="modal-body">
13
+ <div
14
+ class="inner-scroll"
15
+ id="modal-body"
16
+ >
10
17
  <div
11
18
  class="alert alert-warning"
12
19
  ng-show="ruleTemplates.length == 0 && !loading.loading"
@@ -14,14 +21,17 @@
14
21
  >
15
22
  No matching smart rules available.
16
23
  </div>
17
- <div class="d-flex a-i-center j-c-center" ng-show="loading.loading">
24
+ <div
25
+ class="d-flex a-i-center j-c-center"
26
+ ng-show="loading.loading"
27
+ >
18
28
  <c8y-loading></c8y-loading>
19
29
  </div>
20
30
  <div class="card-group-block smart-rule-templates-list interact-grid">
21
31
  <button
22
- ng-repeat="ruleTemplate in ruleTemplates"
23
32
  class="col-md-4 col-sm-6 col-xs-12 card btn-clean"
24
33
  ng-class="{ 'not-active': !ruleTemplate._active, interact: ruleTemplate._active }"
34
+ ng-repeat="ruleTemplate in ruleTemplates"
25
35
  ng-click="createInstance(ruleTemplate)"
26
36
  >
27
37
  <div class="card-block text-center">
@@ -30,13 +40,25 @@
30
40
  <i c8y-icon="arrow-right"></i>
31
41
  <span class="dot"><i c8y-icon="{{ ruleTemplate.paramGroups.output.icon }}"></i></span>
32
42
  </div>
33
- <div ng-if="ruleTemplate.label.full" class="text-pre-normal">
34
- <span class="caption" title="{{ ruleTemplate.label.full | translate }}">
43
+ <div
44
+ class="text-pre-normal"
45
+ ng-if="ruleTemplate.label.full"
46
+ >
47
+ <span
48
+ class="caption"
49
+ title="{{ ruleTemplate.label.full | translate }}"
50
+ >
35
51
  {{ ruleTemplate.label.full | translate }}
36
52
  </span>
37
53
  </div>
38
- <div ng-if="!ruleTemplate.label.full" class="text-pre-normal">
39
- <span class="caption caption-input" title="{{ ruleTemplate.label.input | translate }}">
54
+ <div
55
+ class="text-pre-normal"
56
+ ng-if="!ruleTemplate.label.full"
57
+ >
58
+ <span
59
+ class="caption caption-input"
60
+ title="{{ ruleTemplate.label.input | translate }}"
61
+ >
40
62
  {{ ruleTemplate.label.input | translate }}
41
63
  </span>
42
64
  <span
@@ -56,9 +78,9 @@
56
78
 
57
79
  <div class="modal-footer">
58
80
  <button
81
+ class="btn btn-default"
59
82
  title="{{ 'Cancel' | translate }}"
60
83
  type="button"
61
- class="btn btn-default"
62
84
  ng-click="cancel()"
63
85
  >
64
86
  {{ 'Cancel' | translate }}
@@ -216,9 +216,10 @@
216
216
  class="text-center text-muted m-b-16"
217
217
  data-cy="smartRulesList--card-header"
218
218
  >
219
- <i c8y-icon="c8y-smart-rules"></i>
219
+ <i c8y-icon="{{::getRuleIcon(rule)}}"></i>
220
220
  {{ getRuleCardTitle(rule) | translate }}
221
221
  </label>
222
+
222
223
  <div class="smart-rule-name card-title">
223
224
  {{ rule.name }}
224
225
  </div>
@@ -301,7 +302,7 @@
301
302
  ng-if="rule.type !== 'c8y_SmartRule'"
302
303
  >
303
304
  <i
304
- c8y-icon="user-account"
305
+ c8y-icon="{{::getRuleIcon(rule)}}"
305
306
  uib-tooltip="{{ 'Local smart rule' | translate }}"
306
307
  tooltip-popup-delay="500"
307
308
  tooltip-append-to-body="true"
@@ -312,7 +313,7 @@
312
313
  ng-if="rule.type === 'c8y_SmartRule'"
313
314
  >
314
315
  <i
315
- c8y-icon="people"
316
+ c8y-icon="{{::getRuleIcon(rule)}}"
316
317
  uib-tooltip="{{ 'Global smart rule' | translate }}"
317
318
  tooltip-popup-delay="500"
318
319
  tooltip-append-to-body="true"
@@ -1,69 +1,82 @@
1
- <div class="card-header separator">
2
- <div class="card-title h4" translate>States mapping</div>
3
- </div>
4
- <div class="alert alert-warning" ng-show="!vm.deviceId || vm.hasInvalidMapping" translate>
5
- Select a device and complete the mapping for all light states.
6
- </div>
7
- <div class="table-responsive">
8
- <table class="table table-striped">
9
- <thead>
10
- <tr>
11
- <th translate>State</th>
12
- <th>
13
- <span translate>Property</span>
14
- <button
15
- class="btn-help btn-help--sm"
16
- type="button"
17
- aria-label="{{ 'Help' | translate }}"
18
- uib-popover="{{
19
- 'The value of the selected data point or property must be one of the following to have the respective light on: true, 1, any non-empty string or any non-null number.'
20
- | translate
21
- }}"
22
- popover-trigger="'focus'"
23
- popover-placement="right"
24
- popover-append-to-body="true"
25
- ></button>
26
- </th>
27
- <th></th>
28
- </tr>
29
- </thead>
30
- <tbody>
31
- <tr
32
- ng-repeat="(state, stateText) in vm.states"
33
- ng-class="{ danger: vm.isMappingInvalidForState(state) }"
34
- >
35
- <td>{{ stateText | translate }}</td>
36
- <td ng-switch="vm.mapping[state].computed">
37
- <button
38
- class="btn btn-xs btn-default"
39
- type="button"
40
- ng-switch-when="true"
41
- ng-click="vm.editComputedProperty(vm.mapping[state])"
42
- >
43
- <i c8y-icon="bolt"></i>
44
- {{ vm.humanizeProperty(vm.mapping[state]) }}
45
- </button>
46
- <span ng-switch-default>{{ vm.humanizeProperty(vm.mapping[state]) }}</span>
47
- </td>
48
- <td class="text-right">
49
- <button
50
- class="btn btn-primary btn-xs showOnHover"
51
- type="button"
52
- title="{{ 'Select device property' | translate }}"
53
- ng-click="vm.selectDevicePropertyForState(state)"
54
- >
55
- <i c8y-icon="pencil"></i>
56
- </button>
57
- <button
58
- class="btn btn-primary btn-xs showOnHover"
59
- type="button"
60
- title="{{ 'Select fieldbus property' | translate }}"
61
- ng-click="vm.selectFieldbusPropertyForState(state)"
62
- >
63
- <i c8y-icon="tasks"></i>
64
- </button>
65
- </td>
66
- </tr>
67
- </tbody>
68
- </table>
69
- </div>
1
+ <fieldset class="c8y-fieldset">
2
+ <legend translate>States mapping</legend>
3
+ <div class="alert alert-warning" ng-show="!vm.deviceId || vm.hasInvalidMapping" translate>
4
+ Select a device and complete the mapping for all light states.
5
+ </div>
6
+
7
+ <div class="table-responsive">
8
+ <table class="table table-condensed bg-inherit" style="table-layout: fixed">
9
+ <colgroup>
10
+ <col style="width: 25%" />
11
+ <col style="width: 50%" />
12
+ <col style="width: 25%" />
13
+ <thead>
14
+ <tr>
15
+ <th translate>State</th>
16
+ <th>
17
+ <span translate>Property</span>
18
+ <button
19
+ class="btn-help btn-help--sm"
20
+ type="button"
21
+ aria-label="{{ 'Help' | translate }}"
22
+ uib-popover="{{
23
+ 'The value of the selected data point or property must be one of the following to have the respective light on: true, 1, any non-empty string or any non-null number.'
24
+ | translate
25
+ }}"
26
+ popover-trigger="'focus'"
27
+ popover-placement="right"
28
+ popover-append-to-body="true"
29
+ ></button>
30
+ </th>
31
+ <th></th>
32
+ </tr>
33
+ </thead>
34
+ <tbody>
35
+ <tr
36
+ ng-repeat="(state, stateText) in vm.states"
37
+ ng-class="{ danger: vm.isMappingInvalidForState(state) }"
38
+ >
39
+ <td>{{ stateText | translate }}</td>
40
+ <td ng-switch="vm.mapping[state].computed">
41
+ <button
42
+ class="btn btn-xs btn-default"
43
+ type="button"
44
+ ng-switch-when="true"
45
+ ng-click="vm.editComputedProperty(vm.mapping[state])"
46
+ >
47
+ <i c8y-icon="bolt"></i>
48
+ {{ vm.humanizeProperty(vm.mapping[state]) }}
49
+ </button>
50
+ <span ng-switch-default>{{ vm.humanizeProperty(vm.mapping[state]) }}</span>
51
+ </td>
52
+ <td class="">
53
+ <div class="d-flex j-c-end">
54
+ <button
55
+ class="btn btn-dot"
56
+ type="button"
57
+ aria-label="{{ 'Select device property' | translate }}"
58
+ uib-tooltip="{{ 'Select device property' | translate }}"
59
+ tooltip-append-to-body="true"
60
+ tooltip-popup-delay="500"
61
+ ng-click="vm.selectDevicePropertyForState(state)"
62
+ >
63
+ <i c8y-icon="edit"></i>
64
+ </button>
65
+ <button
66
+ class="btn btn-dot"
67
+ type="button"
68
+ uib-tooltip="{{ 'Assign fieldbus property' | translate }}"
69
+ tooltip-append-to-body="true"
70
+ tooltip-popup-delay="500"
71
+ aria-label="{{ 'Select fieldbus property' | translate }}"
72
+ ng-click="vm.selectFieldbusPropertyForState(state)"
73
+ >
74
+ <i c8y-icon="tasks"></i>
75
+ </button>
76
+ </div>
77
+ </td>
78
+ </tr>
79
+ </tbody>
80
+ </table>
81
+ </div>
82
+ </fieldset>
@@ -1 +0,0 @@
1
- (()=>{function e(e){e.provideSettingsPage()}e.$inject=["c8yRemoteAccessUIProvider"],angular.module("c8y.administrationConfig",["c8y.remoteAccess"]).config(e)})();
@@ -1,13 +0,0 @@
1
- {
2
- "name": "Administration config",
3
- "ngModules": [
4
- "c8y.administrationConfig"
5
- ],
6
- "icon": "c8y-shield",
7
- "color": "#F2DF0F",
8
- "category": "Administration",
9
- "description": "Administration config",
10
- "js": [
11
- "administration-config.module.js"
12
- ]
13
- }
@@ -1 +0,0 @@
1
- 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 o,n=Object.keys(t);return Object.getOwnPropertySymbols&&(o=Object.getOwnPropertySymbols(t),e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)),n}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(o),!0).forEach(function(e){_defineProperty(t,e,o[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))})}return t}function _defineProperty(e,t,o){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,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 o=e[Symbol.toPrimitive];if(void 0===o)return("string"===t?String:Number)(e);o=o.call(e,t||"default");if("object"!=_typeof(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}(()=>{function e(e,t,o,n){var r=this;function i(e){return _objectSpread(_objectSpread({},e),{},{htmlContent:n(e.htmlContent)})}_.assign(r,{$onInit:function(){return t.get(r.config.device).then(function(e){r.notes=i(e)})},edit:function(){r.editable=!0,r.editedNotes=_.cloneDeep(r.notes)},save:function(){t.save(r.config.device,r.editedNotes).then(function(e){r.editable=!1,r.notes=i(e)}).then(function(){return e.success(o("Notes saved."))})},cancel:function(){r.editable=!1,r.editedNotes=void 0}})}e.$inject=["c8yAlert","assetNotesSvc","gettext","$sanitize"],angular.module("c8y.assetNotes").component("c8yAssetNotes",{bindings:{config:"<"},templateUrl:":::PLUGIN_PATH:::/assetNotes.html",controller:e,controllerAs:"vm"})})();
@@ -1,93 +0,0 @@
1
- <div class="fit-h d-flex flex-wrap a-i-stretch">
2
- <span
3
- class="c8y-icon c8y-icon-duocolor asset-notes-icon"
4
- c8y-icon="c8y-notification"
5
- ></span>
6
- <div
7
- class="asset-notes-content"
8
- ng-if="!vm.editable"
9
- >
10
- <c8y-rectangle-spinner
11
- class="spinner-inline"
12
- ng-show="!vm.notes"
13
- ></c8y-rectangle-spinner>
14
-
15
- <div ng-if="vm.notes && !vm.notes.htmlContent">
16
- {{ 'No notes yet.' | translate }}
17
- <c8y-if-allowed admin-mos="[vm.config.device]">
18
- <button
19
- class="btn btn-link btn-sm"
20
- title="{{ 'Edit' | translate }}"
21
- type="button"
22
- ng-click="vm.edit()"
23
- >
24
- <i c8y-icon="pencil"></i>
25
- {{ 'Edit' | translate }}
26
- </button>
27
- </c8y-if-allowed>
28
- </div>
29
-
30
- <div
31
- class="text-break-word asset-notes-body"
32
- ng-if="vm.notes && vm.notes.htmlContent"
33
- >
34
- <span ng-bind-html="vm.notes.htmlContent | safeLinks"></span>
35
- <c8y-if-allowed admin-mos="[vm.config.device]">
36
- <button
37
- class="btn btn-link btn-sm"
38
- title="{{ 'Edit' | translate }}"
39
- type="button"
40
- ng-click="vm.edit()"
41
- >
42
- <i c8y-icon="pencil"></i>
43
- {{ 'Edit' | translate }}
44
- </button>
45
- </c8y-if-allowed>
46
- </div>
47
-
48
- <div class="asset-notes-footer m-t-8">
49
- <small class="text-muted">
50
- <em
51
- ng-if="vm.notes.lastUpdated"
52
- translate
53
- >
54
- {{ vm.notes.lastUpdated | absoluteDate }} by {{ vm.notes.user }}
55
- </em>
56
- </small>
57
- </div>
58
- </div>
59
- <div
60
- class="fit-h flex-grow"
61
- ng-if="vm.editable"
62
- >
63
- <div class="d-flex a-i-stretch fit-h">
64
- <textarea
65
- class="form-control fit-h"
66
- aria-label="{{ 'Notes' | translate }}"
67
- rows="5"
68
- ng-model="vm.editedNotes.htmlContent"
69
- c8y-code-editor
70
- ></textarea>
71
- <div class="input-group-btn a-s-center">
72
- <button
73
- class="btn btn-dot"
74
- title="{{ 'Save' | translate }}"
75
- type="button"
76
- ng-click="vm.save()"
77
- >
78
- <i c8y-icon="check"></i>
79
- </button>
80
- </div>
81
- <div class="input-group-btn a-s-center">
82
- <button
83
- class="btn btn-dot"
84
- title="{{ 'Cancel' | translate }}"
85
- type="button"
86
- ng-click="vm.cancel()"
87
- >
88
- <i c8y-icon="times"></i>
89
- </button>
90
- </div>
91
- </div>
92
- </div>
93
- </div>
@@ -1 +0,0 @@
1
- (()=>{function e(e,t){e.add({name:"assetNotesWidget",nameDisplay:t("Asset notes"),description:t("Displays editable asset notes."),widgetComponent:"c8yAssetNotes",transformConfigWithContext:["config","context",function(e,t){return _.assign(e,{context:t})}],previewImage:"c8y-style-assets/dm-asset-notes-widget.png",options:{groupsSelectable:!0}})}e.$inject=["c8yComponentsProvider","gettext"],angular.module("c8y.assetNotes",[]).config(e)})();
@@ -1 +0,0 @@
1
- (()=>{function t(r,a,o){var s="c8y_ComponentConfig!assetNotes";return{get:function(t){t=r.getId(t);return a.detail(t,{withChildren:!1}).then(r.getResData).then(_.property(s)).then(function(t){return t||{}})},save:function(t,e){var n={id:r.getId(t)};return o.current().then(function(t){e.user=t.id,e.lastUpdated=moment().format(r.dateFullFormat)}).then(function(){return n[s]=e,n}).then(a.save).then(r.getResData).then(_.property(s))}}}t.$inject=["c8yBase","c8yInventory","c8yUser"],angular.module("c8y.assetNotes").factory("assetNotesSvc",t)})();
@@ -1,13 +0,0 @@
1
- {
2
- "name": "Asset notes widget",
3
- "ngModules": [
4
- "c8y.assetNotes"
5
- ],
6
- "category": "Device",
7
- "description": "Adds dashboard widget to manage asset notes",
8
- "js": [
9
- "assetNotes.module.js",
10
- "assetNotes.component.js",
11
- "assetNotes.service.js"
12
- ]
13
- }
@@ -1,33 +0,0 @@
1
- <div class="form-group">
2
- <div class="tight-grid">
3
- <div class="col-xs-8">
4
- <input
5
- placeholder="{{ 'e.g.' | translate }} {{ vm.getPlaceholder() }}"
6
- type="text"
7
- class="form-control"
8
- ng-model="vm.key"
9
- ng-readonly="vm.readonly"
10
- />
11
- </div>
12
- <div class="col-xs-4">
13
- <div class="input-group" ng-file-select="vm.onKeyFileSelected($files)" ng-if="!vm.readonly">
14
- <input
15
- class="form-control"
16
- ng-model="vm.sshKeyFile.name"
17
- placeholder="{{ 'Or read from a file' | translate }}…"
18
- readonly
19
- ng-if="!vm.readonly"
20
- />
21
- <span class="input-group-btn" ng-if="!vm.readonly">
22
- <button class="btn btn-default" type="button" title="{{ 'Upload' | translate }}">
23
- <span><i c8y-icon="upload"></i></span>
24
- </button>
25
- </span>
26
- </div>
27
- </div>
28
- </div>
29
- <c8y-feedback-panel
30
- feedback="vm.sshKeyFileFeedback"
31
- ng-if="vm.sshKeyFileFeedback"
32
- ></c8y-feedback-panel>
33
- </div>
@@ -1 +0,0 @@
1
- (()=>{function e(c,e){var a=this,l=e.createEnum([{name:"PRIVATE",value:"private",placeholder:"-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAK...VQvopm2xw==----- END RSA PRIVATE KEY-----"},{name:"PUBLIC",value:"public",placeholder:"ssh-rsa AAAAB3NzaC...1kc3MAAACB== user@example.com"},{name:"CERTIFICATE",value:"certificate",placeholder:"ssh-rsa-cert-v01@openssh.com AAAAHHNz...Y9gBU= user@example.com"}]);_.assign(a,{onKeyFileSelected:function(e){e=_.head(e);c.parseSshKeyFile(e).then(function(e){a.key=e}).catch(function(e){e=e.feedback;a.sshKeyFileFeedback=e})},getPlaceholder:function(){return(_.find(l,{value:a.keytype})||{}).placeholder}})}e.$inject=["c8yRemoteAccess","c8yBase"],angular.module("c8y.ui").component("c8ySshKeyInput",{bindings:{key:"=",keytype:"@",readonly:"<"},templateUrl:":::PLUGIN_PATH:::/ui/forms/ssh-key-input.html",controller:e,controllerAs:"vm"})})();
@@ -1 +0,0 @@
1
- angular.module("c8y.parts.deviceListMap").controller("deviceListMapVPCtrl",["$scope","c8yTitle","gettext","gettextCatalog","c8yConfig",function(e,t,a,i,r){var l;e.cssClass="fixedFullArea",e.markerTemplate=r.deviceListMap.markerTemplate||null,e.realtime=r.deviceListMap.realtime||!1,e.legend=r.deviceListMap.legend||!1,e.refresh=function(){e.$broadcast("refresh")},e.paging={refresh:!0},t.changeTitle({title:a("Device map"),subtitle:l?i.getString("{{qty}} markers",{qty:l}):void 0})}]);
@@ -1,19 +0,0 @@
1
- {
2
- "name": "Device list map",
3
- "ngModules": [
4
- "c8y.parts.deviceListMap"
5
- ],
6
- "category": "Device",
7
- "icon": "bell",
8
- "color": "#F2DF0F",
9
- "list": false,
10
- "description": "Map overview of every device.",
11
- "js": [
12
- "index.js",
13
- "controllers/deviceListMap.js"
14
- ],
15
- "folderName": "deviceListMap",
16
- "appsInclude": [
17
- "devicemanagement"
18
- ]
19
- }
@@ -1 +0,0 @@
1
- angular.module("c8y.parts.deviceListMap",[]).constant("c8yMapsConfiguration",{deviceListMap:{},tracking:{}}).config(["$routeProvider","c8yNavigatorProvider","gettext","c8yMapsConfiguration",function(i,a,e,t){a.addNavigation(t.deviceListMap.navigation||{parent:e("Devices"),name:e("Map"),priority:1900,path:"devicemap",icon:"c8y-location"}),i.when("/devicemap",{templateUrl:":::PLUGIN_PATH:::/views/index.html"})}]);
@@ -1,21 +0,0 @@
1
- <c8y-breadcrumbs-set>
2
- <c8y-breadcrumbs-item
3
- label="{{ 'Map' | translate }}"
4
- icon="c8y-location"
5
- ></c8y-breadcrumbs-item>
6
- <c8y-breadcrumbs-item
7
- label="{{ 'Devices' | translate }}"
8
- icon="exchange"
9
- ></c8y-breadcrumbs-item>
10
- </c8y-breadcrumbs-set>
11
-
12
- <div data-ng-controller="deviceListMapVPCtrl" class="fullpage-map">
13
- <c8y-map-internal
14
- marker-template="markerTemplate"
15
- c8y-legend="legend"
16
- control-buttons="true"
17
- multiple-devices="false"
18
- css-class="{{ cssClass }}"
19
- realtime="realtime"
20
- ></c8y-map-internal>
21
- </div>
@@ -1 +0,0 @@
1
- angular.module("c8y.custom-branding").constant("c8yBrandingMapping",{fileProperties:[{key:"appLogo",filename:"logo-nav",cssVar:"navigator-platform-logo"},{key:"brand-logo-img",filename:"logo",cssVar:"brand-logo-img"},{key:"favicon",filename:"favicon",option:"faviconUrl"}],cookieBannerProperties:["cookieBannerDisabled","cookieBannerTitle","cookieBannerText","policyUrl"],nonCssProperties:["__import-font","html_title"],cssVarMapping:{headerColor:"header-color",appLogo:"navigator-platform-logo",navColor:"navigator-bg-color",navColorHeader:"navigator-header-bg","appLogo-height":"navigator-platform-logo-height","font-family-sans-serif":"font-family-base","headings-font-family":"font-family-headings","brand-logo-height":"brand-logo-img-height",html_title:"globalTitle",favicon:"faviconUrl"},fontFamilyCssVars:{"@font-family-sans-serif":"font-family-base","@headings-font-family":"font-family-headings"}});
@@ -1 +0,0 @@
1
- (()=>{function n(t,e,r){var a=e.url("service/".concat("branding","/")),o={"Content-Type":"application/json"};return{update:function(){var n={headers:o};return t.post("".concat(a,"update"),n).then(e.getResData)},state:function(){var n={headers:o,silentError:!0};return t.get("".concat(a,"state"),{},n).then(e.getResData)},wizardPreview:function(){return n({process:_.constant("preview")})},wizardGenerate:function(){return n({process:_.constant("generate")})}};function n(n){return r.open({component:"c8yBrandingProcessExecution",backdrop:"static",keyboard:!1,resolve:n}).result}}n.$inject=["$http","c8yBase","c8yWizardModal"],angular.module("c8y.custom-branding").factory("c8yBrandingConfiguration",n)})();
@@ -1 +0,0 @@
1
- (()=>{function n(r,n,t,e,i,o,a,c,l,s,u,d,g,f){var p,m,b,y,v=f("humanizeAppName"),h=this,f=s("Apply branding"),I=s("Save branding configuration first"),B={html_title:w,favicon:function(n){h.favicon=n?n.fileSrc:"",p&&p.document.querySelector("link[rel=icon]")&&(p.document.querySelector("link[rel=icon]").href=n?n.fileSrc:"")},"navigator-font-family":function(n){k("navigator-font-family",a.getFontFamilyCssVar(n))},appLogo:function(n){return k("navigator-platform-logo",n?"url(".concat(n.fileSrc,")"):"")},"brand-logo-img":function(n){return k("brand-logo-img",n?"url(".concat(n.fileSrc,")"):"")},"__import-font":function(n){var e=document.createElement("style");e.innerText="@import url('".concat(n,"')"),C().contentDocument.head.appendChild(e),p&&p.document.head.appendChild(e)}};function C(){return document.querySelector("#previewBrowser")}function N(){return h.isLoading=!0,n.all({schema:i.getSchema(),form:i.getForm(),options:i.getSchemaFormOptions(),branding:i.getBranding(),app:d.getCurrent()}).then(function(n){var e=n.schema,t=n.form,o=n.options,i=n.branding,n=n.app,a=(_.defaults(i,{c8y_less_variables:{}}),b=_.cloneDeep(i),_.assign(h,{schema:e,form:t,options:o,branding:i}),y=n,C());a.src="".concat(d.getHref(y),"/index.html"),a.onload=function(){a.appTitle=a.contentDocument.title,_.set(a.contentWindow,"C8Y_PREVIEW.preview",!0),_.set(a.contentWindow,"C8Y_PREVIEW.previewCookieBanner",R()),w(),T()},r.$watchCollection("vm.branding.c8y_less_variables",T)}).finally(function(){h.isLoading=!1})}function w(n){n=n||A();h.title="".concat(n," - ").concat(C().appTitle),p&&(p.document.title="".concat(n," - ").concat(p.appTitle),p.C8Y_PREVIEW.globalTitle=n)}function A(){return _.get(h,"branding.c8y_less_variables.html_title")||u.appOption("globalTitle")}function R(){return _.pick(h.branding.c8y_less_variables,["cookieBannerDisabled","cookieBannerTitle","cookieBannerText","policyUrl"])}function T(){h.isLoading||_.forOwn(h.branding.c8y_less_variables,function(n,e){B[e]?B[e](n):k(e,n)})}function k(n,e){E(n,e,C().contentDocument.documentElement),p&&E(n,e,p.document.documentElement)}function E(n,e,t){n=a.keyToCssVar(n);"navigator-platform-logo-height"===n?null==e||""===e?t.style.removeProperty("--".concat(n)):t.style.setProperty("--".concat(n),"".concat(e,"%")):t.style.setProperty("--".concat(n),_.isNumber(e)?"".concat(e,"px"):e)}function P(){return o.state().then(S)}function S(n){var e=h.state;h.state=n,e&&e.RUNNING&&!n.RUNNING&&l.success(s("Branded applications created.")),e&&e.WAITING&&n.RUNNING&&l.success(s("Branded applications will be created.")),(n.RUNNING||n.WAITING)&&t(P,2e3)}_.assign(h,{$onInit:function(){c&&P();return N()},applyTitle:f,dirtyFormApplyTitle:I,canSave:function(){return!(_.get(r,"platformConfigurationForm1.$invalid")||_.get(r,"platformConfigurationForm2.$invalid"))},save:function(){var t=[],o=i.BINARY_VARS;return h.branding.binary_ref={},_.each(o,function(e){var n;h.branding.c8y_less_variables[e]&&(n=i.saveBinary(e,h.branding.c8y_less_variables[e],b.binary_ref,b.c8y_less_variables[e]).then(function(n){h.branding.binary_ref[e]=_.pick(n,["id","name"])}),t.push(n))}),n.all(t).then(function(){return h.branding.c8y_less_variables=_.omitBy(h.branding.c8y_less_variables,function(n,e){return""===_.trim(n)||_.includes(o,e)}),i.saveConfiguration(h.branding,b.id).then(function(){return l.success(s("Branding saved."))})}).then(e.reload)},generate:o.wizardGenerate,preview:function(){p=window.open("".concat(d.getHref(y),"/index.html"),"_blank","noopener,noreferrer"),function e(){clearInterval(m);m=setInterval(function(){var n;p&&(p.C8Y_PREVIEW={preview:!0,globalTitle:A(),previewCookieBanner:R()},p.C8Y_APP)&&(n=p.C8Y_APP.name,p.appTitle=v(n),clearInterval(m),T(),p.onunload=function(){return e()})})}()},blocked:function(){var n=h.state;return!_.get(h,"branding.id")||_.get(n,"RUNNING")||_.get(n,"WAITING")},title:window.document.title,favicon:"favicon.ico",useMicroservice:c,applyConfiguration:function(){a.removeLegacyBrandedApplications().then(function(){return g({status:"info",title:s("Apply branding configuration"),body:s("You are about to apply the branding configuration, making it visible to all subtenants. Do you want to proceed?"),labels:{ok:s("Apply")}})}).then(function(){a.deploy(h.branding.c8y_less_variables).then(function(){return l.success(s("Branding configuration is being applied. It usually takes less than a minute."))},function(n){l.danger(u.getResErrorMessage(n))})})},removeAppliedBranding:function(){g({status:"info",title:s("Remove branding"),body:s("You are about to remove applied branding.\n If you have any extra customization options set, they will be reset.\n The default branding will be shown to all subtenants. Do you want to proceed?"),labels:{ok:s("Remove")}}).then(function(){a.reset().then(function(){return l.success(s("Branding has been removed."))})})},resetForm:function(n){g({status:"info",title:s("Reset branding configuration"),body:s("You are about to reset the branding configuration to the previously saved settings.\n Do you want to proceed?"),labels:{ok:s("Reset")}}).then(function(){N().then(function(){n&&n.$setPristine(),l.success(s("Branding configuration has been reset."))},function(n){return l.danger(n)})})}})}n.$inject=["$scope","$q","$timeout","$route","c8yBrandingConfigurationUi","c8yBrandingConfiguration","c8yBrandingDeploy","USE_BRANDING_MICROSERVICE","c8yAlert","gettext","c8yBase","c8yApplication","c8yModal","$filter"],angular.module("c8y.custom-branding").component("c8yBrandingConfigurationForm",{templateUrl:":::PLUGIN_PATH:::/customBranding/brandingConfigurationForm.html",controller:n,controllerAs:"vm"})})();