@c8y/ng1-modules 1017.19.0 → 1017.21.0
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/administration-deviceUsers/views/list.html +1 -0
- package/alarmsEventsExplorer/alarmsEventsTimelinesConfig/alarmsEventsTimelinesConfig.html +1 -0
- package/asset-notes/assetNotes.html +15 -6
- package/assetPropertyWidget/views/main.html +2 -2
- package/binaryArtefactsManagement/views/list.html +1 -0
- package/commandTemplates/views/commandTemplates.html +1 -0
- package/core/ui/containers/header.html +1 -0
- package/core/ui/forms/search.html +2 -0
- package/core/ui/header/actions.html +1 -0
- package/core/ui/itemSelector/itemSelector.html +1 -0
- package/core/ui/navigation/breadcrumbs.html +3 -1
- package/core/ui/properties/propertySelector.html +1 -0
- package/core/ui/schemaForm/overrides/decorators/bootstrap/checkbox.html +7 -2
- package/core/ui/schemaForm/overrides/decorators/bootstrap/default.html +9 -10
- package/core/ui/schemaForm/overrides/decorators/bootstrap/password.html +9 -8
- package/core/ui/schemaForm/overrides/decorators/bootstrap/textarea.html +7 -7
- package/core/ui/user/editUser.directive.html +1 -0
- package/core/ui/views/actions.html +2 -0
- package/core/ui/views/filePicker.html +4 -1
- package/core/ui/views/loadmore.html +1 -0
- package/dataBroker/connectors/connectors.html +1 -0
- package/dataBroker/subscriptions/subscription.html +1 -0
- package/device-protocol-deviceDatabase4/device-type-create-step.html +11 -10
- package/device-protocol-impact/impact-create-step.html +13 -11
- package/device-protocol-opcua-v2/opcua-v2-create-step.html +8 -3
- package/device-protocols/deviceProtocolList.html +1 -0
- package/deviceDatabase4/device-type-list.html +1 -0
- package/deviceDatabase4/modals/import-device-type.html +4 -2
- package/deviceDetailIdentity/views/identity.html +1 -12
- package/deviceStatusWidget/requiredAvailabilityIntervalSetting.html +3 -2
- package/devicemanagement-location/views/index.html +5 -6
- package/devicemanagement-logViewer/views/index.html +1 -0
- package/export/views/list.html +1 -0
- package/generic-ui/generic-ui-inventory.html +1 -0
- package/groupsHierarchy/views/groupsList.html +1 -0
- package/measurements/views/iconBar.html +2 -2
- package/package.json +1 -1
- package/remoteAccess/remoteAccessEndpointCard/remoteAccessEndpointCard.html +1 -0
- package/roles/detail/roleInventoryPermissionList.html +25 -16
- package/roles/list/rolesList.html +1 -0
- package/simulators/list/list.html +1 -0
- package/smartRestEditor/requestEditor/requestEditor.html +2 -2
- package/smartRestEditor/valueInput/valueInput.html +1 -3
- package/smartRestEditor/views/list.html +1 -0
- package/smartRules/views/childAssetsSelector.html +1 -0
- package/tenantLicenses/licenseManagement.html +1 -0
- package/tenantPolicies/tenantPolicyList/tenantPolicyList.html +1 -0
- package/userRoles/inventoryRoleSelector/inventoryRoleSelector.html +2 -0
- package/users/userList/userList.html +1 -0
|
@@ -6,20 +6,30 @@
|
|
|
6
6
|
<div ng-if="vm.notes && !vm.notes.htmlContent">
|
|
7
7
|
{{ 'No notes yet.' | translate }}
|
|
8
8
|
<c8y-if-allowed admin-mos="[vm.config.context]">
|
|
9
|
-
<
|
|
9
|
+
<button
|
|
10
|
+
type="button"
|
|
11
|
+
title="{{ 'Edit' | translate }}"
|
|
12
|
+
class="btn btn-link btn-sm"
|
|
13
|
+
ng-click="vm.edit()"
|
|
14
|
+
>
|
|
10
15
|
<i c8y-icon="pencil"></i>
|
|
11
16
|
{{ 'Edit' | translate }}
|
|
12
|
-
</
|
|
17
|
+
</button>
|
|
13
18
|
</c8y-if-allowed>
|
|
14
19
|
</div>
|
|
15
20
|
|
|
16
21
|
<div ng-if="vm.notes && vm.notes.htmlContent" class="text-break-word asset-notes-body">
|
|
17
22
|
<span ng-bind-html="vm.notes.htmlContent"></span>
|
|
18
23
|
<c8y-if-allowed admin-mos="[vm.config.context]">
|
|
19
|
-
<
|
|
24
|
+
<button
|
|
25
|
+
type="button"
|
|
26
|
+
title="{{ 'Edit' | translate }}"
|
|
27
|
+
class="btn btn-link btn-sm"
|
|
28
|
+
ng-click="vm.edit()"
|
|
29
|
+
>
|
|
20
30
|
<i c8y-icon="pencil"></i>
|
|
21
31
|
{{ 'Edit' | translate }}
|
|
22
|
-
</
|
|
32
|
+
</button>
|
|
23
33
|
</c8y-if-allowed>
|
|
24
34
|
</div>
|
|
25
35
|
|
|
@@ -34,6 +44,7 @@
|
|
|
34
44
|
<div ng-if="vm.editable" class="fit-h flex-grow">
|
|
35
45
|
<div class="d-flex a-i-stretch fit-h">
|
|
36
46
|
<textarea
|
|
47
|
+
aria-label="{{ 'Notes' | translate }}"
|
|
37
48
|
class="form-control fit-h"
|
|
38
49
|
ng-model="vm.editedNotes.htmlContent"
|
|
39
50
|
rows="5"
|
|
@@ -43,7 +54,6 @@
|
|
|
43
54
|
<button
|
|
44
55
|
type="button"
|
|
45
56
|
class="btn btn-dot"
|
|
46
|
-
aria-label="{{ 'Save' | translate }}"
|
|
47
57
|
ng-click="vm.save()"
|
|
48
58
|
title="{{ 'Save' | translate }}"
|
|
49
59
|
>
|
|
@@ -55,7 +65,6 @@
|
|
|
55
65
|
type="button"
|
|
56
66
|
class="btn btn-dot"
|
|
57
67
|
ng-click="vm.cancel()"
|
|
58
|
-
aria-label="{{ 'Cancel' | translate }}"
|
|
59
68
|
title="{{ 'Cancel' | translate }}"
|
|
60
69
|
>
|
|
61
70
|
<i c8y-icon="times"></i>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
></c8y-schema-form>
|
|
10
10
|
</form>
|
|
11
11
|
<c8y-if-allowed admin-mos="[managedObject]" class="d-contents">
|
|
12
|
-
<div class="p-
|
|
12
|
+
<div class="p-t-8 p-16" ng-show="editable && canAddProperties()">
|
|
13
13
|
<button
|
|
14
14
|
title="{{ 'Add fragment' | translate }}"
|
|
15
15
|
type="button"
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
</button>
|
|
22
22
|
</div>
|
|
23
23
|
|
|
24
|
-
<div c8y-widget-footer class="p-16 sticky-bottom bg-level-
|
|
24
|
+
<div c8y-widget-footer class="p-16 sticky-bottom bg-level-0 separator-top">
|
|
25
25
|
<button
|
|
26
26
|
title="{{ 'Edit' | translate }}"
|
|
27
27
|
type="button"
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
type="button"
|
|
12
12
|
class="main-header-button dropdown-toggle c8y-dropdown"
|
|
13
13
|
uib-dropdown-toggle
|
|
14
|
+
aria-haspopup="true"
|
|
14
15
|
>
|
|
15
16
|
<i c8y-icon="search" class="icon-2x"></i>
|
|
16
17
|
</button>
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
class="btn btn-link dropdown-toggle"
|
|
35
36
|
ng-if="vm.searchFunctionList.length > 1"
|
|
36
37
|
uib-dropdown-toggle
|
|
38
|
+
aria-haspopup="true"
|
|
37
39
|
>
|
|
38
40
|
<span class="caret"></span>
|
|
39
41
|
<i c8y-icon="search"></i>
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
ng-class="{ open: showAll, multiple: breadcrumbs.length > 1 }"
|
|
5
5
|
>
|
|
6
6
|
<button
|
|
7
|
+
title="{{ 'Expand/collapse all breadcrumbs' | translate }}"
|
|
8
|
+
aria-label="{{ 'Expand/collapse all breadcrumbs' | translate }}"
|
|
7
9
|
ng-show="breadcrumbs.length > 1"
|
|
8
10
|
class="btn-show-all-breadcrumbs pull-left"
|
|
9
11
|
ng-click="showAll = !showAll"
|
|
@@ -11,7 +13,7 @@
|
|
|
11
13
|
<i
|
|
12
14
|
ng-hide="showAll"
|
|
13
15
|
c8y-icon="caret-right"
|
|
14
|
-
uib-tooltip="{{ '
|
|
16
|
+
uib-tooltip="{{ 'Expand all breadcrumbs' | translate }}"
|
|
15
17
|
tooltip-append-to-body="true"
|
|
16
18
|
tooltip-placement="auto"
|
|
17
19
|
tooltip-popup-delay="500"
|
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
'has-success': form.disableSuccessState !== true && hasSuccess()
|
|
7
7
|
}"
|
|
8
8
|
>
|
|
9
|
-
<label
|
|
9
|
+
<label
|
|
10
|
+
title="{{ form.title | translate }}"
|
|
11
|
+
class="c8y-checkbox {{ form.labelHtmlClass }}"
|
|
12
|
+
for="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
13
|
+
>
|
|
10
14
|
<input
|
|
11
15
|
type="checkbox"
|
|
12
16
|
sf-changed="form"
|
|
@@ -15,7 +19,8 @@
|
|
|
15
19
|
ng-model-options="form.ngModelOptions"
|
|
16
20
|
schema-validate="form"
|
|
17
21
|
class="{{ form.fieldHtmlClass }}"
|
|
18
|
-
|
|
22
|
+
title="{{ form.title | translate }}"
|
|
23
|
+
id="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
19
24
|
/>
|
|
20
25
|
<span></span>
|
|
21
26
|
<!-- To hide the label set form.labelHtmlClass to 'no-label' -->
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<label
|
|
10
10
|
class="control-label {{ form.labelHtmlClass }}"
|
|
11
11
|
ng-class="{ 'sr-only': !showTitle() }"
|
|
12
|
-
for="{{ form.key.slice(-1)[0] + $id }}"
|
|
12
|
+
for="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
13
13
|
>
|
|
14
14
|
{{ form.title | translate }}
|
|
15
15
|
</label>
|
|
@@ -21,15 +21,14 @@
|
|
|
21
21
|
sf-changed="form"
|
|
22
22
|
placeholder="{{ form.placeholder | translate }}"
|
|
23
23
|
class="text-truncate form-control {{ form.fieldHtmlClass }}"
|
|
24
|
-
id="{{ form.key.slice(-1)[0] + $id }}"
|
|
25
24
|
ng-model-options="form.ngModelOptions"
|
|
26
25
|
ng-model="$$value$$"
|
|
27
26
|
ng-readonly="form.readonly"
|
|
28
27
|
schema-validate="form"
|
|
29
|
-
title="
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
title="{{ form.title | translate }}"
|
|
29
|
+
id="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
30
|
+
name="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
31
|
+
/>
|
|
33
32
|
|
|
34
33
|
<div
|
|
35
34
|
ng-if="form.fieldAddonLeft || form.fieldAddonRight"
|
|
@@ -47,14 +46,14 @@
|
|
|
47
46
|
sf-changed="form"
|
|
48
47
|
placeholder="{{ form.placeholder | translate }}"
|
|
49
48
|
class="text-truncate form-control {{ form.fieldHtmlClass }}"
|
|
50
|
-
id="{{ form.key.slice(-1)[0] + $id }}"
|
|
51
49
|
ng-model-options="form.ngModelOptions"
|
|
52
50
|
ng-model="$$value$$"
|
|
53
51
|
ng-readonly="form.readonly"
|
|
54
52
|
schema-validate="form"
|
|
55
|
-
title="{{
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
title="{{ form.title | translate }}"
|
|
54
|
+
id="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
55
|
+
name="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
56
|
+
/>
|
|
58
57
|
|
|
59
58
|
<span
|
|
60
59
|
ng-if="form.fieldAddonRight"
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<label
|
|
10
10
|
class="control-label {{ form.labelHtmlClass }}"
|
|
11
11
|
ng-class="{ 'sr-only': !showTitle() }"
|
|
12
|
-
for="{{ form.key.slice(-1)[0] }}"
|
|
12
|
+
for="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
13
13
|
>
|
|
14
14
|
{{ form.title | translate }}
|
|
15
15
|
</label>
|
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
sf-changed="form"
|
|
22
22
|
placeholder="{{ form.placeholder | translate }}"
|
|
23
23
|
class="form-control {{ form.fieldHtmlClass }}"
|
|
24
|
-
id="{{ form.key.slice(-1)[0] }}"
|
|
25
24
|
ng-model-options="form.ngModelOptions"
|
|
26
25
|
ng-model="$$value$$"
|
|
27
26
|
ng-disabled="form.readonly"
|
|
28
27
|
schema-validate="form"
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
id="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
29
|
+
name="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
30
|
+
title="{{ form.title | translate }}"
|
|
31
31
|
c8y-autocomplete="off"
|
|
32
|
-
|
|
32
|
+
/>
|
|
33
33
|
|
|
34
34
|
<div
|
|
35
35
|
ng-if="form.fieldAddonLeft || form.fieldAddonRight"
|
|
@@ -47,14 +47,15 @@
|
|
|
47
47
|
sf-changed="form"
|
|
48
48
|
placeholder="{{ form.placeholder | translate }}"
|
|
49
49
|
class="form-control {{ form.fieldHtmlClass }}"
|
|
50
|
-
id="{{ form.key.slice(-1)[0] }}"
|
|
51
50
|
ng-model-options="form.ngModelOptions"
|
|
52
51
|
ng-model="$$value$$"
|
|
53
52
|
ng-disabled="form.readonly"
|
|
54
53
|
schema-validate="form"
|
|
55
|
-
|
|
54
|
+
title="{{ form.title | translate }}"
|
|
55
|
+
id="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
56
|
+
name="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
56
57
|
c8y-autocomplete="off"
|
|
57
|
-
|
|
58
|
+
/>
|
|
58
59
|
<span
|
|
59
60
|
ng-if="form.fieldAddonRight"
|
|
60
61
|
class="input-group-addon"
|
|
@@ -8,22 +8,22 @@
|
|
|
8
8
|
<label
|
|
9
9
|
class="{{ form.labelHtmlClass }}"
|
|
10
10
|
ng-class="{ 'sr-only': !showTitle() }"
|
|
11
|
-
for="{{ form.key.slice(-1)[0] }}"
|
|
11
|
+
for="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
12
12
|
>
|
|
13
13
|
{{ form.title | translate }}
|
|
14
14
|
</label>
|
|
15
15
|
<textarea
|
|
16
16
|
ng-if="!form.fieldAddonLeft && !form.fieldAddonRight"
|
|
17
17
|
class="form-control {{ form.fieldHtmlClass }}"
|
|
18
|
-
id="{{ form.key.slice(-1)[0] + $id }}"
|
|
19
18
|
sf-changed="form"
|
|
20
19
|
placeholder="{{ form.placeholder | translate }}"
|
|
21
20
|
ng-readonly="form.readonly"
|
|
22
21
|
ng-model="$$value$$"
|
|
23
22
|
ng-model-options="form.ngModelOptions"
|
|
24
23
|
schema-validate="form"
|
|
25
|
-
name="{{ form.key.slice(-1)[0] }}"
|
|
26
|
-
|
|
24
|
+
name="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
25
|
+
title="{{ form.title | translate }}"
|
|
26
|
+
id="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
27
27
|
rows="10"
|
|
28
28
|
></textarea>
|
|
29
29
|
<div
|
|
@@ -36,16 +36,16 @@
|
|
|
36
36
|
ng-bind-html="form.fieldAddonLeft"
|
|
37
37
|
></span>
|
|
38
38
|
<textarea
|
|
39
|
-
aria-label="{{ 'Form title' | translate }}"
|
|
40
39
|
class="form-control {{ form.fieldHtmlClass }}"
|
|
41
|
-
id="{{ form.key.slice(-1)[0] + $id }}"
|
|
42
40
|
sf-changed="form"
|
|
43
41
|
placeholder="{{ form.placeholder | translate }}"
|
|
44
42
|
ng-readonly="form.readonly"
|
|
45
43
|
ng-model="$$value$$"
|
|
46
44
|
ng-model-options="form.ngModelOptions"
|
|
47
45
|
schema-validate="form"
|
|
48
|
-
name="{{ form.key.slice(-1)[0] }}"
|
|
46
|
+
name="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
47
|
+
title="{{ form.title | translate }}"
|
|
48
|
+
id="sf-{{ form.key.slice(-1)[0] + $id }}"
|
|
49
49
|
></textarea>
|
|
50
50
|
<span
|
|
51
51
|
ng-if="form.fieldAddonRight"
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
</p>
|
|
41
41
|
<div class="progress">
|
|
42
42
|
<div
|
|
43
|
+
aria-label="{{ vm.process.progress + '%' }}"
|
|
43
44
|
class="progress-bar active progress-bar-striped"
|
|
44
45
|
role="progressbar"
|
|
45
|
-
aria-valuenow="{{ vm.process.progress }}"
|
|
46
46
|
aria-valuemin="0"
|
|
47
47
|
aria-valuemax="100"
|
|
48
48
|
style="min-width: 2em"
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
<span class="input-group-btn">
|
|
69
69
|
<button
|
|
70
70
|
title="{{ 'Select file' | translate }}"
|
|
71
|
+
aria-label="{{ 'Select file' | translate }}"
|
|
71
72
|
type="button"
|
|
72
73
|
class="btn btn-default"
|
|
73
74
|
ng-file-select="vm.onFileSelect(file, $files)"
|
|
@@ -78,6 +79,7 @@
|
|
|
78
79
|
<button
|
|
79
80
|
class="btn btn-dot btn-dot--danger"
|
|
80
81
|
title="{{ 'Remove' | translate }}"
|
|
82
|
+
aria-label="{{ 'Remove' | translate }}"
|
|
81
83
|
type="button"
|
|
82
84
|
ng-click="vm.remove(file)"
|
|
83
85
|
ng-show="file.file.name || (vm.multiple && !$first)"
|
|
@@ -89,6 +91,7 @@
|
|
|
89
91
|
</div>
|
|
90
92
|
<button
|
|
91
93
|
title="{{ 'Add file' | translate }}"
|
|
94
|
+
aria-label="{{ 'Add file' | translate }}"
|
|
92
95
|
type="button"
|
|
93
96
|
class="btn btn-default"
|
|
94
97
|
ng-click="vm.add()"
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
<div class="modal-inner-scroll">
|
|
2
|
-
<p
|
|
2
|
+
<p
|
|
3
|
+
class="text-medium text-center p-l-24 p-r-24 p-t-16 p-b-16 bg-component separator-bottom sticky-top"
|
|
4
|
+
>
|
|
3
5
|
{{ vm.wizardCtrl.data.selectedProtocol.name }}
|
|
4
6
|
</p>
|
|
5
7
|
<div class="c8y-wizard-body p-t-16">
|
|
6
8
|
<form class="form" name="modelForm" novalidate>
|
|
7
9
|
<div class="form-group">
|
|
8
|
-
<label translate>Name</label>
|
|
10
|
+
<label for="name" translate>Name</label>
|
|
9
11
|
<input
|
|
12
|
+
id="name"
|
|
10
13
|
name="name"
|
|
11
14
|
class="form-control"
|
|
12
15
|
ng-model="vm.model.name"
|
|
@@ -18,9 +21,10 @@
|
|
|
18
21
|
<c8y-error-feedback field="modelForm.name"></c8y-error-feedback>
|
|
19
22
|
</div>
|
|
20
23
|
<div class="form-group">
|
|
21
|
-
<label translate>Description</label>
|
|
24
|
+
<label for="description" translate>Description</label>
|
|
22
25
|
<textarea
|
|
23
|
-
|
|
26
|
+
id="description"
|
|
27
|
+
rows="7"
|
|
24
28
|
class="form-control"
|
|
25
29
|
ng-model="vm.model.description"
|
|
26
30
|
ng-disabled="vm.pending"
|
|
@@ -34,26 +38,23 @@
|
|
|
34
38
|
title="{{ 'Back' | translate }}"
|
|
35
39
|
class="btn btn-default"
|
|
36
40
|
ng-click="vm.wizardCtrl.goToIndex(0)"
|
|
37
|
-
translate
|
|
38
41
|
>
|
|
39
|
-
Back
|
|
42
|
+
{{ 'Back' | translate }}
|
|
40
43
|
</button>
|
|
41
44
|
<button
|
|
42
45
|
title="{{ 'Cancel' | translate }}"
|
|
43
46
|
class="btn btn-default"
|
|
44
47
|
ng-click="vm.wizardCtrl.dismiss()"
|
|
45
|
-
translate
|
|
46
48
|
>
|
|
47
|
-
Cancel
|
|
49
|
+
{{ 'Cancel' | translate }}
|
|
48
50
|
</button>
|
|
49
51
|
<button
|
|
50
52
|
title="{{ 'Create' | translate }}"
|
|
51
53
|
class="btn btn-primary"
|
|
52
54
|
ng-click="vm.create(vm.model)"
|
|
53
|
-
translate
|
|
54
55
|
ng-disabled="modelForm.$invalid || vm.pending"
|
|
55
56
|
>
|
|
56
|
-
Create
|
|
57
|
+
{{ 'Create' | translate }}
|
|
57
58
|
</button>
|
|
58
59
|
</div>
|
|
59
60
|
</div>
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
<div class="modal-inner-scroll">
|
|
2
|
-
<p
|
|
2
|
+
<p
|
|
3
|
+
class="text-medium text-center p-l-24 p-r-24 p-t-16 p-b-16 bg-component separator-bottom sticky-top"
|
|
4
|
+
>
|
|
3
5
|
{{ vm.wizardCtrl.data.selectedProtocol.name }}
|
|
4
6
|
</p>
|
|
5
7
|
<div class="c8y-wizard-body p-t-16">
|
|
6
8
|
<form class="form" name="modelForm" novalidate>
|
|
7
9
|
<div class="form-group">
|
|
8
|
-
<label translate>ID</label>
|
|
10
|
+
<label for="id" translate>ID</label>
|
|
9
11
|
<input
|
|
12
|
+
id="id"
|
|
10
13
|
name="id"
|
|
11
14
|
class="form-control"
|
|
12
15
|
ng-model="vm.model.id"
|
|
@@ -18,8 +21,9 @@
|
|
|
18
21
|
<c8y-error-feedback field="modelForm.id"></c8y-error-feedback>
|
|
19
22
|
</div>
|
|
20
23
|
<div class="form-group">
|
|
21
|
-
<label translate>Name</label>
|
|
24
|
+
<label for="name" translate>Name</label>
|
|
22
25
|
<input
|
|
26
|
+
id="name"
|
|
23
27
|
name="name"
|
|
24
28
|
class="form-control"
|
|
25
29
|
ng-model="vm.model.name"
|
|
@@ -31,9 +35,10 @@
|
|
|
31
35
|
<c8y-error-feedback field="modelForm.name"></c8y-error-feedback>
|
|
32
36
|
</div>
|
|
33
37
|
<div class="form-group">
|
|
34
|
-
<label translate>Description</label>
|
|
38
|
+
<label for="description" translate>Description</label>
|
|
35
39
|
<textarea
|
|
36
|
-
|
|
40
|
+
id="description"
|
|
41
|
+
rows="7"
|
|
37
42
|
class="form-control"
|
|
38
43
|
ng-model="vm.model.description"
|
|
39
44
|
ng-disabled="vm.pending"
|
|
@@ -47,26 +52,23 @@
|
|
|
47
52
|
title="{{ 'Back' | translate }}"
|
|
48
53
|
class="btn btn-default"
|
|
49
54
|
ng-click="vm.wizardCtrl.goToIndex(0)"
|
|
50
|
-
translate
|
|
51
55
|
>
|
|
52
|
-
Back
|
|
56
|
+
{{ 'Back' | translate }}
|
|
53
57
|
</button>
|
|
54
58
|
<button
|
|
55
59
|
title="{{ 'Cancel' | translate }}"
|
|
56
60
|
class="btn btn-default"
|
|
57
61
|
ng-click="vm.wizardCtrl.dismiss()"
|
|
58
|
-
translate
|
|
59
62
|
>
|
|
60
|
-
Cancel
|
|
63
|
+
{{ 'Cancel' | translate }}
|
|
61
64
|
</button>
|
|
62
65
|
<button
|
|
63
66
|
title="{{ 'Create' | translate }}"
|
|
64
67
|
class="btn btn-primary"
|
|
65
68
|
ng-click="vm.create(vm.model)"
|
|
66
|
-
translate
|
|
67
69
|
ng-disabled="modelForm.$invalid || vm.pending"
|
|
68
70
|
>
|
|
69
|
-
Create
|
|
71
|
+
{{ 'Create' | translate }}
|
|
70
72
|
</button>
|
|
71
73
|
</div>
|
|
72
74
|
</div>
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
<form class="form" name="modelForm" novalidate>
|
|
8
8
|
<div class="c8y-wizard-body p-t-16">
|
|
9
9
|
<div class="form-group">
|
|
10
|
-
<label translate>Name</label>
|
|
10
|
+
<label for="name" translate>Name</label>
|
|
11
11
|
<input
|
|
12
|
+
id="name"
|
|
12
13
|
name="name"
|
|
13
14
|
class="form-control"
|
|
14
15
|
ng-model="vm.model.name"
|
|
@@ -20,8 +21,9 @@
|
|
|
20
21
|
<c8y-error-feedback field="modelForm.name"></c8y-error-feedback>
|
|
21
22
|
</div>
|
|
22
23
|
<div class="form-group">
|
|
23
|
-
<label translate>Description</label>
|
|
24
|
+
<label for="description" translate>Description</label>
|
|
24
25
|
<textarea
|
|
26
|
+
id="description"
|
|
25
27
|
rows="4"
|
|
26
28
|
class="form-control"
|
|
27
29
|
ng-model="vm.model.description"
|
|
@@ -34,7 +36,10 @@
|
|
|
34
36
|
<button
|
|
35
37
|
type="button"
|
|
36
38
|
class="btn-help btn-help--sm"
|
|
37
|
-
aria-label="{{
|
|
39
|
+
aria-label="{{
|
|
40
|
+
'Selecting a reference server allows you to create device types based on the OPC UA model stored on an OPC UA server. This greatly simplifies the mapping process, since device types can be created based on OPC UA browse paths being actually present on the server.'
|
|
41
|
+
| translate
|
|
42
|
+
}}"
|
|
38
43
|
uib-popover="{{
|
|
39
44
|
'Selecting a reference server allows you to create device types based on the OPC UA model stored on an OPC UA server. This greatly simplifies the mapping process, since device types can be created based on OPC UA browse paths being actually present on the server.'
|
|
40
45
|
| translate
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
<a
|
|
29
29
|
class="btn btn-primary btn-xs showOnHover pull-right"
|
|
30
30
|
uib-tooltip="{{ 'Download' | translate }}"
|
|
31
|
+
aria-label="{{ 'Download' | translate }}"
|
|
31
32
|
tooltip-popup-delay="500"
|
|
32
33
|
tooltip-append-to-body="true"
|
|
33
34
|
download="{{ vm.downloadFileName(deviceTypeInfo) }}"
|
|
@@ -54,13 +55,14 @@
|
|
|
54
55
|
</ui-select>
|
|
55
56
|
</div>
|
|
56
57
|
|
|
57
|
-
<label translate>Or load it from a file</label>
|
|
58
|
+
<label for="file" translate>Or load it from a file</label>
|
|
58
59
|
<div
|
|
59
60
|
class="input-group"
|
|
60
61
|
ng-file-select="vm.onCustomDeviceTypeFileSelected($files)"
|
|
61
62
|
ng-class="{ 'has-error': vm.customDeviceTypeFeedback.type === 'error' }"
|
|
62
63
|
>
|
|
63
64
|
<input
|
|
65
|
+
id="file"
|
|
64
66
|
class="form-control"
|
|
65
67
|
ng-model="vm.selection.custom.file.name"
|
|
66
68
|
placeholder="{{ 'Select file to upload' | translate }}…"
|
|
@@ -85,7 +87,7 @@
|
|
|
85
87
|
class="form-group"
|
|
86
88
|
ng-class="{ 'has-error': vm.importForm.name.$dirty && vm.importForm.name.$invalid }"
|
|
87
89
|
>
|
|
88
|
-
<label translate>Name</label>
|
|
90
|
+
<label for="name" translate>Name</label>
|
|
89
91
|
<input
|
|
90
92
|
class="form-control"
|
|
91
93
|
id="name"
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</c8y-ui-action-bar-set>
|
|
62
62
|
|
|
63
63
|
<div class="row">
|
|
64
|
-
<div class="col-md-
|
|
64
|
+
<div class="col-md-12">
|
|
65
65
|
<c8y-ui-empty-state
|
|
66
66
|
ng-if="ids.length === 0"
|
|
67
67
|
[icon]="'barcode'"
|
|
@@ -114,16 +114,5 @@
|
|
|
114
114
|
</div>
|
|
115
115
|
</div>
|
|
116
116
|
</div>
|
|
117
|
-
<div class="col-md-4">
|
|
118
|
-
<div class="card" data-cy="identity-help-text">
|
|
119
|
-
<div class="card-header">
|
|
120
|
-
<div class="card-title" translate>External ID</div>
|
|
121
|
-
</div>
|
|
122
|
-
<hr />
|
|
123
|
-
<div class="card-block">
|
|
124
|
-
<p class="text-pre-wrap">{{ helpText | translate }}</p>
|
|
125
|
-
</div>
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
128
117
|
</div>
|
|
129
118
|
</div>
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
ng-hide="!!vm.status.maintenanceStatus"
|
|
15
15
|
ng-click="vm.toggleEdit()"
|
|
16
16
|
uib-tooltip="{{ 'Edit' | translate }}"
|
|
17
|
-
aria-label="{{ 'Edit' | translate }}"
|
|
18
17
|
tooltip-popup-delay="500"
|
|
19
18
|
tooltip-append-to-body="true"
|
|
20
19
|
tooltip-trigger="'mouseenter focus'"
|
|
20
|
+
aria-label="{{ 'Edit' | translate }}"
|
|
21
21
|
>
|
|
22
22
|
<i c8y-icon="pencil"></i>
|
|
23
23
|
</button>
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
ng-class="{ 'btn-pending': vm.saveInProgress }"
|
|
46
46
|
ng-disabled="vm.saveInProgress || vm.availabilityForm.$invalid || !!vm.status.maintenanceStatus"
|
|
47
47
|
ng-click="vm.save()"
|
|
48
|
-
aria-label="{{ 'Save' | translate }}"
|
|
49
48
|
type="button"
|
|
49
|
+
aria-label="{{ 'Save' | translate }}"
|
|
50
50
|
>
|
|
51
51
|
<span title="{{ 'Save' | translate }}" ng-hide="vm.saveInProgress" class="text-success">
|
|
52
52
|
<i c8y-icon="check"></i>
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
<input
|
|
88
88
|
id="maintenance"
|
|
89
89
|
title="{{ 'Enable/disable maintenance' | translate }}"
|
|
90
|
+
aria-label="{{ 'Enable/disable maintenance' | translate }}"
|
|
90
91
|
type="checkbox"
|
|
91
92
|
ng-click="vm.switchMaintenance(vm.device)"
|
|
92
93
|
ng-checked="vm.status.maintenanceStatus"
|
|
@@ -30,7 +30,10 @@
|
|
|
30
30
|
popover-placement="left"
|
|
31
31
|
popover-trigger="'focus'"
|
|
32
32
|
class="btn-help"
|
|
33
|
-
aria-label="{{
|
|
33
|
+
aria-label="{{
|
|
34
|
+
'Device location may be set by the device itself, or manually in the platform'
|
|
35
|
+
| translate
|
|
36
|
+
}}"
|
|
34
37
|
>
|
|
35
38
|
<i c8y-icon="question-circle-o"></i>
|
|
36
39
|
</button>
|
|
@@ -117,11 +120,7 @@
|
|
|
117
120
|
class="form-control"
|
|
118
121
|
/>
|
|
119
122
|
<span class="input-group-btn">
|
|
120
|
-
<button
|
|
121
|
-
title="{{ 'Search' | translate }}"
|
|
122
|
-
class="btn btn-dot"
|
|
123
|
-
type="submit"
|
|
124
|
-
>
|
|
123
|
+
<button title="{{ 'Search' | translate }}" class="btn btn-dot" type="submit">
|
|
125
124
|
<i c8y-icon="search"></i>
|
|
126
125
|
</button>
|
|
127
126
|
</span>
|
package/export/views/list.html
CHANGED
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
<button
|
|
42
42
|
type="button"
|
|
43
43
|
class="btn-help btn-help--sm"
|
|
44
|
-
aria-label="{{ '
|
|
45
|
-
uib-popover-html="'Drag
|
|
44
|
+
aria-label="{{ 'Drag X-Axis to move time.<br>Select time period to zoom.<br>Double click to zoom out.<br>Values in the Y-Axis may be truncated, hover over the values or the circle in the bottom to display whole values.' | translate }}"
|
|
45
|
+
uib-popover-html="'Drag X-Axis to move time.<br>Select time period to zoom.<br>Double click to zoom out.<br>Values in the Y-Axis may be truncated, hover over the values or the circle in the bottom to display whole values.' | translate"
|
|
46
46
|
popover-placement="right"
|
|
47
47
|
popover-trigger="'focus'"
|
|
48
48
|
popover-append-to-body="true"
|
package/package.json
CHANGED
|
@@ -4,26 +4,29 @@
|
|
|
4
4
|
<div class="d-flex">
|
|
5
5
|
<div class="c8y-list__item__block flex-grow">
|
|
6
6
|
<div class="c8y-list__item__body text-truncate-wrap p-l-0">
|
|
7
|
-
<span class="text-muted"><em translate>No permissions for this scope.</em></span>
|
|
7
|
+
<span class="text-muted"><em translate>No permissions for this scope.</em></span>
|
|
8
8
|
<button
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
title="{{ 'Add' | translate }}"
|
|
10
|
+
type="button"
|
|
11
|
+
ng-click="vm.add()"
|
|
12
|
+
class="btn-clean p-8"
|
|
13
|
+
>
|
|
14
|
+
<i c8y-icon="plus-circle" class="text-primary m-r-4 m-l-4 text-16"></i>
|
|
15
|
+
</button>
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
19
19
|
</li>
|
|
20
|
-
<li
|
|
20
|
+
<li
|
|
21
|
+
class="c8y-list__item c8y-list__item--double-actions bg-level-1"
|
|
22
|
+
ng-repeat="permission in vm.scopedPermissions"
|
|
23
|
+
>
|
|
21
24
|
<div class="c8y-list__item__block d-flex a-i-center">
|
|
22
25
|
<div class="c8y-list__item__body text-truncate-wrap p-l-0">
|
|
23
26
|
<div class="row">
|
|
24
27
|
<div class="col-sm-8">
|
|
25
28
|
<div class="d-flex-md a-i-center p-b-xs-8">
|
|
26
|
-
<label class="m-b-0 m-r-4">{{ 'Type' | translate }}
|
|
29
|
+
<label class="m-b-0 m-r-4">{{ 'Type' | translate }}</label>
|
|
27
30
|
<input
|
|
28
31
|
type="text"
|
|
29
32
|
class="form-control"
|
|
@@ -36,7 +39,7 @@
|
|
|
36
39
|
</div>
|
|
37
40
|
<div class="col-sm-4">
|
|
38
41
|
<div class="d-flex-md a-i-center">
|
|
39
|
-
<label class="m-b-0 m-r-4">{{ 'Permission' | translate }}
|
|
42
|
+
<label class="m-b-0 m-r-4">{{ 'Permission' | translate }}</label>
|
|
40
43
|
<div class="flex-grow d-flex a-i-center">
|
|
41
44
|
<div class="c8y-select-wrapper flex-grow">
|
|
42
45
|
<select
|
|
@@ -46,14 +49,20 @@
|
|
|
46
49
|
ng-options="access.value as (access.label | translate) for access in vm.accessTypes.values()"
|
|
47
50
|
ng-model="permission.permission"
|
|
48
51
|
ng-change="vm.removeId(permission)"
|
|
49
|
-
>
|
|
50
|
-
</select>
|
|
52
|
+
></select>
|
|
51
53
|
</div>
|
|
52
54
|
<button
|
|
53
55
|
type="button"
|
|
54
56
|
ng-show="vm.isOverridden(permission)"
|
|
55
57
|
class="btn-dot m-l-8"
|
|
56
|
-
uib-popover="{{
|
|
58
|
+
uib-popover="{{
|
|
59
|
+
'This permission is overridden by a more generic one in this role.'
|
|
60
|
+
| translate
|
|
61
|
+
}}"
|
|
62
|
+
aria-label="{{
|
|
63
|
+
'This permission is overridden by a more generic one in this role.'
|
|
64
|
+
| translate
|
|
65
|
+
}}"
|
|
57
66
|
popover-append-to-body="true"
|
|
58
67
|
popover-trigger="'focus'"
|
|
59
68
|
popover-placement="auto"
|
|
@@ -72,14 +81,14 @@
|
|
|
72
81
|
class="btn-dot m-l-auto"
|
|
73
82
|
ng-click="vm.remove(permission)"
|
|
74
83
|
>
|
|
75
|
-
<i c8y-icon="minus-circle" class="text-danger"
|
|
84
|
+
<i c8y-icon="minus-circle" class="text-danger"></i>
|
|
76
85
|
</button>
|
|
77
86
|
<button
|
|
78
87
|
title="{{ 'Add' | translate }}"
|
|
79
88
|
type="button"
|
|
80
89
|
ng-click="vm.add()"
|
|
81
90
|
class="btn-dot"
|
|
82
|
-
ng-show="$index ===
|
|
91
|
+
ng-show="$index === vm.scopedPermissions.length - 1"
|
|
83
92
|
>
|
|
84
93
|
<i c8y-icon="plus-circle" class="text-primary"></i>
|
|
85
94
|
</button>
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
<div>
|
|
194
194
|
<c8y-smart-rest-value-input
|
|
195
195
|
aria-label="{{ 'Value' | translate }}"
|
|
196
|
-
name="mandatoryValueInput"
|
|
196
|
+
name="'mandatoryValueInput' + $index"
|
|
197
197
|
type="mandatoryValue.type"
|
|
198
198
|
value="mandatoryValue.value"
|
|
199
199
|
data-required="false"
|
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
<label class="visible-sm visible-xs" translate>Value</label>
|
|
287
287
|
<c8y-smart-rest-value-input
|
|
288
288
|
aria-label="{{ 'Value' | translate }}"
|
|
289
|
-
name="customValueInput"
|
|
289
|
+
name="'customValueInput' + $index"
|
|
290
290
|
type="customValue.type"
|
|
291
291
|
placeholder="'Value' | translate"
|
|
292
292
|
value="customValue.value"
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<span ng-switch="vm.type">
|
|
2
2
|
<span ng-switch-when="STRING">
|
|
3
3
|
<input
|
|
4
|
-
aria-label="{{ 'Input' | translate }}"
|
|
5
4
|
name="{{ vm.name }}"
|
|
6
5
|
placeholder="{{ vm.placeholder }}"
|
|
7
6
|
type="text"
|
|
@@ -14,7 +13,7 @@
|
|
|
14
13
|
<c8y-date-time-picker
|
|
15
14
|
ng-model="vm.value"
|
|
16
15
|
placeholder="{{ vm.placeholder }}"
|
|
17
|
-
class="m-r-16 d-inline-block
|
|
16
|
+
class="m-r-16 d-inline-block"
|
|
18
17
|
ng-required="vm.required"
|
|
19
18
|
></c8y-date-time-picker>
|
|
20
19
|
</div>
|
|
@@ -33,7 +32,6 @@
|
|
|
33
32
|
</span>
|
|
34
33
|
<span ng-switch-when="INTEGER">
|
|
35
34
|
<input
|
|
36
|
-
aria-label="{{ 'Input' | translate }}"
|
|
37
35
|
name="{{ vm.name }}"
|
|
38
36
|
placeholder="{{ vm.placeholder }}"
|
|
39
37
|
type="number"
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
class="btn dropdown-toggle c8y-dropdown"
|
|
12
12
|
title="{{ vm.displayTextAssigned() || 'Select inventory roles' | translate }}"
|
|
13
13
|
uib-dropdown-toggle
|
|
14
|
+
aria-haspopup="true"
|
|
14
15
|
>
|
|
15
16
|
<span class="text-truncate">
|
|
16
17
|
<span class="text-muted" style="opacity: 0.6">{{ vm.displayTextInherited() }}</span>
|
|
@@ -117,6 +118,7 @@
|
|
|
117
118
|
ng-show="::vm.isInherited(role)"
|
|
118
119
|
class="text-warning btn-clean"
|
|
119
120
|
uib-popover="{{::'This role is already assigned to a parent asset.' | translate}}"
|
|
121
|
+
aria-label="{{::'This role is already assigned to a parent asset.' | translate}}"
|
|
120
122
|
popover-append-to-body="'true'"
|
|
121
123
|
popover-trigger="'focus'"
|
|
122
124
|
popover-placement="right"
|