@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.
- package/alarmsEventsExplorer/alarmsEventsTimelinesConfig/alarmsEventsTimelinesConfig.html +1 -1
- package/assetPropertyWidget/img/asset-properties-widget-pr.png +0 -0
- package/assetPropertyWidget/views/config.html +1 -1
- package/assetTable/assetTable2/img/asset-table-widget-pr.png +0 -0
- package/assetTable/img/asset-table-widget-pr.png +0 -0
- package/core/core/services/audits.js +1 -1
- package/core/core/services/retentions.js +1 -1
- package/core/core/services/tenant.js +1 -1
- package/core/core/services/user.js +1 -1
- package/core/cumulocity.json +0 -1
- package/core/locales/de.po +472 -720
- package/core/locales/es.po +422 -671
- package/core/locales/fr.po +501 -751
- package/core/locales/ja_JP.po +494 -740
- package/core/locales/ko.po +421 -671
- package/core/locales/nl.po +424 -672
- package/core/locales/pl.po +422 -672
- package/core/locales/pt_BR.po +519 -768
- package/core/locales/zh_CN.po +421 -671
- package/core/locales/zh_TW.po +422 -671
- package/core/ui/properties/propertySelector.html +156 -109
- package/core/ui/views/auditList.html +2 -2
- package/core/ui/views/eventList.html +2 -2
- package/core/ui/views/filePicker.html +1 -1
- package/dataBroker/connectors/connectors.service.js +1 -1
- package/dataPointExplorer/img/data-points-graph-widget-pr.png +0 -0
- package/dataPointExplorer/views/widgetConfig.html +92 -94
- package/device-protocols/object-mapping.component.js +1 -1
- package/device-protocols/object-mapping.html +1 -1
- package/deviceDatabase4/modals/configure-discrete-io.html +1 -1
- package/deviceDatabase4/modals/configure-register.html +1 -1
- package/deviceDetail/cumulocity.json +1 -2
- package/deviceStatusWidget/ownerStatus.html +2 -2
- package/deviceStatusWidget/requiredAvailabilityIntervalSetting.html +4 -4
- package/devicemanagement-eventList/index.js +1 -1
- package/enterpriseEdition/cumulocity.json +0 -13
- package/enterpriseEdition/enterpriseEdition.module.js +1 -1
- package/eventList/img/events-list-widget-pr.png +0 -0
- package/eventList/views/eventListConfig.html +39 -32
- package/export/cumulocity.json +0 -1
- package/export/index.js +1 -1
- package/export/services/config.js +1 -1
- package/htmlWidget/index.js +1 -1
- package/kpi/img/data-points-list-widget-pr.png +0 -0
- package/kpi/views/gaugeConfig.html +28 -34
- package/kpi/views/listConfig.html +14 -18
- package/kpi/views/pieChartConfig.html +30 -36
- package/modbusConfiguration4/fieldbus-device-list.component.js +1 -1
- package/modbusWidget4/widget-config.html +74 -84
- package/package.json +11 -13
- package/propertiesLibrary/index.js +1 -1
- package/roles/list/rolesList.html +0 -2
- package/scada/views/componentConfig.html +23 -23
- package/scada/views/mapping.html +41 -39
- package/smartRules/controllers/add.js +1 -1
- package/smartRules/controllers/list.js +1 -1
- package/smartRules/list/smartRulesList.component.js +1 -1
- package/smartRules/list/smartRulesList.html +2 -2
- package/smartRules/services/smartRules.js +1 -1
- package/smartRules/views/add.html +32 -10
- package/smartRules/views/list.html +4 -3
- package/trafficLightWidget/states-mapping.html +82 -69
- package/administration-config/administration-config.module.js +0 -1
- package/administration-config/cumulocity.json +0 -13
- package/asset-notes/assetNotes.component.js +0 -1
- package/asset-notes/assetNotes.html +0 -93
- package/asset-notes/assetNotes.module.js +0 -1
- package/asset-notes/assetNotes.service.js +0 -1
- package/asset-notes/cumulocity.json +0 -13
- package/core/ui/forms/ssh-key-input.html +0 -33
- package/core/ui/forms/ssh-key-input.js +0 -1
- package/devicemanagement-deviceListMap/controllers/deviceListMap.js +0 -1
- package/devicemanagement-deviceListMap/cumulocity.json +0 -19
- package/devicemanagement-deviceListMap/index.js +0 -1
- package/devicemanagement-deviceListMap/views/index.html +0 -21
- package/enterpriseEdition/customBranding/brandingConfiguration.constants.js +0 -1
- package/enterpriseEdition/customBranding/brandingConfiguration.service.js +0 -1
- package/enterpriseEdition/customBranding/brandingConfigurationForm.component.js +0 -1
- package/enterpriseEdition/customBranding/brandingConfigurationForm.html +0 -141
- package/enterpriseEdition/customBranding/brandingConfigurationUi.provider.js +0 -1
- package/enterpriseEdition/customBranding/brandingDeploy.service.js +0 -1
- package/enterpriseEdition/customBranding/brandingProcessExecution.component.js +0 -1
- package/enterpriseEdition/customBranding/brandingProcessExecution.html +0 -120
- package/enterpriseEdition/customBranding/custom-branding.module.js +0 -1
- package/enterpriseEdition/customBranding/microservice.value.js +0 -1
- package/enterpriseEdition/ui-assets/index.js +0 -1
- package/enterpriseEdition/ui-assets/public-options.service.js +0 -1
- package/enterpriseEdition/ui-assets/static-assets.service.js +0 -1
- package/enterpriseEdition/ui-assets/ui-assets.service.js +0 -1
- package/export/controllers/list.js +0 -1
- package/export/views/list.html +0 -298
- package/remoteAccess/clients/remoteAccessClients.service.js +0 -1
- package/remoteAccess/clients/terminal/index.html +0 -30
- package/remoteAccess/clients/terminal/index.js +0 -1
- package/remoteAccess/clients/terminal/shell-adapter.js +0 -1
- package/remoteAccess/clients/terminal/style.css +0 -25
- package/remoteAccess/clients/terminal/telnet-negotiator.js +0 -1
- package/remoteAccess/clients/vnc/vncClient.html +0 -60
- package/remoteAccess/clients/vnc/vncClient.js +0 -1
- package/remoteAccess/cumulocity.json +0 -69
- package/remoteAccess/remoteAccess.module.js +0 -1
- package/remoteAccess/remoteAccess.service.js +0 -1
- package/remoteAccess/remoteAccessEndpointCard/remoteAccessEndpointCard.component.js +0 -1
- package/remoteAccess/remoteAccessEndpointCard/remoteAccessEndpointCard.html +0 -89
- package/remoteAccess/remoteAccessEndpointModal/remoteAccessEndpointModal.component.js +0 -1
- package/remoteAccess/remoteAccessEndpointModal/remoteAccessEndpointModal.html +0 -484
- package/remoteAccess/remoteAccessEndpointModal/suggestedIPAddressTemplate.html +0 -8
- package/remoteAccess/remoteAccessEndpointsList/remoteAccessEndpointsList.component.js +0 -1
- package/remoteAccess/remoteAccessEndpointsList/remoteAccessEndpointsList.html +0 -75
- package/remoteAccess/remoteAccessSettings/remoteAccessSettings.component.js +0 -1
- package/remoteAccess/remoteAccessSettings/remoteAccessSettings.html +0 -37
- 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
|
|
4
|
-
|
|
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
|
|
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
|
|
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
|
|
34
|
-
|
|
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
|
|
39
|
-
|
|
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="
|
|
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="
|
|
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="
|
|
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
|
-
<
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
<div class="table-responsive">
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
>
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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"})})();
|