@c8y/ng1-modules 1018.486.5 → 1018.496.6
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/administration-alarmMapping/views/index.html +2 -2
- package/administration-auditLogs/views/list.html +8 -7
- package/administration-deviceUsers/views/list.html +55 -18
- package/app-logs/app-logs/app-logs.html +10 -9
- package/applicationLinks/index.js +1 -1
- package/binaryArtefactsManagement/views/list.html +63 -23
- package/core/core/services/measurements.js +1 -1
- package/core/locales/de.po +246 -102
- package/core/locales/en.po +34 -15
- package/core/locales/es.po +21 -103
- package/core/locales/fr.po +20 -102
- package/core/locales/ja_JP.po +20 -102
- package/core/locales/ko.po +20 -102
- package/core/locales/nl.po +20 -102
- package/core/locales/pl.po +21 -103
- package/core/locales/pt_BR.po +38 -120
- package/core/locales/ru.po +21 -103
- package/core/locales/zh_CN.po +21 -103
- package/core/locales/zh_TW.po +21 -103
- package/core/ui/directives/map2.js +1 -1
- package/core/ui/itemSelector/itemSelector.html +1 -1
- package/core/ui/services/measurementsReport.js +1 -1
- package/core/ui/user/editUser.directive.html +3 -3
- package/core/ui/user/rolesUiStrings.constant.js +1 -1
- package/core/ui/views/modal.html +1 -1
- package/dataBroker/connectors/connectors.html +87 -32
- package/dataPointExplorer/controllers/dataPointExplorer.js +1 -1
- package/dataPointExplorer/index.js +1 -1
- package/dataPointExplorer/views/explorer.html +6 -2
- package/dataPointExplorer/views/widgetConfig.html +1 -0
- package/dataPointTable/index.js +1 -1
- package/dataPointTable/views/widgetConfig.html +1 -3
- package/device-protocol-deviceDatabase4/device-type-protocol-base.provider.js +1 -1
- package/device-protocols/deviceProtocolList.html +4 -4
- package/device-protocols/deviceProtocolView.html +34 -14
- package/deviceDatabase4/cumulocity.json +4 -6
- package/deviceDatabase4/detail/device-type-detail.component.js +1 -1
- package/deviceDatabase4/detail/device-type-detail.html +1 -0
- package/deviceDatabase4/modals/configure-register.component.js +1 -1
- package/deviceDatabase4/modals/configure-register.html +2 -2
- package/deviceDatabase4/validate-measurement-fragment.directive.js +1 -0
- package/deviceList/views/index.html +4 -1
- package/devicemanagement-alarmList/views/index.html +57 -19
- package/devicemanagement-availability/controllers/availability.js +1 -1
- package/devicemanagement-availability/views/detail.html +19 -8
- package/devicemanagement-eventList/views/index.html +6 -2
- package/enterpriseEdition/enterpriseEdition.module.js +1 -1
- package/eventList/index.js +1 -1
- package/export/directives/timespan.js +1 -1
- package/export/services/filters.js +1 -1
- package/export/views/detail.html +1 -1
- package/export/views/list.html +21 -0
- package/export/views/properties.html +3 -3
- package/export/views/timespan.html +38 -9
- package/measurements/fragmentChart/fragmentChart.component.js +1 -1
- package/measurements/measurements2/series.service.js +1 -1
- package/modbusConfiguration4/fieldbus-config.html +2 -1
- package/modbusConfiguration4/fieldbus-device-list.html +3 -1
- package/package.json +1 -1
- package/platformConfiguration/cumulocity.json +1 -1
- package/platformConfiguration/platformConfiguration.component.js +1 -0
- package/platformConfiguration/platformConfiguration.html +22 -0
- package/platformConfiguration/platformConfigurationUi.provider.js +1 -1
- package/scada/config.controller.js +1 -1
- package/scada/views/componentConfig.html +28 -14
- package/scada/widget.controller.js +1 -1
- package/tenantPolicies/tenantPolicyList/tenantPolicyList.html +90 -25
- package/tenantStatistics/tenant-statistics.html +23 -14
- package/tenants/views/detail.html +1 -1
- package/userRoles/inventoryRolesTab/inventoryRolesTab.component.js +1 -1
- package/userRoles/inventoryRolesTab/inventoryRolesTab.html +16 -10
- package/users/userListView/userListView.html +47 -17
- package/users/usersUi.provider.js +1 -1
- package/deviceControlMessage/controllers/deviceControlMessageWidget.js +0 -1
- package/deviceControlMessage/cumulocity.json +0 -15
- package/deviceControlMessage/img/message-widget-pr.png +0 -0
- package/deviceControlMessage/index.js +0 -1
- package/deviceControlMessage/views/deviceControlMessageWidget.html +0 -26
- package/infoGauge/cumulocity.json +0 -20
- package/infoGauge/img/info-gauge-widget-pr.png +0 -0
- package/infoGauge/index.js +0 -1
- package/infoGauge/infoGauge.controller.js +0 -1
- package/infoGauge/infoGauge.service.js +0 -1
- package/infoGauge/infoGaugeConfig.controller.js +0 -1
- package/infoGauge/infoGaugeWidget.config.html +0 -58
- package/infoGauge/infoGaugeWidget.html +0 -32
- package/infoGauge/style.less +0 -0
- package/platformConfiguration/platformConfigurationForm.component.js +0 -1
- package/platformConfiguration/platformConfigurationForm.html +0 -50
package/core/locales/zh_TW.po
CHANGED
|
@@ -1107,13 +1107,6 @@ msgstr ""
|
|
|
1107
1107
|
"而是使用您的旧域名。\n"
|
|
1108
1108
|
"如果您在访问租户时遇到任何问题,请与支持部门联系。"
|
|
1109
1109
|
|
|
1110
|
-
msgid ""
|
|
1111
|
-
"After the activation is completed you will no longer be able to access your tenant\n"
|
|
1112
|
-
" with <code>{{ vm.domainName }}</code>, instead use your new custom domain name <code>{{ vm.newDomainName }}</code>."
|
|
1113
|
-
msgstr ""
|
|
1114
|
-
"完成激活后,您将不再能够使用 <code>{{ vm.domainName }}</code> 访问租户\n"
|
|
1115
|
-
",请改用新的自定义域名 <code>{{ vm.newDomainName }}</code>。"
|
|
1116
|
-
|
|
1117
1110
|
msgid "Agent"
|
|
1118
1111
|
msgstr "代理"
|
|
1119
1112
|
|
|
@@ -2036,9 +2029,6 @@ msgstr "浏览路径"
|
|
|
2036
2029
|
msgid "Browse the manual"
|
|
2037
2030
|
msgstr "浏览手册"
|
|
2038
2031
|
|
|
2039
|
-
msgid "Browse the manual <a c8y-guide-href=\"users-guide/cockpit/\">here</a>."
|
|
2040
|
-
msgstr "在<a c8y-guide-href=\"users-guide/cockpit/\">此处</a>浏览手册。"
|
|
2041
|
-
|
|
2042
2032
|
msgid "Built-in"
|
|
2043
2033
|
msgstr "内置"
|
|
2044
2034
|
|
|
@@ -2815,9 +2805,6 @@ msgstr "操作中心"
|
|
|
2815
2805
|
msgid "Cockpit User"
|
|
2816
2806
|
msgstr "操作中心用户"
|
|
2817
2807
|
|
|
2818
|
-
msgid "Cockpit configuration"
|
|
2819
|
-
msgstr "Cockpit 配置"
|
|
2820
|
-
|
|
2821
2808
|
msgid "Cockpit configuration saved."
|
|
2822
2809
|
msgstr "已保存 Cockpit 配置。"
|
|
2823
2810
|
|
|
@@ -2974,9 +2961,6 @@ msgstr "已删除配置。"
|
|
|
2974
2961
|
msgid "Configuration file"
|
|
2975
2962
|
msgstr "配置文件"
|
|
2976
2963
|
|
|
2977
|
-
msgid "Configuration reloaded."
|
|
2978
|
-
msgstr "已重新加载配置。"
|
|
2979
|
-
|
|
2980
2964
|
msgid "Configuration repository"
|
|
2981
2965
|
msgstr "配置存储库"
|
|
2982
2966
|
|
|
@@ -3634,12 +3618,12 @@ msgstr "创建主要警报"
|
|
|
3634
3618
|
msgid "Create MINOR alarm"
|
|
3635
3619
|
msgstr "创建次要警报"
|
|
3636
3620
|
|
|
3637
|
-
msgid "Create SmartREST template"
|
|
3638
|
-
msgstr "创建 SmartREST 模板"
|
|
3639
|
-
|
|
3640
3621
|
msgid "Create WARNING alarm"
|
|
3641
3622
|
msgstr "创建警告警报"
|
|
3642
3623
|
|
|
3624
|
+
msgid "Create a custom application by duplicating an existing one."
|
|
3625
|
+
msgstr "通過複製現有應用程式來創建自訂應用程式。"
|
|
3626
|
+
|
|
3643
3627
|
msgid "Create a measurement whenever the value is changed."
|
|
3644
3628
|
msgstr "更改值时创建测量。"
|
|
3645
3629
|
|
|
@@ -3743,9 +3727,6 @@ msgstr "创建智能规则"
|
|
|
3743
3727
|
msgid "Create temperature measurement"
|
|
3744
3728
|
msgstr "创建温度测量"
|
|
3745
3729
|
|
|
3746
|
-
msgid "Create template"
|
|
3747
|
-
msgstr "创建模板"
|
|
3748
|
-
|
|
3749
3730
|
msgid "Create tenant"
|
|
3750
3731
|
msgstr "创建租户"
|
|
3751
3732
|
|
|
@@ -4680,9 +4661,6 @@ msgstr ""
|
|
|
4680
4661
|
msgid "Device location"
|
|
4681
4662
|
msgstr "设备位置"
|
|
4682
4663
|
|
|
4683
|
-
msgid "Device location may be set by the device itself, or manually in the platform"
|
|
4684
|
-
msgstr "设备位置可以由设备本身设置,也可以在平台中手动设置"
|
|
4685
|
-
|
|
4686
4664
|
msgid "Device management"
|
|
4687
4665
|
msgstr "设备管理"
|
|
4688
4666
|
|
|
@@ -4899,6 +4877,9 @@ msgstr "禁用 Cookie 横幅"
|
|
|
4899
4877
|
msgid "Disable owner"
|
|
4900
4878
|
msgstr "禁用所有者"
|
|
4901
4879
|
|
|
4880
|
+
msgid "Disable realtime"
|
|
4881
|
+
msgstr "禁用即時"
|
|
4882
|
+
|
|
4902
4883
|
msgid "Disable timeout"
|
|
4903
4884
|
msgstr "禁用超时"
|
|
4904
4885
|
|
|
@@ -5013,12 +4994,15 @@ msgstr "在组和设备上显示智能规则选项卡。"
|
|
|
5013
4994
|
msgid "Display top level groups under the Groups navigator menu."
|
|
5014
4995
|
msgstr "在组导航器菜单下显示顶层组。"
|
|
5015
4996
|
|
|
4997
|
+
msgid "Displaying an approximated location on map as latitude is missing."
|
|
4998
|
+
msgstr "正在地圖上顯示近似位置,因為缺少緯度。"
|
|
4999
|
+
|
|
5000
|
+
msgid "Displaying an approximated location on map as longitude is missing."
|
|
5001
|
+
msgstr "正在地圖上顯示近似位置,因為缺少經度。"
|
|
5002
|
+
|
|
5016
5003
|
msgid "Displays a list of alarms filtered by object, severity and status"
|
|
5017
5004
|
msgstr "显示按对象、严重性和状态过滤的警报的列表"
|
|
5018
5005
|
|
|
5019
|
-
msgid "Displays a map with device position marker"
|
|
5020
|
-
msgstr "显示带有设备位置标记的地图"
|
|
5021
|
-
|
|
5022
5006
|
msgid "Displays a welcome message for Cockpit"
|
|
5023
5007
|
msgstr "显示考核中心的欢迎消息"
|
|
5024
5008
|
|
|
@@ -5466,6 +5450,9 @@ msgstr "啟用產品中資訊和通信"
|
|
|
5466
5450
|
msgid "Enable owner"
|
|
5467
5451
|
msgstr "启用所有者"
|
|
5468
5452
|
|
|
5453
|
+
msgid "Enable realtime"
|
|
5454
|
+
msgstr "啟用即時"
|
|
5455
|
+
|
|
5469
5456
|
msgid "Enable showing current value in UI (for example, on the Fieldbus widget)."
|
|
5470
5457
|
msgstr "启用在 UI 中显示当前值(例如,在 Fieldbus 小组件上)。"
|
|
5471
5458
|
|
|
@@ -6103,21 +6090,9 @@ msgstr "篩選連接器"
|
|
|
6103
6090
|
msgid "Filter device groups…"
|
|
6104
6091
|
msgstr "过滤设备组…"
|
|
6105
6092
|
|
|
6106
|
-
msgid "Filter device profiles…"
|
|
6107
|
-
msgstr "过滤设备配置文件…"
|
|
6108
|
-
|
|
6109
|
-
msgid "Filter device users"
|
|
6110
|
-
msgstr "篩選設備用戶"
|
|
6111
|
-
|
|
6112
6093
|
msgid "Filter files"
|
|
6113
6094
|
msgstr "过滤文件"
|
|
6114
6095
|
|
|
6115
|
-
msgid "Filter firmware…"
|
|
6116
|
-
msgstr "过滤固件…"
|
|
6117
|
-
|
|
6118
|
-
msgid "Filter installed software…"
|
|
6119
|
-
msgstr "过滤安装的软件…"
|
|
6120
|
-
|
|
6121
6096
|
msgid "Filter inventory roles"
|
|
6122
6097
|
msgstr "过滤库存角色"
|
|
6123
6098
|
|
|
@@ -6148,9 +6123,6 @@ msgstr "按设备类型过滤软件"
|
|
|
6148
6123
|
msgid "Filter software by name"
|
|
6149
6124
|
msgstr "按名称过滤软件"
|
|
6150
6125
|
|
|
6151
|
-
msgid "Filter software…"
|
|
6152
|
-
msgstr "过滤软件…"
|
|
6153
|
-
|
|
6154
6126
|
msgid "Filter target devices"
|
|
6155
6127
|
msgstr "过滤目标设备"
|
|
6156
6128
|
|
|
@@ -6166,9 +6138,6 @@ msgstr "过滤租户"
|
|
|
6166
6138
|
msgid "Filter text"
|
|
6167
6139
|
msgstr "过滤文本"
|
|
6168
6140
|
|
|
6169
|
-
msgid "Filter this column…"
|
|
6170
|
-
msgstr "过滤此列…"
|
|
6171
|
-
|
|
6172
6141
|
msgid "Filter users"
|
|
6173
6142
|
msgstr "过滤用户"
|
|
6174
6143
|
|
|
@@ -6233,15 +6202,11 @@ msgstr ""
|
|
|
6233
6202
|
|
|
6234
6203
|
msgid ""
|
|
6235
6204
|
"Find out more in the\n"
|
|
6236
|
-
" <a c8y-guide-href=\"users-guide/cockpit/#dashboards\">\n"
|
|
6237
|
-
" User guide`KEEP_ORIGINAL`\n"
|
|
6238
|
-
" </a>\n"
|
|
6205
|
+
" <a c8y-guide-href=\"users-guide/cockpit/#dashboards\">User guide`KEEP_ORIGINAL`</a>\n"
|
|
6239
6206
|
" ."
|
|
6240
6207
|
msgstr ""
|
|
6241
|
-
"
|
|
6242
|
-
" <a c8y-guide-href=\"users-guide/cockpit/#dashboards\">\n"
|
|
6243
|
-
" User guide\n"
|
|
6244
|
-
" </a>\n"
|
|
6208
|
+
"在 \n"
|
|
6209
|
+
" <a c8y-guide-href=\"users-guide/cockpit/#dashboards\">User guide</a>\n"
|
|
6245
6210
|
" 中詳細瞭解。"
|
|
6246
6211
|
|
|
6247
6212
|
msgid ""
|
|
@@ -6275,19 +6240,6 @@ msgstr ""
|
|
|
6275
6240
|
" </a>\n"
|
|
6276
6241
|
" 中詳細瞭解。"
|
|
6277
6242
|
|
|
6278
|
-
msgid ""
|
|
6279
|
-
"Find out more in the\n"
|
|
6280
|
-
" <a c8y-guide-href=\"users-guide/device-management/#simulator\" target=\"_blank\" rel=\"noopener noreferrer\">\n"
|
|
6281
|
-
" User guide`KEEP_ORIGINAL`\n"
|
|
6282
|
-
" </a>\n"
|
|
6283
|
-
" ."
|
|
6284
|
-
msgstr ""
|
|
6285
|
-
"在\n"
|
|
6286
|
-
" <a c8y-guide-href=\"users-guide/device-management/#simulator\" target=\"_blank\" rel=\"noopener noreferrer\">\n"
|
|
6287
|
-
" User guide\n"
|
|
6288
|
-
" </a>\n"
|
|
6289
|
-
"中詳細瞭解。"
|
|
6290
|
-
|
|
6291
6243
|
msgid ""
|
|
6292
6244
|
"Find out more in the\n"
|
|
6293
6245
|
" <a c8y-guide-href=\"reference/retention-rules/\">Reference guide`KEEP_ORIGINAL`</a>\n"
|
|
@@ -6523,13 +6475,6 @@ msgstr ""
|
|
|
6523
6475
|
" defaultRedirectUrl\n"
|
|
6524
6476
|
" }}\",建議使用後者。"
|
|
6525
6477
|
|
|
6526
|
-
msgid ""
|
|
6527
|
-
"For details refer to the\n"
|
|
6528
|
-
" <a c8y-guide-href=\"users-guide/administration/\"> User guide`KEEP_ORIGINAL` </a>."
|
|
6529
|
-
msgstr ""
|
|
6530
|
-
"有关详细信息,请参阅\n"
|
|
6531
|
-
" <a c8y-guide-href=\"users-guide/administration/\"> User guide</a>。"
|
|
6532
|
-
|
|
6533
6478
|
msgid "For example, if message type is indicated by the first byte of payload, then enter 0"
|
|
6534
6479
|
msgstr "例如,如果第一个有效负载类型表示消息类型,则输入 0"
|
|
6535
6480
|
|
|
@@ -8265,9 +8210,6 @@ msgstr "定位"
|
|
|
8265
8210
|
msgid "Location"
|
|
8266
8211
|
msgstr "位置"
|
|
8267
8212
|
|
|
8268
|
-
msgid "Location saved."
|
|
8269
|
-
msgstr "已保存位置。"
|
|
8270
|
-
|
|
8271
8213
|
msgid "Location`icons-category`"
|
|
8272
8214
|
msgstr "位置"
|
|
8273
8215
|
|
|
@@ -8747,9 +8689,6 @@ msgstr "分钟"
|
|
|
8747
8689
|
msgid "Misc"
|
|
8748
8690
|
msgstr "其他"
|
|
8749
8691
|
|
|
8750
|
-
msgid "Miscellaneous settings for the current application."
|
|
8751
|
-
msgstr "当前应用程序的其他设置。"
|
|
8752
|
-
|
|
8753
8692
|
msgid "Missing measurements of type: #{type}"
|
|
8754
8693
|
msgstr "缺少類型測量:#{type}"
|
|
8755
8694
|
|
|
@@ -9533,6 +9472,9 @@ msgstr "無匹配的微服務。"
|
|
|
9533
9472
|
msgid "No matching smart rules available."
|
|
9534
9473
|
msgstr "无匹配的智能规则可用。"
|
|
9535
9474
|
|
|
9475
|
+
msgid "No matching software available."
|
|
9476
|
+
msgstr "無匹配的軟體可用。"
|
|
9477
|
+
|
|
9536
9478
|
msgid "No measurement to display."
|
|
9537
9479
|
msgstr "没有可供显示的测量。"
|
|
9538
9480
|
|
|
@@ -12364,9 +12306,6 @@ msgstr "选择组"
|
|
|
12364
12306
|
msgid "Select icon"
|
|
12365
12307
|
msgstr "选择图标"
|
|
12366
12308
|
|
|
12367
|
-
msgid "Select icon to override default behavior"
|
|
12368
|
-
msgstr "選取圖示以覆蓋預設行為"
|
|
12369
|
-
|
|
12370
12309
|
msgid "Select if the value is BCD encoded."
|
|
12371
12310
|
msgstr "选择值是否 BCD 编码。"
|
|
12372
12311
|
|
|
@@ -13609,9 +13548,6 @@ msgstr "已创建智能组 \"{{name}}\"。"
|
|
|
13609
13548
|
msgid "Smart group filter"
|
|
13610
13549
|
msgstr "智能组过滤器"
|
|
13611
13550
|
|
|
13612
|
-
msgid "Smart group {{ name }} created."
|
|
13613
|
-
msgstr "智能组 {{ name }} 已创建。"
|
|
13614
|
-
|
|
13615
13551
|
msgid "Smart groups are groups dynamically constructed based on filtering criteria."
|
|
13616
13552
|
msgstr "智能组是根据过滤标准动态构造的组。"
|
|
13617
13553
|
|
|
@@ -14013,9 +13949,6 @@ msgstr "已成功订阅应用程序。"
|
|
|
14013
13949
|
msgid "Successfully unsubscribed from application."
|
|
14014
13950
|
msgstr "已成功取消订阅应用程序。"
|
|
14015
13951
|
|
|
14016
|
-
msgid "Sum of CPU daily usage in CPU milliseconds"
|
|
14017
|
-
msgstr "CPU 日常使用摘要(CPU 毫秒)"
|
|
14018
|
-
|
|
14019
13952
|
msgid "Sum of memory daily usage"
|
|
14020
13953
|
msgstr "内存日常使用摘要"
|
|
14021
13954
|
|
|
@@ -14445,15 +14378,6 @@ msgstr ""
|
|
|
14445
14378
|
"当前应用程序不归此租户所有。在运行设置之前,\n"
|
|
14446
14379
|
"请先克隆应用程序。"
|
|
14447
14380
|
|
|
14448
|
-
msgid "The current version of the blueprint that you are trying to install is not compatible with the platform version. Do you want to proceed?"
|
|
14449
|
-
msgstr "您嘗試安裝的藍圖的目前版本與平臺版本不相容。是否要繼續?"
|
|
14450
|
-
|
|
14451
|
-
msgid "The current version of the package \"{{ name }}\" that you are trying to install is not compatible with the platform version. Do you want to proceed?"
|
|
14452
|
-
msgstr "您嘗試安裝的包 \"{{ name }}\" 的目前版本與平臺版本不相容。是否要繼續?"
|
|
14453
|
-
|
|
14454
|
-
msgid "The current version of the plugin that you are trying to install is not compatible with the platform version. Do you want to proceed?"
|
|
14455
|
-
msgstr "您正嘗試安裝的外掛程式的目前版本與平臺版本不相容。是否要繼續?"
|
|
14456
|
-
|
|
14457
14381
|
msgid "The dashboard appearance matches the UI appearance."
|
|
14458
14382
|
msgstr "儀錶板外觀與 UI 外觀匹配。"
|
|
14459
14383
|
|
|
@@ -14940,9 +14864,6 @@ msgstr ""
|
|
|
14940
14864
|
msgid "This widget cannot be rendered because the current application does not support the following component:"
|
|
14941
14865
|
msgstr "由于当前应用程序不支持以下组件,因此无法呈现此小组件:"
|
|
14942
14866
|
|
|
14943
|
-
msgid "This widget is in sync with the dashboard time range."
|
|
14944
|
-
msgstr "此小組件與儀錶板時間範圍同步。"
|
|
14945
|
-
|
|
14946
14867
|
msgid "This will apply to data coming from specified device"
|
|
14947
14868
|
msgstr "这将应用于从指定设备接收的数据"
|
|
14948
14869
|
|
|
@@ -15660,9 +15581,6 @@ msgstr "在 1 号 RS232 接口上使用 DDCMP 列表 2"
|
|
|
15660
15581
|
msgid "Use FTL File Id 2 (default 1)"
|
|
15661
15582
|
msgstr "使用 FTL 文件 Id 2(默认 1)"
|
|
15662
15583
|
|
|
15663
|
-
msgid "Use [Enter] or <br> tag to add a new line"
|
|
15664
|
-
msgstr "使用 [Enter] 或 <br> 标签添加新行"
|
|
15665
|
-
|
|
15666
15584
|
msgid "Use alarms to create smart rules for microservice availability."
|
|
15667
15585
|
msgstr "使用警报为微服务可用性创建智能规则。"
|
|
15668
15586
|
|
|
@@ -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 ownKeys(t,e){var n,r=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)),r}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(n),!0).forEach(function(e){_defineProperty(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function _defineProperty(e,t,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"===_typeof(e)?e:String(e)}function _toPrimitive(e,t){if("object"!==_typeof(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0===n)return("string"===t?String:Number)(e);n=n.call(e,t||"default");if("object"!==_typeof(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}!function(){function e(j,E,O,e,t,n,C,D,T,A,M,$,r,R,U,B,I,z,G){return a.$inject=["$scope","$element"],{restrict:"EA",templateUrl:":::PLUGIN_PATH:::/ui/views/map2.html",scope:{multipleDevices:"&",realtime:"&",cssClass:"@",deviceId:"&",config:"&",markerTemplate:"&",controlButtons:"&",noDataFetch:"&",map:"=?",c8yLegend:"&"},link:function(e){e.$on("dashboard-change",function(){e.map&&e.map.leafletMap&&e.map.leafletMap.invalidateSize()})},controller:a};function a(i,e){var n,t={padding:[50,50]},c=[],s=!1,l=B("The map widget displays up to {{count}} devices."),a={mapCustomBaseLayers:T.getPluginService("mapCustomBaseLayers"),ecbPositionSelector:T.getPluginService("ecbPositionSelector"),mapMarkerClusterer:T.getPluginService("mapMarkerClusterer")},u=(i.map=this,e.addClass(i.cssClass),L.map(e.find(".c8y-map-internal").get(0),{attributionControl:!1}).fitBounds(L.latLngBounds(L.latLng(14,-130.3),L.latLng(53.9,112.3)))),e=(i.map.leafletMap=u,L.Browser.mobile&&(e=B("Use two fingers to move the map."),u.dragging.disable(),u._container.setAttribute("data-touch-warning-content",I.getString(e)),u._container.addEventListener("touchstart",g),u._container.addEventListener("touchmove",g),u._container.addEventListener("touchend",g),u._container.addEventListener("touchcancel",g),u._container.addEventListener("click",g)),i.map.event=i.$new(!0),i.map.markers=c,L.tileLayer("//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{noWrap:!0})),r=(e.addTo(u),a.mapMarkerClusterer&&a.mapMarkerClusterer.applyClustering({mapInternalScope:i}),i.map.tracker=new M.Tracker(i),i.tracker=i.map.tracker,i.tracker.onPaths(function(e,t){n&&u.removeLayer(n);(n=e).addTo(u),t&&h(n.getBounds())}),i.$on("$destroy",function(){i.cleanRealtime&&i.cleanRealtime(),s=!0,L.Browser.mobile&&(u._container.removeEventListener("touchstart",g),u._container.removeEventListener("touchmove",g),u._container.removeEventListener("touchend",g),u._container.removeEventListener("touchcancel",g),u._container.removeEventListener("click",g))}),L.Control.extend({options:{position:"topright"},onAdd:function(){var e=L.DomUtil.create("div");return angular.element(e).html('\n <c8y-realtime-switch\n ng-if="!realtime()"\n get-state="state()"\n on-start="startRt()"\n on-stop="stopRt()"\n ></c8y-realtime-switch>\n <c8y-refresh-btn></c8y-refresh-btn>\n '),E(e)(i),e}})),o=L.Control.extend({options:{position:"bottomright"},onAdd:function(){var e=L.DomUtil.create("div");return angular.element(e).html("<div c8y-map-legend></div>"),E(e)(i),e}}),e=L.control.layers({OSM:e}),p=i.map.layersControl=e,m=u,e=U.getBaseLayers(i.map),d=U.getOverlays(i.map),f=j.reject();function g(e){for(var t=["leaflet-control-minimap","leaflet-interactive","leaflet-popup-content","leaflet-popup-content-wrapper","leaflet-popup-close-button","leaflet-control-zoom-in","leaflet-control-zoom-out"],n=!1,r=0;r<t.length;r++)L.DomUtil.hasClass(e.target,t[r])&&(n=!0);n?L.DomUtil.hasClass(e.target,"leaflet-interactive")&&"touchmove"===e.type&&1===e.touches.length?(L.DomUtil.addClass(u._container,"touch-warning"),u.dragging.disable()):L.DomUtil.removeClass(u._container,"touch-warning"):"touchmove"!==e.type&&"touchstart"!==e.type?L.DomUtil.removeClass(u._container,"touch-warning"):1===e.touches.length?(L.DomUtil.addClass(u._container,"touch-warning"),u.dragging.disable()):(u.dragging.enable(),L.DomUtil.removeClass(u._container,"touch-warning"))}function v(){var e=i.deviceId(),e=e?function(t){var e;{var n;e=_.isArray(t)?b(t):(n=[],C.detail(t).then(T.getResData).then(function(e){n.push(e);e=j.when([]);return e=i.multipleDevices()?j.all([C.childDevices(t),C.childAssets(t)]).then(_.flattenDeep):e}).then(function(e){n=_.union(n,e);e=_(n).filter(function(e){return!A.isGroup(e)}).map("id").value();return _.isEmpty(e)?(y(),j.when(new L.featureGroup)):b(e)}))}return e}(e):b();return e.then(function(e){i.tracker.getActiveDeviceIds().length||h(e.getBounds())})}function h(e){e&&e.isValid()&&u.fitBounds(e,t)}function y(){i.devices=[],_.forEach(c,function(e){u.removeLayer(e)}),c.length=0}function b(t){function n(e){var r,a;return e.then(function(e){var t=e.statistics,n=e.paging;return r=n.next,a=t.pageSize,e}).then(function(e){return _(e).filter(function(e){var t=$.getLocationFragment(e);return!(!t||180<Math.abs(t.lng)||90<Math.abs(t.lat))||(console.warn("Device ".concat(e.name," has an invalid position!")),!1)}).reduce(function(e,t){return e[t.id]=t,e},{})}).then(function(e){return o=function(e,t,n){var e=_objectSpread({},e),r=Object.keys(e).length;e=r+Object.keys(t).length<=n?_objectSpread(_objectSpread({},e),t):(K()||z.info(I.getString(l,{count:n})),t=Object.entries(t).filter(function(e,t){return void 0!==e&&t+r<n}).reduce(function(e,t){return e[t[0]]=t[1],e},{}),_objectSpread(_objectSpread({},e),t));return e}(o,e,a),Object.keys(o).length<a&&r&&!s&&n(r()),Object.keys(o).length>=a&&r&&!K()&&z.info(I.getString(l,{count:a})),o}).then(function(e){y(),i.devices=e,_.forEach(e,function(e){var t=P(e),n=$.getLocationFragment(e),r=L.marker(L.latLng(n.lat,n.lng),{icon:t});r.on("click",function(){r.isPopupOpen()&&r.getPopup()||k(e,r)}),r.id=e.id,c.push(r)});e=new L.featureGroup(c);return e.addTo(u),e}).then(function(e){return i.map.event.$broadcast("refresh",t),e}).then(function(e){i.tracker.getActiveDeviceIds().length||h(e.getBounds())})}var e,r,o={};return i.noDataFetch()?j.reject():(delete i.filterIds,a.ecbPositionSelector?e=a.ecbPositionSelector.getPositionedDevicesByEvents():(e=t&&t.length?(r=_.uniq(t),function t(e){var n=T.PAGESIZE;var r=_.take(e,n);var a=_.drop(e,n);return C.list({ids:r.join(","),pageSize:n}).then(function(e){return a.length&&(e.paging.next=function(){return t(a)}),e})}(i.filterIds=r)):(r={__or:[{__and:[{__has:"".concat($.c8y_Position,".lat")},{__has:"".concat($.c8y_Position,".lng")}]},{__and:[{__has:"".concat($.v4e_Position,".lat")},{__has:"".concat($.v4e_Position,".lng")}]}]},C.listQuery(r,{pageSize:!(r=x("mapWidgetPageSize"))||_.isNaN(r)?100:r})),S()),n(e))}function P(e){var t=e.c8y_ActiveAlarmsStatus||{},e=_.find(["critical","major","minor","warning"],function(e){return t[e]})||"normal";return L.divIcon({className:"".concat(e,"-marker-icon"),iconSize:[25,41],iconAnchor:[12.5,41]})}function k(e,a){var n;n=e,e={fragmentType:"c8y_Position",dateFrom:"1970-01-01",dateTo:moment().add(1,"days").format("YYYY-MM-DD"),pageSize:1,source:n.id},R.list(e).then(function(e){var e=e.length?e[0].time:void 0,t=n;return i.markerTemplate()||(i.markerTemplate=w),e=O("absoluteDate")(e),t='\n <div\n c8y-map-marker\n i-mo="devices['.concat(t.id,']"\n i-template="markerTemplate()"\n i-tracker="tracker"\n last-updated="\'').concat(e,"'\"\n ></div>\n "),e=angular.element(t),E(e)(i),e.get(0)}).then(function(e){var t=a,n=t.getPopup(),r=n||L.popup({minWidth:120});return t.bindPopup(r,{offset:L.point(0,-20)}),r.setContent(e),n||t.openPopup(),r})}function w(){return"<div ng-include=\"'".concat(G,"'\"></div>")}function S(){var e=i.realtimeChannel,t="/managedobjects/*",n=i.filterIds,r=i.deviceId();if((n=r&&!n?[r]:n)&&(t="/managedobjects/".concat(n.join(","))),e){if(e===t)return;i.cleanRealtime()}e=t,i.realtimeChannel=e,D.addListener.bind(D,i.$id,e)("UPDATE",function(e,t){var n,r=$.getLocationFragment(t);r&&((n=_.find(c,{id:t.id}))&&(n.setLatLng(L.latLng(r.lat,r.lng)),n.setIcon(P(t)),r=n.getPopup())&&r._isOpen&&k(t,n),i.devices&&i.devices[t.id]&&(i.devices[t.id]=t),i.map.event.$broadcast("realtime",t))}),i.cleanRealtime=function(){D.removeSubscriber(i.$id,e)},i.map.state=function(){return D.getStatus(i.$id,e)},i.map.startRt=function(){i.noDataFetch()||(D.start(i.$id,e),i.tracker.state)||i.tracker.start()},i.map.stopRt=function(){D.stop(i.$id,e),i.tracker.state&&i.tracker.stop()},_.assign(i,{state:i.map.state,startRt:i.map.startRt,stopRt:i.map.stopRt}),i.realtime()&&!F()&&i.startRt()}a.mapCustomBaseLayers&&(f=a.mapCustomBaseLayers.create({google:!0,here:!0,bing:!0,googleSatellite:!0,hereSatellite:!0,bingSatellite:!0})),j.any(_.values(e).concat(f,_.values(d))).then(function(e){_.isEmpty(e)||p.addTo(m)}),_.forEach(e,function(e,t){e.then(function(e){p.addBaseLayer(e,t)})}),f.then(function(e){_.forEach(e,function(e){p.addBaseLayer(e.layer,e.name)})}),U.getUserOverlayPreferences().then(function(n){_.forEach(d,function(e,t){e.then(function(e){p.addOverlay(e,t),n[t]&&m.addLayer(e)})})}),u.on("overlayadd",function(e){U.setUserOverlayPreference(e,!0)}),u.on("overlayremove",function(e){U.setUserOverlayPreference(e,!1)}),i.controlButtons()&&u.addControl(new r),i.c8yLegend()&&u.addControl(new o),i.paging={refresh:!0},i.refresh=v,S(),i.$watch("deviceId()",v),i.$watch("noDataFetch()",function(e){e?i.stopRt():F()||i.startRt()})}}function x(e){return _.get(window,"C8Y_APP.".concat(e))}function F(){return x("mapWidgetRealtimeDisabled")}function K(){return x("mapWidgetHideMaxDeviceOnMapHint")}function t(n,e,r){return{restrict:"EA",scope:{iMo:"&",iTemplate:"&",iTracker:"&",lastUpdated:"="},link:function(t,e){_.assign(t,{mo:t.iMo(),tracker:_.defaults(t.iTracker(),{__gps:!1,__gsm:!1}),onTrackingChange:function(e){t.tracker.__gps||t.tracker.__gsm?t.tracker.activate(e,{gps:t.tracker.__gps,gsm:t.tracker.__gsm}):t.tracker.deactivate(e)}}),t.showTrackingOptions=!1,r.gsmTrackingAvailable(t.mo).then(function(e){t.showTrackingOptions=e}),e.html(t.iTemplate()),n(e.contents())(t)}}}t.$inject=["$compile","c8yApplication","c8yCombain"],e.$inject=["$q","$compile","$filter","$http","$timeout","$injector","c8yInventory","c8yRealtime","c8yBase","c8yGroups","c8yTracker","c8yGeo","c8yApplication","c8yEvents","c8yMapConfig","gettext","gettextCatalog","c8yAlert","MARKER_TEMPLATE"],angular.module("c8y.ui").constant("MARKER_TEMPLATE",":::PLUGIN_PATH:::/ui/views/map2-markerTemplate.html").directive("c8yMapInternal",e).directive("c8yMapMarker",t).directive("c8yMapLegend",function(){return{restrict:"EA",templateUrl:":::PLUGIN_PATH:::/ui/views/map2-legend.html"}})}();
|
|
1
|
+
"use strict";function ownKeys(t,e){var n,r=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)),r}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(n),!0).forEach(function(e){_defineProperty(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function _defineProperty(e,t,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"===_typeof(e)?e:String(e)}function _toPrimitive(e,t){if("object"!==_typeof(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0===n)return("string"===t?String:Number)(e);n=n.call(e,t||"default");if("object"!==_typeof(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}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(){function e(E,T,D,e,t,n,A,M,$,r,R,U,a,B,I,z,x,F,K){return o.$inject=["$scope","$element"],{restrict:"EA",templateUrl:":::PLUGIN_PATH:::/ui/views/map2.html",scope:{multipleDevices:"&",realtime:"&",cssClass:"@",deviceId:"&",config:"&",markerTemplate:"&",controlButtons:"&",noDataFetch:"&",map:"=?",c8yLegend:"&"},link:function(e){e.$on("dashboard-change",function(){e.map&&e.map.leafletMap&&e.map.leafletMap.invalidateSize()})},controller:o};function o(i,e){var n,t={padding:[50,50]},c=[],s=!1,l=z("The map widget displays up to {{count}} devices."),a={mapCustomBaseLayers:$.getPluginService("mapCustomBaseLayers"),ecbPositionSelector:$.getPluginService("ecbPositionSelector"),mapMarkerClusterer:$.getPluginService("mapMarkerClusterer")},u=(i.map=this,e.addClass(i.cssClass),L.map(e.find(".c8y-map-internal").get(0),{attributionControl:!1}).fitBounds(L.latLngBounds(L.latLng(14,-130.3),L.latLng(53.9,112.3)))),e=(i.map.leafletMap=u,L.Browser.mobile&&(e=z("Use two fingers to move the map."),u.dragging.disable(),u._container.setAttribute("data-touch-warning-content",x.getString(e)),u._container.addEventListener("touchstart",f),u._container.addEventListener("touchmove",f),u._container.addEventListener("touchend",f),u._container.addEventListener("touchcancel",f),u._container.addEventListener("click",f)),i.map.event=i.$new(!0),i.map.markers=c,L.tileLayer("//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{noWrap:!0})),r=(e.addTo(u),a.mapMarkerClusterer&&a.mapMarkerClusterer.applyClustering({mapInternalScope:i}),i.map.tracker=new R.Tracker(i),i.tracker=i.map.tracker,i.tracker.onPaths(function(e,t){n&&u.removeLayer(n);(n=e).addTo(u),t&&y(n.getBounds())}),i.$on("$destroy",function(){i.cleanRealtime&&i.cleanRealtime(),s=!0,L.Browser.mobile&&(u._container.removeEventListener("touchstart",f),u._container.removeEventListener("touchmove",f),u._container.removeEventListener("touchend",f),u._container.removeEventListener("touchcancel",f),u._container.removeEventListener("click",f))}),L.Control.extend({options:{position:"topright"},onAdd:function(){var e=L.DomUtil.create("div");return angular.element(e).html('\n <c8y-realtime-switch\n ng-if="!realtime()"\n get-state="state()"\n on-start="startRt()"\n on-stop="stopRt()"\n ></c8y-realtime-switch>\n <c8y-refresh-btn></c8y-refresh-btn>\n '),T(e)(i),e}})),o=L.Control.extend({options:{position:"bottomright"},onAdd:function(){var e=L.DomUtil.create("div");return angular.element(e).html("<div c8y-map-legend></div>"),T(e)(i),e}}),e=L.control.layers({OSM:e}),p=i.map.layersControl=e,d=u,e=I.getBaseLayers(i.map),m=I.getOverlays(i.map),g=E.reject();function f(e){for(var t=["leaflet-control-minimap","leaflet-interactive","leaflet-popup-content","leaflet-popup-content-wrapper","leaflet-popup-close-button","leaflet-control-zoom-in","leaflet-control-zoom-out"],n=!1,r=0;r<t.length;r++)L.DomUtil.hasClass(e.target,t[r])&&(n=!0);n?L.DomUtil.hasClass(e.target,"leaflet-interactive")&&"touchmove"===e.type&&1===e.touches.length?(L.DomUtil.addClass(u._container,"touch-warning"),u.dragging.disable()):L.DomUtil.removeClass(u._container,"touch-warning"):"touchmove"!==e.type&&"touchstart"!==e.type?L.DomUtil.removeClass(u._container,"touch-warning"):1===e.touches.length?(L.DomUtil.addClass(u._container,"touch-warning"),u.dragging.disable()):(u.dragging.enable(),L.DomUtil.removeClass(u._container,"touch-warning"))}function v(){var e=i.deviceId(),e=e?function(e){e=_.isArray(e)?h(e):e&&i.multipleDevices()?h(function(e){return{__or:[{__and:[{__or:[{id:e},{__bygroupid:e}]},{__has:"".concat(U.c8y_Position,".lat")},{__has:"".concat(U.c8y_Position,".lng")}]},{__and:[{__or:[{id:e},{__bygroupid:e}]},{__has:"".concat(U.v4e_Position,".lat")},{__has:"".concat(U.v4e_Position,".lng")}]}]}}(e)):e?h([e]):h();return e}(e):h();return e.then(function(e){i.tracker.getActiveDeviceIds().length||y(e.getBounds())})}function y(e){e&&e.isValid()&&u.fitBounds(e,t)}function h(t){function n(e){var r,a;return e.then(function(e){var t=e.statistics,n=e.paging;return r=n.next,a=t.pageSize,e}).then(function(e){return _(e).filter(function(e){var t=U.getLocationFragment(e);return!(!t||180<Math.abs(t.lng)||90<Math.abs(t.lat))||(console.warn("Device ".concat(e.name," has an invalid position!")),!1)}).reduce(function(e,t){return e[t.id]=t,e},{})}).then(function(e){return o=function(e,t,n){var e=_objectSpread({},e),r=Object.keys(e).length;e=r+Object.keys(t).length<=n?_objectSpread(_objectSpread({},e),t):(C()||F.info(x.getString(l,{count:n})),t=Object.entries(t).filter(function(e,t){return void 0!==e&&t+r<n}).reduce(function(e,t){return e[t[0]]=t[1],e},{}),_objectSpread(_objectSpread({},e),t));return e}(o,e,a),Object.keys(o).length<a&&r&&!s&&n(r()),Object.keys(o).length>=a&&r&&!C()&&F.info(x.getString(l,{count:a})),o}).then(function(e){i.devices=[],_.forEach(c,function(e){u.removeLayer(e)}),c.length=0,i.devices=e,_.forEach(e,function(e){var t=b(e),n=U.getLocationFragment(e),r=L.marker(L.latLng(n.lat,n.lng),{icon:t});r.on("click",function(){r.isPopupOpen()&&r.getPopup()||P(e,r)}),r.id=e.id,c.push(r)});e=new L.featureGroup(c);return e.addTo(u),e}).then(function(e){return i.map.event.$broadcast("refresh",t),e}).then(function(e){i.tracker.getActiveDeviceIds().length||y(e.getBounds())})}var e,r,o={};return i.noDataFetch()?E.reject():(delete i.filterIds,a.ecbPositionSelector?e=a.ecbPositionSelector.getPositionedDevicesByEvents():(e=t&&"object"===_typeof(t)&&!_.isArray(t)?A.listQuery(t,{pageSize:O()}):t&&t.length?(r=_.uniq(t),function t(e){var n=O();var r=_.take(e,n);var a=_.drop(e,n);return A.list({ids:r.join(","),pageSize:n}).then(function(e){return a.length&&(e.paging.next=function(){return t(a)}),e})}(i.filterIds=r)):(r={__or:[{__and:[{__has:"".concat(U.c8y_Position,".lat")},{__has:"".concat(U.c8y_Position,".lng")}]},{__and:[{__has:"".concat(U.v4e_Position,".lat")},{__has:"".concat(U.v4e_Position,".lng")}]}]},A.listQuery(r,{pageSize:O()})),S()),n(e))}function b(e){var t=e.c8y_ActiveAlarmsStatus||{},e=_.find(["critical","major","minor","warning"],function(e){return t[e]})||"normal";return L.divIcon({className:"".concat(e,"-marker-icon"),iconSize:[25,41],iconAnchor:[12.5,41]})}function P(e,a){var n;n=e,e={fragmentType:"c8y_Position",dateFrom:"1970-01-01",dateTo:moment().add(1,"days").format("YYYY-MM-DD"),pageSize:1,source:n.id},B.list(e).then(function(e){var e=e.length?e[0].time:void 0,t=n;return i.markerTemplate()||(i.markerTemplate=k),e=D("absoluteDate")(e),t='\n <div\n c8y-map-marker\n i-mo="devices['.concat(t.id,']"\n i-template="markerTemplate()"\n i-tracker="tracker"\n last-updated="\'').concat(e,"'\"\n ></div>\n "),e=angular.element(t),T(e)(i),e.get(0)}).then(function(e){var t=a,n=t.getPopup(),r=n||L.popup({minWidth:120});return t.bindPopup(r,{offset:L.point(0,-20)}),r.setContent(e),n||t.openPopup(),r})}function k(){return"<div ng-include=\"'".concat(K,"'\"></div>")}function S(){var e=i.realtimeChannel,t="/managedobjects/*",n=i.filterIds,r=i.deviceId();if((n=r&&!n?[r]:n)&&(t="/managedobjects/".concat(n.join(","))),e){if(e===t)return;i.cleanRealtime()}e=t,i.realtimeChannel=e,M.addListener.bind(M,i.$id,e)("UPDATE",function(e,t){var n,r=U.getLocationFragment(t);r&&((n=_.find(c,{id:t.id}))&&(n.setLatLng(L.latLng(r.lat,r.lng)),n.setIcon(b(t)),r=n.getPopup())&&r._isOpen&&P(t,n),i.devices&&i.devices[t.id]&&(i.devices[t.id]=t),i.map.event.$broadcast("realtime",t))}),i.cleanRealtime=function(){M.removeSubscriber(i.$id,e)},i.map.state=function(){return M.getStatus(i.$id,e)},i.map.startRt=function(){i.noDataFetch()||(M.start(i.$id,e),i.tracker.state)||i.tracker.start()},i.map.stopRt=function(){M.stop(i.$id,e),i.tracker.state&&i.tracker.stop()},_.assign(i,{state:i.map.state,startRt:i.map.startRt,stopRt:i.map.stopRt}),i.realtime()&&!j()&&i.startRt()}function w(e){return _.get(window,"C8Y_APP.".concat(e))}function j(){return w("mapWidgetRealtimeDisabled")}function O(){var e=w("mapWidgetPageSize");return e&&!_.isNaN(e)?e:100}function C(){return w("mapWidgetHideMaxDeviceOnMapHint")}a.mapCustomBaseLayers&&(g=a.mapCustomBaseLayers.create({google:!0,here:!0,bing:!0,googleSatellite:!0,hereSatellite:!0,bingSatellite:!0})),E.any(_.values(e).concat(g,_.values(m))).then(function(e){_.isEmpty(e)||p.addTo(d)}),_.forEach(e,function(e,t){e.then(function(e){p.addBaseLayer(e,t)})}),g.then(function(e){_.forEach(e,function(e){p.addBaseLayer(e.layer,e.name)})}),I.getUserOverlayPreferences().then(function(n){_.forEach(m,function(e,t){e.then(function(e){p.addOverlay(e,t),n[t]&&d.addLayer(e)})})}),u.on("overlayadd",function(e){I.setUserOverlayPreference(e,!0)}),u.on("overlayremove",function(e){I.setUserOverlayPreference(e,!1)}),i.controlButtons()&&u.addControl(new r),i.c8yLegend()&&u.addControl(new o),i.paging={refresh:!0},i.refresh=v,S(),i.$watch("deviceId()",v),i.$watch("noDataFetch()",function(e){e?i.stopRt():j()||i.startRt()})}}function t(n,e,r){return{restrict:"EA",scope:{iMo:"&",iTemplate:"&",iTracker:"&",lastUpdated:"="},link:function(t,e){_.assign(t,{mo:t.iMo(),tracker:_.defaults(t.iTracker(),{__gps:!1,__gsm:!1}),onTrackingChange:function(e){t.tracker.__gps||t.tracker.__gsm?t.tracker.activate(e,{gps:t.tracker.__gps,gsm:t.tracker.__gsm}):t.tracker.deactivate(e)}}),t.showTrackingOptions=!1,r.gsmTrackingAvailable(t.mo).then(function(e){t.showTrackingOptions=e}),e.html(t.iTemplate()),n(e.contents())(t)}}}t.$inject=["$compile","c8yApplication","c8yCombain"],e.$inject=["$q","$compile","$filter","$http","$timeout","$injector","c8yInventory","c8yRealtime","c8yBase","c8yGroups","c8yTracker","c8yGeo","c8yApplication","c8yEvents","c8yMapConfig","gettext","gettextCatalog","c8yAlert","MARKER_TEMPLATE"],angular.module("c8y.ui").constant("MARKER_TEMPLATE",":::PLUGIN_PATH:::/ui/views/map2-markerTemplate.html").directive("c8yMapInternal",e).directive("c8yMapMarker",t).directive("c8yMapLegend",function(){return{restrict:"EA",templateUrl:":::PLUGIN_PATH:::/ui/views/map2-legend.html"}})}();
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
ng-click="::vm.toggle(item); $event.stopPropagation()"
|
|
84
84
|
/>
|
|
85
85
|
<span></span>
|
|
86
|
-
<span class="label-text" ng-bind="::item.name | translate"></span>
|
|
86
|
+
<span class="label-text text-truncate" ng-bind="::item.name | translate"></span>
|
|
87
87
|
</label>
|
|
88
88
|
</li>
|
|
89
89
|
</ul>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";!function(){function e(i,e,l,
|
|
1
|
+
"use strict";!function(){function e(i,e,s,l,u,c,d,p){var m=this;this.downloadReportForDevice=function(e,t,r,n){t=_.get(t,"id",t),r=_(r).map(_.partial(m.createPairFromSeries,t)).value();return new m.Downloader(e,n,r).start()},this.downloadReportForDatapoints=function(e,t,r){t=_(t).filter(function(e){return!0===e.__active}).map(m.getDpRequestParams).value();return t.length?new m.Downloader(e,r,t).start():i.reject(new Error(d("At least 1 data point must be selected")))},this.createPairFromSeries=function(e,t){return{source:e,fragmentType:t}},this.getDpRequestParams=function(e){return{source:e.__target.id,valueFragmentType:e.fragment,valueFragmentSeries:e.series}},this.generateFileName=function(e,t){if(_.isEmpty(e.source&&t)||_.isEmpty(e.valueFragmentType||e.fragmentType))throw new Error("Unable to generate a file name for given data");var r=e.valueFragmentType?[e.valueFragmentType,e.valueFragmentSeries].join("."):e.fragmentType;return[e.source,r,t].join(".")},this.Downloader=function(r,n,e){var o=this,t=_.uniqBy(e,function(e){return JSON.stringify(e)});function a(e){return{text:d("Access denied."),type:"danger",detailedData:e}}this.downloadReports=function(){var e=_(t).map(o.downloadReportForDpRequestParams).value();return i.all(e).then(o.onDownloads).catch(o.onFail)},this.start=function(){return u({templateUrl:":::PLUGIN_PATH:::/ui/views/measurementsReport.html",title:d("Generating report"),controller:["$scope","$timeout",function(n,a){n.completed=0,n.total=t.length,n.reportFileName="report.zip",n.close=function(){var e,t,r;void 0!==window.navigator.msSaveBlob?(e=n.blob,t=n.reportFileName,window.navigator.msSaveBlob(e,t)):(r=n.url,a(function(){window.URL.revokeObjectURL(r)},5e3)),n.$close()},o.scope=n,o.downloadReports()}]})},this.downloadReportForDpRequestParams=function(t,e){e=o.getFilter(t,e);return s.list(e,r).then(function(e){return o.onDownload(t,e)}).catch(function(e){o.onAsyncResult(t,e)})},this.onDownload=function(e,t){return o.scope.completed+=1,t.name=m.generateFileName(e,r.name),t},this.onAsyncResult=function(e,t){return t.async?(o.scope.completed+=1,null):i.reject(t)},this.onFail=function(e){o.scope.$dismiss(),function(r){var n=i.defer();{var e;403===r.status?r.data instanceof Blob?((e=new FileReader).addEventListener("loadend",function(e){try{var t=JSON.parse(_.get(e,"srcElement.result"));n.resolve({type:"danger",text:p.getString(t.message),detailedData:t})}catch(e){n.resolve(a(r))}}),e.readAsText(r.data)):n.resolve(a(r)):n.resolve({type:"danger",text:d("An error occurred. Please try again later."),detailedData:r})}return n.promise}(e).then(c.add)},this.onDownloads=function(e){var t=e.filter(_.identity),e=e.length-t.length;return 0<e&&(e=p.getPlural(e,"You will get a CSV/Excel file for 1 series via email.","You will get CSV/Excel files for {{$count}} series via email.",{}),c.success(e)),0===t.length?i.when():l.zipFiles(t).then(function(e){o.scope.blob=e,o.scope.url=window.URL.createObjectURL(e)})},this.getFilter=function(e,t){t=_.isArray(n)?n[t]:n;return _.merge({},t,e)}}}e.$inject=["$q","$rootScope","c8yMeasurements","c8yZip","c8yModal","c8yAlert","gettext","gettextCatalog"],angular.module("c8y.ui").service("MeasurementsReportSvc",e)}();
|
|
@@ -139,9 +139,9 @@
|
|
|
139
139
|
ng-required="true"
|
|
140
140
|
/>
|
|
141
141
|
<div
|
|
142
|
-
class="c8y-messages"
|
|
143
|
-
ng-show="invalid('email')"
|
|
144
|
-
|
|
142
|
+
class="c8y-messages"
|
|
143
|
+
ng-show="invalid('email')"
|
|
144
|
+
data-cy="c8y-messages--invalid-email">
|
|
145
145
|
<small class="form-control-feedback-message">
|
|
146
146
|
{{ getErrorFeedback('email') | translate }}
|
|
147
147
|
</small>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";!function(){var e={},n=(angular.module("c8y.ui").constant("c8yRolesUiStrings",e),_.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={},n=(angular.module("c8y.ui").constant("c8yRolesUiStrings",e),_.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")}}();
|
package/core/ui/views/modal.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div class="c8y-prompt alert" ng-class="[colorStatusClass()]">
|
|
1
|
+
<div class="c8y-prompt alert" ng-class="[colorStatusClass()]" data-cy="c8y-prompt--alert">
|
|
2
2
|
<h3 class="m-b-16">
|
|
3
3
|
<i c8y-icon="{{ statusIcon() }}"></i>
|
|
4
4
|
<span ng-show="title">{{ title | translate }}</span>
|