@c8y/ng1-modules 1018.214.0 → 1018.215.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.
@@ -10,20 +10,27 @@
10
10
  <div class="header-bar">
11
11
  <button
12
12
  class="navigator-toggle main-header-button"
13
- type="button"
13
+ ng-class="{ 'nav-hidden-on-startup': vm.navHiddenOnStartup }"
14
14
  title="{{ 'Toggle navigator' | translate }}"
15
+ type="button"
15
16
  ng-click="vm.toggleNav()"
16
- ng-class="{ 'nav-hidden-on-startup': vm.navHiddenOnStartup }"
17
17
  ng-if="vm.rootNodes().length"
18
18
  >
19
19
  <i c8y-icon="dedent-right"></i>
20
20
  </button>
21
21
  <div class="app-view">
22
- <c8y-app-icon app="vm.currentApp" class="c8y-app-icon" white="false"></c8y-app-icon>
22
+ <c8y-app-icon
23
+ class="c8y-app-icon"
24
+ app="vm.currentApp"
25
+ white="false"
26
+ ></c8y-app-icon>
23
27
  <div ng-show="vm.isLoading()">
24
28
  <c8y-loading></c8y-loading>
25
29
  </div>
26
- <span class="page-header" ng-show="!vm.isLoading()">
30
+ <span
31
+ class="page-header"
32
+ ng-show="!vm.isLoading()"
33
+ >
27
34
  <c8y-ui-title></c8y-ui-title>
28
35
  <c8y-ui-breadcrumbs class="app-breadcrumbs"></c8y-ui-breadcrumbs>
29
36
  </span>
@@ -40,46 +47,64 @@
40
47
  >
41
48
  <button
42
49
  class="main-header-button dropdown-toggle c8y-dropdown"
43
- type="button"
44
50
  aria-label="'Application switcher' | translate"
45
- uib-dropdown-toggle
46
51
  aria-haspopup="true"
52
+ type="button"
53
+ uib-dropdown-toggle
47
54
  >
48
- <i c8y-icon="th" class="icon-2x"></i>
55
+ <i
56
+ class="icon-2x"
57
+ c8y-icon="th"
58
+ ></i>
49
59
  </button>
50
- <div class="dropdown-menu app-switcher-dropdown-menu" uib-dropdown-menu>
60
+ <div
61
+ class="dropdown-menu app-switcher-dropdown-menu"
62
+ uib-dropdown-menu
63
+ >
51
64
  <div
52
65
  class="app-switcher-sagcloud"
53
66
  ng-if="vm.oneCloudApplications && vm.oneCloudApplications.length > 0"
54
67
  >
55
68
  <a
56
- ng-repeat="app in vm.oneCloudApplications"
57
69
  class="appLink"
58
- ng-href="{{ vm.getHref(app) }}"
59
70
  ng-class="{ active: app.currentApp }"
60
71
  title="{{ app | humanizeAppName }}"
72
+ ng-repeat="app in vm.oneCloudApplications"
73
+ ng-href="{{ vm.getHref(app) }}"
61
74
  >
62
- <c8y-app-icon class="c8y-app-icon" app="app" white="false"></c8y-app-icon>
75
+ <c8y-app-icon
76
+ class="c8y-app-icon"
77
+ app="app"
78
+ white="false"
79
+ ></c8y-app-icon>
63
80
  <span class="text-truncate-wrap">{{ app | humanizeAppName }}</span>
64
81
  </a>
65
82
  </div>
66
83
 
67
84
  <div class="app-switcher">
68
85
  <a
69
- ng-repeat="app in vm.applications"
70
86
  class="appLink"
71
- ng-href="{{ vm.getHref(app) }}"
72
87
  ng-class="{ active: app.currentApp }"
73
88
  title="{{ app | humanizeAppName }}"
89
+ ng-repeat="app in vm.applications"
90
+ ng-href="{{ vm.getHref(app) }}"
74
91
  >
75
- <c8y-app-icon class="c8y-app-icon" app="app" white="false"></c8y-app-icon>
92
+ <c8y-app-icon
93
+ class="c8y-app-icon"
94
+ app="app"
95
+ white="false"
96
+ ></c8y-app-icon>
76
97
  <span class="text-truncate-wrap">{{ app | humanizeAppName }}</span>
77
98
  </a>
78
99
  </div>
79
100
  </div>
80
101
  </div>
81
102
 
82
- <div class="main-header-item dropdown" is-open="vm.menuStatus.userOpen" uib-dropdown>
103
+ <div
104
+ class="main-header-item dropdown"
105
+ is-open="vm.menuStatus.userOpen"
106
+ uib-dropdown
107
+ >
83
108
  <button
84
109
  class="main-header-button dropdown-toggle c8y-dropdown"
85
110
  type="button"
@@ -92,12 +117,22 @@
92
117
  >
93
118
  {{ vm.getUserName() }}
94
119
  </span>
95
- <i c8y-icon="c8y-user" class="icon-2x"></i>
120
+ <i
121
+ class="icon-2x"
122
+ c8y-icon="c8y-user"
123
+ ></i>
96
124
  </button>
97
125
 
98
- <ul class="dropdown-menu dropdown-menu-right" uib-dropdown-menu>
126
+ <ul
127
+ class="dropdown-menu dropdown-menu-right"
128
+ uib-dropdown-menu
129
+ >
99
130
  <li>
100
- <a title="{{ 'User settings' | translate }}" href="" ng-click="vm.editUser()">
131
+ <a
132
+ title="{{ 'User settings' | translate }}"
133
+ href=""
134
+ ng-click="vm.editUser()"
135
+ >
101
136
  <i c8y-icon="profile"></i>
102
137
  {{ 'User settings' | translate }}
103
138
  </a>
@@ -115,7 +150,11 @@
115
150
  </li>
116
151
 
117
152
  <li>
118
- <a title="{{ 'Logout' | translate }}" href="" ng-click="vm.logout()">
153
+ <a
154
+ title="{{ 'Logout' | translate }}"
155
+ href=""
156
+ ng-click="vm.logout()"
157
+ >
119
158
  <i c8y-icon="sign-out"></i>
120
159
  {{ 'Logout' | translate }}
121
160
  </a>
@@ -154,15 +193,25 @@
154
193
  </a>
155
194
  </li>
156
195
 
157
- <li ng-if="!vm.hideVersions" role="separator" class="divider"></li>
158
-
159
196
  <li
197
+ class="divider"
198
+ role="separator"
160
199
  ng-if="!vm.hideVersions"
200
+ ></li>
201
+
202
+ <li
161
203
  class="dropdown-header text-pre-normal"
162
204
  style="margin-top: -1px"
205
+ ng-if="!vm.hideVersions"
163
206
  >
164
- <i c8y-icon="info-circle" class="text-muted"></i>
165
- <span class="text-muted" translate>
207
+ <i
208
+ class="text-muted"
209
+ c8y-icon="info-circle"
210
+ ></i>
211
+ <span
212
+ class="text-muted"
213
+ translate
214
+ >
166
215
  Version: {{ vm.backendVersion }} (backend), {{ vm.uiVersion }} (UI)
167
216
  </span>
168
217
  </li>
@@ -173,8 +222,8 @@
173
222
  <!-- right drawer button -->
174
223
  <button
175
224
  class="drawer-toggle main-header-button"
176
- type="button"
177
225
  title="{{ 'Toggle side drawer' | translate }}"
226
+ type="button"
178
227
  ng-if="vm.showRightDrawer"
179
228
  ng-click="vm.openDrawer = !vm.openDrawer"
180
229
  >
@@ -182,7 +231,11 @@
182
231
  </button>
183
232
  </div>
184
233
  <div class="head-toggler">
185
- <button title="{{ 'Toggle' | translate }}" type="button" ng-click="vm.toggle()">
234
+ <button
235
+ title="{{ 'Toggle' | translate }}"
236
+ type="button"
237
+ ng-click="vm.toggle()"
238
+ >
186
239
  <i c8y-icon="dedent-right"></i>
187
240
  </button>
188
241
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c8y/ng1-modules",
3
- "version": "1018.214.0",
3
+ "version": "1018.215.0",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Cumulocity",
6
6
  "description": "AngularJS modules for Cumulocity IoT applications.",
@@ -1,39 +1,56 @@
1
- <form name="responseTemplateForm" novalidate class="d-contents">
1
+ <form
2
+ class="d-contents"
3
+ name="responseTemplateForm"
4
+ novalidate
5
+ >
2
6
  <div class="d-flex d-col flex-grow">
3
7
  <div class="card-block">
4
8
  <div class="tight-grid">
5
9
  <div class="form-group col-md-4">
6
- <label for="msgId" translate>Response ID</label>
10
+ <label
11
+ for="msgId"
12
+ translate
13
+ >
14
+ Response ID
15
+ </label>
7
16
  <input
17
+ class="form-control"
8
18
  id="msgId"
19
+ placeholder="{{ 'e.g.' | translate }} 11"
9
20
  name="msgId"
10
21
  type="text"
11
- class="form-control"
22
+ required
12
23
  ng-model="$ctrl.responseTemplate.msgId"
13
24
  c8y-smart-rest-validate-unique-msg-id-in-template="$ctrl.template"
14
25
  original-msg-id="$ctrl.originalMsgId"
15
- placeholder="{{ 'e.g.' | translate }} 11"
16
26
  data-cy="responseEditor--response-id"
17
- required
18
27
  />
19
28
  <c8y-error-feedback field="responseTemplateForm.msgId">
20
- <span ng-message="uniqueMsgIdInTemplate" translate>
29
+ <span
30
+ ng-message="uniqueMsgIdInTemplate"
31
+ translate
32
+ >
21
33
  Message ID must be unique among all message and response templates.
22
34
  </span>
23
35
  </c8y-error-feedback>
24
36
  </div>
25
37
 
26
38
  <div class="form-group col-md-8">
27
- <label for="name" translate>Name</label>
39
+ <label
40
+ for="name"
41
+ translate
42
+ >
43
+ Name
44
+ </label>
28
45
  <input
46
+ class="form-control"
29
47
  id="name"
48
+ placeholder="{{ 'e.g. My response template' | translate }}"
30
49
  name="name"
31
50
  type="text"
32
- class="form-control"
51
+ required
33
52
  ng-model="$ctrl.responseTemplate.name"
34
- placeholder="{{ 'e.g. My response template' | translate }}"
35
53
  data-cy="responseEditor--response-name"
36
- required
37
54
  />
38
55
  <c8y-error-feedback field="responseTemplateForm.name"></c8y-error-feedback>
39
56
  </div>
@@ -41,12 +58,17 @@
41
58
 
42
59
  <div class="tight-grid">
43
60
  <div class="form-group col-md-6">
44
- <label for="base" translate>Base pattern</label>
61
+ <label
62
+ for="base"
63
+ translate
64
+ >
65
+ Base pattern
66
+ </label>
45
67
  <input
68
+ class="form-control"
46
69
  id="base"
47
70
  name="base"
48
71
  type="text"
49
- class="form-control"
50
72
  ng-model="$ctrl.responseTemplate.base"
51
73
  data-cy="responseEditor--response-base-pattern"
52
74
  ng-pattern="$ctrl.validation.jsonPath.pattern"
@@ -60,12 +82,17 @@
60
82
  </div>
61
83
 
62
84
  <div class="form-group col-md-6">
63
- <label for="condition" translate>Condition</label>
85
+ <label
86
+ for="condition"
87
+ translate
88
+ >
89
+ Condition
90
+ </label>
64
91
  <input
92
+ class="form-control"
65
93
  id="condition"
66
94
  name="condition"
67
95
  type="text"
68
- class="form-control"
69
96
  ng-model="$ctrl.responseTemplate.condition"
70
97
  data-cy="responseEditor--response-condition"
71
98
  ng-pattern="$ctrl.validation.jsonPath.pattern"
@@ -78,43 +105,47 @@
78
105
  </c8y-error-feedback>
79
106
  </div>
80
107
  </div>
81
-
82
108
  <fieldset>
83
- <div class="legend form-block" translate>Patterns</div>
84
-
109
+ <div
110
+ class="legend form-block"
111
+ translate
112
+ >
113
+ Patterns
114
+ </div>
85
115
  <c8y-ui-empty-state
86
- ng-if="$ctrl.responseTemplate.patterns.length === 0"
87
116
  [icon]="'c8y-data-points'"
88
117
  [title]="'No patterns to display.' | translate"
89
118
  [subtitle]="
90
119
  'At least one pattern is required. Click below to add the first one.' | translate
91
120
  "
121
+ ng-if="$ctrl.responseTemplate.patterns.length === 0"
92
122
  ></c8y-ui-empty-state>
93
123
  <div ng-repeat="pattern in $ctrl.responseTemplate.patterns">
94
124
  <ng-form name="patternForm">
95
125
  <div class="form-group">
96
126
  <div class="input-group">
97
127
  <input
128
+ class="form-control"
129
+ placeholder="{{ 'e.g.' | translate }} c8y_SoftwareList[*].name"
98
130
  name="path"
99
131
  type="text"
100
- class="form-control"
132
+ required
101
133
  ng-model="pattern.path"
102
134
  data-cy="responseEditor--response-pattern-path"
103
135
  ng-pattern="$ctrl.validation.jsonPath.pattern"
104
- placeholder="{{ 'e.g.' | translate }} c8y_SoftwareList[*].name"
105
- required
106
136
  />
107
137
  <span class="input-group-btn">
108
138
  <button
109
139
  class="btn-dot btn-dot--danger"
110
- type="button"
111
140
  aria-label="{{ 'Remove' | translate }}"
112
- data-cy="responseEditor--remove-pattern"
113
141
  uib-tooltip="{{ 'Remove' | translate }}"
114
142
  tooltip-popup-delay="500"
115
143
  tooltip-append-to-body="true"
116
144
  tooltip-trigger="'mouseenter'"
117
- ng-click="$ctrl.removePattern($ctrl.responseTemplate, pattern); responseTemplateForm.$setDirty()"
145
+ type="button"
146
+ data-cy="responseEditor--remove-pattern"
147
+ ng-click="$ctrl.removePattern($ctrl.responseTemplate, pattern);
148
+ responseTemplateForm.$setDirty()"
118
149
  >
119
150
  <i c8y-icon="minus-circle"></i>
120
151
  </button>
@@ -129,13 +160,13 @@
129
160
  </div>
130
161
  </ng-form>
131
162
  </div>
132
-
133
163
  <button
134
164
  class="btn btn-default"
135
- type="button"
136
165
  title="{{ 'Add pattern' | translate }}"
166
+ type="button"
137
167
  data-cy="responseEditor--add-pattern-btn"
138
- ng-click="$ctrl.addPattern($ctrl.responseTemplate); responseTemplateForm.$setDirty()"
168
+ ng-click="$ctrl.addPattern($ctrl.responseTemplate);
169
+ responseTemplateForm.$setDirty()"
139
170
  >
140
171
  <i c8y-icon="plus-circle"></i>
141
172
  {{ 'Add pattern' | translate }}
@@ -146,16 +177,16 @@
146
177
  <div class="card-footer separator sticky-bottom">
147
178
  <button
148
179
  class="btn btn-default"
149
- type="button"
150
180
  title="{{ 'Cancel' | translate }}"
181
+ type="button"
151
182
  ng-click="$ctrl.cancel()"
152
183
  >
153
184
  {{ 'Cancel' | translate }}
154
185
  </button>
155
186
  <button
156
187
  class="btn btn-danger"
157
- type="button"
158
188
  title="{{ 'Remove' | translate }}"
189
+ type="button"
159
190
  data-cy="responseEditor--remove-btn"
160
191
  ng-if="$ctrl.originalMsgId"
161
192
  ng-click="$ctrl.remove()"
@@ -164,11 +195,11 @@
164
195
  </button>
165
196
  <button
166
197
  class="btn btn-primary"
167
- type="button"
168
198
  title="{{ 'Save' | translate }}"
169
- ng-click="$ctrl.save()"
199
+ type="button"
170
200
  data-cy="responseEditor--save-btn"
171
201
  ng-disabled="responseTemplateForm.$invalid || responseTemplateForm.$pristine || $ctrl.responseTemplate.patterns.length === 0"
202
+ ng-click="$ctrl.save()"
172
203
  >
173
204
  {{ 'Save' | translate }}
174
205
  </button>
@@ -1,20 +1,20 @@
1
1
  <c8y-breadcrumbs-set>
2
2
  <c8y-breadcrumbs-item
3
- label="{{ 'Responses' | translate }}"
4
3
  icon="c8y-smart-rest"
4
+ label="{{ 'Responses' | translate }}"
5
5
  ></c8y-breadcrumbs-item>
6
6
  <c8y-breadcrumbs-item
7
- label="{{ $ctrl.template.name }}"
8
7
  icon="c8y-smart-rest"
8
+ label="{{ $ctrl.template.name }}"
9
9
  ></c8y-breadcrumbs-item>
10
10
  <c8y-breadcrumbs-item
11
- label="{{ 'SmartREST templates' | translate }}"
12
11
  icon="c8y-smart-rest"
12
+ label="{{ 'SmartREST templates' | translate }}"
13
13
  path="#smart-rest-templates"
14
14
  ></c8y-breadcrumbs-item>
15
15
  <c8y-breadcrumbs-item
16
- label="{{ 'Device types' | translate }}"
17
16
  icon="c8y-device-protocols"
17
+ label="{{ 'Device types' | translate }}"
18
18
  ></c8y-breadcrumbs-item>
19
19
  </c8y-breadcrumbs-set>
20
20
 
@@ -25,32 +25,44 @@
25
25
  >
26
26
  <div class="content-flex-70">
27
27
  <div class="text-center">
28
- <i class="c8y-icon-duocolor icon-48" c8y-icon="c8y-smart-rest"></i>
28
+ <i
29
+ class="c8y-icon-duocolor icon-48"
30
+ c8y-icon="c8y-smart-rest"
31
+ ></i>
29
32
  </div>
30
33
  <div class="flex-grow col-10">
31
- <form name="templateInputForm" novalidate class="content-flex-80">
34
+ <form
35
+ class="content-flex-80"
36
+ name="templateInputForm"
37
+ novalidate
38
+ >
32
39
  <div class="col-7 p-t-sm-8">
33
40
  <div class="form-group form-group-lg m-b-0">
34
- <label for="templateName" class="sr-only">{{ 'Template name' | translate }}</label>
41
+ <label
42
+ class="sr-only"
43
+ for="templateName"
44
+ >
45
+ {{ 'Template name' | translate }}
46
+ </label>
35
47
  <div class="input-group input-group-lg input-group-editable">
36
48
  <input
37
49
  class="form-control"
38
- for="templateName"
39
- maxlength="500"
40
- required
41
- type="text"
42
- name="name"
43
- ng-model="$ctrl.template.name"
44
50
  ng-style="{ width: $ctrl.template.name.length + 2 + 'ch' }"
45
51
  title="{{ $ctrl.template.name }}"
46
52
  placeholder="{{ 'e.g. My template' | translate }}"
53
+ name="name"
54
+ for="templateName"
55
+ type="text"
56
+ required
57
+ maxlength="500"
58
+ ng-model="$ctrl.template.name"
47
59
  />
48
60
  <span></span>
49
61
  <div class="input-group-btn">
50
62
  <button
51
63
  class="btn btn-primary"
52
- type="submit"
53
64
  title="{{ 'Save' | translate }}"
65
+ type="submit"
54
66
  ng-disabled="templateInputForm.$invalid"
55
67
  ng-click="$ctrl.changeTemplateName($ctrl.template.name)"
56
68
  >
@@ -84,21 +96,30 @@
84
96
  <div class="nav c8y-nav-stacked">
85
97
  <button
86
98
  class="c8y-stacked-item"
99
+ ng-class="{ active: $ctrl.selectedResponseTemplate === responseTemplate }"
87
100
  type="button"
88
101
  ng-repeat="responseTemplate in $ctrl.responseTemplates"
89
- ng-class="{ active: $ctrl.selectedResponseTemplate === responseTemplate }"
90
102
  ng-click="$ctrl.selectResponseTemplate(responseTemplate)"
91
103
  >
92
104
  <span
93
105
  class="text-truncate"
94
106
  title="{{ responseTemplate.msgId }} | {{ responseTemplate.name }}"
95
107
  >
96
- <i c8y-icon="external" class="text-complementary"></i>
97
- <span class="msgid text-muted" ng-bind="responseTemplate.msgId"></span>
108
+ <i
109
+ class="text-complementary"
110
+ c8y-icon="external"
111
+ ></i>
112
+ <span
113
+ class="msgid text-muted"
114
+ ng-bind="responseTemplate.msgId"
115
+ ></span>
98
116
  <span ng-bind="responseTemplate.name"></span>
99
117
  </span>
100
118
  </button>
101
- <div ng-show="$ctrl.countResponseTemplates($ctrl.template) === 0" class="p-24">
119
+ <div
120
+ class="p-24"
121
+ ng-show="$ctrl.countResponseTemplates($ctrl.template) === 0"
122
+ >
102
123
  <c8y-ui-empty-state
103
124
  [icon]="'c8y-smart-rest'"
104
125
  [title]="'No responses.' | translate"
@@ -109,10 +130,9 @@
109
130
  </div>
110
131
  <div class="card-footer large-padding separator sticky-bottom">
111
132
  <button
112
- title="{{ 'Add response' | translate }}"
113
133
  class="btn btn-default"
134
+ title="{{ 'Add response' | translate }}"
114
135
  ng-click="$ctrl.newResponseTemplate()"
115
- data-cy="responses--add-response-btn"
116
136
  >
117
137
  <i c8y-icon="plus-circle"></i>
118
138
  <translate>Add response</translate>
@@ -125,15 +145,18 @@
125
145
  >
126
146
  <div class="card-header separator visible-sm visible-xs">
127
147
  <button
128
- title="{{ 'Back' | translate }}"
129
148
  class="btn btn-clean"
149
+ title="{{ 'Back' | translate }}"
130
150
  ng-click="$ctrl.deselectResponseTemplate()"
131
151
  >
132
152
  <i c8y-icon="chevron-left"></i>
133
153
  <span translate>Back</span>
134
154
  </button>
135
155
  </div>
136
- <div class="card-block" ng-if="!$ctrl.selectedResponseTemplate">
156
+ <div
157
+ class="card-block"
158
+ ng-if="!$ctrl.selectedResponseTemplate"
159
+ >
137
160
  <c8y-ui-empty-state
138
161
  [icon]="'c8y-smart-rest'"
139
162
  [title]="'No response to display.' | translate"
@@ -141,12 +164,12 @@
141
164
  ></c8y-ui-empty-state>
142
165
  </div>
143
166
  <c8y-smart-rest-response-editor
167
+ class="d-contents"
144
168
  template="$ctrl.template"
145
169
  response-template="$ctrl.selectedResponseTemplate"
146
170
  on-save="$ctrl.addResponseTemplate(responseTemplate)"
147
171
  on-cancel="$ctrl.deselectResponseTemplate()"
148
172
  on-remove="$ctrl.removeResponseTemplate(responseTemplate)"
149
- class="d-contents"
150
173
  ng-if="$ctrl.selectedResponseTemplate"
151
174
  ></c8y-smart-rest-response-editor>
152
175
  </div>
@@ -1,4 +1,8 @@
1
- <div class="c8y-child-assets-selector" is-open="ctrl.dropdownStatus.open" uib-dropdown>
1
+ <div
2
+ class="c8y-child-assets-selector"
3
+ is-open="ctrl.dropdownStatus.open"
4
+ uib-dropdown
5
+ >
2
6
  <button
3
7
  type="button"
4
8
  class="btn dropdown-toggle c8y-dropdown"
@@ -7,7 +11,10 @@
7
11
  aria-haspopup="true"
8
12
  >
9
13
  <span class="text-truncate">
10
- <i c8y-icon="check" ng-class="{'text-success': ctrl.areAllOriginallySelected()}"></i>
14
+ <i
15
+ c8y-icon="check"
16
+ ng-class="{ 'text-success': ctrl.areAllOriginallySelected() }"
17
+ ></i>
11
18
  <span ng-bind="ctrl.getSelectedStatusText()"></span>
12
19
  </span>
13
20
  </button>
@@ -16,7 +23,7 @@
16
23
  ng-click="$event.stopPropagation();"
17
24
  uib-dropdown-menu
18
25
  >
19
- <li class="multiselect-item">
26
+ <li class="multiselect-item sticky-top">
20
27
  <div class="input-group input-group-search">
21
28
  <input
22
29
  class="form-control"
@@ -41,7 +48,8 @@
41
48
  ng-checked="false"
42
49
  ng-click="ctrl.selectAllVisible(); $event.stopPropagation();"
43
50
  class="m-t-0"
44
- /><span></span>
51
+ />
52
+ <span></span>
45
53
  <span>{{ 'Activate all visible`children`' | translate }}</span>
46
54
  </label>
47
55
  <label
@@ -55,7 +63,8 @@
55
63
  ng-checked="true"
56
64
  ng-click="ctrl.deselectAllVisible(); $event.stopPropagation();"
57
65
  class="m-t-0"
58
- /><span></span>
66
+ />
67
+ <span></span>
59
68
  <span>{{ 'Deactivate all visible`children`' | translate }}</span>
60
69
  </label>
61
70
  </li>
@@ -65,10 +74,16 @@
65
74
  ng-if="!(ctrl.dropdownStatus.open && ctrl.dropdownOpeningFinished)"
66
75
  class="text-center p-8"
67
76
  >
68
- <i c8y-icon="circle-o-notch" class="icon-spin"></i>
77
+ <i
78
+ c8y-icon="circle-o-notch"
79
+ class="icon-spin"
80
+ ></i>
69
81
  <span>{{ 'Loading' | translate }}…</span>
70
82
  </div>
71
- <ul class="list-unstyled" ng-if="ctrl.dropdownStatus.open && ctrl.dropdownOpeningFinished">
83
+ <ul
84
+ class="list-unstyled"
85
+ ng-if="ctrl.dropdownStatus.open && ctrl.dropdownOpeningFinished"
86
+ >
72
87
  <li
73
88
  ng-repeat="childAsset in ctrl.childAssets | filter:ctrl.filterCfg.text"
74
89
  class="multiselect-item"
@@ -84,7 +99,11 @@
84
99
  class="m-t-0"
85
100
  />
86
101
  <span></span>
87
- <span class="label-text" title="{{ childAsset.name }}" ng-bind="childAsset.name"></span>
102
+ <span
103
+ class="label-text"
104
+ title="{{ childAsset.name }}"
105
+ ng-bind="childAsset.name"
106
+ ></span>
88
107
  </label>
89
108
  </li>
90
109
  </ul>
@@ -1,20 +1,22 @@
1
1
  <div
2
2
  class="c8y-child-assets-selector"
3
- is-open="vm.isDropDownOpen"
4
3
  ng-class="{ open: vm.isDropDownOpen }"
4
+ is-open="vm.isDropDownOpen"
5
5
  on-toggle="vm.onToggleDropdown(open)"
6
6
  uib-dropdown
7
7
  dropdown-append-to-body="true"
8
8
  >
9
9
  <button
10
10
  class="btn dropdown-toggle c8y-dropdown"
11
- type="button"
12
11
  title="{{ vm.displayTextAssigned() || 'Select inventory roles' | translate }}"
13
- uib-dropdown-toggle
14
12
  aria-haspopup="true"
13
+ type="button"
14
+ uib-dropdown-toggle
15
15
  >
16
16
  <span class="text-truncate">
17
- <span class="text-muted" style="opacity: 0.6">{{ vm.displayTextInherited() }}</span>
17
+ <span class="text-muted">
18
+ {{ vm.displayTextInherited() }}
19
+ </span>
18
20
  <span ng-show="vm.displayTextInherited() && vm.displayTextAssigned()">/</span>
19
21
  <span>{{ vm.displayTextAssigned() }}</span>
20
22
  <em
@@ -32,21 +34,21 @@
32
34
  ng-click="$event.stopPropagation();"
33
35
  uib-dropdown-menu
34
36
  >
35
- <li class="multiselect-item">
37
+ <li class="multiselect-item sticky-top">
36
38
  <div
37
- title="{{ 'Filter inventory roles' | translate }}"
38
39
  class="input-group input-group-search input-group-sm"
40
+ title="{{ 'Filter inventory roles' | translate }}"
39
41
  >
40
42
  <input
41
43
  class="form-control"
42
- type="search"
43
44
  placeholder="{{ 'Filter inventory roles' | translate }}…"
45
+ type="search"
44
46
  ng-model="vm.roleTextFilter"
45
47
  />
46
48
  <span class="input-group-addon">
47
49
  <i
48
- c8y-icon="search"
49
50
  ng-class="{ 'icon-spin': loading }"
51
+ c8y-icon="search"
50
52
  ng-show="vm.roleTextFilter.length === 0 || !vm.roleTextFilter"
51
53
  ></i>
52
54
  <button
@@ -55,16 +57,22 @@
55
57
  ng-show="vm.roleTextFilter.length > 0"
56
58
  ng-click="vm.roleTextFilter = ''"
57
59
  >
58
- <i c8y-icon="times" class="text-muted"></i>
60
+ <i
61
+ class="text-muted"
62
+ c8y-icon="times"
63
+ ></i>
59
64
  </button>
60
65
  </span>
61
66
  </div>
62
67
  </li>
63
68
 
64
- <li class="multiselect-item" ng-if="vm.isDropDownOpen">
69
+ <li
70
+ class="multiselect-item"
71
+ ng-if="vm.isDropDownOpen"
72
+ >
65
73
  <label
66
- title="{{ 'All' | translate }}"
67
74
  class="c8y-checkbox input-sm text-truncate"
75
+ title="{{ 'All' | translate }}"
68
76
  ng-click="vm.toggleSelectAll(); $event.preventDefault()"
69
77
  >
70
78
  <input
@@ -78,22 +86,25 @@
78
86
  </li>
79
87
 
80
88
  <li class="multiselect-item-container">
81
- <ul class="list-unstyled" ng-if="vm.isDropDownOpen">
89
+ <ul
90
+ class="list-unstyled"
91
+ ng-if="vm.isDropDownOpen"
92
+ >
82
93
  <li
83
- ng-repeat="role in vm.inventoryRoles | filter:vm.isAllowedByOwner | filter:vm.roleTextFilter | orderBy:vm.translateName"
84
94
  class="multiselect-item"
95
+ ng-repeat="role in vm.inventoryRoles | filter:vm.isAllowedByOwner | filter:vm.roleTextFilter | orderBy:vm.translateName"
85
96
  >
86
97
  <label
87
- title="{{ ::role.name | translate }}"
88
98
  class="c8y-checkbox input-sm text-truncate flex-grow"
99
+ title="{{ ::role.name | translate }}"
89
100
  ng-click="::vm.toggle(role); $event.preventDefault()"
90
101
  >
91
102
  <input
103
+ class="m-t-0"
92
104
  type="checkbox"
93
105
  ng-disabled="vm.isInherited(role)"
94
106
  ng-checked="vm.isSelected(role)"
95
107
  ng-click="::vm.toggle(role); $event.stopPropagation()"
96
- class="m-t-0"
97
108
  />
98
109
  <span></span>
99
110
  <span class="label-text text-truncate">
@@ -102,19 +113,19 @@
102
113
  </label>
103
114
  <button
104
115
  class="btn-help btn-help--sm"
105
- type="button"
116
+ popover-class="high-popover"
106
117
  aria-label="{{ 'Help' | translate }}"
118
+ type="button"
107
119
  uib-popover-html="vm.getFormattedInventoryRoleDescription(role.description)"
108
120
  popover-trigger="'focus'"
109
- popover-class="high-popover"
110
121
  popover-placement="right"
111
122
  popover-append-to-body="true"
112
123
  ng-show="::role.description"
113
124
  ></button>
114
125
  <button
115
126
  class="text-warning btn-clean"
116
- type="button"
117
127
  aria-label="{{::'This role is already assigned to a parent asset.' | translate}}"
128
+ type="button"
118
129
  uib-popover="{{::'This role is already assigned to a parent asset.' | translate}}"
119
130
  popover-trigger="'focus'"
120
131
  popover-placement="right"
@@ -130,8 +141,8 @@
130
141
  <li class="bg-level-0">
131
142
  <button
132
143
  class="btn btn-primary btn-block"
133
- type="button"
134
144
  title="{{ 'Apply' | translate }}"
145
+ type="button"
135
146
  ng-click="::vm.apply()"
136
147
  ng-disabled="vm.isUnchanged"
137
148
  >
@@ -1,22 +1,28 @@
1
1
  <c8y-breadcrumbs-set>
2
2
  <c8y-breadcrumbs-item
3
+ icon="c8y-accounts"
3
4
  path="#users"
4
5
  label="{{ 'Users' | translate }}"
5
- icon="c8y-accounts"
6
6
  ></c8y-breadcrumbs-item>
7
7
  <c8y-breadcrumbs-item
8
- label="{{ 'Accounts' | translate }}"
9
8
  icon="c8y-accounts"
9
+ label="{{ 'Accounts' | translate }}"
10
10
  ></c8y-breadcrumbs-item>
11
11
  </c8y-breadcrumbs-set>
12
12
 
13
13
  <div ng-show="vm.failedToFetchOwnerInventoryRoles === true">
14
- <div class="alert alert-info" translate>
14
+ <div
15
+ class="alert alert-info"
16
+ translate
17
+ >
15
18
  You don't have the permission required to manage inventory roles for {{ vm.userId }}.
16
19
  </div>
17
20
  </div>
18
21
 
19
- <div ng-if="vm.failedToFetchOwnerInventoryRoles === false" class="col-md-10">
22
+ <div
23
+ class="col-md-10"
24
+ ng-if="vm.failedToFetchOwnerInventoryRoles === false"
25
+ >
20
26
  <div class="card card--fullpage">
21
27
  <div class="card-header separator">
22
28
  <div class="card-title">
@@ -24,16 +30,23 @@
24
30
  </div>
25
31
  <button
26
32
  class="btn-help btn-help--sm"
27
- type="button"
28
33
  aria-label="{{ 'Help' | translate }}"
34
+ type="button"
29
35
  uib-popover-template="'helpContent.html'"
30
36
  popover-trigger="'focus'"
31
37
  popover-placement="bottom"
32
38
  ></button>
33
39
  </div>
34
- <div class="inner-scroll" id="inventory-roles-container">
40
+ <div
41
+ class="inner-scroll"
42
+ id="inventory-roles-container"
43
+ >
35
44
  <div class="card-block sticky-top overflow-visible p-b-0">
36
- <div class="alert alert-info" ng-show="vm.displayNoOwnerRolesAlert" translate>
45
+ <div
46
+ class="alert alert-info"
47
+ ng-show="vm.displayNoOwnerRolesAlert"
48
+ translate
49
+ >
37
50
  No device groups available due to the device owner permissions. The device owner must be
38
51
  granted access to some device groups first.
39
52
  </div>
@@ -53,13 +66,13 @@
53
66
  />
54
67
  <span class="input-group-addon">
55
68
  <i
56
- c8y-icon="search"
57
69
  ng-class="{ 'icon-spin': loading }"
70
+ c8y-icon="search"
58
71
  ng-show="searchTearm === 0 || !searchTearm"
59
72
  ></i>
60
73
  <i
61
- c8y-icon="times"
62
74
  class="text-muted"
75
+ c8y-icon="times"
63
76
  ng-show="searchTearm.length > 0"
64
77
  ng-click="searchTearm = ''"
65
78
  ></i>
@@ -69,8 +82,8 @@
69
82
  <div class="col-md-4 col-md-offset-4 d-flex">
70
83
  <button
71
84
  class="m-l-auto btn btn-clean"
72
- type="button"
73
85
  title="{{ 'Copy inventory roles from another user' | translate }}"
86
+ type="button"
74
87
  ng-click="vm.copyRoles()"
75
88
  >
76
89
  <i c8y-icon="clipboard"></i>
@@ -84,11 +97,11 @@
84
97
  <div class="c8y-list__item__icon p-l-0 p-r-4">
85
98
  <button
86
99
  class="btn-dot"
87
- type="button"
88
100
  aria-label="{{ 'Expand all groups' | translate }}"
89
101
  uib-tooltip="{{ 'Expand all groups' | translate }}"
90
102
  tooltip-popup-delay="500"
91
103
  tooltip-placement="right"
104
+ type="button"
92
105
  ng-click="vm.expandGroups = !vm.expandGroups"
93
106
  ng-disabled="vm.expandGroups"
94
107
  >
@@ -105,8 +118,8 @@
105
118
  {{ 'Inventory roles' | translate }}
106
119
  <button
107
120
  class="btn-help btn-help--sm"
108
- type="button"
109
121
  aria-label="{{ 'Help' | translate }}"
122
+ type="button"
110
123
  uib-popover="{{
111
124
  'Use dropdown to select which roles should be applied to each group and its children.'
112
125
  | translate
@@ -138,18 +151,18 @@
138
151
  </div>
139
152
  <div class="d-flex card-footer separator sticky-bottom">
140
153
  <button
154
+ class="btn btn-default"
141
155
  title="{{ 'Clear changes' | translate }}"
142
- ng-click="vm.loadAssignedRoles()"
143
156
  type="button"
157
+ ng-click="vm.loadAssignedRoles()"
144
158
  ng-disabled="vm.isUnchanged()"
145
- class="btn btn-default"
146
159
  >
147
160
  {{ 'Clear changes' | translate }}
148
161
  </button>
149
162
  <button
150
163
  class="btn btn-primary"
151
- type="submit"
152
164
  title="{{ 'Save' | translate }}"
165
+ type="submit"
153
166
  ng-disabled="vm.isUnchanged()"
154
167
  ng-click="vm.onSaveInventoryRoles()"
155
168
  >
@@ -170,7 +183,10 @@
170
183
  </div>
171
184
  </div>
172
185
 
173
- <script type="text/ng-template" id="helpContent.html">
186
+ <script
187
+ id="helpContent.html"
188
+ type="text/ng-template"
189
+ >
174
190
  <div>
175
191
  <p class="m-b-4" translate>
176
192
  Grant user access to the listed device groups as allowed by the assigned
@@ -10,8 +10,8 @@
10
10
  </div>
11
11
  <div class="c8y-list__group m-b-0 no-border-last">
12
12
  <div
13
- ng-repeat="asset in vm.flatAssetTree | filter:vm.filterAsset | filter:{name:vm.searchFilter} | limitTo : vm.pageSize : vm.paginationOffset"
14
13
  class="c8y-list__item"
14
+ ng-repeat="asset in vm.flatAssetTree | filter:vm.filterAsset | filter:{name:vm.searchFilter} | limitTo : vm.pageSize : vm.paginationOffset"
15
15
  >
16
16
  <div
17
17
  class="c8y-list__item__block"
@@ -21,18 +21,18 @@
21
21
  <div class="c8y-list__item__icon m-t-4 p-l-0">
22
22
  <button
23
23
  class="btn-clean"
24
- ng-click="vm.loadChildren(asset)"
25
- type="button"
26
24
  aria-label="{{ 'Open' | translate }}"
25
+ type="button"
26
+ ng-click="vm.loadChildren(asset)"
27
27
  >
28
28
  <i
29
- c8y-icon="c8y-group"
30
29
  class="c8y-icon-duocolor"
30
+ c8y-icon="c8y-group"
31
31
  ng-if="!asset.isOpened"
32
32
  ></i>
33
33
  <i
34
- c8y-icon="c8y-group-open"
35
34
  class="c8y-icon-duocolor"
35
+ c8y-icon="c8y-group-open"
36
36
  ng-if="asset.isOpened"
37
37
  ></i>
38
38
  </button>
@@ -47,8 +47,8 @@
47
47
  >
48
48
  <span
49
49
  class="text-truncate"
50
- title="{{::asset.name}}"
51
50
  ng-style="{ cursor: asset._subGroups === undefined ? 'pointer' : 'default' }"
51
+ title="{{::asset.name}}"
52
52
  >
53
53
  {{::asset.name}}
54
54
  </span>