@c8y/ng1-modules 1021.81.0 → 1022.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/alarmsEventsExplorer/alarmsEventsTimelinesConfig/alarmsEventsTimelinesConfig.html +1 -1
  2. package/assetPropertyWidget/img/asset-properties-widget-pr.png +0 -0
  3. package/assetPropertyWidget/views/config.html +1 -1
  4. package/assetTable/assetTable2/img/asset-table-widget-pr.png +0 -0
  5. package/assetTable/img/asset-table-widget-pr.png +0 -0
  6. package/core/core/services/audits.js +1 -1
  7. package/core/core/services/retentions.js +1 -1
  8. package/core/core/services/tenant.js +1 -1
  9. package/core/core/services/user.js +1 -1
  10. package/core/cumulocity.json +0 -1
  11. package/core/locales/de.po +472 -720
  12. package/core/locales/es.po +422 -671
  13. package/core/locales/fr.po +501 -751
  14. package/core/locales/ja_JP.po +494 -740
  15. package/core/locales/ko.po +421 -671
  16. package/core/locales/nl.po +424 -672
  17. package/core/locales/pl.po +422 -672
  18. package/core/locales/pt_BR.po +519 -768
  19. package/core/locales/zh_CN.po +421 -671
  20. package/core/locales/zh_TW.po +422 -671
  21. package/core/ui/properties/propertySelector.html +156 -109
  22. package/core/ui/views/auditList.html +2 -2
  23. package/core/ui/views/eventList.html +2 -2
  24. package/core/ui/views/filePicker.html +1 -1
  25. package/dataBroker/connectors/connectors.service.js +1 -1
  26. package/dataPointExplorer/img/data-points-graph-widget-pr.png +0 -0
  27. package/dataPointExplorer/views/widgetConfig.html +92 -94
  28. package/device-protocols/object-mapping.component.js +1 -1
  29. package/device-protocols/object-mapping.html +1 -1
  30. package/deviceDatabase4/modals/configure-discrete-io.html +1 -1
  31. package/deviceDatabase4/modals/configure-register.html +1 -1
  32. package/deviceDetail/cumulocity.json +1 -2
  33. package/deviceStatusWidget/ownerStatus.html +2 -2
  34. package/deviceStatusWidget/requiredAvailabilityIntervalSetting.html +4 -4
  35. package/devicemanagement-eventList/index.js +1 -1
  36. package/enterpriseEdition/cumulocity.json +0 -13
  37. package/enterpriseEdition/enterpriseEdition.module.js +1 -1
  38. package/eventList/img/events-list-widget-pr.png +0 -0
  39. package/eventList/views/eventListConfig.html +39 -32
  40. package/export/cumulocity.json +0 -1
  41. package/export/index.js +1 -1
  42. package/export/services/config.js +1 -1
  43. package/htmlWidget/index.js +1 -1
  44. package/kpi/img/data-points-list-widget-pr.png +0 -0
  45. package/kpi/views/gaugeConfig.html +28 -34
  46. package/kpi/views/listConfig.html +14 -18
  47. package/kpi/views/pieChartConfig.html +30 -36
  48. package/modbusConfiguration4/fieldbus-device-list.component.js +1 -1
  49. package/modbusWidget4/widget-config.html +74 -84
  50. package/package.json +11 -13
  51. package/propertiesLibrary/index.js +1 -1
  52. package/roles/list/rolesList.html +0 -2
  53. package/scada/views/componentConfig.html +23 -23
  54. package/scada/views/mapping.html +41 -39
  55. package/smartRules/controllers/add.js +1 -1
  56. package/smartRules/controllers/list.js +1 -1
  57. package/smartRules/list/smartRulesList.component.js +1 -1
  58. package/smartRules/list/smartRulesList.html +2 -2
  59. package/smartRules/services/smartRules.js +1 -1
  60. package/smartRules/views/add.html +32 -10
  61. package/smartRules/views/list.html +4 -3
  62. package/trafficLightWidget/states-mapping.html +82 -69
  63. package/administration-config/administration-config.module.js +0 -1
  64. package/administration-config/cumulocity.json +0 -13
  65. package/asset-notes/assetNotes.component.js +0 -1
  66. package/asset-notes/assetNotes.html +0 -93
  67. package/asset-notes/assetNotes.module.js +0 -1
  68. package/asset-notes/assetNotes.service.js +0 -1
  69. package/asset-notes/cumulocity.json +0 -13
  70. package/core/ui/forms/ssh-key-input.html +0 -33
  71. package/core/ui/forms/ssh-key-input.js +0 -1
  72. package/devicemanagement-deviceListMap/controllers/deviceListMap.js +0 -1
  73. package/devicemanagement-deviceListMap/cumulocity.json +0 -19
  74. package/devicemanagement-deviceListMap/index.js +0 -1
  75. package/devicemanagement-deviceListMap/views/index.html +0 -21
  76. package/enterpriseEdition/customBranding/brandingConfiguration.constants.js +0 -1
  77. package/enterpriseEdition/customBranding/brandingConfiguration.service.js +0 -1
  78. package/enterpriseEdition/customBranding/brandingConfigurationForm.component.js +0 -1
  79. package/enterpriseEdition/customBranding/brandingConfigurationForm.html +0 -141
  80. package/enterpriseEdition/customBranding/brandingConfigurationUi.provider.js +0 -1
  81. package/enterpriseEdition/customBranding/brandingDeploy.service.js +0 -1
  82. package/enterpriseEdition/customBranding/brandingProcessExecution.component.js +0 -1
  83. package/enterpriseEdition/customBranding/brandingProcessExecution.html +0 -120
  84. package/enterpriseEdition/customBranding/custom-branding.module.js +0 -1
  85. package/enterpriseEdition/customBranding/microservice.value.js +0 -1
  86. package/enterpriseEdition/ui-assets/index.js +0 -1
  87. package/enterpriseEdition/ui-assets/public-options.service.js +0 -1
  88. package/enterpriseEdition/ui-assets/static-assets.service.js +0 -1
  89. package/enterpriseEdition/ui-assets/ui-assets.service.js +0 -1
  90. package/export/controllers/list.js +0 -1
  91. package/export/views/list.html +0 -298
  92. package/remoteAccess/clients/remoteAccessClients.service.js +0 -1
  93. package/remoteAccess/clients/terminal/index.html +0 -30
  94. package/remoteAccess/clients/terminal/index.js +0 -1
  95. package/remoteAccess/clients/terminal/shell-adapter.js +0 -1
  96. package/remoteAccess/clients/terminal/style.css +0 -25
  97. package/remoteAccess/clients/terminal/telnet-negotiator.js +0 -1
  98. package/remoteAccess/clients/vnc/vncClient.html +0 -60
  99. package/remoteAccess/clients/vnc/vncClient.js +0 -1
  100. package/remoteAccess/cumulocity.json +0 -69
  101. package/remoteAccess/remoteAccess.module.js +0 -1
  102. package/remoteAccess/remoteAccess.service.js +0 -1
  103. package/remoteAccess/remoteAccessEndpointCard/remoteAccessEndpointCard.component.js +0 -1
  104. package/remoteAccess/remoteAccessEndpointCard/remoteAccessEndpointCard.html +0 -89
  105. package/remoteAccess/remoteAccessEndpointModal/remoteAccessEndpointModal.component.js +0 -1
  106. package/remoteAccess/remoteAccessEndpointModal/remoteAccessEndpointModal.html +0 -484
  107. package/remoteAccess/remoteAccessEndpointModal/suggestedIPAddressTemplate.html +0 -8
  108. package/remoteAccess/remoteAccessEndpointsList/remoteAccessEndpointsList.component.js +0 -1
  109. package/remoteAccess/remoteAccessEndpointsList/remoteAccessEndpointsList.html +0 -75
  110. package/remoteAccess/remoteAccessSettings/remoteAccessSettings.component.js +0 -1
  111. package/remoteAccess/remoteAccessSettings/remoteAccessSettings.html +0 -37
  112. package/remoteAccess/remoteAccessUI.provider.js +0 -1
@@ -1,484 +0,0 @@
1
- <div class="modal-header dialog-header">
2
- <i c8y-icon="laptop"></i>
3
- <div id="modal-title" class="modal-title" translate>Remote access endpoint</div>
4
- </div>
5
- <div class="modal-inner-scroll">
6
- <div class="modal-body" id="modal-body">
7
- <form name="endpointForm" novalidate>
8
- <div class="form-group">
9
- <label for="name" translate>Name</label>
10
- <input
11
- id="name"
12
- name="name"
13
- class="form-control"
14
- ng-model="vm.endpoint.config.name"
15
- data-cy="remoteAccessEndpointModal--name"
16
- placeholder="{{ 'e.g. My remote access endpoint' | translate }}"
17
- ng-maxlength="1000"
18
- required
19
- />
20
- <c8y-error-feedback field="endpointForm.name"></c8y-error-feedback>
21
- </div>
22
-
23
- <div class="tight-grid">
24
- <div class="col-md-6">
25
- <div class="form-group">
26
- <label for="protocol" translate>Protocol</label>
27
- <div class="c8y-select-wrapper">
28
- <select
29
- id="protocol"
30
- name="protocol"
31
- class="form-control"
32
- ng-model="vm.selectedProtocol"
33
- data-cy="remoteAccessEndpointModal--protocol"
34
- ng-options="p as (p.label | translate) for p in vm.protocols"
35
- ng-change="vm.onProtocolChange()"
36
- required
37
- ></select>
38
- <span></span>
39
- </div>
40
- <c8y-error-feedback field="endpointForm.protocol"></c8y-error-feedback>
41
- </div>
42
- </div>
43
- <div class="col-md-6">
44
- <div class="form-group" ng-if="vm.selectedProtocol.supportedCredentialsTypes.length > 1">
45
- <label for="credentialsType" translate>Sign-in method</label>
46
- <div class="c8y-select-wrapper">
47
- <select
48
- id="credentialsType"
49
- name="credentialsType"
50
- class="form-control"
51
- data-cy="remoteAccessEndpointModal--credentials-type"
52
- ng-model="vm.selectedCredentialsType"
53
- ng-options="ct as (ct.label | translate) for ct in vm.selectedProtocol.supportedCredentialsTypes"
54
- ng-change="vm.onCredentialsTypeChange()"
55
- required
56
- ></select>
57
- <span></span>
58
- </div>
59
- <c8y-error-feedback field="endpointForm.credentialsType"></c8y-error-feedback>
60
- </div>
61
- </div>
62
- </div>
63
- <div class="tight-grid">
64
- <div class="col-md-9">
65
- <div class="form-group">
66
- <label for="hostname">
67
- {{ 'Host' | translate }}
68
- <button
69
- class="btn-help btn-help--sm"
70
- type="button"
71
- aria-label="{{ 'Help' | translate }}"
72
- uib-popover-html="'IP address or hostname in the local network' | translate"
73
- popover-placement="right"
74
- popover-trigger="'focus'"
75
- popover-append-to-body="true"
76
- ></button>
77
- </label>
78
- <div class="input-group typeahead">
79
- <span class="input-group-addon" id="host-address">
80
- {{ vm.identifiedType | translate }}
81
- </span>
82
- <input
83
- id="hostname"
84
- name="hostname"
85
- class="form-control"
86
- placeholder="{{ 'e.g.' | translate }} {{ vm.selectedProtocol.defaults.host }}"
87
- ng-model="vm.endpoint.config.hostname"
88
- uib-typeahead="suggestedIPAddress.ipAddress as suggestedIPAddress.ipAddress for suggestedIPAddress in vm.suggestedIPAddresses | filter:$viewValue"
89
- typeahead-template-url=":::PLUGIN_PATH:::/remoteAccessEndpointModal/suggestedIPAddressTemplate.html"
90
- typeahead-show-hint="true"
91
- typeahead-min-length="0"
92
- ng-maxlength="255"
93
- c8y-host-address
94
- identified-type="vm.showIdentifiedType(type)"
95
- required
96
- />
97
- </div>
98
- <c8y-error-feedback field="endpointForm.hostname"></c8y-error-feedback>
99
- </div>
100
- </div>
101
- <div class="col-md-3">
102
- <div class="form-group">
103
- <label for="port" translate>Port</label>
104
- <input
105
- id="port"
106
- name="port"
107
- type="number"
108
- class="form-control"
109
- ng-model="vm.endpoint.config.port"
110
- placeholder="{{ 'e.g.' | translate }} {{ vm.selectedProtocol.defaults.port }}"
111
- ng-min="1"
112
- ng-max="65535"
113
- required
114
- />
115
- <c8y-error-feedback field="endpointForm.port"></c8y-error-feedback>
116
- </div>
117
- </div>
118
- </div>
119
-
120
- <div ng-if="vm.selectedCredentialsType.value === 'PASS_ONLY'">
121
- <div class="form-group">
122
- <label for="password" translate>Password</label>
123
-
124
- <div ng-class="{ 'input-group': vm.passwordAlreadyExists }">
125
- <input
126
- id="password"
127
- ng-if="!vm.passwordAlreadyExists || vm.changingPassword"
128
- name="password"
129
- type="password"
130
- class="form-control"
131
- ng-model="vm.endpoint.config.password"
132
- placeholder="{{ 'e.g. my_password' | translate }}"
133
- c8y-autocomplete="off"
134
- ng-maxlength="255"
135
- required
136
- />
137
- <input
138
- disabled
139
- style="color: rgba(0, 0, 0, 0.2)"
140
- class="form-control"
141
- type="password"
142
- value="********"
143
- ng-if="vm.passwordAlreadyExists && !vm.changingPassword"
144
- />
145
- <span class="input-group-btn" ng-show="vm.passwordAlreadyExists">
146
- <button
147
- class="btn btn-default"
148
- type="button"
149
- title="{{ 'Change' | translate }}"
150
- ng-if="!vm.changingPassword"
151
- ng-click="vm.changePassword()"
152
- >
153
- {{ 'Change' | translate }}
154
- </button>
155
- <button
156
- class="btn btn-default"
157
- type="button"
158
- title="{{ 'Cancel' | translate }}"
159
- ng-if="vm.changingPassword"
160
- ng-click="vm.cancelChangePassword()"
161
- >
162
- {{ 'Cancel' | translate }}
163
- </button>
164
- </span>
165
- </div>
166
- <c8y-error-feedback field="endpointForm.password"></c8y-error-feedback>
167
- </div>
168
- </div>
169
-
170
- <div class="tight-grid" ng-if="vm.selectedCredentialsType.value === 'USER_PASS'">
171
- <div class="col-md-6">
172
- <div class="form-group" ng-if="!vm.credentialsAvailable() || vm.changingCredentials">
173
- <label for="username" translate>Username</label>
174
-
175
- <div>
176
- <input
177
- id="username"
178
- name="username"
179
- class="form-control"
180
- ng-model="vm.endpoint.config.username"
181
- placeholder="{{ 'e.g. my_username' | translate }}"
182
- ng-maxlength="255"
183
- ng-readonly="vm.credentialsAvailable() && !vm.changingCredentials"
184
- required
185
- />
186
- </div>
187
- <c8y-error-feedback field="endpointForm.username"></c8y-error-feedback>
188
- </div>
189
- </div>
190
- <div class="col-md-6">
191
- <div class="form-group" ng-if="!vm.credentialsAvailable() || vm.changingCredentials">
192
- <label for="password" translate>Password</label>
193
-
194
- <div>
195
- <input
196
- id="password"
197
- ng-if="!vm.credentialsAvailable() || vm.changingCredentials"
198
- name="password"
199
- type="password"
200
- class="form-control"
201
- ng-model="vm.endpoint.config.password"
202
- placeholder="{{ 'e.g. my_password' | translate }}"
203
- c8y-autocomplete="off"
204
- ng-maxlength="255"
205
- required
206
- />
207
- </div>
208
- <c8y-error-feedback field="endpointForm.password"></c8y-error-feedback>
209
- </div>
210
- </div>
211
- <div class="col-md-12">
212
- <div class="form-group">
213
- <span ng-show="vm.credentialsAvailable() || vm.initialCredentialType === 'USER_PASS'">
214
- <button
215
- class="btn btn-default"
216
- type="button"
217
- title="{{ 'Change credentials' | translate }}"
218
- ng-if="!vm.changingCredentials"
219
- ng-click="vm.changeCredentials()"
220
- >
221
- {{ 'Change credentials' | translate }}
222
- </button>
223
- <button
224
- class="btn btn-default"
225
- type="button"
226
- title="{{ 'Cancel' | translate }}"
227
- ng-if="vm.changingCredentials"
228
- ng-click="vm.cancelChangeCredentials()"
229
- >
230
- {{ 'Cancel' | translate }}
231
- </button>
232
- </span>
233
- </div>
234
- </div>
235
- </div>
236
-
237
- <div ng-if="vm.selectedCredentialsType.value === 'KEY_PAIR'">
238
- <div class="form-group">
239
- <label for="username">
240
- {{ 'Username' | translate }}
241
- </label>
242
- <div>
243
- <input
244
- id="username"
245
- name="username"
246
- class="form-control"
247
- ng-model="vm.endpoint.config.username"
248
- placeholder="{{ 'e.g. my_username' | translate }}"
249
- ng-maxlength="255"
250
- required
251
- />
252
- </div>
253
- <c8y-error-feedback field="endpointForm.username"></c8y-error-feedback>
254
- </div>
255
- <div class="form-group" ng-if="vm.initialCredentialType === 'KEY_PAIR'">
256
- <span>
257
- <button
258
- class="btn btn-default"
259
- type="button"
260
- title="{{ 'Change public/private keys' | translate }}"
261
- ng-hide="vm.changingKeyPair"
262
- ng-click="vm.changeKeyPair()"
263
- >
264
- {{ 'Change public/private keys' | translate }}
265
- </button>
266
- </span>
267
- </div>
268
- <div class="form-group" ng-if="!vm.keyPairAvailable() || vm.changingKeyPair">
269
- <button
270
- class="btn btn-default p-l-16"
271
- type="button"
272
- title="{{ 'Generate public and private keys' | translate }}"
273
- ng-class="{ 'btn-pending': vm.generating }"
274
- ng-disabled="vm.generating"
275
- ng-click="vm.generateKeys()"
276
- >
277
- <i c8y-icon="key"></i>
278
- {{ 'Generate public and private keys' | translate }}
279
- </button>
280
- </div>
281
- <div class="form-group" ng-if="!vm.keyPairAvailable() || vm.changingKeyPair">
282
- <label for="privateKey">
283
- {{ 'Private key' | translate }}
284
- <button
285
- class="btn-help btn-help--sm"
286
- type="button"
287
- aria-label="{{ 'Help' | translate }}"
288
- uib-popover-html="'<small>Supported formats: OpenSSHv1, OpenSSHv2, PEM, SSH2.<br />Supported algorithms: RSA, DSA, ECDSA, ED25519.</small>' | translate"
289
- popover-append-to-body="true"
290
- popover-placement="right"
291
- popover-trigger="'focus'"
292
- ></button>
293
- </label>
294
- <div>
295
- <c8y-ssh-key-input
296
- id="privateKey"
297
- key="vm.endpoint.config.privateKey"
298
- keytype="private"
299
- ></c8y-ssh-key-input>
300
- </div>
301
- </div>
302
- <div class="form-group">
303
- <label for="publicKey">
304
- {{ 'Public key' | translate }}
305
- <button
306
- class="btn-help btn-help--sm"
307
- type="button"
308
- aria-label="{{ 'Help' | translate }}"
309
- uib-popover-html="'<small>Supported formats: OpenSSHv1, OpenSSHv2, PEM, SSH2.<br />Supported algorithms: RSA, DSA, ECDSA, ED25519.</small>' | translate"
310
- popover-append-to-body="true"
311
- popover-placement="right"
312
- popover-trigger="'focus'"
313
- ></button>
314
- <button
315
- class="m-l-16 btn-link interact"
316
- type="button"
317
- title="{{ 'Download key' | translate }}"
318
- ng-click="vm.downloadPublicKey()"
319
- ng-if="vm.endpoint.config.publicKey"
320
- >
321
- <i c8y-icon="download"></i>
322
- {{ 'Download key' | translate }}
323
- </button>
324
- </label>
325
- <div>
326
- <c8y-ssh-key-input
327
- id="publicKey"
328
- key="vm.endpoint.config.publicKey"
329
- keytype="public"
330
- readonly="vm.keyPairAvailable() && !vm.changingKeyPair"
331
- ></c8y-ssh-key-input>
332
- </div>
333
- </div>
334
- <div class="form-group" ng-if="vm.privateKeyAlreadyExists || vm.publicKeyAlreadyExists">
335
- <span>
336
- <button
337
- class="btn btn-default"
338
- type="button"
339
- title="{{ 'Cancel' | translate }}"
340
- ng-show="vm.changingKeyPair"
341
- ng-click="vm.cancelChangeKeyPair()"
342
- >
343
- {{ 'Cancel' | translate }}
344
- </button>
345
- </span>
346
- </div>
347
- </div>
348
-
349
- <div ng-if="vm.selectedCredentialsType.value === 'CERTIFICATE'">
350
- <div class="form-group">
351
- <label for="username">
352
- {{ 'Username' | translate }}
353
- </label>
354
- <div>
355
- <input
356
- id="username"
357
- name="username"
358
- class="form-control"
359
- ng-model="vm.endpoint.config.username"
360
- placeholder="{{ 'e.g. my_username' | translate }}"
361
- ng-maxlength="255"
362
- required
363
- />
364
- </div>
365
- <c8y-error-feedback field="endpointForm.username"></c8y-error-feedback>
366
- </div>
367
- <div class="form-group" ng-if="vm.initialCredentialType === 'CERTIFICATE'">
368
- <span>
369
- <button
370
- class="btn btn-default"
371
- type="button"
372
- title="{{ 'Change private key/certificate' | translate }}"
373
- ng-hide="vm.changingCertificate"
374
- ng-click="vm.changeCertificate()"
375
- >
376
- {{ 'Change private key/certificate' | translate }}
377
- </button>
378
- </span>
379
- </div>
380
- <div class="form-group" ng-if="!vm.certificateAvailable() || vm.changingCertificate">
381
- <label for="privateKey">
382
- {{ 'Private key' | translate }}
383
- <button
384
- class="btn-help btn-help--sm"
385
- type="button"
386
- aria-label="{{ 'Help' | translate }}"
387
- uib-popover-html="'<small>Supported formats: OpenSSHv1, OpenSSHv2, PEM, SSH2.<br />Supported algorithms: RSA, DSA.</small>' | translate"
388
- popover-append-to-body="true"
389
- popover-placement="right"
390
- popover-trigger="'focus'"
391
- ></button>
392
- </label>
393
- <div>
394
- <c8y-ssh-key-input
395
- id="privateKey"
396
- key="vm.endpoint.config.privateKey"
397
- keytype="private"
398
- ></c8y-ssh-key-input>
399
- </div>
400
- </div>
401
- <div class="form-group" ng-if="!vm.certificateAvailable() || vm.changingCertificate">
402
- <label for="certificate">
403
- {{ 'Certificate' | translate }}
404
- <button
405
- class="btn-help btn-help--sm"
406
- type="button"
407
- aria-label="{{ 'Help' | translate }}"
408
- uib-popover-html="'<small>Supported formats: OpenSSHv1, OpenSSHv2, PEM, SSH2.<br />Supported algorithms: RSA, DSA.</small>' | translate"
409
- popover-append-to-body="true"
410
- popover-placement="right"
411
- popover-trigger="'focus'"
412
- ></button>
413
- </label>
414
- <div>
415
- <c8y-ssh-key-input
416
- id="certificate"
417
- key="vm.endpoint.config.certificate"
418
- keytype="certificate"
419
- ></c8y-ssh-key-input>
420
- </div>
421
- </div>
422
-
423
- <div class="form-group" ng-if="vm.certificateAlreadyExists || vm.privateKeyAlreadyExists">
424
- <span>
425
- <button
426
- class="btn btn-default"
427
- title="{{ 'Cancel' | translate }}"
428
- type="button"
429
- ng-show="vm.changingCertificate"
430
- ng-click="vm.cancelChangeCertificate()"
431
- >
432
- {{ 'Cancel' | translate }}
433
- </button>
434
- </span>
435
- </div>
436
- </div>
437
-
438
- <div ng-if="vm.selectedProtocol.value === 'SSH'">
439
- <div class="form-group">
440
- <label for="hostKey">
441
- {{ 'Host key' | translate }}
442
- <button
443
- class="btn-help btn-help--sm"
444
- type="button"
445
- aria-label="{{ 'Help' | translate }}"
446
- uib-popover-html="'<small>Supported formats: OpenSSHv1, OpenSSHv2, PEM, SSH2.<br />Supported algorithms: RSA, DSA, ECDSA, ED25519.</small>' | translate"
447
- popover-append-to-body="true"
448
- popover-placement="right"
449
- popover-trigger="'focus'"
450
- ></button>
451
- </label>
452
- <div>
453
- <c8y-ssh-key-input
454
- id="hostKey"
455
- key="vm.endpoint.config.hostKey"
456
- keytype="public"
457
- ></c8y-ssh-key-input>
458
- </div>
459
- </div>
460
- </div>
461
- </form>
462
- </div>
463
- </div>
464
-
465
- <div class="modal-footer">
466
- <button
467
- class="btn btn-default"
468
- type="button"
469
- title="{{ 'Cancel' | translate }}"
470
- ng-click="vm.cancel()"
471
- >
472
- {{ 'Cancel' | translate }}
473
- </button>
474
- <button
475
- class="btn btn-primary"
476
- type="button"
477
- data-cy="remoteAccessEndpointModal--button-save"
478
- title="{{ 'Save' | translate }}"
479
- ng-disabled="endpointForm.$pending || endpointForm.$invalid"
480
- ng-click="vm.save()"
481
- >
482
- {{ 'Save' | translate }}
483
- </button>
484
- </div>
@@ -1,8 +0,0 @@
1
- <a>
2
- <strong ng-bind-html="match.model.label | uibTypeaheadHighlight:query">
3
- </strong>
4
- <p>
5
- <small class="text-muted" ng-bind-html="match.model.ipAddress | uibTypeaheadHighlight:query">
6
- </small>
7
- </p>
8
- </a>
@@ -1 +0,0 @@
1
- (()=>{function n(n,e,t,o){var c=this;function i(n){o.getEndpoints(n).then(s)}function s(n){c.endpoints=n,_.forEach(n,function(e){o.resumeMonitoring(e).then(function(n){n&&(e.connection=n)})})}function d(){i(c.device)}_.assign(c,{$onChanges:function(n){n.device&&n.device.currentValue&&i(n.device.currentValue)},endpointsOrderFn:function(n){var e=o.isLocalEndpoint(n)?"z":"a",n=n.config.name;return e+n},addEndpoint:function(){return o.addEndpoint(c.device).then(d)},onConnect:function(e){o.connectEndpoint(e).then(function(n){e.connection=n})},onEdit:function(n){o.editEndpoint(n).then(d)},onRemove:function(n){o.removeEndpoint(n).then(d)}})}n.$inject=["$q","c8yBase","c8yInventory","c8yRemoteAccessUI"],angular.module("c8y.remoteAccess").component("c8yRemoteAccessEndpointsList",{bindings:{device:"<"},templateUrl:":::PLUGIN_PATH:::/remoteAccessEndpointsList/remoteAccessEndpointsList.html",controller:n,controllerAs:"vm"})})();
@@ -1,75 +0,0 @@
1
- <c8y-ui-action-bar-set>
2
- <li>
3
- <button
4
- title="{{ 'Add endpoint' | translate }}"
5
- class="btn btn-link"
6
- ng-click="vm.addEndpoint()"
7
- data-cy="remoteAccessEndpointsList--endpoint"
8
- >
9
- <i c8y-icon="plus-circle"></i>
10
- {{ 'Add endpoint' | translate }}
11
- </button>
12
- </li>
13
- </c8y-ui-action-bar-set>
14
-
15
- <div>
16
- <!-- empty state -->
17
- <c8y-ui-empty-state
18
- ng-if="vm.endpoints && vm.endpoints.length === 0"
19
- [icon]="'window-restore'"
20
- [title]="'No endpoints to display.' | translate"
21
- [subtitle]="'Click below to add your first endpoint.' | translate"
22
- >
23
- <button
24
- title="{{ 'Add endpoint' | translate }}"
25
- class="btn btn-primary"
26
- ng-click="vm.addEndpoint()"
27
- >
28
- {{ 'Add endpoint' | translate }}
29
- </button>
30
- </c8y-ui-empty-state>
31
-
32
- <div class="c8y-list__group m-b-24 endpoints-list"
33
- ng-class="{'dd-low': vm.endpoints.length < 10}"
34
- ng-if="vm.endpoints.length"
35
- >
36
- <div class="page-sticky-header c8y-list__item hidden-xs">
37
- <div class="c8y-list__item__block">
38
- <div class="c8y-list__item__icon">
39
- <i c8y-icon="laptop" class="invisible"></i>
40
- </div>
41
- <div class="c8y-list__item__body">
42
- <div class="content-flex-60">
43
- <div class="col-3">
44
- {{ 'Endpoint' | translate }}
45
- </div>
46
- <div class="col-4">
47
- {{ 'Host : Port' | translate }}
48
- </div>
49
- <div class="col-3">
50
- {{ 'Protocol' | translate }}
51
- </div>
52
- <div class="col-2"></div>
53
- </div>
54
- </div>
55
- <div class="c8y-list__item__actions">
56
- <div class="c8y-list__item--empty-actions">
57
- </div>
58
- </div>
59
- </div>
60
- </div>
61
- <div
62
- class="c8y-list__item"
63
- ng-repeat="endpoint in vm.endpoints | orderBy:vm.endpointsOrderFn"
64
- data-cy="c8y-remote-access-endpoint-card--RemoveEdit-dropdown-toggle"
65
- >
66
- <c8y-remote-access-endpoint-card
67
- endpoint="endpoint"
68
- on-connect="vm.onConnect(endpoint)"
69
- on-edit="vm.onEdit(endpoint)"
70
- on-remove="vm.onRemove(endpoint)"
71
- >
72
- </c8y-remote-access-endpoint-card>
73
- </div>
74
- </div>
75
- </div>
@@ -1 +0,0 @@
1
- function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ownKeys(t,e){var r,n=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)),n}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _defineProperty(e,t,r){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"==_typeof(e)?e:e+""}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);r=r.call(e,t||"default");if("object"!=_typeof(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}(()=>{function e(e,r,t,n){var o=this,i=[{name:"hostkeyAutosave",option:{category:"remoteaccess",key:"hostkey-autosave"},defaultValue:!1}];function c(e){return r.updateOption(_objectSpread(_objectSpread({},e.option),{},{value:_.get(o,e.name,e.defaultValue)}))}_.assign(o,{$onInit:function(){e.all(_.map(i,function(e){return t=e,r.detailValue(t.option,t.defaultValue).then(function(e){return _.set(o,t.name,e)});var t}))},updateSetting:c,updateSettings:function(){return e.all(_.map(i,c)).then(function(){return t.success(n("Settings saved."))}).catch(function(){return t.danger(n("Settings could not be saved."))})}})}e.$inject=["$q","c8ySettings","c8yAlert","gettext"],angular.module("c8y.remoteAccess").component("c8yRemoteAccessSettings",{templateUrl:":::PLUGIN_PATH:::/remoteAccessSettings/remoteAccessSettings.html",controller:e,controllerAs:"vm"})})();
@@ -1,37 +0,0 @@
1
- <c8y-ui-title-set title="'Remote access' | translate"></c8y-ui-title-set>
2
-
3
- <c8y-breadcrumbs-set>
4
- <c8y-breadcrumbs-item label="{{ 'Remote access' | translate }}" icon="cog"></c8y-breadcrumbs-item>
5
- <c8y-breadcrumbs-item label="{{ 'Settings' | translate }}" icon="cog"></c8y-breadcrumbs-item>
6
- </c8y-breadcrumbs-set>
7
-
8
- <div class="row">
9
- <div class="col-xs-12 col-md-6">
10
- <form class="card" name="remoteAccessSettingsForm" ng-submit="vm.updateSettings()" novalidate>
11
- <div class="card-header separator">
12
- <div class="card-title" translate>Settings</div>
13
- </div>
14
- <div class="card-block p-b-0">
15
- <div class="form-group">
16
- <label translate>Auto save host key on first connection</label>
17
- <label title="{{ 'Enable auto save host key' | translate }}" class="c8y-switch">
18
- <input type="checkbox" ng-model="vm.hostkeyAutosave" ng-checked="vm.hostkeyAutosave" />
19
- <span></span>
20
- <span>{{ 'Enable' | translate }}</span>
21
- </label>
22
- </div>
23
- </div>
24
-
25
- <div class="card-footer separator">
26
- <button
27
- title="{{ 'Save' | translate }}"
28
- type="submit"
29
- class="btn btn-primary"
30
- ng-disabled="remoteAccessSettingsForm.$invalid || remoteAccessSettingsForm.$pristine"
31
- >
32
- {{ 'Save' | translate }}
33
- </button>
34
- </div>
35
- </form>
36
- </div>
37
- </div>
@@ -1 +0,0 @@
1
- (()=>{function e(n,t,y){r.$inject=["$q","$interval","$window","c8yRemoteAccess","$uibModal","c8yModal","c8yAlert","c8yBase","c8yInventory","c8yDevices","gettextCatalog"],i.$inject=["$routeParams","c8yBase","c8yDevices","c8yRemoteAccess"],c.$inject=["$routeParams"];var e="device/:deviceId",o={name:y("Remote access"),icon:"window-restore",template:'<c8y-remote-access-endpoints-list device="vm.id"></c8y-remote-access-endpoints-list>',controllerAs:"vm",controller:c,showIf:i};function c(e){this.id=e.deviceId}function i(e,n,t,o){var c=e.deviceId;return t.detail(c).then(n.getResData).then(function(e){return t.supportsOperation(e,"c8y_RemoteAccessConnect")}).then(function(e){return e&&o.isMicroServiceAvailable(c)})}function r(o,i,r,c,t,a,s,n,d,u,l){return{getSuggestedIPAddresses:function(e){var n=[{label:"localhost",ipAddress:c.DEFAULT_HOST}];return v(e).then(function(e){e=_.map(e,function(e){return{label:u.properName(e),ipAddress:u.getIPAddress(e)}});return _.filter(n.concat(e),"ipAddress")})},getChildDevices:v,getEndpoints:p,addEndpoint:function(e){e=g(e).then(function(e){return t.open({size:"sm",component:"c8yRemoteAccessEndpointModal",ariaLabelledBy:"modal-title",ariaDescribedBy:"modal-body",resolve:{rootDevice:_.constant(_.cloneDeep(e))}}).result});return e.then(function(){return s.success(y("Endpoint saved."))})},editEndpoint:function(n){var e=o.all({deviceDetails:g(n.device),endpointDetails:p(n.device).then(function(e){return _.find(e,function(e){return e.config.id===n.config.id})})}).then(function(e){var n=e.deviceDetails,e=e.endpointDetails;return t.open({size:"sm",component:"c8yRemoteAccessEndpointModal",ariaLabelledBy:"modal-title",ariaDescribedBy:"modal-body",resolve:{rootDevice:_.constant(_.cloneDeep(n)),endpoint:_.constant(_.cloneDeep(e))}}).result});return e.then(function(){return s.success(y("Endpoint saved."))})},removeEndpoint:function(e){var n={title:y("Delete endpoint"),body:l.getString('You are about to delete endpoint "{{config.name}}" from device "{{device.name}}". Do you want to proceed?',e),labels:{ok:y("Delete")},status:"danger"},n=a(n);return n.then(function(){return c.remove(e.device,e.config)}).then(function(){return s.success(y("Endpoint deleted."))})},connectEndpoint:function(o){return c.getConnectionParams(o.device,o.config).then(function(e){var n=f(o),t=(r.localStorage.setItem(n,JSON.stringify(e)),"".concat(e.protocol.clientWindowPath,"?paramsId=").concat(n)),t=r.open(t,n,e.protocol.clientWindowParams);return t.opener=null,m(t,n,e),_.assign(e,{paramsId:n,clientWindow:t})})},isLocalEndpoint:function(e){return _.includes(["localhost",c.DEFAULT_HOST],e.config.hostname)},resumeMonitoring:function(e){var n=f(e);if(r.localStorage.getItem(n)){var t=r.open("",n);if(t.opener=null,t)return((e,n,t)=>c.getConnectionParams(e.device,e.config).then(function(e){return m(n,t,e),_.assign(e,{paramsId:t,clientWindow:n})}))(e,t,n)}return o.resolve()}};function v(e){return d.childDevices(e)}function p(e){return g(e).then(function(n){return c.list(n).then(function(e){return _.map(e,function(e){return{device:n,config:e}})})})}function m(e,t,o){var c=i(function(){var n;try{n=JSON.parse(r.localStorage.getItem(t))}catch(e){n={}}_.assign(o,n),e.closed&&(i.cancel(c),r.localStorage.removeItem(t),o.status=void 0,o.clientWindow=void 0)},1e3)}function f(e){return"remoteConnection_".concat(e.device.id,"_").concat(e.config.id)}function g(e){return _.isObjectLike(e)?o.when(e):d.detail(e).then(n.getResData)}}return{$get:r,provideSettingsPage:function(){function e(e){return e.isAvailable({name:"cloud-remote-access",type:"MICROSERVICE"})}e.$inject=["c8yApplication"],t.addNavigation({parent:y("Settings"),name:y("Remote access"),path:"remoteAccessSettings",icon:"key",priority:2e3,showIf:e}),n.when("/remoteAccessSettings",{template:"<c8y-remote-access-settings />"})},provideDeviceTab:function(){n.when("/".concat(e),o)}}}e.$inject=["c8yViewsProvider","c8yNavigatorProvider","gettext"],angular.module("c8y.remoteAccess").provider("c8yRemoteAccessUI",e)})();