@c8y/ng1-modules 1018.467.0 → 1018.474.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-alarmMapping/views/index.html +86 -49
- package/administration-applications/application-list-view/application-list-view.html +85 -27
- package/administration-retentionRules/views/list.html +78 -27
- package/alarmsEventsExplorer/alarmsEventsTimelinesConfig/alarmsEventsTimelinesConfig.html +88 -27
- package/configurationRepository/views/list.html +47 -30
- package/core/locales/de.po +18 -99
- package/core/locales/en.po +0 -9
- package/core/ui/views/alarmList.html +76 -33
- package/core/ui/views/eventList.html +105 -43
- package/dataBroker/subscriptions/subscriptions.html +16 -10
- package/devicemanagement-measurements/views/index.html +18 -4
- package/enterpriseEdition/sslCertificate/manageCertificateForm.html +66 -22
- package/export/views/list.html +61 -25
- package/package.json +1 -1
- package/roles/list/rolesList.html +90 -30
- package/simulators/detail/instructionList.html +40 -15
- package/simulators/list/list.html +54 -17
|
@@ -1,43 +1,57 @@
|
|
|
1
1
|
<div ng-controller="c8yRetentionRulesListCtrl as vm">
|
|
2
2
|
<c8y-breadcrumbs-set>
|
|
3
3
|
<c8y-breadcrumbs-item
|
|
4
|
-
label="{{ 'Retention rules' | translate }}"
|
|
5
4
|
icon="c8y-management"
|
|
5
|
+
label="{{ 'Retention rules' | translate }}"
|
|
6
6
|
></c8y-breadcrumbs-item>
|
|
7
7
|
<c8y-breadcrumbs-item
|
|
8
|
-
label="{{ 'Management' | translate }}"
|
|
9
8
|
icon="c8y-management"
|
|
9
|
+
label="{{ 'Management' | translate }}"
|
|
10
10
|
></c8y-breadcrumbs-item>
|
|
11
11
|
</c8y-breadcrumbs-set>
|
|
12
12
|
|
|
13
13
|
<c8y-ui-action-bar-set>
|
|
14
|
-
<li
|
|
14
|
+
<li
|
|
15
|
+
class="navbar-form"
|
|
16
|
+
action-bar-position="left"
|
|
17
|
+
>
|
|
15
18
|
<div class="input-group input-group-search">
|
|
16
19
|
<input
|
|
17
|
-
id="Filter"
|
|
18
|
-
type="search"
|
|
19
20
|
class="form-control"
|
|
21
|
+
id="Filter"
|
|
20
22
|
placeholder="{{ 'Filter' | translate }}…"
|
|
23
|
+
type="search"
|
|
21
24
|
ng-model="vm.searchString"
|
|
22
25
|
/>
|
|
23
26
|
<span class="input-group-addon">
|
|
24
|
-
<i c8y-icon="search" ng-if="vm.searchString.length === 0 || !vm.searchString"></i>
|
|
25
27
|
<i
|
|
26
|
-
c8y-icon="
|
|
28
|
+
c8y-icon="search"
|
|
29
|
+
ng-if="vm.searchString.length === 0 || !vm.searchString"
|
|
30
|
+
></i>
|
|
31
|
+
<i
|
|
27
32
|
class="text-muted"
|
|
33
|
+
c8y-icon="times"
|
|
28
34
|
ng-if="vm.searchString.length > 0"
|
|
29
35
|
ng-click="vm.searchString = ''"
|
|
30
36
|
></i>
|
|
31
37
|
</span>
|
|
32
|
-
<span
|
|
38
|
+
<span
|
|
39
|
+
class="sr-only"
|
|
40
|
+
translate
|
|
41
|
+
>
|
|
42
|
+
Filter
|
|
43
|
+
</span>
|
|
33
44
|
</div>
|
|
34
45
|
</li>
|
|
35
46
|
|
|
36
|
-
<li
|
|
47
|
+
<li
|
|
48
|
+
c8y-if-allowed
|
|
49
|
+
any-role="['ROLE_RETENTION_RULE_ADMIN']"
|
|
50
|
+
>
|
|
37
51
|
<button
|
|
38
52
|
class="btn btn-link"
|
|
39
|
-
type="button"
|
|
40
53
|
title="{{ 'Add rule' | translate }}"
|
|
54
|
+
type="button"
|
|
41
55
|
ng-click="createModal()"
|
|
42
56
|
>
|
|
43
57
|
<i c8y-icon="plus-circle"></i>
|
|
@@ -47,12 +61,15 @@
|
|
|
47
61
|
|
|
48
62
|
<button
|
|
49
63
|
class="btn btn-link"
|
|
50
|
-
type="button"
|
|
51
64
|
title="{{ 'Reload' | translate }}"
|
|
65
|
+
type="button"
|
|
52
66
|
ng-disabled="!paging.refresh"
|
|
53
67
|
ng-click="list()"
|
|
54
68
|
>
|
|
55
|
-
<i
|
|
69
|
+
<i
|
|
70
|
+
ng-class="{ 'icon-spin': refreshLoading }"
|
|
71
|
+
c8y-icon="refresh"
|
|
72
|
+
></i>
|
|
56
73
|
{{ 'Reload' | translate }}
|
|
57
74
|
</button>
|
|
58
75
|
</c8y-ui-action-bar-set>
|
|
@@ -61,15 +78,15 @@
|
|
|
61
78
|
|
|
62
79
|
<!-- empty state -->
|
|
63
80
|
<c8y-ui-empty-state
|
|
64
|
-
ng-if="retentions.length === 0"
|
|
65
81
|
[icon]="'box-settings'"
|
|
66
82
|
[title]="'No retention rules to display.' | translate"
|
|
67
83
|
[subtitle]="'Click below to add your first retention rule.' | translate"
|
|
84
|
+
ng-if="retentions.length === 0"
|
|
68
85
|
>
|
|
69
86
|
<button
|
|
70
87
|
class="btn btn-primary"
|
|
71
|
-
type="button"
|
|
72
88
|
title="{{ 'Add retention rule' | translate }}"
|
|
89
|
+
type="button"
|
|
73
90
|
ng-click="createModal()"
|
|
74
91
|
>
|
|
75
92
|
{{ 'Add retention rule' | translate }}
|
|
@@ -85,9 +102,12 @@
|
|
|
85
102
|
|
|
86
103
|
<div
|
|
87
104
|
class="c8y-list__group m-b-24"
|
|
88
|
-
ng-class="{ 'dd-low': (retentions | filter: vm.filter).length < 10 }"
|
|
105
|
+
ng-class="{ 'dd-low': (retentions | filter : vm.filter).length < 10 }"
|
|
89
106
|
>
|
|
90
|
-
<div
|
|
107
|
+
<div
|
|
108
|
+
class="page-sticky-header c8y-list__item hidden-xs"
|
|
109
|
+
ng-if="retentions.length > 0"
|
|
110
|
+
>
|
|
91
111
|
<div class="c8y-list__item__block">
|
|
92
112
|
<div class="c8y-list__item__icon">
|
|
93
113
|
<i class="p-l-24"></i>
|
|
@@ -118,8 +138,8 @@
|
|
|
118
138
|
<div ng-repeat="rule in retentions | filter:vm.searchString as filtered">
|
|
119
139
|
<div
|
|
120
140
|
class="c8y-list__item"
|
|
121
|
-
ng-click="updateModal(rule)"
|
|
122
141
|
title="{{ 'Click to edit' | translate }}"
|
|
142
|
+
ng-click="updateModal(rule)"
|
|
123
143
|
>
|
|
124
144
|
<div class="c8y-list__item__block">
|
|
125
145
|
<div class="c8y-list__item__icon">
|
|
@@ -132,37 +152,68 @@
|
|
|
132
152
|
</div>
|
|
133
153
|
|
|
134
154
|
<div class="col-2">
|
|
135
|
-
<span
|
|
155
|
+
<span
|
|
156
|
+
class="text-label-small visible-xs m-t-8"
|
|
157
|
+
translate
|
|
158
|
+
>
|
|
159
|
+
Fragment type
|
|
160
|
+
</span>
|
|
136
161
|
{{ rule.fragmentType }}
|
|
137
162
|
</div>
|
|
138
163
|
|
|
139
164
|
<div class="col-2">
|
|
140
|
-
<span
|
|
165
|
+
<span
|
|
166
|
+
class="text-label-small visible-xs m-t-8"
|
|
167
|
+
translate
|
|
168
|
+
>
|
|
169
|
+
Type
|
|
170
|
+
</span>
|
|
141
171
|
{{ rule.type }}
|
|
142
172
|
</div>
|
|
143
173
|
|
|
144
174
|
<div class="col-3">
|
|
145
|
-
<span
|
|
175
|
+
<span
|
|
176
|
+
class="text-label-small visible-xs m-t-8"
|
|
177
|
+
translate
|
|
178
|
+
>
|
|
179
|
+
Source
|
|
180
|
+
</span>
|
|
146
181
|
{{ rule.source }}
|
|
147
182
|
</div>
|
|
148
183
|
|
|
149
184
|
<div class="col-2">
|
|
150
|
-
<span
|
|
185
|
+
<span
|
|
186
|
+
class="text-label-small visible-xs m-t-8"
|
|
187
|
+
translate
|
|
188
|
+
>
|
|
189
|
+
Maximum age
|
|
190
|
+
</span>
|
|
151
191
|
{{ rule.maximumAge }}
|
|
152
192
|
{{ 'days' | translate }}
|
|
153
193
|
</div>
|
|
154
|
-
<div
|
|
155
|
-
|
|
194
|
+
<div
|
|
195
|
+
class="col-1"
|
|
196
|
+
ng-if="!isEditable(rule)"
|
|
197
|
+
>
|
|
198
|
+
<span
|
|
199
|
+
class="label label-info"
|
|
200
|
+
translate
|
|
201
|
+
>
|
|
202
|
+
Not editable
|
|
203
|
+
</span>
|
|
156
204
|
</div>
|
|
157
205
|
|
|
158
|
-
<div
|
|
206
|
+
<div
|
|
207
|
+
class="p-r-8 text-right showOnHover col-1"
|
|
208
|
+
ng-if="isEditable(rule)"
|
|
209
|
+
>
|
|
159
210
|
<button
|
|
160
211
|
class="btn btn-dot btn-dot--danger hidden-xs"
|
|
161
|
-
type="button"
|
|
162
212
|
aria-label="{{ 'Delete' | translate }}"
|
|
163
213
|
uib-tooltip="{{ 'Delete' | translate }}"
|
|
164
214
|
tooltip-popup-delay="500"
|
|
165
215
|
tooltip-append-to-body="true"
|
|
216
|
+
type="button"
|
|
166
217
|
data-ng-click="removeWithConfirmation(rule);$event.stopPropagation()"
|
|
167
218
|
>
|
|
168
219
|
<i c8y-icon="minus-circle"></i>
|
|
@@ -172,8 +223,8 @@
|
|
|
172
223
|
</div>
|
|
173
224
|
<button
|
|
174
225
|
class="btn btn-sm btn-danger visible-xs"
|
|
175
|
-
type="button"
|
|
176
226
|
title="{{ 'Delete' | translate }}"
|
|
227
|
+
type="button"
|
|
177
228
|
data-ng-click="removeWithConfirmation(rule);$event.stopPropagation()"
|
|
178
229
|
>
|
|
179
230
|
<i c8y-icon="delete"></i>
|
|
@@ -185,10 +236,10 @@
|
|
|
185
236
|
|
|
186
237
|
<!-- no results when filtering -->
|
|
187
238
|
<c8y-ui-empty-state
|
|
188
|
-
ng-if="filtered.length === 0 && vm.searchString.length > 0"
|
|
189
239
|
[icon]="'search'"
|
|
190
240
|
[title]="'No results to display.' | translate"
|
|
191
241
|
[subtitle]="'Refine your search terms or check your spelling.' | translate"
|
|
242
|
+
ng-if="filtered.length === 0 && vm.searchString.length > 0"
|
|
192
243
|
></c8y-ui-empty-state>
|
|
193
244
|
<c8y-load-more></c8y-load-more>
|
|
194
245
|
</div>
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
<div class="card-header separator bg-inherit sticky-top">
|
|
2
|
-
<span
|
|
2
|
+
<span
|
|
3
|
+
class="card-title h4"
|
|
4
|
+
translate
|
|
5
|
+
>
|
|
6
|
+
Alarms/events
|
|
7
|
+
</span>
|
|
3
8
|
</div>
|
|
4
|
-
<div
|
|
9
|
+
<div
|
|
10
|
+
class="p-t-8"
|
|
11
|
+
ng-if="vm.configs.length === 0"
|
|
12
|
+
>
|
|
5
13
|
<c8y-ui-empty-state
|
|
6
14
|
[icon]="'c8y-events'"
|
|
7
15
|
[title]="'No alarms/events found.' | translate"
|
|
@@ -32,9 +40,18 @@
|
|
|
32
40
|
<div class="c8y-list__item__block">
|
|
33
41
|
<div class="c8y-list__item__check p-r-0 a-s-center">
|
|
34
42
|
<label class="c8y-switch c8y-switch--inline">
|
|
35
|
-
<input
|
|
43
|
+
<input
|
|
44
|
+
name="active"
|
|
45
|
+
type="checkbox"
|
|
46
|
+
ng-model="cfg.__active"
|
|
47
|
+
/>
|
|
36
48
|
<span></span>
|
|
37
|
-
<span
|
|
49
|
+
<span
|
|
50
|
+
class="sr-only"
|
|
51
|
+
translate
|
|
52
|
+
>
|
|
53
|
+
Activity switch
|
|
54
|
+
</span>
|
|
38
55
|
</label>
|
|
39
56
|
</div>
|
|
40
57
|
|
|
@@ -43,10 +60,17 @@
|
|
|
43
60
|
title="{{ 'Change color' | translate }}"
|
|
44
61
|
>
|
|
45
62
|
<div class="c8y-colorpicker">
|
|
46
|
-
<label
|
|
63
|
+
<label
|
|
64
|
+
class="sr-only"
|
|
65
|
+
for="colorpicker-{{ $index }}"
|
|
66
|
+
>
|
|
47
67
|
{{ 'Color picker' | translate }}
|
|
48
68
|
</label>
|
|
49
|
-
<input
|
|
69
|
+
<input
|
|
70
|
+
id="colorpicker-{{ $index }}"
|
|
71
|
+
type="color"
|
|
72
|
+
ng-model="cfg.color"
|
|
73
|
+
/>
|
|
50
74
|
<span style="background-color:{{ cfg.color }}"></span>
|
|
51
75
|
</div>
|
|
52
76
|
</div>
|
|
@@ -54,42 +78,69 @@
|
|
|
54
78
|
<div class="c8y-list__item__body text-truncate">
|
|
55
79
|
<button
|
|
56
80
|
class="btn-clean data-point-label text-truncate"
|
|
57
|
-
ng-click="isCollapsed = !isCollapsed"
|
|
58
81
|
aria-expanded="{{ isCollapsed || false }}"
|
|
82
|
+
ng-click="isCollapsed = !isCollapsed"
|
|
59
83
|
>
|
|
60
|
-
<span
|
|
61
|
-
|
|
84
|
+
<span
|
|
85
|
+
class="text-truncate"
|
|
86
|
+
title="{{ cfg.label }}"
|
|
87
|
+
name="label"
|
|
88
|
+
>
|
|
89
|
+
{{ cfg.label }}
|
|
90
|
+
</span>
|
|
91
|
+
<small
|
|
92
|
+
class="text-truncate text-muted icon-flex"
|
|
93
|
+
*ngIf="cfg.__target.name"
|
|
94
|
+
>
|
|
62
95
|
<i c8y-icon="exchange"></i>
|
|
63
|
-
<span
|
|
96
|
+
<span
|
|
97
|
+
class="text-truncate"
|
|
98
|
+
title="{{ cfg.__target.name }}"
|
|
99
|
+
>
|
|
64
100
|
{{ cfg.__target.name }}
|
|
65
101
|
</span>
|
|
66
102
|
</small>
|
|
67
103
|
</button>
|
|
68
104
|
</div>
|
|
69
|
-
<div
|
|
105
|
+
<div
|
|
106
|
+
class="c8y-list__item__actions"
|
|
107
|
+
ng-class="{ expanded: isCollapsed }"
|
|
108
|
+
>
|
|
70
109
|
<button
|
|
71
|
-
type="button"
|
|
72
|
-
title="{{ 'Expand' | translate }}"
|
|
73
110
|
class="collapse-btn"
|
|
74
|
-
|
|
111
|
+
title="{{ 'Expand' | translate }}"
|
|
75
112
|
aria-expanded="{{ isCollapsed || false }}"
|
|
113
|
+
type="button"
|
|
114
|
+
ng-click="isCollapsed = !isCollapsed"
|
|
76
115
|
>
|
|
77
116
|
<i c8y-icon="chevron-down"></i>
|
|
78
117
|
</button>
|
|
79
118
|
|
|
80
|
-
<div
|
|
119
|
+
<div
|
|
120
|
+
class="dropdown settings"
|
|
121
|
+
is-open="isopen"
|
|
122
|
+
uib-dropdown
|
|
123
|
+
dropdown-append-to-body="true"
|
|
124
|
+
>
|
|
81
125
|
<button
|
|
126
|
+
class="dropdown-toggle c8y-dropdown"
|
|
82
127
|
title="{{ 'Actions' | translate }}"
|
|
128
|
+
aria-haspopup="true"
|
|
83
129
|
type="button"
|
|
84
|
-
class="dropdown-toggle c8y-dropdown"
|
|
85
130
|
uib-dropdown-toggle
|
|
86
|
-
aria-haspopup="true"
|
|
87
131
|
>
|
|
88
132
|
<i c8y-icon="ellipsis-v"></i>
|
|
89
133
|
</button>
|
|
90
|
-
<ul
|
|
134
|
+
<ul
|
|
135
|
+
class="dropdown-menu dropdown-menu-right text-right"
|
|
136
|
+
uib-dropdown-menu
|
|
137
|
+
>
|
|
91
138
|
<li>
|
|
92
|
-
<button
|
|
139
|
+
<button
|
|
140
|
+
title="{{ 'Remove' | translate }}"
|
|
141
|
+
type="button"
|
|
142
|
+
ng-click="vm.remove(cfg)"
|
|
143
|
+
>
|
|
93
144
|
<i c8y-icon="minus-circle"></i>
|
|
94
145
|
{{ 'Remove' | translate }}
|
|
95
146
|
</button>
|
|
@@ -101,22 +152,32 @@
|
|
|
101
152
|
<div uib-collapse="!isCollapsed">
|
|
102
153
|
<div class="data-point-details c8y-list__item__collapse--container">
|
|
103
154
|
<div class="form-group form-group-sm">
|
|
104
|
-
<label
|
|
155
|
+
<label
|
|
156
|
+
for="label-{{ $index }}"
|
|
157
|
+
translate
|
|
158
|
+
>
|
|
159
|
+
Label
|
|
160
|
+
</label>
|
|
105
161
|
<input
|
|
106
|
-
|
|
162
|
+
class="form-control"
|
|
107
163
|
id="label-{{ $index }}"
|
|
164
|
+
name="label"
|
|
108
165
|
ng-model="cfg.label"
|
|
109
166
|
ng-model-options="{debounce: 300}"
|
|
110
|
-
class="form-control"
|
|
111
167
|
/>
|
|
112
168
|
</div>
|
|
113
169
|
<div class="tight-grid">
|
|
114
170
|
<div class="form-group form-group-sm col-xs-6 col-sm-4">
|
|
115
|
-
<label
|
|
171
|
+
<label
|
|
172
|
+
for="dataType-{{ $index }}"
|
|
173
|
+
translate
|
|
174
|
+
>
|
|
175
|
+
Data type
|
|
176
|
+
</label>
|
|
116
177
|
<div class="c8y-select-wrapper">
|
|
117
178
|
<select
|
|
118
|
-
id="dataType-{{ $index }}"
|
|
119
179
|
class="form-control"
|
|
180
|
+
id="dataType-{{ $index }}"
|
|
120
181
|
ng-options="tt.value as (tt.label | translate) for tt in vm.timelineTypes"
|
|
121
182
|
ng-model="cfg.timelineType"
|
|
122
183
|
ng-init="cfg.timelineType = cfg.timelineType || vm.timelineTypes[0].val"
|
|
@@ -130,11 +191,11 @@
|
|
|
130
191
|
{{ 'Alarm/event type' | translate }}
|
|
131
192
|
</label>
|
|
132
193
|
<input
|
|
133
|
-
|
|
194
|
+
class="form-control"
|
|
134
195
|
id="alarmEventType-{{ $index }}"
|
|
196
|
+
name="alarmEventType"
|
|
135
197
|
ng-model="cfg.filters.type"
|
|
136
198
|
ng-model-options="{debounce: 300}"
|
|
137
|
-
class="form-control"
|
|
138
199
|
/>
|
|
139
200
|
</div>
|
|
140
201
|
</div>
|
|
@@ -145,9 +206,9 @@
|
|
|
145
206
|
|
|
146
207
|
<div class="card-footer bg-inherit">
|
|
147
208
|
<button
|
|
209
|
+
class="btn btn-default btn-sm"
|
|
148
210
|
title="{{ 'Add alarm/event' | translate }}"
|
|
149
211
|
type="button"
|
|
150
|
-
class="btn btn-default btn-sm"
|
|
151
212
|
ng-click="vm.add()"
|
|
152
213
|
>
|
|
153
214
|
<i c8y-icon="plus-circle"></i>
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
>
|
|
10
10
|
<button
|
|
11
11
|
class="dropdown-toggle c8y-dropdown"
|
|
12
|
-
type="button"
|
|
13
12
|
title="{{ 'Add configuration snapshot' | translate }}"
|
|
14
13
|
id="add-configuration-snapshot-btn"
|
|
15
|
-
uib-dropdown-toggle
|
|
16
14
|
aria-haspopup="true"
|
|
15
|
+
type="button"
|
|
16
|
+
uib-dropdown-toggle
|
|
17
17
|
ng-click="add()"
|
|
18
18
|
>
|
|
19
19
|
<span>
|
|
@@ -21,28 +21,35 @@
|
|
|
21
21
|
{{ 'Add configuration snapshot' | translate }}
|
|
22
22
|
</span>
|
|
23
23
|
</button>
|
|
24
|
-
<ul
|
|
24
|
+
<ul
|
|
25
|
+
class="dropdown-menu dropdown-menu-right"
|
|
26
|
+
uib-dropdown-menu
|
|
27
|
+
>
|
|
25
28
|
<li class="dropdown-form">
|
|
26
|
-
<form
|
|
29
|
+
<form
|
|
30
|
+
class="panel-body"
|
|
31
|
+
name="vm.newCfgForm"
|
|
32
|
+
novalidate
|
|
33
|
+
>
|
|
27
34
|
<div class="form-group">
|
|
28
35
|
<label translate>Name</label>
|
|
29
36
|
<input
|
|
30
|
-
type="text"
|
|
31
37
|
class="form-control"
|
|
32
|
-
ng-model="vm.newCfg.name"
|
|
33
|
-
ng-maxlength="60"
|
|
34
|
-
name="name"
|
|
35
38
|
placeholder="{{ 'e.g. My configuration snapshot' | translate }}"
|
|
39
|
+
name="name"
|
|
40
|
+
type="text"
|
|
36
41
|
required
|
|
42
|
+
ng-model="vm.newCfg.name"
|
|
43
|
+
ng-maxlength="60"
|
|
37
44
|
/>
|
|
38
45
|
<c8y-error-feedback field="vm.newCfgForm.name"></c8y-error-feedback>
|
|
39
46
|
</div>
|
|
40
47
|
<div class="form-group">
|
|
41
48
|
<label translate>Description</label>
|
|
42
49
|
<input
|
|
43
|
-
type="text"
|
|
44
50
|
class="form-control"
|
|
45
51
|
name="description"
|
|
52
|
+
type="text"
|
|
46
53
|
ng-model="vm.newCfg.description"
|
|
47
54
|
ng-maxlength="200"
|
|
48
55
|
/>
|
|
@@ -53,8 +60,8 @@
|
|
|
53
60
|
<span translate>Device type</span>
|
|
54
61
|
<button
|
|
55
62
|
class="btn-help btn-help--sm"
|
|
56
|
-
type="button"
|
|
57
63
|
aria-label="{{ 'Help' | translate }}"
|
|
64
|
+
type="button"
|
|
58
65
|
uib-popover="{{
|
|
59
66
|
'The device type can be found in the device information tab of the target device.'
|
|
60
67
|
| translate
|
|
@@ -65,10 +72,10 @@
|
|
|
65
72
|
></button>
|
|
66
73
|
</label>
|
|
67
74
|
<input
|
|
68
|
-
ng-model="vm.newCfg.deviceType"
|
|
69
|
-
type="text"
|
|
70
75
|
class="form-control"
|
|
71
76
|
placeholder="{{ 'e.g.:' | translate }} c8y_OBU-GT"
|
|
77
|
+
type="text"
|
|
78
|
+
ng-model="vm.newCfg.deviceType"
|
|
72
79
|
/>
|
|
73
80
|
</div>
|
|
74
81
|
<div class="form-group">
|
|
@@ -82,8 +89,8 @@
|
|
|
82
89
|
</div>
|
|
83
90
|
<button
|
|
84
91
|
class="btn btn-primary"
|
|
85
|
-
type="button"
|
|
86
92
|
title="{{ 'Add configuration snapshot' | translate }}"
|
|
93
|
+
type="button"
|
|
87
94
|
ng-click="save(vm.newCfg)"
|
|
88
95
|
ng-disabled="vm.newCfgForm.$invalid"
|
|
89
96
|
translate
|
|
@@ -99,12 +106,12 @@
|
|
|
99
106
|
</c8y-ui-action-bar-set>
|
|
100
107
|
|
|
101
108
|
<c8y-ui-empty-state
|
|
102
|
-
ng-show="configurations.length == 0"
|
|
103
109
|
[icon]="'gears'"
|
|
104
110
|
[title]="'There are no configuration snapshots defined.' | translate"
|
|
105
111
|
[subtitle]="
|
|
106
112
|
'Add your first configuration snapshot using the button on the action bar.' | translate
|
|
107
113
|
"
|
|
114
|
+
ng-show="configurations.length == 0"
|
|
108
115
|
>
|
|
109
116
|
<p c8y-guide-docs>
|
|
110
117
|
<small translate>
|
|
@@ -119,32 +126,38 @@
|
|
|
119
126
|
|
|
120
127
|
<div class="list-group">
|
|
121
128
|
<div
|
|
122
|
-
ng-repeat="cfg in configurations | orderBy:'name'"
|
|
123
129
|
class="list-group-item d-flex collapsible"
|
|
124
130
|
ng-class="{ expanded: isDetailExpanded }"
|
|
131
|
+
ng-repeat="cfg in configurations | orderBy:'name'"
|
|
125
132
|
>
|
|
126
133
|
<div class="list-item-actions">
|
|
127
134
|
<button
|
|
128
135
|
class="collapse-btn"
|
|
129
|
-
type="button"
|
|
130
136
|
title="{{ 'Expand' | translate }}"
|
|
137
|
+
type="button"
|
|
131
138
|
ng-click="isDetailExpanded = !isDetailExpanded"
|
|
132
139
|
>
|
|
133
140
|
<i c8y-icon="chevron-down"></i>
|
|
134
141
|
</button>
|
|
135
142
|
</div>
|
|
136
143
|
|
|
137
|
-
<div
|
|
144
|
+
<div
|
|
145
|
+
class="list-item-body"
|
|
146
|
+
ng-click="isDetailExpanded = !isDetailExpanded"
|
|
147
|
+
>
|
|
138
148
|
<div class="row">
|
|
139
149
|
<div class="col-sm-10 col-xs-12">
|
|
140
150
|
<span ng-click="isDetailExpanded = !isDetailExpanded">{{ cfg.name }}</span>
|
|
141
|
-
<small
|
|
151
|
+
<small
|
|
152
|
+
class="text-muted"
|
|
153
|
+
ng-bind="cfg.description"
|
|
154
|
+
></small>
|
|
142
155
|
</div>
|
|
143
156
|
<div class="col-sm-2 text-right showOnHover hidden-xs">
|
|
144
157
|
<button
|
|
145
158
|
class="btn btn-danger btn-xs"
|
|
146
|
-
type="button"
|
|
147
159
|
title="{{ 'Delete' | translate }}"
|
|
160
|
+
type="button"
|
|
148
161
|
ng-click="onClickDelete(cfg)"
|
|
149
162
|
>
|
|
150
163
|
<i c8y-icon="delete"></i>
|
|
@@ -158,18 +171,22 @@
|
|
|
158
171
|
uib-collapse="!isDetailExpanded"
|
|
159
172
|
data-ng-init="cfgToEdit = getConfigurationsCopy(cfg)"
|
|
160
173
|
>
|
|
161
|
-
<form
|
|
174
|
+
<form
|
|
175
|
+
class="m-t-8 m-b-8"
|
|
176
|
+
name="cfgForm"
|
|
177
|
+
novalidate
|
|
178
|
+
>
|
|
162
179
|
<div class="row">
|
|
163
180
|
<div class="col-lg-3">
|
|
164
181
|
<div class="form-group">
|
|
165
182
|
<label>{{ 'Name' | translate }}</label>
|
|
166
183
|
<input
|
|
167
|
-
type="text"
|
|
168
184
|
class="form-control"
|
|
169
|
-
name="name"
|
|
170
|
-
ng-model="cfgToEdit.name"
|
|
171
185
|
placeholder="{{ 'e.g. My configuration snapshot' | translate }}"
|
|
186
|
+
name="name"
|
|
187
|
+
type="text"
|
|
172
188
|
required
|
|
189
|
+
ng-model="cfgToEdit.name"
|
|
173
190
|
ng-maxlength="60"
|
|
174
191
|
/>
|
|
175
192
|
<c8y-error-feedback field="cfgForm.name"></c8y-error-feedback>
|
|
@@ -179,9 +196,9 @@
|
|
|
179
196
|
<div class="form-group">
|
|
180
197
|
<label>{{ 'Description' | translate }}</label>
|
|
181
198
|
<input
|
|
182
|
-
type="text"
|
|
183
199
|
class="form-control"
|
|
184
200
|
name="description"
|
|
201
|
+
type="text"
|
|
185
202
|
ng-model="cfgToEdit.description"
|
|
186
203
|
ng-maxlength="200"
|
|
187
204
|
/>
|
|
@@ -194,8 +211,8 @@
|
|
|
194
211
|
{{ 'Device type' | translate }}
|
|
195
212
|
<button
|
|
196
213
|
class="btn-help btn-help--sm"
|
|
197
|
-
type="button"
|
|
198
214
|
aria-label="{{ 'Help' | translate }}"
|
|
215
|
+
type="button"
|
|
199
216
|
uib-popover="{{
|
|
200
217
|
'The device type can be found in the device information tab of the target device.'
|
|
201
218
|
| translate
|
|
@@ -206,11 +223,11 @@
|
|
|
206
223
|
></button>
|
|
207
224
|
</label>
|
|
208
225
|
<input
|
|
209
|
-
name="deviceType"
|
|
210
|
-
ng-model="cfgToEdit.deviceType"
|
|
211
|
-
type="text"
|
|
212
226
|
class="form-control"
|
|
213
227
|
placeholder="{{ 'e.g.:' | translate }} c8y_OBU-GT"
|
|
228
|
+
name="deviceType"
|
|
229
|
+
type="text"
|
|
230
|
+
ng-model="cfgToEdit.deviceType"
|
|
214
231
|
/>
|
|
215
232
|
</div>
|
|
216
233
|
</div>
|
|
@@ -229,8 +246,8 @@
|
|
|
229
246
|
</div>
|
|
230
247
|
<button
|
|
231
248
|
class="btn btn-danger visible-xs-inline-block"
|
|
232
|
-
type="button"
|
|
233
249
|
title="{{ 'Delete' | translate }}"
|
|
250
|
+
type="button"
|
|
234
251
|
ng-click="onClickDelete(cfgToEdit)"
|
|
235
252
|
>
|
|
236
253
|
<i c8y-icon="delete"></i>
|
|
@@ -238,8 +255,8 @@
|
|
|
238
255
|
</button>
|
|
239
256
|
<button
|
|
240
257
|
class="btn btn-primary m-l-0"
|
|
241
|
-
type="submit"
|
|
242
258
|
title="{{ 'Save' | translate }}"
|
|
259
|
+
type="submit"
|
|
243
260
|
ng-click="save(cfgToEdit); isDetailExpanded = false;"
|
|
244
261
|
ng-disabled="cfgForm.$invalid || cfgForm.$pristine"
|
|
245
262
|
>
|