@c8y/ng1-modules 1017.138.0 → 1017.139.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.
Files changed (114) hide show
  1. package/aclManagement/views/permissionEditor.html +2 -2
  2. package/actilityProviderSettings/actilitySettings.html +8 -8
  3. package/administration-alarmMapping/views/index.html +13 -13
  4. package/administration-applications/appWizard/appWizardClone2Step.html +5 -4
  5. package/administration-applications/appWizard/appWizardExternalStep.html +6 -6
  6. package/administration-applications/appWizard/appWizardSmartAppStep.html +6 -3
  7. package/administration-applications/application-detail/application-detail.html +7 -2
  8. package/administration-applications/application-list-view/application-list-view.html +9 -7
  9. package/administration-applications/views/applicationAccessEditor.html +1 -1
  10. package/administration-archivesEditor/views/upload.html +4 -4
  11. package/administration-eventProcessing/list/eventProcessingRulesList.html +4 -1
  12. package/administration-retentionRules/views/list.html +6 -6
  13. package/administration-storageLimitEmail/views/storageLimitForm.html +3 -2
  14. package/alarms/widget-config.html +11 -9
  15. package/app-status/app-instances/app-instances.html +4 -3
  16. package/app-status/app-status/app-status.html +16 -25
  17. package/app-status/app-tenant-subscriptions-list/app-tenant-subscriptions-list.html +7 -5
  18. package/assetTable/views/addOperation.html +10 -6
  19. package/assetTable/views/assets.html +11 -4
  20. package/assetTable/views/assets2.html +1 -1
  21. package/assetTable/views/rendererButton.html +2 -2
  22. package/binaryArtefactsManagement/views/list.html +1 -1
  23. package/configurationRepository/views/list.html +15 -13
  24. package/connectivityV2/sms.html +2 -2
  25. package/connectivityV2/status.html +14 -12
  26. package/core/ui/configurable-device-list-columns/modal-columns-configure.component.html +14 -14
  27. package/core/ui/filteringSorting/filteredSortedList.html +2 -3
  28. package/core/ui/forms/search.html +9 -8
  29. package/core/ui/navigation/breadcrumbs.html +4 -3
  30. package/core/ui/navigation/navigator.html +2 -1
  31. package/core/ui/operations/operations-timeline.html +5 -3
  32. package/core/ui/properties/propertySelector.html +9 -8
  33. package/core/ui/properties/schemaPropertySelector.html +15 -13
  34. package/core/ui/realtime/realtime-switch.html +2 -2
  35. package/core/ui/roles/roles-matrix.html +6 -6
  36. package/core/ui/user/editUser.directive.html +53 -46
  37. package/core/ui/user/measurementUnitPreference.html +2 -2
  38. package/core/ui/views/alarmList.html +32 -27
  39. package/core/ui/views/auditList.html +8 -7
  40. package/core/ui/views/binaryInput.html +37 -27
  41. package/core/ui/views/coreLogin.html +24 -24
  42. package/core/ui/views/deviceStatusDisplay.html +13 -9
  43. package/core/ui/views/editRetentionRuleDirective.html +3 -3
  44. package/core/ui/views/filePicker.html +2 -2
  45. package/core/ui/views/loadmore.html +3 -3
  46. package/dataBroker/connectors/connectors.html +21 -18
  47. package/device-protocol-impact/impact-resource.html +10 -10
  48. package/device-protocol-lwm2m/lwm2mResource.html +5 -6
  49. package/device-protocol-lwm2m/lwm2mValidationRules/lwm2mValidationRule.html +9 -8
  50. package/device-protocol-opcua-v2/opcua-v2-create-step.html +7 -8
  51. package/deviceDatabase4/detail/discrete-inputs.html +9 -9
  52. package/deviceDatabase4/detail/discrete-outputs.html +7 -7
  53. package/deviceDatabase4/detail/holding-registers.html +6 -6
  54. package/deviceDatabase4/detail/input-registers.html +9 -8
  55. package/deviceDatabase4/detail/message-id-configuration.html +4 -4
  56. package/deviceDatabase4/modals/configure-discrete-io.html +19 -25
  57. package/deviceDatabase4/modals/configure-register.html +177 -67
  58. package/deviceDatabase4/modals/import-device-type.html +5 -5
  59. package/deviceDetailIdentity/views/identity.html +8 -8
  60. package/deviceGroupAssignment/groupAssignment.component.html +6 -6
  61. package/deviceStatusWidget/ownerStatus.html +10 -10
  62. package/deviceStatusWidget/requiredAvailabilityIntervalSetting.html +8 -8
  63. package/devicemanagement-aclManagement/views/index.html +10 -10
  64. package/devicemanagement-deviceNetwork/views/network.html +6 -6
  65. package/devicemanagement-location/views/index.html +21 -21
  66. package/devicemanagement-logViewer/views/index.html +34 -24
  67. package/enterpriseEdition/customBranding/brandingConfigurationForm.component.js +1 -1
  68. package/enterpriseEdition/customBranding/brandingConfigurationForm.html +13 -20
  69. package/export/views/detail.html +4 -3
  70. package/export/views/list.html +13 -13
  71. package/export/views/properties.html +7 -7
  72. package/generic-ui/generic-ui-inventory-property.html +13 -12
  73. package/generic-ui/generic-ui-operation-list-button.html +2 -2
  74. package/htmlWidget/views/config.html +6 -7
  75. package/kpi/views/edit.html +3 -3
  76. package/kpi/views/pieChart.html +6 -5
  77. package/measurements/views/iconBar.html +11 -7
  78. package/modbusConfiguration4/fieldbus-device-list.html +17 -14
  79. package/modbusWidget4/widget.html +4 -3
  80. package/modbusWidgets/views/widget.html +4 -4
  81. package/package.json +1 -1
  82. package/remoteAccess/remoteAccessEndpointCard/remoteAccessEndpointCard.component.js +1 -1
  83. package/remoteAccess/remoteAccessEndpointCard/remoteAccessEndpointCard.html +17 -10
  84. package/remoteAccess/remoteAccessEndpointModal/remoteAccessEndpointModal.html +31 -23
  85. package/roles/detail/roleDetailGlobal.html +8 -8
  86. package/roles/detail/roleDetailInventory.html +11 -11
  87. package/roles/detail/roleInventoryPermissionList.html +11 -14
  88. package/scada/views/componentConfig.html +5 -5
  89. package/simulators/detail/instructionList.html +22 -22
  90. package/simulators/detail/operationAddDialog.html +5 -4
  91. package/smartRestEditor/addTemplate/addTemplate.modal.html +8 -8
  92. package/smartRestEditor/requestEditor/requestEditor.html +20 -20
  93. package/smartRestEditor/responseEditor/responseEditor.html +11 -10
  94. package/smartRules/list/smartRulesList.html +13 -6
  95. package/smartRules/views/edit.html +9 -3
  96. package/smartRules/views/paramInputAlarmType.html +4 -4
  97. package/smartRules/views/paramInputEscalationSteps.html +6 -2
  98. package/smartRules/views/paramInputKpi.html +2 -2
  99. package/smartRules/views/paramInputOperation.html +2 -2
  100. package/tenantApplications/subscribed-applications/subscribed-applications.html +9 -8
  101. package/tenantApplications/views/index.html +5 -4
  102. package/tenantPolicies/retentionRule/retentionRuleRow.html +12 -9
  103. package/tenantPolicies/systemOptions/systemOptionsRow.html +2 -0
  104. package/tenantPolicies/tenantOptions/tenantOptionsRow.html +18 -14
  105. package/tenantPolicies/tenantPolicyDetail/tenantPolicyDetail.html +40 -29
  106. package/tenantPolicies/tenantPolicyDetail/tenantPolicyRow.html +3 -3
  107. package/trackerRegistration/views/index.html +2 -0
  108. package/trafficLightWidget/states-mapping.html +8 -8
  109. package/userRoles/inventoryRoleSelector/inventoryRoleSelector.html +10 -12
  110. package/userRoles/inventoryRolesTab/inventoryRolesTab.html +15 -15
  111. package/users/applicationAccess/applicationAccess.html +18 -17
  112. package/users/userDetailView/userDetailView.html +10 -10
  113. package/users/userList/userList.html +22 -17
  114. package/users/userRemovalModal/userRemovalModal.component.html +10 -10
@@ -69,7 +69,7 @@
69
69
  readonly
70
70
  />
71
71
  <span class="input-group-btn">
72
- <button class="btn btn-default">
72
+ <button class="btn btn-default" type="button" title="{{ 'Browse' | translate }}">
73
73
  <span><i c8y-icon="ellipsis-h"></i></span>
74
74
  </button>
75
75
  </span>
@@ -104,17 +104,17 @@
104
104
 
105
105
  <div class="modal-footer">
106
106
  <button
107
- title="{{ 'Cancel' | translate }}"
108
- type="button"
109
107
  class="btn btn-default"
108
+ type="button"
109
+ title="{{ 'Cancel' | translate }}"
110
110
  ng-click="vm.dismiss()"
111
111
  >
112
112
  {{ 'Cancel' | translate }}
113
113
  </button>
114
114
  <button
115
- title="{{ 'Import' | translate }}"
116
- type="button"
117
115
  class="btn btn-primary"
116
+ type="button"
117
+ title="{{ 'Import' | translate }}"
118
118
  ng-click="vm.import(selectedDeviceType)"
119
119
  ng-disabled="!((vm.selection.predefined.deviceType || vm.selection.custom.deviceType) && vm.importForm.$valid)"
120
120
  >
@@ -3,9 +3,9 @@
3
3
  <li c8y-if-allowed any-role="['ROLE_IDENTITY_ADMIN']">
4
4
  <div class="dropdown" uib-dropdown auto-close="outsideClick" is-open="isOpen">
5
5
  <button
6
- title="{{ 'Add external ID' | translate }}"
7
- type="button"
8
6
  class="dropdown-toggle c8y-dropdown"
7
+ type="button"
8
+ title="{{ 'Add external ID' | translate }}"
9
9
  uib-dropdown-toggle
10
10
  aria-haspopup="true"
11
11
  >
@@ -42,9 +42,9 @@
42
42
  />
43
43
  </div>
44
44
  <button
45
- title="{{ 'Save' | translate }}"
46
- type="submit"
47
45
  class="btn btn-primary"
46
+ type="submit"
47
+ title="{{ 'Save' | translate }}"
48
48
  ng-click="create(newId)"
49
49
  ng-disabled="newIdForm.$invalid"
50
50
  translate
@@ -96,13 +96,13 @@
96
96
  <div class="col-sm-2 showOnHover">
97
97
  <c8y-if-allowed any-role="['ROLE_IDENTITY_ADMIN']" class="d-contents">
98
98
  <button
99
- uib-tooltip="{{ 'Remove' | translate }}"
99
+ class="m-l-auto btn btn-dot btn-dot--danger"
100
+ type="button"
100
101
  aria-label="{{ 'Remove' | translate }}"
102
+ uib-tooltip="{{ 'Remove' | translate }}"
101
103
  tooltip-popup-delay="500"
102
- tooltip-trigger="'mouseenter focus'"
103
- class="m-l-auto btn btn-dot btn-dot--danger"
104
+ tooltip-trigger="'mouseenter'"
104
105
  ng-click="onClickDelete(id)"
105
- type="button"
106
106
  >
107
107
  <i c8y-icon="minus-circle"></i>
108
108
  </button>
@@ -25,14 +25,14 @@
25
25
  <span class="m-l-8 text-truncate">{{ group.name }}</span>
26
26
  </a>
27
27
  <button
28
- aria-label="{{ 'Unassign device' | translate }}"
29
- type="button"
30
28
  class="m-l-auto btn btn-dot showOnHover"
31
- ng-click="vm.removeFromGroup(group)"
29
+ type="button"
30
+ aria-label="{{ 'Unassign device' | translate }}"
32
31
  uib-tooltip="{{ 'Unassign device' | translate }}"
33
- tooltip-trigger="'mouseenter focus'"
32
+ tooltip-trigger="'mouseenter'"
34
33
  tootip-popover-delay="500"
35
34
  tooltip-append-to-body="true"
35
+ ng-click="vm.removeFromGroup(group)"
36
36
  >
37
37
  <i c8y-icon="chain-broken"></i>
38
38
  </button>
@@ -52,9 +52,9 @@
52
52
  ></div>
53
53
  <div class="input-group-btn">
54
54
  <button
55
- title="{{ 'Assign' | translate }}"
56
- type="button"
57
55
  class="btn btn-primary"
56
+ type="button"
57
+ title="{{ 'Assign' | translate }}"
58
58
  ng-click="vm.addToGroup(vm.group.selected)"
59
59
  ng-disabled="!vm.group.selected"
60
60
  >
@@ -9,11 +9,11 @@
9
9
  <div class="flex-no-shrink p-l-4 d-flex a-i-center" ng-if="vm.shouldShowToggle()">
10
10
  <label
11
11
  class="c8y-switch c8y-switch--inline"
12
+ aria-label="{{ vm.getTooltip() | translate }}"
12
13
  uib-tooltip="{{ vm.getTooltip() | translate }}"
13
14
  tooltip-popup-delay="500"
14
- tooltip-trigger="'mouseenter focus'"
15
+ tooltip-trigger="'mouseenter'"
15
16
  tooltip-append-to-body="true"
16
- aria-label="{{ vm.getTooltip() | translate }}"
17
17
  >
18
18
  <input
19
19
  type="checkbox"
@@ -29,12 +29,13 @@
29
29
  </span>
30
30
  <button
31
31
  class="btn btn-dot m-l-auto"
32
- ng-show="!vm.isEditMode && vm.canAdminDevice"
33
- ng-click="vm.toggleEdit()"
34
- uib-tooltip="{{ 'Edit' | translate }}"
32
+ type="button"
35
33
  aria-label="{{ 'Edit' | translate }}"
34
+ uib-tooltip="{{ 'Edit' | translate }}"
36
35
  tooltip-popup-delay="500"
37
- tooltip-trigger="'mouseenter focus'"
36
+ tooltip-trigger="'mouseenter'"
37
+ ng-show="!vm.isEditMode && vm.canAdminDevice"
38
+ ng-click="vm.toggleEdit()"
38
39
  >
39
40
  <i c8y-icon="pencil"></i>
40
41
  </button>
@@ -49,10 +50,9 @@
49
50
  />
50
51
  <div class="input-group-btn">
51
52
  <button
52
- title="{{ 'Save' | translate }}"
53
- type="button"
54
53
  class="btn btn-dot"
55
54
  type="button"
55
+ title="{{ 'Save' | translate }}"
56
56
  ng-click="vm.save()"
57
57
  >
58
58
  <i c8y-icon="check" class="text-success"></i>
@@ -60,9 +60,9 @@
60
60
  </div>
61
61
  <div class="input-group-btn">
62
62
  <button
63
- title="{{ 'Cancel' | translate }}"
64
- type="button"
65
63
  class="btn btn-dot btn-dot--danger"
64
+ type="button"
65
+ title="{{ 'Cancel' | translate }}"
66
66
  ng-click="vm.cancel()"
67
67
  >
68
68
  <i c8y-icon="times"></i>
@@ -11,13 +11,13 @@
11
11
  <button
12
12
  class="btn btn-dot m-l-auto"
13
13
  type="button"
14
- ng-hide="!!vm.status.maintenanceStatus"
15
- ng-click="vm.toggleEdit()"
14
+ aria-label="{{ 'Edit' | translate }}"
16
15
  uib-tooltip="{{ 'Edit' | translate }}"
17
16
  tooltip-popup-delay="500"
17
+ tooltip-trigger="'mouseenter'"
18
18
  tooltip-append-to-body="true"
19
- tooltip-trigger="'mouseenter focus'"
20
- aria-label="{{ 'Edit' | translate }}"
19
+ ng-hide="!!vm.status.maintenanceStatus"
20
+ ng-click="vm.toggleEdit()"
21
21
  >
22
22
  <i c8y-icon="pencil"></i>
23
23
  </button>
@@ -42,11 +42,11 @@
42
42
  <div class="input-group-btn">
43
43
  <button
44
44
  class="btn btn-dot"
45
+ type="button"
46
+ aria-label="{{ 'Save' | translate }}"
45
47
  ng-class="{ 'btn-pending': vm.saveInProgress }"
46
48
  ng-disabled="vm.saveInProgress || vm.availabilityForm.$invalid || !!vm.status.maintenanceStatus"
47
49
  ng-click="vm.save()"
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>
@@ -58,9 +58,9 @@
58
58
  </div>
59
59
  <div class="input-group-btn" ng-show="vm.isEditMode">
60
60
  <button
61
- title="{{ 'Cancel' | translate }}"
62
- type="button"
63
61
  class="btn btn-dot btn-dot--danger"
62
+ type="button"
63
+ title="{{ 'Cancel' | translate }}"
64
64
  ng-disabled="vm.saveInProgress || !!vm.status.maintenanceStatus"
65
65
  ng-click="vm.resetEdit()"
66
66
  >
@@ -4,16 +4,16 @@
4
4
  <form class="navbar-form">
5
5
  <span
6
6
  class="btn-link"
7
- data-uib-popover="{{ helpText | translate }}"
8
- data-popover-placement="bottom"
9
- data-popover-trigger="focus"
7
+ uib-popover="{{ helpText | translate }}"
8
+ popover-placement="bottom"
9
+ popover-trigger="focus"
10
10
  >
11
11
  <i c8y-icon="question-circle-o"></i>
12
12
  </span>
13
13
  <button
14
14
  class="btn btn-link"
15
- title="{{ 'Add permission' | translate }}"
16
15
  type="button"
16
+ title="{{ 'Add permission' | translate }}"
17
17
  ng-show="allowEdit"
18
18
  ng-click="toggleAddPermission()"
19
19
  >
@@ -53,12 +53,12 @@
53
53
  </ui-select>
54
54
  <div class="btn-group pull-left">
55
55
  <button
56
- ng-repeat="type in sourceTypes"
57
56
  class="btn btn-primary text-capitalize"
58
- title="{{ type.value | translate | lowercase }}"
59
- type="button"
60
57
  ng-class="{ active: sourceType == type }"
58
+ type="button"
59
+ title="{{ type.value | translate | lowercase }}"
61
60
  ng-click="setSourceType(type)"
61
+ ng-repeat="type in sourceTypes"
62
62
  >
63
63
  {{ type.value | translate | lowercase }}
64
64
  </button>
@@ -75,8 +75,8 @@
75
75
  <div class="pull-right">
76
76
  <button
77
77
  class="btn btn-primary"
78
- title="{{ 'Save' | translate }}"
79
78
  type="submit"
79
+ title="{{ 'Save' | translate }}"
80
80
  ng-click="create(permission)"
81
81
  ng-disabled="!isValid(permission)"
82
82
  >
@@ -84,8 +84,8 @@
84
84
  </button>
85
85
  <button
86
86
  class="btn btn-default"
87
- title="{{ 'Cancel' | translate }}"
88
87
  type="button"
88
+ title="{{ 'Cancel' | translate }}"
89
89
  ng-click="cancel()"
90
90
  >
91
91
  Cancel
@@ -192,8 +192,8 @@
192
192
  <td class="text-right">
193
193
  <button
194
194
  class="btn btn-dot btn-dot--danger showOnHover"
195
- title="{{ 'Remove permission' | translate }}"
196
195
  type="button"
196
+ title="{{ 'Remove permission' | translate }}"
197
197
  ng-show="allowEdit"
198
198
  ng-click="removeGroupPermission(groupPermission, permission)"
199
199
  >
@@ -64,18 +64,18 @@
64
64
 
65
65
  <div class="card-footer separator">
66
66
  <button
67
- title="{{ 'Save' | translate }}"
68
- type="submit"
69
67
  class="btn btn-primary"
68
+ type="submit"
69
+ title="{{ 'Save' | translate }}"
70
70
  ng-disabled="wanForm.$invalid || wanForm.$pristine"
71
71
  ng-click="saveWANviaIP(device)"
72
72
  >
73
73
  {{ 'Save' | translate }}
74
74
  </button>
75
75
  <button
76
- title="{{ 'Save (SMS)' | translate }}"
77
- type="submit"
78
76
  class="btn btn-primary"
77
+ type="submit"
78
+ title="{{ 'Save (SMS)' | translate }}"
79
79
  ng-disabled="wanForm.$invalid || !smsEnabled || wanForm.$pristine"
80
80
  ng-click="saveWANviaSMS(device)"
81
81
  >
@@ -358,9 +358,9 @@
358
358
 
359
359
  <div class="card-footer separator">
360
360
  <button
361
- title="{{ 'Save' | translate }}"
362
- type="submit"
363
361
  class="btn btn-primary"
362
+ type="submit"
363
+ title="{{ 'Save' | translate }}"
364
364
  ng-disabled="lanDhcpForm.$invalid || lanDhcpForm.$pristine"
365
365
  >
366
366
  {{ 'Save' | translate }}
@@ -2,7 +2,12 @@
2
2
  <c8y-ui-action-bar-set>
3
3
  <c8y-realtime-btn class="btn btn-link" subscriber-id="id"></c8y-realtime-btn>
4
4
 
5
- <button class="btn btn-link" title="{{ 'Center map' | translate }}" ng-click="centerMap()">
5
+ <button
6
+ class="btn btn-link"
7
+ type="button"
8
+ title="{{ 'Center map' | translate }}"
9
+ ng-click="centerMap()"
10
+ >
6
11
  <i c8y-icon="dot-circle-o"></i>
7
12
  {{ 'Center map' | translate }}
8
13
  </button>
@@ -22,21 +27,16 @@
22
27
 
23
28
  <div class="d-flex d-col bg-inherit content-fullpage">
24
29
  <div class="card-header separator">
25
- <span class="h4 card-title" translate>Device location</span>
30
+ <span class="card-title" translate>Device location</span>
26
31
  <button
32
+ class="btn-help"
27
33
  type="button"
34
+ aria-label="{{ 'Help' | translate }}"
28
35
  uib-popover-html="'Device location may be set by the device itself, or manually in the platform' | translate"
29
- popover-append-to-body="true"
30
36
  popover-placement="left"
31
37
  popover-trigger="'focus'"
32
- class="btn-help"
33
- aria-label="{{
34
- 'Device location may be set by the device itself, or manually in the platform'
35
- | translate
36
- }}"
37
- >
38
- <i c8y-icon="question-circle-o"></i>
39
- </button>
38
+ popover-append-to-body="true"
39
+ ></button>
40
40
  </div>
41
41
  <div class="inner-scroll">
42
42
  <form
@@ -120,7 +120,7 @@
120
120
  class="form-control"
121
121
  />
122
122
  <span class="input-group-btn">
123
- <button title="{{ 'Search' | translate }}" class="btn btn-dot" type="submit">
123
+ <button class="btn btn-dot" type="submit" title="{{ 'Search' | translate }}">
124
124
  <i c8y-icon="search"></i>
125
125
  </button>
126
126
  </span>
@@ -130,30 +130,30 @@
130
130
  </div>
131
131
  <div class="card-footer separator">
132
132
  <button
133
- ng-show="!noeditable"
134
- title="{{ 'Edit location' | translate }}"
135
- type="button"
136
133
  class="btn btn-default"
134
+ type="button"
135
+ title="{{ 'Edit location' | translate }}"
137
136
  ng-click="noeditable = !noeditable"
137
+ ng-show="!noeditable"
138
138
  >
139
139
  {{ 'Edit location' | translate }}
140
140
  </button>
141
141
  <button
142
- ng-show="noeditable"
143
- title="{{ 'Cancel' | translate }}"
144
- type="button"
145
142
  class="btn btn-default"
143
+ type="button"
144
+ title="{{ 'Cancel' | translate }}"
146
145
  ng-click="cancel()"
146
+ ng-show="noeditable"
147
147
  >
148
148
  {{ 'Cancel' | translate }}
149
149
  </button>
150
150
  <button
151
- ng-show="noeditable"
152
- title="{{ 'Save' | translate }}"
153
- type="button"
154
151
  class="btn btn-primary"
152
+ type="button"
153
+ title="{{ 'Save' | translate }}"
155
154
  ng-disabled="locationForm.$invalid"
156
155
  ng-click="save()"
156
+ ng-show="noeditable"
157
157
  >
158
158
  {{ 'Save' | translate }}
159
159
  </button>
@@ -10,8 +10,9 @@
10
10
  is-open="isOpen"
11
11
  >
12
12
  <button
13
- title="{{ 'Request log file' | translate }}"
14
13
  class="dropdown-toggle c8y-dropdown"
14
+ type="button"
15
+ title="{{ 'Request log file' | translate }}"
15
16
  uib-dropdown-toggle
16
17
  aria-haspopup="true"
17
18
  >
@@ -44,7 +45,11 @@
44
45
 
45
46
  <div class="form-group">
46
47
  <label translate>Type of log</label>
47
- <ui-select ng-init="vm.logtypeSelect = $select" ng-model="vm.filters.logFile" required>
48
+ <ui-select
49
+ ng-init="vm.logtypeSelect = $select"
50
+ ng-model="vm.filters.logFile"
51
+ required
52
+ >
48
53
  <ui-select-match
49
54
  title="{{ $select.selected.name }}"
50
55
  placeholder="{{ 'Type of log' | translate }}"
@@ -80,8 +85,9 @@
80
85
  />
81
86
  </div>
82
87
  <button
83
- title="{{ 'Request log file' | translate }}"
84
88
  class="btn btn-primary btn-block"
89
+ type="button"
90
+ title="{{ 'Request log file' | translate }}"
85
91
  ng-disabled="logRequestForm.$invalid"
86
92
  ng-click="requestLogfile(vm.filters); isOpen = !isOpen"
87
93
  >
@@ -96,10 +102,11 @@
96
102
  <c8y-refresh-btn></c8y-refresh-btn>
97
103
  </c8y-ui-action-bar-set>
98
104
 
99
- <div class="c8y-empty-state text-center" ng-show="operations.length === 0">
100
- <h1 c8y-icon="file-text"></h1>
101
- <h3 translate="">No logs found.</h3>
102
- </div>
105
+ <c8y-ui-empty-state
106
+ ng-show="operations.length === 0"
107
+ [icon]="'file-text'"
108
+ [title]="'No logs found.' | translate"
109
+ ></c8y-ui-empty-state>
103
110
 
104
111
  <div class="c8y-list__group">
105
112
  <div class="page-sticky-header c8y-list__item hidden-xs" ng-if="operations.length > 0">
@@ -129,12 +136,12 @@
129
136
  <div class="c8y-list__item__block">
130
137
  <div class="c8y-list__item__icon">
131
138
  <button
132
- aria-label="{{ 'Status' | translate }}"
133
139
  class="btn btn-dot"
134
140
  type="button"
141
+ aria-label="{{ op.status | translate }}"
135
142
  uib-tooltip="{{ op.status | translate }}"
136
143
  tooltip-popup-delay="500"
137
- tooltip-trigger="'mouseenter focus'"
144
+ tooltip-trigger="'mouseenter'"
138
145
  >
139
146
  <i c8y-icon="{{ statusIcon(op) }}" ng-class="statusClass(op)"></i>
140
147
  </button>
@@ -146,6 +153,7 @@
146
153
  <button
147
154
  class="btn-clean"
148
155
  type="button"
156
+ title="{{ getOperationDesc(op) | translate }}"
149
157
  ng-class="{ 'no-pointer': !hasLogFile(op) }"
150
158
  ng-click="selectLogfile(op)"
151
159
  >
@@ -166,38 +174,36 @@
166
174
  </div>
167
175
  <div class="c8y-list__item__actions showOnHover">
168
176
  <button
169
- ng-if="!hasLogFile(op) && isPending(op)"
170
177
  class="btn btn-dot a-s-center"
171
178
  type="button"
172
- uib-tooltip="{{ 'Cancel operation' | translate }}"
173
179
  aria-label="{{ 'Cancel operation' | translate }}"
180
+ uib-tooltip="{{ 'Cancel operation' | translate }}"
174
181
  tooltip-popup-delay="500"
175
- popover-trigger="'mouseenter focus'"
176
182
  tooltip-placement="left"
177
183
  ng-click="cancel(op)"
184
+ ng-if="!hasLogFile(op) && isPending(op)"
178
185
  >
179
186
  <i c8y-icon="times-circle"></i>
180
187
  </button>
181
188
  <button
182
- ng-if="!hasLogFile(op) && isFailed(op)"
183
189
  class="btn btn-dot btn-dot--danger a-s-center"
184
190
  type="button"
185
- uib-tooltip="{{ 'Delete operation' | translate }}"
186
191
  aria-label="{{ 'Delete operation' | translate }}"
192
+ uib-tooltip="{{ 'Delete operation' | translate }}"
187
193
  tooltip-popup-delay="500"
188
- popover-trigger="'mouseenter focus'"
189
194
  tooltip-placement="left"
190
195
  ng-click="remove(op)"
196
+ ng-if="!hasLogFile(op) && isFailed(op)"
191
197
  >
192
198
  <i c8y-icon="delete"></i>
193
199
  </button>
194
200
  <button
195
- ng-if="hasLogFile(op)"
196
- title="{{ 'Expand' | translate }}"
197
- type="button"
198
201
  class="collapse-btn"
202
+ type="button"
203
+ title="{{ 'Expand' | translate }}"
199
204
  ng-class="{ active: op === selectedLog }"
200
205
  ng-click="op===selectedLog ? selectLogfile({}) :selectLogfile(op);"
206
+ ng-if="hasLogFile(op)"
201
207
  >
202
208
  <i c8y-icon="chevron-down"></i>
203
209
  </button>
@@ -207,9 +213,9 @@
207
213
  ></span>
208
214
  <span ng-if="hasLogFile(op)" class="dropdown settings" is-open="isopen" uib-dropdown>
209
215
  <button
210
- title="{{ 'Actions' | translate }}"
211
- type="button"
212
216
  class="dropdown-toggle c8y-dropdown btn-link"
217
+ type="button"
218
+ title="{{ 'Actions' | translate }}"
213
219
  uib-dropdown-toggle
214
220
  aria-haspopup="true"
215
221
  >
@@ -217,16 +223,20 @@
217
223
  </button>
218
224
  <ul class="dropdown-menu dropdown-menu-right" uib-dropdown-menu>
219
225
  <li>
220
- <a title="{{ 'Delete log' | translate }}" href ng-click="remove(op)">
226
+ <button title="{{ 'Delete log' | translate }}" type="button" ng-click="remove(op)">
221
227
  <i c8y-icon="delete"></i>
222
228
  {{ 'Delete' | translate }}
223
- </a>
229
+ </button>
224
230
  </li>
225
231
  <li ng-show="isBinary(op)">
226
- <a title="{{ 'Download log' | translate }}" href ng-click="download(op)">
232
+ <button
233
+ title="{{ 'Download log' | translate }}"
234
+ type="button"
235
+ ng-click="download(op)"
236
+ >
227
237
  <i c8y-icon="download"></i>
228
238
  {{ 'Download' | translate }}
229
- </a>
239
+ </button>
230
240
  </li>
231
241
  <li ng-hide="isBinary(op) || !op.c8y_LogfileRequest.file">
232
242
  <a
@@ -1 +1 @@
1
- "use strict";!function(){function n(c,n,t,e,i,o,a,r,l,s,u,d,f,g){var p,m,b,v,y=g("humanizeAppName"),h=this,w={html_title:N,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){T("navigator-font-family",a.getFontFamilyCssVar(n))},appLogo:function(n){return T("navigator-platform-logo",n?"url(".concat(n.fileSrc,")"):"")},"brand-logo-img":function(n){return T("brand-logo-img",n?"url(".concat(n.fileSrc,")"):"")},"__import-font":function(n){var e=document.createElement("style");e.innerText="@import url('".concat(n,"')"),B().contentDocument.head.appendChild(e),p&&p.document.head.appendChild(e)}},I=!!window.MSInputMethodContext&&!!document.documentMode;function B(){return document.querySelector("#previewBrowser")}function C(){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,a=n.app;_.defaults(i,{c8y_less_variables:{}}),b=_.cloneDeep(i),_.assign(h,{schema:e,form:t,options:o,branding:i}),v=a;var r=B();r.src="".concat(d.getHref(v),"/index.html"),r.onload=function(){r.appTitle=r.contentDocument.title,_.set(r.contentWindow,"C8Y_PREVIEW.preview",!0),_.set(r.contentWindow,"C8Y_PREVIEW.previewCookieBanner",k()),N(),A()},c.$watchCollection("vm.branding.c8y_less_variables",A)}).finally(function(){h.isLoading=!1})}function N(n){var e=n||R();h.title="".concat(e," - ").concat(B().appTitle),p&&(p.document.title="".concat(e," - ").concat(p.appTitle),p.C8Y_PREVIEW.globalTitle=e)}function R(){return _.get(h,"branding.c8y_less_variables.html_title")||u.appOption("globalTitle")}function k(){return _.pick(h.branding.c8y_less_variables,["cookieBannerDisabled","cookieBannerTitle","cookieBannerText","policyUrl"])}function A(){h.isLoading||_.forOwn(h.branding.c8y_less_variables,function(n,e){w[e]?w[e](n):T(e,n)})}function T(n,e){E(n,e,B().contentDocument.documentElement),p&&E(n,e,p.document.documentElement)}function E(n,e,t){var o=a.keyToCssVar(n);"navigator-platform-logo-height"===o?null==e||""===e?t.style.removeProperty("--".concat(o)):t.style.setProperty("--".concat(o),"".concat(e,"%")):t.style.setProperty("--".concat(o),_.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(){r&&P();return C()},canSave:function(){return!(_.get(c,"platformConfigurationForm1.$invalid")||_.get(c,"platformConfigurationForm2.$invalid"))},save:function(){var t=[],o=i.BINARY_VARS;return h.branding.binary_ref={},_.each(o,function(e){if(h.branding.c8y_less_variables[e]){var 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(v),"/index.html"),"_blank"),function e(){clearInterval(m);m=setInterval(function(){if(p&&(p.C8Y_PREVIEW={preview:!0,globalTitle:R(),previewCookieBanner:k()},p.C8Y_APP)){var n=p.C8Y_APP.name;p.appTitle=y(n),clearInterval(m),A(),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:r,applyConfiguration:function(){a.removeLegacyBrandedApplications().then(function(){return f({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))})})},showPreview:!I,removeAppliedBranding:function(){f({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){f({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(){C().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"})}();
1
+ "use strict";!function(){function n(c,n,t,e,i,o,a,r,l,s,u,d,f,g){var p,m,b,y,v=g("humanizeAppName"),h=this,w=s("Apply branding"),I=s("Save branding configuration first"),B={html_title:R,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){P("navigator-font-family",a.getFontFamilyCssVar(n))},appLogo:function(n){return P("navigator-platform-logo",n?"url(".concat(n.fileSrc,")"):"")},"brand-logo-img":function(n){return P("brand-logo-img",n?"url(".concat(n.fileSrc,")"):"")},"__import-font":function(n){var e=document.createElement("style");e.innerText="@import url('".concat(n,"')"),N().contentDocument.head.appendChild(e),p&&p.document.head.appendChild(e)}},C=!!window.MSInputMethodContext&&!!document.documentMode;function N(){return document.querySelector("#previewBrowser")}function A(){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,a=n.app;_.defaults(i,{c8y_less_variables:{}}),b=_.cloneDeep(i),_.assign(h,{schema:e,form:t,options:o,branding:i}),y=a;var r=N();r.src="".concat(d.getHref(y),"/index.html"),r.onload=function(){r.appTitle=r.contentDocument.title,_.set(r.contentWindow,"C8Y_PREVIEW.preview",!0),_.set(r.contentWindow,"C8Y_PREVIEW.previewCookieBanner",k()),R(),E()},c.$watchCollection("vm.branding.c8y_less_variables",E)}).finally(function(){h.isLoading=!1})}function R(n){var e=n||T();h.title="".concat(e," - ").concat(N().appTitle),p&&(p.document.title="".concat(e," - ").concat(p.appTitle),p.C8Y_PREVIEW.globalTitle=e)}function T(){return _.get(h,"branding.c8y_less_variables.html_title")||u.appOption("globalTitle")}function k(){return _.pick(h.branding.c8y_less_variables,["cookieBannerDisabled","cookieBannerTitle","cookieBannerText","policyUrl"])}function E(){h.isLoading||_.forOwn(h.branding.c8y_less_variables,function(n,e){B[e]?B[e](n):P(e,n)})}function P(n,e){S(n,e,N().contentDocument.documentElement),p&&S(n,e,p.document.documentElement)}function S(n,e,t){var o=a.keyToCssVar(n);"navigator-platform-logo-height"===o?null==e||""===e?t.style.removeProperty("--".concat(o)):t.style.setProperty("--".concat(o),"".concat(e,"%")):t.style.setProperty("--".concat(o),_.isNumber(e)?"".concat(e,"px"):e)}function G(){return o.state().then($)}function $(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(G,2e3)}_.assign(h,{$onInit:function(){r&&G();return A()},applyTitle:w,dirtyFormApplyTitle:I,canSave:function(){return!(_.get(c,"platformConfigurationForm1.$invalid")||_.get(c,"platformConfigurationForm2.$invalid"))},save:function(){var t=[],o=i.BINARY_VARS;return h.branding.binary_ref={},_.each(o,function(e){if(h.branding.c8y_less_variables[e]){var 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"),function e(){clearInterval(m);m=setInterval(function(){if(p&&(p.C8Y_PREVIEW={preview:!0,globalTitle:T(),previewCookieBanner:k()},p.C8Y_APP)){var n=p.C8Y_APP.name;p.appTitle=v(n),clearInterval(m),E(),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:r,applyConfiguration:function(){a.removeLegacyBrandedApplications().then(function(){return f({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))})})},showPreview:!C,removeAppliedBranding:function(){f({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){f({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(){A().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"})}();