@c8y/ng1-modules 1017.0.346 → 1017.0.357
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICES +1 -1
- package/core/locales/en.po +11 -12
- package/core/ui/user/rolesUiStrings.constant.js +1 -1
- package/dataPointExplorer/views/widgetConfig.html +10 -45
- package/dataPointTable/views/widgetConfig.html +8 -43
- package/device-protocol-deviceDatabase4/device-type-protocol-base.provider.js +1 -1
- package/deviceDatabase4/cumulocity.json +2 -6
- package/deviceDatabase4/detail/device-type-detail.component.js +1 -1
- package/devicemanagement-availability/controllers/availability.js +1 -1
- package/infoGauge/infoGaugeWidget.config.html +45 -33
- package/kpi/views/gaugeConfig.html +7 -5
- package/kpi/views/linearGauge.html +6 -4
- package/package.json +1 -1
- package/smartRules/smartrules/rules.json +832 -0
- package/userRoles/inventoryRolesTab/inventoryRolesTab.component.js +1 -1
- package/userRoles/inventoryRolesTab/inventoryRolesTab.html +16 -10
package/NOTICES
CHANGED
|
@@ -2304,7 +2304,7 @@ SOFTWARE
|
|
|
2304
2304
|
|
|
2305
2305
|
-----
|
|
2306
2306
|
|
|
2307
|
-
The following software may be included in this product: @types/acorn, @types/babel__core, @types/babel__generator, @types/babel__template, @types/babel__traverse, @types/body-parser, @types/bonjour, @types/connect, @types/connect-history-api-fallback, @types/cron, @types/eslint, @types/eslint-scope, @types/estree, @types/express, @types/express-serve-static-core, @types/file-saver, @types/glob, @types/graceful-fs, @types/html-minifier-terser, @types/http-proxy, @types/istanbul-lib-coverage, @types/istanbul-reports, @types/jest, @types/jsdom, @types/json-schema, @types/marked, @types/mime, @types/minimatch, @types/node, @types/parse5, @types/prettier, @types/qs, @types/range-parser, @types/resolve, @types/semver, @types/serve-index, @types/serve-static, @types/sinonjs__fake-timers, @types/sizzle, @types/sockjs, @types/stack-utils, @types/tough-cookie, @types/webpack, @types/webpack-dev-server, @types/ws, @types/yargs, @types/yargs-parser, @types/yauzl. A copy of the source code may be downloaded from https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/acorn), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/babel__core), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/babel__generator), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/babel__template), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/babel__traverse), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/body-parser), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/bonjour), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/connect), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/connect-history-api-fallback), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/cron), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/eslint), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/eslint-scope), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/estree), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/express), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/express-serve-static-core), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/file-saver), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/glob), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/graceful-fs), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/html-minifier-terser), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/http-proxy), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/istanbul-lib-coverage), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/istanbul-reports), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/jest), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/jsdom), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/json-schema), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/marked), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/mime), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/minimatch), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/node), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/parse5), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/prettier), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/qs), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/range-parser), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/resolve), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/semver), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/serve-index), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/serve-static), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/sinonjs__fake-timers), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/sizzle), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/sockjs), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/stack-utils), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/tough-cookie), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/webpack), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/ws), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/yargs), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/yargs-parser), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/yauzl). This software contains the following license and notice below:
|
|
2307
|
+
The following software may be included in this product: @types/acorn, @types/babel__core, @types/babel__generator, @types/babel__template, @types/babel__traverse, @types/body-parser, @types/bonjour, @types/cometd, @types/connect, @types/connect-history-api-fallback, @types/cron, @types/eslint, @types/eslint-scope, @types/estree, @types/express, @types/express-serve-static-core, @types/file-saver, @types/glob, @types/graceful-fs, @types/html-minifier-terser, @types/http-proxy, @types/istanbul-lib-coverage, @types/istanbul-reports, @types/jest, @types/jsdom, @types/json-schema, @types/marked, @types/mime, @types/minimatch, @types/node, @types/parse5, @types/prettier, @types/qs, @types/range-parser, @types/resolve, @types/semver, @types/serve-index, @types/serve-static, @types/sinonjs__fake-timers, @types/sizzle, @types/sockjs, @types/stack-utils, @types/tough-cookie, @types/webpack, @types/webpack-dev-server, @types/ws, @types/yargs, @types/yargs-parser, @types/yauzl. A copy of the source code may be downloaded from https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/acorn), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/babel__core), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/babel__generator), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/babel__template), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/babel__traverse), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/body-parser), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/bonjour), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/cometd), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/connect), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/connect-history-api-fallback), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/cron), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/eslint), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/eslint-scope), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/estree), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/express), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/express-serve-static-core), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/file-saver), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/glob), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/graceful-fs), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/html-minifier-terser), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/http-proxy), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/istanbul-lib-coverage), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/istanbul-reports), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/jest), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/jsdom), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/json-schema), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/marked), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/mime), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/minimatch), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/node), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/parse5), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/prettier), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/qs), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/range-parser), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/resolve), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/semver), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/serve-index), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/serve-static), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/sinonjs__fake-timers), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/sizzle), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/sockjs), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/stack-utils), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/tough-cookie), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/webpack), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/ws), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/yargs), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/yargs-parser), https://github.com/DefinitelyTyped/DefinitelyTyped.git (@types/yauzl). This software contains the following license and notice below:
|
|
2308
2308
|
|
|
2309
2309
|
MIT License
|
|
2310
2310
|
|
package/core/locales/en.po
CHANGED
|
@@ -160,12 +160,6 @@ msgstr "Clone"
|
|
|
160
160
|
msgid "Clone`package`"
|
|
161
161
|
msgstr "Clone"
|
|
162
162
|
|
|
163
|
-
msgid "Cloud connectivity"
|
|
164
|
-
msgstr "Cloud Connectivity"
|
|
165
|
-
|
|
166
|
-
msgid "Cloud connectivity software"
|
|
167
|
-
msgstr "Cloud Connectivity-Software"
|
|
168
|
-
|
|
169
163
|
msgid "Complete`proof of possession`"
|
|
170
164
|
msgstr "Complete"
|
|
171
165
|
|
|
@@ -223,8 +217,8 @@ msgstr "Delete"
|
|
|
223
217
|
msgid "Delete`tenant`"
|
|
224
218
|
msgstr "Delete"
|
|
225
219
|
|
|
226
|
-
msgid "Device integration
|
|
227
|
-
msgstr "Device integration
|
|
220
|
+
msgid "Device integration guide`KEEP_ORIGINAL`"
|
|
221
|
+
msgstr "Device integration guide"
|
|
228
222
|
|
|
229
223
|
msgid "Devices and sensors`icons-category`"
|
|
230
224
|
msgstr "Devices and sensors"
|
|
@@ -324,10 +318,12 @@ msgstr ""
|
|
|
324
318
|
|
|
325
319
|
msgid ""
|
|
326
320
|
"Find out more in the\n"
|
|
327
|
-
" <a c8y-guide-href=\"concepts/applications/\">Concepts guide`KEEP_ORIGINAL`</a
|
|
321
|
+
" <a c8y-guide-href=\"concepts/applications/\">Concepts guide`KEEP_ORIGINAL`</a>\n"
|
|
322
|
+
" ."
|
|
328
323
|
msgstr ""
|
|
329
324
|
"Find out more in the\n"
|
|
330
|
-
" <a c8y-guide-href=\"concepts/applications/\">Concepts guide</a
|
|
325
|
+
" <a c8y-guide-href=\"concepts/applications/\">Concepts guide</a>\n"
|
|
326
|
+
" ."
|
|
331
327
|
|
|
332
328
|
msgid ""
|
|
333
329
|
"Find out more in the\n"
|
|
@@ -660,7 +656,7 @@ msgstr "Reboot (password protected)"
|
|
|
660
656
|
msgid "Reference guide`KEEP_ORIGINAL`"
|
|
661
657
|
msgstr "Reference guide"
|
|
662
658
|
|
|
663
|
-
msgid "Regenerate`
|
|
659
|
+
msgid "Regenerate`verification code`"
|
|
664
660
|
msgstr "Regenerate"
|
|
665
661
|
|
|
666
662
|
msgid "Regular`style`"
|
|
@@ -732,6 +728,9 @@ msgstr "Suspend"
|
|
|
732
728
|
msgid "Suspended`tenant`"
|
|
733
729
|
msgstr "Suspended"
|
|
734
730
|
|
|
731
|
+
msgid "The \"contextPath`KEEP_ORIGINAL`\" or \"key`KEEP_ORIGINAL`\" of the uploaded archive do not match with the existing application."
|
|
732
|
+
msgstr "The \"contextPath\" or \"key\" of the uploaded archive do not match with the existing application."
|
|
733
|
+
|
|
735
734
|
msgid "To`date`"
|
|
736
735
|
msgstr "To"
|
|
737
736
|
|
|
@@ -900,7 +899,7 @@ msgid ""
|
|
|
900
899
|
" critical`KEEP_ORIGINAL`, for example:"
|
|
901
900
|
msgstr ""
|
|
902
901
|
"takes the alarm status object and returns a CSS class that can be used for styling:\n"
|
|
903
|
-
" none,\n"
|
|
902
|
+
" none, warning, minor, major,\n"
|
|
904
903
|
" critical, for example:"
|
|
905
904
|
|
|
906
905
|
msgid "to`date`"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";!function(){var e={};angular.module("c8y.ui").constant("c8yRolesUiStrings",e);var n=_.identity;e.ADMIN=n("Allows for CREATE, UPDATE and DELETE actions"),e.LINKS={},e.LINKS.ROLES_INVENTORY="users-guide/
|
|
1
|
+
"use strict";!function(){var e={};angular.module("c8y.ui").constant("c8yRolesUiStrings",e);var n=_.identity;e.ADMIN=n("Allows for CREATE, UPDATE and DELETE actions"),e.LINKS={},e.LINKS.ROLES_INVENTORY="users-guide/administration/#inventory-roles",e.PERMISSIONS_SCOPES={};var t=e.PERMISSIONS_SCOPES;t.MANAGED_OBJECT=n("Controls access to managed objects in inventory."),t.ALARM=n("Controls access to device alarms."),t.AUDIT=n("Controls access to audit logs."),t.EVENT=n("Controls access to events."),t.MEASUREMENT=n("Controls access to measurements."),t.OPERATION=n("Controls access to device operations."),t.SUPPORT=n("Controls access as a support user."),t["*"]=n("Controls access in all scopes."),e.PERMISSIONS_GLOBAL={},e.PERMISSIONS_GLOBAL.INVENTORY=n("Global inventory permissions override inventory role permissions. If you want to limit inventory access, grant it only via inventory roles."),e.PERMISSIONS_GLOBAL_LABELS={ACCOUNT:n("Account"),TENANT_MANAGEMENT:n("Tenant management"),TENANT_STATISTICS:n("Tenant statistics"),OPTION_MANAGEMENT:n("Option management"),APPLICATION_MANAGEMENT:n("Application management"),APPLICATION_MANAGEMENT_SUBSCRIPTIONS:n("Application subscriptions management"),USER_MANAGEMENT:n("User management"),USER_MANAGEMENT_OWN:n("Own user management"),USER_MANAGEMENT_PASSWORD_RESET:n("User management password reset"),IDENTITY:n("Identity"),INVENTORY:n("Inventory"),MEASUREMENT:n("Measurements"),EVENT:n("Events"),ALARM:n("Alarms"),AUDIT:n("Audits"),DEVICE_CONTROL:n("Device control"),CEP_MANAGEMENT:n("CEP management"),DEVICE:n("Device"),DEVICE_BOOTSTRAP:n("Device bootstrap"),RETENTION_RULE:n("Retention rules"),BULK_OPERATION:n("Bulk operations"),CONNECTIVITY:n("Connectivity"),SCHEDULE_REPORT:n("Schedule export"),SMARTRULE:n("Global smart rules"),DATAHUB_ADMINISTRATION:n("DataHub administration"),DATAHUB_MANAGEMENT:n("DataHub management"),DATAHUB_QUERY:n("DataHub query")}}();
|
|
@@ -5,48 +5,16 @@
|
|
|
5
5
|
style="height: calc(100vh - 422px);"
|
|
6
6
|
>
|
|
7
7
|
<div class="col-md-5 bg-level-1 a-s-stretch inner-scroll">
|
|
8
|
-
<div class="p-l-24 bg-inherit p-t-8">
|
|
8
|
+
<div class="p-l-24 bg-inherit p-t-8 m-b-0">
|
|
9
9
|
<div class="form-group m-b-0 p-b-16 separator-bottom">
|
|
10
|
-
<label
|
|
11
|
-
{{ '
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
popover-placement="right"
|
|
18
|
-
popover-trigger="'focus'"
|
|
19
|
-
popover-append-to-body="true"
|
|
20
|
-
></button>
|
|
10
|
+
<label
|
|
11
|
+
title="{{ 'Show date selection' | translate }}"
|
|
12
|
+
class="checkbox-inline c8y-checkbox m-t-16"
|
|
13
|
+
>
|
|
14
|
+
<input type="checkbox" ng-model="data.displayDateSelection" />
|
|
15
|
+
<span></span>
|
|
16
|
+
<span>{{ 'Show date selection' | translate }}</span>
|
|
21
17
|
</label>
|
|
22
|
-
<div class="c8y-select-wrapper">
|
|
23
|
-
<select
|
|
24
|
-
id="dateSelection"
|
|
25
|
-
class="form-control"
|
|
26
|
-
title="{{ 'Date selection' | translate }}"
|
|
27
|
-
aria-label="{{ 'Date selection' | translate }}"
|
|
28
|
-
ng-model="dateSelection"
|
|
29
|
-
>
|
|
30
|
-
<option
|
|
31
|
-
title="{{ 'Widget configuration' | translate }}"
|
|
32
|
-
value="{{ 'config' }}"
|
|
33
|
-
>
|
|
34
|
-
{{ 'Widget configuration' | translate }}
|
|
35
|
-
</option>
|
|
36
|
-
<option
|
|
37
|
-
title="{{ 'Widget and widget configuration' | translate }}"
|
|
38
|
-
value="{{ 'view_and_config' }}"
|
|
39
|
-
>
|
|
40
|
-
{{ 'Widget and widget configuration' | translate }}
|
|
41
|
-
</option>
|
|
42
|
-
<option
|
|
43
|
-
title="{{ 'Dashboard time range' | translate }}"
|
|
44
|
-
value="{{ 'dashboard_context' }}"
|
|
45
|
-
>
|
|
46
|
-
{{ 'Dashboard time range' | translate }}
|
|
47
|
-
</option>
|
|
48
|
-
</select>
|
|
49
|
-
</div>
|
|
50
18
|
</div>
|
|
51
19
|
|
|
52
20
|
<c8y-data-point-list
|
|
@@ -56,7 +24,7 @@
|
|
|
56
24
|
no-target
|
|
57
25
|
no-yellow-range
|
|
58
26
|
no-red-range
|
|
59
|
-
class="bg-inherit separator-bottom"
|
|
27
|
+
class="bg-inherit separator-bottom m-t-16"
|
|
60
28
|
></c8y-data-point-list>
|
|
61
29
|
<c8y-alarms-events-timelines-config
|
|
62
30
|
configs="data.alarmsEventsConfigs"
|
|
@@ -75,7 +43,6 @@
|
|
|
75
43
|
>
|
|
76
44
|
<div class="m-b-4 m-t-4 d-flex j-c-end gap-8">
|
|
77
45
|
<c8y-realtime-button
|
|
78
|
-
ng-show="!data.widgetInstanceGlobalTimeContext"
|
|
79
46
|
class="top-right-control"
|
|
80
47
|
channel="{{ channel }}"
|
|
81
48
|
state="data.realtime"
|
|
@@ -103,7 +70,6 @@
|
|
|
103
70
|
auto="true"
|
|
104
71
|
></c8y-aggregation>
|
|
105
72
|
<c8y-interval
|
|
106
|
-
ng-show="!data.widgetInstanceGlobalTimeContext"
|
|
107
73
|
class="top-right-control"
|
|
108
74
|
date-from="data.dateFrom"
|
|
109
75
|
date-to="data.dateTo"
|
|
@@ -112,7 +78,7 @@
|
|
|
112
78
|
</div>
|
|
113
79
|
<div
|
|
114
80
|
class="c8yGraphFill"
|
|
115
|
-
style="height: calc(100vh -
|
|
81
|
+
style="height: calc(100vh - 530px);"
|
|
116
82
|
>
|
|
117
83
|
<c8y-chart
|
|
118
84
|
datapoints="data.graphDataPoints"
|
|
@@ -120,7 +86,6 @@
|
|
|
120
86
|
date-to="data.dateTo"
|
|
121
87
|
realtime="data.realtime"
|
|
122
88
|
aggregation="data.aggregation"
|
|
123
|
-
show-time="!data.widgetInstanceGlobalTimeContext"
|
|
124
89
|
on-data="(onData)"
|
|
125
90
|
on-update-dates="onUpdateDates($dateFrom, $dateTo)"
|
|
126
91
|
on-update-displayed-dates="onUpdateDisplayedDates($dateFrom, $dateTo)"
|
|
@@ -7,48 +7,16 @@
|
|
|
7
7
|
<div class="col-md-5 bg-level-1 a-s-stretch inner-scroll">
|
|
8
8
|
<div class="p-l-24 bg-inherit p-t-8">
|
|
9
9
|
<div class="form-group m-b-0 p-b-16 separator-bottom">
|
|
10
|
-
<label
|
|
11
|
-
{{ '
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
popover-placement="right"
|
|
18
|
-
popover-trigger="'focus'"
|
|
19
|
-
popover-append-to-body="true"
|
|
20
|
-
></button>
|
|
10
|
+
<label
|
|
11
|
+
title="{{ 'Show date selection' | translate }}"
|
|
12
|
+
class="checkbox-inline c8y-checkbox m-t-16"
|
|
13
|
+
>
|
|
14
|
+
<input type="checkbox" ng-model="data.displayDateSelection" />
|
|
15
|
+
<span></span>
|
|
16
|
+
<span>{{ 'Show date selection' | translate }}</span>
|
|
21
17
|
</label>
|
|
22
|
-
<div class="c8y-select-wrapper">
|
|
23
|
-
<select
|
|
24
|
-
id="dateSelection"
|
|
25
|
-
class="form-control"
|
|
26
|
-
title="{{ 'Date selection' | translate }}"
|
|
27
|
-
aria-label="{{ 'Date selection' | translate }}"
|
|
28
|
-
ng-model="dateSelection"
|
|
29
|
-
>
|
|
30
|
-
<option
|
|
31
|
-
title="{{ 'Widget configuration' | translate }}"
|
|
32
|
-
value="{{ 'config' }}"
|
|
33
|
-
>
|
|
34
|
-
{{ 'Widget configuration' | translate }}
|
|
35
|
-
</option>
|
|
36
|
-
<option
|
|
37
|
-
title="{{ 'Widget and widget configuration' | translate }}"
|
|
38
|
-
value="{{ 'view_and_config' }}"
|
|
39
|
-
>
|
|
40
|
-
{{ 'Widget and widget configuration' | translate }}
|
|
41
|
-
</option>
|
|
42
|
-
<option
|
|
43
|
-
title="{{ 'Dashboard time range' | translate }}"
|
|
44
|
-
value="{{ 'dashboard_context' }}"
|
|
45
|
-
>
|
|
46
|
-
{{ 'Dashboard time range' | translate }}
|
|
47
|
-
</option>
|
|
48
|
-
</select>
|
|
49
|
-
</div>
|
|
50
18
|
</div>
|
|
51
|
-
|
|
19
|
+
|
|
52
20
|
<c8y-data-point-list
|
|
53
21
|
datapoints="data.datapoints"
|
|
54
22
|
allow-adding-data-points-from-context-mo-only="dashboard.deviceType && dashboard.deviceTypeValue"
|
|
@@ -66,7 +34,6 @@
|
|
|
66
34
|
>
|
|
67
35
|
<div class="m-b-4 m-t-4 d-flex j-c-end gap-8">
|
|
68
36
|
<c8y-realtime-button
|
|
69
|
-
ng-show="!data.widgetInstanceGlobalTimeContext"
|
|
70
37
|
class="top-right-control"
|
|
71
38
|
channel="{{ channel }}"
|
|
72
39
|
state="data.realtime"
|
|
@@ -81,7 +48,6 @@
|
|
|
81
48
|
auto="true"
|
|
82
49
|
></c8y-aggregation>
|
|
83
50
|
<c8y-interval
|
|
84
|
-
ng-show="!data.widgetInstanceGlobalTimeContext"
|
|
85
51
|
class="top-right-control"
|
|
86
52
|
date-from="data.dateFrom"
|
|
87
53
|
date-to="data.dateTo"
|
|
@@ -98,7 +64,6 @@
|
|
|
98
64
|
date-to="data.dateTo"
|
|
99
65
|
realtime="data.realtime"
|
|
100
66
|
aggregation="data.aggregation"
|
|
101
|
-
show-time="!data.widgetInstanceGlobalTimeContext"
|
|
102
67
|
on-data="(onData)"
|
|
103
68
|
on-update-dates="onUpdateDates($dateFrom, $dateTo)"
|
|
104
69
|
on-update-displayed-dates="onUpdateDisplayedDates($dateFrom, $dateTo)"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";function _objectSpread(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?Object(arguments[e]):{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&r.push.apply(r,Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),r.forEach(function(e){_defineProperty(t,e,n[e])})}return t}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}!function(){function e(
|
|
1
|
+
"use strict";function _objectSpread(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?Object(arguments[e]):{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&r.push.apply(r,Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),r.forEach(function(e){_defineProperty(t,e,n[e])})}return t}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}!function(){function e(n,e,c){return{getDeviceTypeProtocolProvider:function(t,e){return{initUi:function(){!function(){var e={id:t.fieldbusType,name:t.label,service:t.serviceName};n.register(e)}()},$get:function(o,i){return["$injector","c8yBase","c8yInventory","c8yDeviceDatabase",function(e,n,t,r){return _objectSpread({flow:_.constant(["c8yDeviceTypeCreateStep"]),list:function(){return r.getAvailableDeviceTypes({fieldbusType:o.fieldbusType})},showIf:function(){return r.isDeviceTypeSupportedAsync({fieldbusType:o.fieldbusType})},detailPath:function(e){var t=n.getId(e);return function(e){return"/deviceprotocols/".concat(e.fieldbusType,"/:id")}(o).replace(/:id$/,t)},getName:function(e){return e.name},listRowInfoComponent:"c8yDeviceTypeRowInfo",getListActions:function(){return[{label:c("Export"),icon:"download",execute:function(e){return r.exportDeviceTypeAndSaveAs(e.data)}}]},remove:t.remove},e.invoke(i))}]}(t,e)}},$get:function(){}}}e.$inject=["c8yDeviceProtocolUiProvider","c8yViewsProvider","gettext"],angular.module("c8y.deviceProtocolForDeviceDatabase4").provider("c8yDeviceTypeProtocolBase",e)}();
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
"name": "Device type database",
|
|
3
3
|
"description": "Allows for managing device types database",
|
|
4
4
|
"category": "Device",
|
|
5
|
-
"ngModules": [
|
|
6
|
-
"c8y.deviceDatabase4"
|
|
7
|
-
],
|
|
5
|
+
"ngModules": ["c8y.deviceDatabase4"],
|
|
8
6
|
"imports": [
|
|
9
7
|
"core/device-protocols",
|
|
10
8
|
"core/device-protocol-deviceDatabase4",
|
|
@@ -51,9 +49,7 @@
|
|
|
51
49
|
|
|
52
50
|
"vendor/ini-legacy.js"
|
|
53
51
|
],
|
|
54
|
-
"css": [
|
|
55
|
-
"styles.css"
|
|
56
|
-
],
|
|
52
|
+
"css": ["styles.css"],
|
|
57
53
|
"webpackOverride": {
|
|
58
54
|
"js": [
|
|
59
55
|
"device-database-4.module.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";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 _regeneratorRuntime(){_regeneratorRuntime=function(){return a};var a={},e=Object.prototype,l=e.hasOwnProperty,t="function"==typeof Symbol?Symbol:{},o=t.iterator||"@@iterator",r=t.asyncIterator||"@@asyncIterator",n=t.toStringTag||"@@toStringTag";function i(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{i({},"")}catch(e){i=function(e,t,r){return e[t]=r}}function c(e,t,r,n){var i,a,c,u,o=t&&t.prototype instanceof d?t:d,s=Object.create(o.prototype),l=new T(n||[]);return s._invoke=(i=e,a=r,c=l,u="suspendedStart",function(e,t){if("executing"===u)throw new Error("Generator is already running");if("completed"===u){if("throw"===e)throw t;return E()}for(c.method=e,c.arg=t;;){var r=c.delegate;if(r){var n=_(r,c);if(n){if(n===f)continue;return n}}if("next"===c.method)c.sent=c._sent=c.arg;else if("throw"===c.method){if("suspendedStart"===u)throw u="completed",c.arg;c.dispatchException(c.arg)}else"return"===c.method&&c.abrupt("return",c.arg);u="executing";var o=p(i,a,c);if("normal"===o.type){if(u=c.done?"completed":"suspendedYield",o.arg===f)continue;return{value:o.arg,done:c.done}}"throw"===o.type&&(u="completed",c.method="throw",c.arg=o.arg)}}),s}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}a.wrap=c;var f={};function d(){}function u(){}function s(){}var y={};i(y,o,function(){return this});var g=Object.getPrototypeOf,h=g&&g(g(R([])));h&&h!==e&&l.call(h,o)&&(y=h);var v=s.prototype=d.prototype=Object.create(y);function m(e){["next","throw","return"].forEach(function(t){i(e,t,function(e){return this._invoke(t,e)})})}function w(u,s){var t;this._invoke=function(r,n){function e(){return new s(function(e,t){!function t(e,r,n,o){var i=p(u[e],u,r);if("throw"!==i.type){var a=i.arg,c=a.value;return c&&"object"==_typeof(c)&&l.call(c,"__await")?s.resolve(c.__await).then(function(e){t("next",e,n,o)},function(e){t("throw",e,n,o)}):s.resolve(c).then(function(e){a.value=e,n(a)},function(e){return t("throw",e,n,o)})}o(i.arg)}(r,n,e,t)})}return t=t?t.then(e,e):e()}}function _(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method))return f;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var n=p(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,f;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function R(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,n=function e(){for(;++r<t.length;)if(l.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return n.next=n}}return{next:E}}function E(){return{value:void 0,done:!0}}return i(v,"constructor",u.prototype=s),i(s,"constructor",u),u.displayName=i(s,n,"GeneratorFunction"),a.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===u||"GeneratorFunction"===(t.displayName||t.name))},a.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,s):(e.__proto__=s,i(e,n,"GeneratorFunction")),e.prototype=Object.create(v),e},a.awrap=function(e){return{__await:e}},m(w.prototype),i(w.prototype,r,function(){return this}),a.AsyncIterator=w,a.async=function(e,t,r,n,o){void 0===o&&(o=Promise);var i=new w(c(e,t,r,n),o);return a.isGeneratorFunction(t)?i:i.next().then(function(e){return e.done?e.value:i.next()})},m(v),i(v,n,"Generator"),i(v,o,function(){return this}),i(v,"toString",function(){return"[object Generator]"}),a.keys=function(r){var n=[];for(var e in r)n.push(e);return n.reverse(),function e(){for(;n.length;){var t=n.pop();if(t in r)return e.value=t,e.done=!1,e}return e.done=!0,e}},a.values=R,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(x),!e)for(var t in this)"t"===t.charAt(0)&&l.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var n=this;function e(e,t){return i.type="throw",i.arg=r,n.next=e,t&&(n.method="next",n.arg=void 0),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var o=this.tryEntries[t],i=o.completion;if("root"===o.tryLoc)return e("end");if(o.tryLoc<=this.prev){var a=l.call(o,"catchLoc"),c=l.call(o,"finallyLoc");if(a&&c){if(this.prev<o.catchLoc)return e(o.catchLoc,!0);if(this.prev<o.finallyLoc)return e(o.finallyLoc)}else if(a){if(this.prev<o.catchLoc)return e(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return e(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;0<=r;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&l.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),x(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;x(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:R(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},a}!function(){function e(a,e,n,o,i,c,t,u,s,l,p){var f=this,r=f.id,d=!0;function y(r){var n,o;return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_regeneratorRuntime().awrap((t=r,g()?c.getEmptyDeviceType():c.getDeviceType(t)));case 2:n=e.sent,o=n.fieldbusType,_.assign(f,{deviceType:n,formValue:{fieldbusType:o},features:_.find(f.deviceTypesFeatures,{fieldbusType:o})}),a.$apply();case 6:case"end":return e.stop()}var t},null,null,null,Promise)}function g(){return"new"===r}function h(){f.deviceType.name?t.changeTitle({title:f.deviceType.name},{skipTitleTranslation:!0}):t.changeTitle({title:l("New device type")})}function v(e){return x(e,c.addElementId(c.getEmptyDiscreteOutput()),f.deviceType.c8y_Coils)}function m(e){return x(e,c.addElementId(c.getEmptyDiscreteInput()),f.deviceType.c8y_Coils)}function w(e){return T(e,c.addElementId(c.getEmptyHoldingRegister(f.deviceType)),f.deviceType.c8y_Registers)}function b(e){return T(e,c.addElementId(c.getEmptyInputRegister()),f.deviceType.c8y_Registers)}function x(e,t,r){return R("DiscreteIO",e,t,r)}function T(e,t,r){return R("Register",e,t,r)}function R(t,r,n,o){var i;return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,_regeneratorRuntime().awrap(c["edit".concat(t,"WithUI")](r||n,f.deviceType));case 3:i=e.sent,E(r,o,i),I(),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),e.t0&&"escape key press"!==e.t0&&s.danger(e.t0);case 11:a.$apply();case 12:case"end":return e.stop()}},null,null,[[0,8]],Promise)}function E(e,t,r){(_.get(f.features,"holdingRegisters.number.useHex",!1)&&!r.number.startsWith("0x")&&(r.number="0x".concat(r.number)),e)?t[_.indexOf(t,e)]=r:t.push(r)}function D(t,r,n){return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,_regeneratorRuntime().awrap(u({title:l("Delete item"),body:p.getString(n,t),labels:{ok:l("Delete")},status:"danger"}));case 3:i.removeFromList(r,t),I(),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),e.t0&&s.danger(e.t0);case 10:a.$apply();case 11:case"end":return e.stop()}},null,null,[[0,7]],Promise)}function L(){var t,r;return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,_regeneratorRuntime().awrap(u({title:l("Confirm device type change?"),body:p.getString("By changing device type, all changes will be lost. Do you really want to proceed?")}));case 3:return c.removeAllElements(f.deviceType),I(),t=f.formValue.fieldbusType,f.deviceType.fieldbusType=t,e.abrupt("return",t);case 10:return e.prev=10,e.t0=e.catch(0),r=f.deviceType.fieldbusType,f.formValue.fieldbusType=r,e.abrupt("return",r);case 15:case"end":return e.stop()}},null,null,[[0,10]],Promise)}function I(){var e=f.deviceType;_.assign(f,{discreteOutputsCategorized:c.getDiscreteOutputsCategorized(e),discreteInputsCategorized:c.getDiscreteInputsCategorized(e),holdingRegistersCategorized:c.getHoldingRegistersCategorized(e),inputRegistersCategorized:c.getInputRegistersCategorized(e)})}_.assign(f,{$onInit:function(){return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_regeneratorRuntime().awrap(_regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_regeneratorRuntime().awrap(c.getFeaturesManifestsAsync());case 2:f.deviceTypesFeatures=e.sent,a.$apply();case 4:case"end":return e.stop()}},null,null,null,Promise));case 2:return e.next=4,_regeneratorRuntime().awrap(y(r));case 4:I(),h(),a.$apply();case 7:case"end":return e.stop()}},null,null,null,Promise)},isNew:g,isEmpty:_.isEmpty,editDiscreteOutput:v,editDiscreteInput:m,editHoldingRegister:w,editInputRegister:b,addDiscreteOutput:v,addDiscreteInput:m,addHoldingRegister:w,addInputRegister:b,removeDiscreteOutput:function(e){return D(e,f.deviceType.c8y_Coils,l('Do you really want to remove "{{name}}"?'))},removeDiscreteInput:function(e){return D(e,f.deviceType.c8y_Coils,l('Do you really want to remove "{{name}}"?'))},removeHoldingRegister:function(e){return D(e,f.deviceType.c8y_Registers,l('Do you really want to remove "{{name}}"?'))},removeInputRegister:function(e){return D(e,f.deviceType.c8y_Registers,l('Do you really want to remove "{{name}}"?'))},save:function(t){var r;return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return _.get(t,"c8y_MessageIdConfiguration.source")||(r=_.get(f.features.configuration,"messageIdConfiguration[0].value"),_.set(t,"c8y_MessageIdConfiguration.source",r)),e.prev=1,e.next=4,_regeneratorRuntime().awrap(c.save(t));case 4:s.success(l("Device type saved.")),d=!0,o.path("/deviceprotocols"),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(1),s.danger(e.t0.errorMessage);case 12:a.$apply();case 13:case"end":return e.stop()}},null,null,[[1,9]],Promise)},saveDisabled:function(){var e=f.deviceType;return _.get(f,"deviceTypeForm.$invalid")||!e||_.isEmpty(e.c8y_Coils)&&_.isEmpty(e.c8y_Registers)},changeDeviceType:function(){if(f.deviceType.fieldbusType)!function(){var t;_regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_regeneratorRuntime().awrap(L());case 2:t=e.sent,f.features=_.find(f.deviceTypesFeatures,{fieldbusType:t}),a.$apply();case 5:case"end":return e.stop()}},null,null,null,Promise)}();else{var e=f.formValue.fieldbusType;f.deviceType.fieldbusType=e,f.features=_.find(f.deviceTypesFeatures,{fieldbusType:e})}},messageIdSources:c.MessageIdSources,toggleMainEdit:function(){f.editingMain=!f.editingMain}}),e.$watch("vm.deviceType",function(e,t){t&&e!==t&&(d=!1)},!0),e.$on("$locationChangeStart",function(t,r){return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:if(d){e.next=13;break}return t.preventDefault(),e.prev=2,e.next=5,_regeneratorRuntime().awrap(u({title:l("Discard changes"),body:l("You are about to leave this page and discard the changes made. Do you want to proceed?"),status:"warning",labels:{ok:l("Discard")}}));case 5:d=!0,n.location.href=r,a.$apply(),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(2),e.t0&&s.danger(e.t0);case 13:case"end":return e.stop()}},null,null,[[2,10]],Promise)})}e.$inject=["$rootScope","$scope","$window","$location","c8yBase","c8yDeviceDatabase","c8yTitle","c8yModal","c8yAlert","gettext","gettextCatalog"],angular.module("c8y.deviceDatabase4").component("c8yDeviceTypeDetail",{templateUrl:":::PLUGIN_PATH:::/detail/device-type-detail.html",bindings:{id:"<"},controllerAs:"vm",controller:e})}();
|
|
1
|
+
"use strict";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 _regeneratorRuntime(){_regeneratorRuntime=function(){return a};var a={},e=Object.prototype,l=e.hasOwnProperty,t="function"==typeof Symbol?Symbol:{},i=t.iterator||"@@iterator",r=t.asyncIterator||"@@asyncIterator",n=t.toStringTag||"@@toStringTag";function o(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{o({},"")}catch(e){o=function(e,t,r){return e[t]=r}}function c(e,t,r,n){var o,a,c,u,i=t&&t.prototype instanceof d?t:d,s=Object.create(i.prototype),l=new x(n||[]);return s._invoke=(o=e,a=r,c=l,u="suspendedStart",function(e,t){if("executing"===u)throw new Error("Generator is already running");if("completed"===u){if("throw"===e)throw t;return R()}for(c.method=e,c.arg=t;;){var r=c.delegate;if(r){var n=_(r,c);if(n){if(n===f)continue;return n}}if("next"===c.method)c.sent=c._sent=c.arg;else if("throw"===c.method){if("suspendedStart"===u)throw u="completed",c.arg;c.dispatchException(c.arg)}else"return"===c.method&&c.abrupt("return",c.arg);u="executing";var i=p(o,a,c);if("normal"===i.type){if(u=c.done?"completed":"suspendedYield",i.arg===f)continue;return{value:i.arg,done:c.done}}"throw"===i.type&&(u="completed",c.method="throw",c.arg=i.arg)}}),s}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}a.wrap=c;var f={};function d(){}function u(){}function s(){}var y={};o(y,i,function(){return this});var g=Object.getPrototypeOf,h=g&&g(g(E([])));h&&h!==e&&l.call(h,i)&&(y=h);var v=s.prototype=d.prototype=Object.create(y);function m(e){["next","throw","return"].forEach(function(t){o(e,t,function(e){return this._invoke(t,e)})})}function w(u,s){var t;this._invoke=function(r,n){function e(){return new s(function(e,t){!function t(e,r,n,i){var o=p(u[e],u,r);if("throw"!==o.type){var a=o.arg,c=a.value;return c&&"object"==_typeof(c)&&l.call(c,"__await")?s.resolve(c.__await).then(function(e){t("next",e,n,i)},function(e){t("throw",e,n,i)}):s.resolve(c).then(function(e){a.value=e,n(a)},function(e){return t("throw",e,n,i)})}i(o.arg)}(r,n,e,t)})}return t=t?t.then(e,e):e()}}function _(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method))return f;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var n=p(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,f;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function E(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,n=function e(){for(;++r<t.length;)if(l.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return n.next=n}}return{next:R}}function R(){return{value:void 0,done:!0}}return o(v,"constructor",u.prototype=s),o(s,"constructor",u),u.displayName=o(s,n,"GeneratorFunction"),a.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===u||"GeneratorFunction"===(t.displayName||t.name))},a.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,s):(e.__proto__=s,o(e,n,"GeneratorFunction")),e.prototype=Object.create(v),e},a.awrap=function(e){return{__await:e}},m(w.prototype),o(w.prototype,r,function(){return this}),a.AsyncIterator=w,a.async=function(e,t,r,n,i){void 0===i&&(i=Promise);var o=new w(c(e,t,r,n),i);return a.isGeneratorFunction(t)?o:o.next().then(function(e){return e.done?e.value:o.next()})},m(v),o(v,n,"Generator"),o(v,i,function(){return this}),o(v,"toString",function(){return"[object Generator]"}),a.keys=function(r){var n=[];for(var e in r)n.push(e);return n.reverse(),function e(){for(;n.length;){var t=n.pop();if(t in r)return e.value=t,e.done=!1,e}return e.done=!0,e}},a.values=E,x.prototype={constructor:x,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!e)for(var t in this)"t"===t.charAt(0)&&l.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var n=this;function e(e,t){return o.type="throw",o.arg=r,n.next=e,t&&(n.method="next",n.arg=void 0),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var i=this.tryEntries[t],o=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var a=l.call(i,"catchLoc"),c=l.call(i,"finallyLoc");if(a&&c){if(this.prev<i.catchLoc)return e(i.catchLoc,!0);if(this.prev<i.finallyLoc)return e(i.finallyLoc)}else if(a){if(this.prev<i.catchLoc)return e(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return e(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;0<=r;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&l.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var i=n;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),T(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;T(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:E(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},a}!function(){function e(a,e,n,i,o,c,t,u,s,l,p){var f=this;function r(r){var n,i;return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_regeneratorRuntime().awrap((t=r,d()?c.getEmptyDeviceType():c.getDeviceType(t)));case 2:n=e.sent,i=n.fieldbusType,_.assign(f,{deviceType:n,formValue:{fieldbusType:i},features:_.find(f.deviceTypesFeatures,{fieldbusType:i})}),a.$apply();case 6:case"end":return e.stop()}var t},null,null,null,Promise)}function d(){return"new"===f.id}function y(){f.deviceType.name?t.changeTitle({title:f.deviceType.name},{skipTitleTranslation:!0}):t.changeTitle({title:l("New device type")})}function g(e){return w(e,c.addElementId(c.getEmptyDiscreteOutput()),f.deviceType.c8y_Coils)}function h(e){return w(e,c.addElementId(c.getEmptyDiscreteInput()),f.deviceType.c8y_Coils)}function v(e){return b(e,c.addElementId(c.getEmptyHoldingRegister(f.deviceType)),f.deviceType.c8y_Registers)}function m(e){return b(e,c.addElementId(c.getEmptyInputRegister()),f.deviceType.c8y_Registers)}function w(e,t,r){return T("DiscreteIO",e,t,r)}function b(e,t,r){return T("Register",e,t,r)}function T(t,r,n,i){var o;return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,_regeneratorRuntime().awrap(c["edit".concat(t,"WithUI")](r||n,f.deviceType));case 3:o=e.sent,x(r,i,o),D(),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),e.t0&&"escape key press"!==e.t0&&s.danger(e.t0);case 11:a.$apply();case 12:case"end":return e.stop()}},null,null,[[0,8]],Promise)}function x(e,t,r){(_.get(f.features,"holdingRegisters.number.useHex",!1)&&!r.number.startsWith("0x")&&(r.number="0x".concat(r.number)),e)?t[_.indexOf(t,e)]=r:t.push(r)}function E(t,r,n){return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,_regeneratorRuntime().awrap(u({title:l("Delete item"),body:p.getString(n,t),labels:{ok:l("Delete")},status:"danger"}));case 3:i.removeFromList(r,t),D(),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),e.t0&&s.danger(e.t0);case 10:a.$apply();case 11:case"end":return e.stop()}},null,null,[[0,7]],Promise)}function R(){var t,r;return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,_regeneratorRuntime().awrap(u({title:l("Confirm device type change?"),body:p.getString("By changing device type, all changes will be lost. Do you really want to proceed?")}));case 3:return c.removeAllElements(f.deviceType),D(),t=f.formValue.fieldbusType,f.deviceType.fieldbusType=t,e.abrupt("return",t);case 10:return e.prev=10,e.t0=e.catch(0),r=f.deviceType.fieldbusType,f.formValue.fieldbusType=r,e.abrupt("return",r);case 15:case"end":return e.stop()}},null,null,[[0,10]],Promise)}function D(){var e=f.deviceType;_.assign(f,{discreteOutputsCategorized:c.getDiscreteOutputsCategorized(e),discreteInputsCategorized:c.getDiscreteInputsCategorized(e),holdingRegistersCategorized:c.getHoldingRegistersCategorized(e),inputRegistersCategorized:c.getInputRegistersCategorized(e)})}_.assign(f,{$onInit:function(){return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_regeneratorRuntime().awrap(_regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_regeneratorRuntime().awrap(c.getFeaturesManifestsAsync());case 2:f.deviceTypesFeatures=e.sent,a.$apply();case 4:case"end":return e.stop()}},null,null,null,Promise));case 2:return e.next=4,_regeneratorRuntime().awrap(r(f.id));case 4:D(),y(),a.$apply();case 7:case"end":return e.stop()}},null,null,null,Promise)},isNew:d,isEmpty:_.isEmpty,editDiscreteOutput:g,editDiscreteInput:h,editHoldingRegister:v,editInputRegister:m,addDiscreteOutput:g,addDiscreteInput:h,addHoldingRegister:v,addInputRegister:m,removeDiscreteOutput:function(e){return E(e,f.deviceType.c8y_Coils,l('Do you really want to remove "{{name}}"?'))},removeDiscreteInput:function(e){return E(e,f.deviceType.c8y_Coils,l('Do you really want to remove "{{name}}"?'))},removeHoldingRegister:function(e){return E(e,f.deviceType.c8y_Registers,l('Do you really want to remove "{{name}}"?'))},removeInputRegister:function(e){return E(e,f.deviceType.c8y_Registers,l('Do you really want to remove "{{name}}"?'))},save:function(t){var r;return _regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return _.get(t,"c8y_MessageIdConfiguration.source")||(r=_.get(f.features.configuration,"messageIdConfiguration[0].value"),_.set(t,"c8y_MessageIdConfiguration.source",r)),e.prev=1,e.next=4,_regeneratorRuntime().awrap(c.save(t));case 4:s.success(l("Device type saved.")),o.setIsDetailEdited(!1),n.path("/deviceprotocols"),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(1),s.danger(e.t0.errorMessage);case 12:a.$apply();case 13:case"end":return e.stop()}},null,null,[[1,9]],Promise)},saveDisabled:function(){var e=f.deviceType;return _.get(f,"deviceTypeForm.$invalid")||!e||_.isEmpty(e.c8y_Coils)&&_.isEmpty(e.c8y_Registers)},changeDeviceType:function(){if(f.deviceType.fieldbusType)!function(){var t;_regeneratorRuntime().async(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_regeneratorRuntime().awrap(R());case 2:t=e.sent,f.features=_.find(f.deviceTypesFeatures,{fieldbusType:t}),a.$apply();case 5:case"end":return e.stop()}},null,null,null,Promise)}();else{var e=f.formValue.fieldbusType;f.deviceType.fieldbusType=e,f.features=_.find(f.deviceTypesFeatures,{fieldbusType:e})}},messageIdSources:c.MessageIdSources,toggleMainEdit:function(){f.editingMain=!f.editingMain}}),e.$watch("vm.deviceType",function(e,t){t&&e!==t&&o.setIsDetailEdited(!0)},!0)}e.$inject=["$rootScope","$scope","$location","c8yBase","c8yDeviceTypeDetailEdited","c8yDeviceDatabase","c8yTitle","c8yModal","c8yAlert","gettext","gettextCatalog"],angular.module("c8y.deviceDatabase4").component("c8yDeviceTypeDetail",{templateUrl:":::PLUGIN_PATH:::/detail/device-type-detail.html",bindings:{id:"<"},controllerAs:"vm",controller:e})}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";!function(){function t(i,t,r,n,a,o){var e,u,l=t.deviceId,c={},d=a("Availability percentage is based on the number of critical alarms raised and cleared."),
|
|
1
|
+
"use strict";!function(){function t(i,t,r,n,a,o){var e,u,l=t.deviceId,c={},d=a("Availability percentage is based on the number of critical alarms raised and cleared."),v=a("Operability chart displays how many devices had their average availability on particular level in the last 30 days."),f=r.createEnum([{name:"DAY",value:"day",label:a("Last 24 hours availability")},{name:"WEEK",value:"week",label:a("Last 7 days availability")},{name:"MONTH",value:"month",label:a("Last 30 days availability")}]),m=r.createEnum([{name:"DOWNTIME",value:"downtime",label:a("Downtime"),color:"#d9534f"},{name:"UPTIME",value:"uptime",label:a("Uptime"),color:"#5cb85c"}]);function s(a){var e=function(t){var a=moment(),e=moment().subtract(1,t.value),n=r.dateFullFormat;return{dateFrom:e.format(n),dateTo:a.format(n),id:l}}(a);return(e.id?n.reports.downtimeDuration(e):n.reports.downtimeDurationAggregation(e)).then(function(t){return function(t,a,e){var n=e.downtimeDuration,r=y(a,e)-n;c[t.name]={name:t.name,label:t.label,order:t.ordinal,data:[{key:m.DOWNTIME.value,val:n},{key:m.UPTIME.value,val:r}]}}(a,e,t.data)})}function y(t){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=moment(t.dateFrom),n=moment(t.dateTo),r=1;return"number"==typeof a.deviceCount?r=a.deviceCount:Array.isArray(a.availabilityStats)&&(r=a.availabilityStats.length),n.diff(e,"seconds")*(r||1)}function p(t){var a=_.find(t,{key:m.UPTIME.value}).val;return a/(a+_.find(t,{key:m.DOWNTIME.value}).val)*100}_.assign(i,{intervalsData:c,availabilityTooltip:d,operabilityTooltip:v,x:function(){return function(t){return t.key}},y:function(){return function(t){return t.val}},xGraph:function(){return function(t){return t[0]}},yGraph:function(){return function(t){return t[1]}},xTickFormat:function(){return function(t){return"".concat(t,"%")}},color:function(){return function(t){return _.find(m,{value:t.data.key}).color}},colorGraph:function(){return function(){return m.UPTIME.color}},tooltip:function(){return function(t){return o.getString(_.find(m,{value:t}).label)}},tooltipGraph:function(){return function(t,a,e){var n=Math.round(e);return o.getPlural(n,"1 device","{{$count}} devices",{})}},percentage:p,percentageClass:function(t){return 50<p(t)?"text-success":"text-danger"}}),f.values().forEach(s),l||(e=r.dateFullFormat,u={dateFrom:moment().subtract(30,"day").format(e),dateTo:moment().format(e)},n.reports.downtimeDuration(u).then(function(t){return function(t,a){var e=a.availabilityStats,n=y(t),r=e.map(function(t){var a=t.downtimeDuration;return t.percent=100*(n-a)/n,t});i.graphData=[{key:"operability",values:function(n){for(var r=[],t=function(t){var a=10*t,e=n.filter(function(t){return function(t,a){return a.percent<=t&&a.percent>t-10}(a,t)}).length;r.push([a,e])},a=0;a<=10;a++)t(a);return r}(r)}]}(u,t.data)}))}t.$inject=["$scope","$routeParams","c8yBase","c8yAlarms","gettext","gettextCatalog"],angular.module("c8y.parts.availability").controller("availabilityReportCtrl",t)}();
|
|
@@ -1,38 +1,50 @@
|
|
|
1
1
|
<div ng-form="infoGaugeForm" ng-controller="infoGaugeWidgetConfigController as vm">
|
|
2
|
-
<div class="alert alert-info" role="alert" ng-hide="vm.atLeastOneActiveDatapoint" translate>
|
|
2
|
+
<div class="alert alert-info m-r-16 m-l-16 m-t-16" role="alert" ng-hide="vm.atLeastOneActiveDatapoint" translate>
|
|
3
3
|
At least one data point for the labels or the gauge needs to be selected.
|
|
4
4
|
</div>
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
5
|
+
<div class="p-l-24 p-r-24 separator-bottom p-t-16">
|
|
6
|
+
<div class="row">
|
|
7
|
+
<div class="col-md-6">
|
|
8
|
+
<div class="form-group">
|
|
9
|
+
<label translate>Decimal places</label>
|
|
10
|
+
<input
|
|
11
|
+
name="decimalPlaces"
|
|
12
|
+
ng-model="config.fractionSize"
|
|
13
|
+
type="number"
|
|
14
|
+
ng-min="0"
|
|
15
|
+
ng-max="10"
|
|
16
|
+
step="1"
|
|
17
|
+
c8y-model-options="{unsetWhenNull: true}"
|
|
18
|
+
class="form-control"
|
|
19
|
+
/>
|
|
20
|
+
<c8y-error-feedback field="infoGaugeForm.decimalPlaces"></c8y-error-feedback>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="row">
|
|
26
|
+
<div class="col-sm-6">
|
|
27
|
+
<p translate class="legend form-block p-l-16 p-r-16">Data point for gauge</p>
|
|
28
|
+
<c8y-data-point-list
|
|
29
|
+
max-select-count="1"
|
|
30
|
+
min-select-count="0"
|
|
31
|
+
datapoints="config.datapointsGauge"
|
|
32
|
+
dont-save="true"
|
|
33
|
+
no-chart
|
|
34
|
+
class="bg-level-0 d-block"
|
|
35
|
+
allow-adding-data-points-from-context-mo-only="dashboard.deviceType && dashboard.deviceTypeValue"
|
|
36
|
+
></c8y-data-point-list>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="col-sm-6">
|
|
39
|
+
<p translate class="legend form-block p-l-16 p-r-16">Data point for labels</p>
|
|
40
|
+
<c8y-data-point-list
|
|
41
|
+
min-select-count="0"
|
|
42
|
+
datapoints="config.datapointsLabels"
|
|
43
|
+
dont-save="true"
|
|
44
|
+
no-chart
|
|
45
|
+
class="bg-level-0 d-block"
|
|
46
|
+
allow-adding-data-points-from-context-mo-only="dashboard.deviceType && dashboard.deviceTypeValue"
|
|
47
|
+
></c8y-data-point-list>
|
|
48
|
+
</div>
|
|
37
49
|
</div>
|
|
38
50
|
</div>
|
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
dont-save="true"
|
|
7
7
|
no-chart
|
|
8
8
|
allow-adding-data-points-from-context-mo-only="dashboard.deviceType && dashboard.deviceTypeValue"
|
|
9
|
-
class="bg-level-0">
|
|
9
|
+
class="bg-level-0 d-block">
|
|
10
10
|
</c8y-data-point-list>
|
|
11
|
-
<div class="
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
<div class="p-16">
|
|
12
|
+
<div class="form-group">
|
|
13
|
+
<label translate>Decimal places</label>
|
|
14
|
+
<input name="decimalPlaces" ng-model="config.fractionSize" type="number" ng-min="0" ng-max="10" step="1" c8y-model-options="{unsetWhenNull: true}" class="form-control">
|
|
15
|
+
<c8y-error-feedback field="gaugeForm.decimalPlaces"></c8y-error-feedback>
|
|
16
|
+
</div>
|
|
15
17
|
</div>
|
|
16
18
|
</div>
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
<div
|
|
1
|
+
<div
|
|
2
|
+
class="p-t-40 p-l-16 p-r-16 p-b-16 fit-h d-flex d-col flex-center overflow-hidden"
|
|
3
|
+
ng-controller="gaugeCtrl"
|
|
4
|
+
>
|
|
2
5
|
<c8y-linear-gauge
|
|
3
6
|
dp="dataPoint"
|
|
4
7
|
measurement="measurement"
|
|
5
8
|
time="time"
|
|
6
9
|
fraction-size="child.config.fractionSize"
|
|
7
|
-
>
|
|
8
|
-
|
|
9
|
-
</div>
|
|
10
|
+
></c8y-linear-gauge>
|
|
11
|
+
</div>
|