@c8y/ng1-modules 1023.90.1 → 1023.96.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1127,6 +1127,9 @@ msgstr "添加固件补丁"
1127
1127
  msgid "Add first asset property mapping."
1128
1128
  msgstr "添加第一個资产属性映射。"
1129
1129
 
1130
+ msgid "Add first placeholder in the preview or code."
1131
+ msgstr "在预览或程式码中添加第一个占位符。"
1132
+
1130
1133
  msgid "Add fragment"
1131
1134
  msgstr "添加片段"
1132
1135
 
@@ -1268,6 +1271,9 @@ msgstr "添加或选择说明。"
1268
1271
  msgid "Add pattern"
1269
1272
  msgstr "添加模式"
1270
1273
 
1274
+ msgid "Add placeholder"
1275
+ msgstr "添加占位符"
1276
+
1271
1277
  msgid "Add policy"
1272
1278
  msgstr "添加策略"
1273
1279
 
@@ -1493,6 +1499,9 @@ msgstr "高級品牌"
1493
1499
  msgid "Advanced developer mode"
1494
1500
  msgstr "高级开发人员模式"
1495
1501
 
1502
+ msgid "Advanced editor"
1503
+ msgstr "高级编辑器"
1504
+
1496
1505
  msgid "Advanced settings"
1497
1506
  msgstr "高级设置"
1498
1507
 
@@ -1942,6 +1951,9 @@ msgstr "发生内部错误,请重试上传。"
1942
1951
  msgid "An object identifier value, typically an address identifying a device and its status."
1943
1952
  msgstr "对象标识符值,通常是标识设备及其状态的地址。"
1944
1953
 
1954
+ msgid "Analyze and suggest"
1955
+ msgstr "分析並提出建議"
1956
+
1945
1957
  msgid "Analyzing query…"
1946
1958
  msgstr "分析查詢…"
1947
1959
 
@@ -2628,6 +2640,9 @@ msgstr "之前"
2628
2640
  msgid "Below you can configure one or more OPC UA servers. The OPC UA agent will connect to these servers if they are enabled and the connection state is set to connected."
2629
2641
  msgstr "您可以在下方配置一台或多台 OPC UA 服务器。如果启用了这些服务器并将连接状态设置为已连接,则 OPC UA 代理将连接到这些服务器。"
2630
2642
 
2643
+ msgid "Best guess"
2644
+ msgstr "最合理的推測"
2645
+
2631
2646
  msgid "Billing mode"
2632
2647
  msgstr "开单模式"
2633
2648
 
@@ -2769,6 +2784,9 @@ msgstr "麵包屑扩展,强化群组间导航体验。"
2769
2784
  msgid "Browse"
2770
2785
  msgstr "瀏覽"
2771
2786
 
2787
+ msgid "Browse or drop file here…"
2788
+ msgstr "在此浏览或拖放文件…"
2789
+
2772
2790
  msgid "Browse path"
2773
2791
  msgstr "浏览路径"
2774
2792
 
@@ -3130,6 +3148,9 @@ msgstr "居中"
3130
3148
  msgid "Certificate"
3131
3149
  msgstr "证书"
3132
3150
 
3151
+ msgid "Certificate (PEM)"
3152
+ msgstr "证书 (PEM)"
3153
+
3133
3154
  msgid "Certificate ID field"
3134
3155
  msgstr "证书 ID 字段"
3135
3156
 
@@ -4351,6 +4372,9 @@ msgstr "无法添加证书。带 {{fingerprint}} 指纹的证书已存在。"
4351
4372
  msgid "Could not add identity. External ID \"{{externalId}}\" of the type \"{{type}}\" already exists."
4352
4373
  msgstr "无法添加标识。\"{{type}}\" 类型的外部 ID \"{{externalId}}\" 已存在。"
4353
4374
 
4375
+ msgid "Could not apply the pasted SVG code."
4376
+ msgstr "无法应用贴上的 SVG 程式码。"
4377
+
4354
4378
  msgid "Could not assign child devices."
4355
4379
  msgstr "無法分配子設備。"
4356
4380
 
@@ -4573,6 +4597,9 @@ msgstr "无法删除租户 \"{{tenant}}\"。请首先删除其子租户。"
4573
4597
  msgid "Could not set device protocol."
4574
4598
  msgstr "无法设置设备协议。"
4575
4599
 
4600
+ msgid "Could not subscribe to mapped data."
4601
+ msgstr "无法订阅已映射的数据。"
4602
+
4576
4603
  msgid "Could not subscribe to the microservice because another application with the same context path is already subscribed."
4577
4604
  msgstr "无法订阅微服务,因为已订阅具有同一上下文路径的另一个应用程序。"
4578
4605
 
@@ -4591,6 +4618,9 @@ msgstr "无法更新用户 \"{{username}}\"。"
4591
4618
  msgid "Could not upload the files."
4592
4619
  msgstr "无法上传文件。"
4593
4620
 
4621
+ msgid "Could not upload the selected SVG file."
4622
+ msgstr "无法上传选择的 SVG 文件。"
4623
+
4594
4624
  msgid "Could not use a reserved SQL keyword \"{{tenantId}}\" as a domain name."
4595
4625
  msgstr "无法使用保留的 SQL 关键字 \"{{tenantId}}\" 作为域名。"
4596
4626
 
@@ -4900,6 +4930,12 @@ msgstr "當前"
4900
4930
  msgid "Currently installed"
4901
4931
  msgstr "当前已安装"
4902
4932
 
4933
+ msgid "Currently saved certificate"
4934
+ msgstr "当前保存的证书"
4935
+
4936
+ msgid "Currently saved private key"
4937
+ msgstr "当前已保存的私钥"
4938
+
4903
4939
  msgid "Custom"
4904
4940
  msgstr "自定义"
4905
4941
 
@@ -6278,6 +6314,9 @@ msgstr "在组导航器菜单下显示顶层组。"
6278
6314
  msgid "Displays a customizable quick links widget"
6279
6315
  msgstr "显示可自定义的快速链接小组件"
6280
6316
 
6317
+ msgid "Displays a dynamically updated SVG image for real-time device monitoring."
6318
+ msgstr "显示一张会动态更新的 SVG 图像,用於实时监控设备。"
6319
+
6281
6320
  msgid "Displays a graph of selected data points"
6282
6321
  msgstr "顯示所選擇數據點的圖形"
6283
6322
 
@@ -6496,6 +6535,12 @@ msgstr "在表格儲存格周圍繪製邊框"
6496
6535
  msgid "Drop"
6497
6536
  msgstr "放置"
6498
6537
 
6538
+ msgid "Drop a new certificate to replace"
6539
+ msgstr "发行一张新证书以替换"
6540
+
6541
+ msgid "Drop a new private key to replace"
6542
+ msgstr "放置一個新的私钥以替换"
6543
+
6499
6544
  msgid "Drop file here"
6500
6545
  msgstr "将文件放在此处"
6501
6546
 
@@ -6508,6 +6553,12 @@ msgstr "将文件放在此处"
6508
6553
  msgid "Drop files here or click to browse"
6509
6554
  msgstr "將檔案放置在此處或按一下以瀏覽"
6510
6555
 
6556
+ msgid "Drop the certificate in PEM format."
6557
+ msgstr "請上傳 PEM 格式的证书。"
6558
+
6559
+ msgid "Drop the private key in PEM format."
6560
+ msgstr "請提供 PEM 格式的私钥。"
6561
+
6511
6562
  msgid "Due to the large number, only a subset of alarms are displayed. Use search to narrow down the number of results."
6512
6563
  msgstr "由於數量眾多,僅顯示報警的子集。請使用搜尋縮小結果數量。"
6513
6564
 
@@ -6784,6 +6835,9 @@ msgstr "啟用深色主題支援"
6784
6835
  msgid "Enable in-product information & communication"
6785
6836
  msgstr "啟用產品中資訊和通信"
6786
6837
 
6838
+ msgid "Enable mTLS authentication"
6839
+ msgstr "启用 mTLS 身份验证"
6840
+
6787
6841
  msgid "Enable message banner"
6788
6842
  msgstr "啟用消息橫幅"
6789
6843
 
@@ -6915,6 +6969,9 @@ msgstr "查询序列号"
6915
6969
  msgid "Enter address"
6916
6970
  msgstr "输入地址"
6917
6971
 
6972
+ msgid "Enter at least 3 characters to search."
6973
+ msgstr "請輸入至少 3 個字元進行搜尋。"
6974
+
6918
6975
  msgid "Enter one or more valid email addresses, separated with a comma."
6919
6976
  msgstr "输入一个或多个以逗号分隔的有效电子邮件地址。"
6920
6977
 
@@ -8028,11 +8085,11 @@ msgstr "若要连接模拟设备,请在已安装 `\n"
8028
8085
  " <a href=\"https://github.com/thin-edge/tedge-demo-container\" target=\"_blank\" rel=\"noopener noreferrer\">tedge-demo-container</a>`。"
8029
8086
 
8030
8087
  msgid "For correct application behavior you can use only \"{{ host }}\" or \"{{\n"
8031
- " defaultRedirectUrl\n"
8032
- " }}\", the latter one is recommended."
8033
- msgstr "要獲得正確的應用程式列為,您只能使用 \"{{ host }}\" 或 \"{{\n"
8034
- " defaultRedirectUrl\n"
8035
- " }}\",建議使用後者。"
8088
+ " defaultRedirectUrl\n"
8089
+ " }}\", the latter one is recommended."
8090
+ msgstr "為確保应用程序能正確運作,您只能使用「{{ host }}」或「{{\n"
8091
+ " defaultRedirectUrl\n"
8092
+ " }}」,建議使用後者。"
8036
8093
 
8037
8094
  msgid "For details refer to the\n"
8038
8095
  " <a c8y-guide-href=\"/docs/standard-tenant/standard-tenant-introduction\">\n"
@@ -8240,6 +8297,9 @@ msgstr "產生匯出"
8240
8297
  msgid "Generate public and private keys"
8241
8298
  msgstr "生成公钥和私钥"
8242
8299
 
8300
+ msgid "Generate with AI"
8301
+ msgstr "透過 AI 生成"
8302
+
8243
8303
  msgid "Generating report"
8244
8304
  msgstr "正在生成报告"
8245
8305
 
@@ -10298,11 +10358,21 @@ msgstr "主要警报"
10298
10358
  msgid "Major`alarm`"
10299
10359
  msgstr "主要"
10300
10360
 
10301
- msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{ redirectURI }}\" or to the full URIs of the used applications if the authorization server does not support patterns."
10302
- msgstr "確保授權伺服器中的「有效重定向 URI」設定為 \"{{ redirectURI }}\" 或所使用應用程式的完整 URI (如果授權伺服器不支援模式)。"
10303
-
10304
- msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{ redirectURI }}\"."
10305
- msgstr "確認授權伺服器中的「有效重定向 URI」設定為 \"{{ redirectURI }}\"。"
10361
+ msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{\n"
10362
+ " redirectURI\n"
10363
+ " }}\" or to the full URIs of the used applications if the authorization server\n"
10364
+ " does not support patterns."
10365
+ msgstr "请确保授权服务器中的「有效重定向 URI」已设置为「{{\n"
10366
+ " redirectURI\n"
10367
+ " }}」,或若授权服务器\n"
10368
+ " 不支援模式,则应设置为所使用的应用程序的完整 URI。"
10369
+
10370
+ msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{\n"
10371
+ " redirectURI\n"
10372
+ " }}\"."
10373
+ msgstr "請確認授權伺服器中的「有效重定向 URI」已設定為「{{\n"
10374
+ " redirectURI\n"
10375
+ " }}」。"
10306
10376
 
10307
10377
  msgid "Make sure that:"
10308
10378
  msgstr "確保:"
@@ -10866,9 +10936,15 @@ msgstr "此名稱已被使用。請使用其他名稱。"
10866
10936
  msgid "Name and email"
10867
10937
  msgstr "名稱和电子邮件"
10868
10938
 
10939
+ msgid "Name does not match the required format."
10940
+ msgstr "名稱不符合必需格式。"
10941
+
10869
10942
  msgid "Name is mandatory but has no restricted format or semantics."
10870
10943
  msgstr "必須填寫名稱,對格式或語義沒有限制。"
10871
10944
 
10945
+ msgid "Name must be a valid identifier (only letters, digits, underscores, or dollar signs allowed, cannot start with a digit)."
10946
+ msgstr "名稱必須為有效的識別碼(僅允許使用字母、數字、底線或美元符號,且不能以數字開頭)。"
10947
+
10872
10948
  msgid "Name must be unique among coils and discrete inputs."
10873
10949
  msgstr "线圈和离散输入中的名称必须是唯一的。"
10874
10950
 
@@ -11635,6 +11711,9 @@ msgstr "没有此范围的权限。"
11635
11711
  msgid "No permissions required."
11636
11712
  msgstr "不需要授权。"
11637
11713
 
11714
+ msgid "No placeholder mappings"
11715
+ msgstr "沒有占位符映射"
11716
+
11638
11717
  msgid "No plugin selected"
11639
11718
  msgstr "未選擇插件"
11640
11719
 
@@ -12724,12 +12803,18 @@ msgstr "密碼"
12724
12803
  msgid "Passwords do not match."
12725
12804
  msgstr "密碼不匹配。"
12726
12805
 
12806
+ msgid "Paste SVG code here"
12807
+ msgstr "請將 SVG 程式碼貼在此處"
12808
+
12727
12809
  msgid "Paste dashboard"
12728
12810
  msgstr "粘贴面板"
12729
12811
 
12730
12812
  msgid "Paste dashboard \"{{ dashboardName }}\""
12731
12813
  msgstr "粘貼儀錶板 \"{{ dashboardName }}\""
12732
12814
 
12815
+ msgid "Paste text"
12816
+ msgstr "貼上文字"
12817
+
12733
12818
  msgid "Paste the certificate in PEM format."
12734
12819
  msgstr "以 PEM 格式粘贴证书。"
12735
12820
 
@@ -12864,6 +12949,15 @@ msgstr "圓餅圖选项"
12864
12949
  msgid "Placeholder"
12865
12950
  msgstr "占位符"
12866
12951
 
12952
+ msgid "Placeholder mappings"
12953
+ msgstr "占位符映射"
12954
+
12955
+ msgid "Placeholder name"
12956
+ msgstr "占位符名稱"
12957
+
12958
+ msgid "Placeholder name is required."
12959
+ msgstr "必需填寫占位符名稱。"
12960
+
12867
12961
  msgid "Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain"
12868
12962
  msgstr "占位符:{tenant} - 已暂停租户的 ID;{tenant-domain} - 租户的域"
12869
12963
 
@@ -12903,6 +12997,9 @@ msgstr "请联系平台管理员。"
12903
12997
  msgid "Please note that this action is irreversible. Do you want to save your changes?"
12904
12998
  msgstr "请注意,此操作无法恢复。您确定要保存更改吗?"
12905
12999
 
13000
+ msgid "Please paste SVG code before applying."
13001
+ msgstr "請在应用前貼上 SVG 程式碼。"
13002
+
12906
13003
  msgid "Plugin installation"
12907
13004
  msgstr "外掛程式安裝"
12908
13005
 
@@ -13098,9 +13195,15 @@ msgstr "面板的打印屏幕"
13098
13195
  msgid "Private key"
13099
13196
  msgstr "私钥"
13100
13197
 
13198
+ msgid "Private key (PEM)"
13199
+ msgstr "私钥 (PEM)"
13200
+
13101
13201
  msgid "Private key cipher does not match"
13102
13202
  msgstr "私钥密码不匹配"
13103
13203
 
13204
+ msgid "Private key matching the client certificate, in PEM format (PKCS#8). The platform encrypts the key at rest after the first save and will return only an encrypted value on subsequent loads. Accepted file extensions: .pem, .key."
13205
+ msgstr "與客戶端证书相符的私钥,格式為 PEM(PKCS#8)。平台會在首次保存後對靜態私钥進行加密,並在後續加载時僅返回加密後的值。可接受的檔案副檔名:.pem、.key。"
13206
+
13104
13207
  msgid "Private key must be provided when \"Public/private keys\" option is selected."
13105
13208
  msgstr "选择 \"公钥/私钥\" 选项时,必须提供私钥。"
13106
13209
 
@@ -13239,6 +13342,9 @@ msgstr "提供的憑證"
13239
13342
  msgid "Provisioned certificates removed from user object: \"{{ userName }}\""
13240
13343
  msgstr "已從使用者物件移除預先配置的憑證:\"{{ userName }}\""
13241
13344
 
13345
+ msgid "Public X.509 client certificate in PEM format, issued for this tenant by a CA trusted by your authorization server. Accepted file extension: .pem."
13346
+ msgstr "由您的授權伺服器所信任的憑證授權機構(CA)為此租戶簽發的、採用 PEM 格式的公開 X.509 客戶端憑證。接受的檔案副檔名:.pem。"
13347
+
13242
13348
  msgid "Public key"
13243
13349
  msgstr "公钥"
13244
13350
 
@@ -13323,6 +13429,9 @@ msgstr "查询 WLAN 状态"
13323
13429
  msgid "Query analyzed"
13324
13430
  msgstr "查詢已分析"
13325
13431
 
13432
+ msgid "Query analyzed."
13433
+ msgstr "查詢已分析。"
13434
+
13326
13435
  msgid "Queue size"
13327
13436
  msgstr "队列大小"
13328
13437
 
@@ -13872,6 +13981,9 @@ msgstr "已刪除小組件:{{ widgetList }}。"
13872
13981
  msgid "Renamed asset property and updated references in HTML code."
13873
13982
  msgstr "已重新命名资产属性,並更新 HTML 程式碼中的引用。"
13874
13983
 
13984
+ msgid "Renamed placeholder and updated references in code."
13985
+ msgstr "已重新命名占位符,並更新程式碼中的參照。"
13986
+
13875
13987
  msgid "Render the first column (excluding computed and alarm types) as a link to the asset details."
13876
13988
  msgstr "將第一欄(不包含計算值與警報類型)呈現為资产详细信息的链接。"
13877
13989
 
@@ -14244,6 +14356,12 @@ msgstr "运行连线命令"
14244
14356
  msgid "S/N"
14245
14357
  msgstr "序列号"
14246
14358
 
14359
+ msgid "SCADA"
14360
+ msgstr "SCADA"
14361
+
14362
+ msgid "SCADA SVG agent"
14363
+ msgstr "SCADA SVG 代理程式"
14364
+
14247
14365
  msgid "SCHEDULED"
14248
14366
  msgstr "已安排"
14249
14367
 
@@ -14376,9 +14494,21 @@ msgstr "已暂停"
14376
14494
  msgid "SVG"
14377
14495
  msgstr "SVG"
14378
14496
 
14497
+ msgid "SVG and mappings updated."
14498
+ msgstr "已更新 SVG 檔案及映射。"
14499
+
14500
+ msgid "SVG code applied."
14501
+ msgstr "已应用 SVG 程式码。"
14502
+
14503
+ msgid "SVG configuration"
14504
+ msgstr "SVG 設定"
14505
+
14379
14506
  msgid "SVG content will be sanitized."
14380
14507
  msgstr "SVG 内容将清除。"
14381
14508
 
14509
+ msgid "SVG file uploaded."
14510
+ msgstr "已上传 SVG 文件。"
14511
+
14382
14512
  msgid "Sampling interval"
14383
14513
  msgstr "采样间隔时间"
14384
14514
 
@@ -14535,6 +14665,9 @@ msgstr "搜索重置。全文搜索不支持过滤。"
14535
14665
  msgid "Search results"
14536
14666
  msgstr "搜索结果"
14537
14667
 
14668
+ msgid "Search users"
14669
+ msgstr "搜尋用户"
14670
+
14538
14671
  msgid "Searching by exact match. Click for other search options:"
14539
14672
  msgstr "正在按精确匹配搜索。单击可获取其他搜索选项:"
14540
14673
 
@@ -17410,6 +17543,12 @@ msgstr "预览显示来自单一来源的原始文件结构。"
17410
17543
  msgid "The preview shows the structure of the raw file from all sources."
17411
17544
  msgstr "预览画面显示了来自全部来源的原始文件结构。"
17412
17545
 
17546
+ msgid "The private key is encrypted for security reasons."
17547
+ msgstr "基於安全考量,私钥已進行加密。"
17548
+
17549
+ msgid "The private key will be encrypted on the server after saving."
17550
+ msgstr "私钥在保存後將於伺服器上進行加密。"
17551
+
17413
17552
  msgid "The provided name is already taken."
17414
17553
  msgstr "提供的名稱已被使用。"
17415
17554
 
@@ -18632,6 +18771,9 @@ msgstr "已更新包可用性。"
18632
18771
  msgid "Updated widgets: {{ widgetList }}."
18633
18772
  msgstr "已更新小組件:{{ widgetList }}。"
18634
18773
 
18774
+ msgid "Updating SVG and mappings…"
18775
+ msgstr "更新 SVG 及映射…"
18776
+
18635
18777
  msgid "Updating global roles will force you to log out. Do you want to proceed?"
18636
18778
  msgstr "更新全局角色将强制您注销。是否要继续?"
18637
18779
 
@@ -18742,6 +18884,9 @@ msgstr "使用 * 以允许任意值。"
18742
18884
  msgid "Use [Enter] or <br> tag to add a new line"
18743
18885
  msgstr "使用 [Enter] 或 <br> 標籤添加新行"
18744
18886
 
18887
+ msgid "Use a client certificate (mTLS) instead of a client secret to authenticate the platform with the authorization server. Use this option only if the authorization server enforces certificate-based client authentication."
18888
+ msgstr "请使用客户端证书(mTLS)而非客户端密码,来让平台向授权伺服器进行身份验证。仅当授权伺服器强制执行基于证书的客户端身份验证时,才应使用此选项。"
18889
+
18745
18890
  msgid "Use alarms to create smart rules for microservice availability."
18746
18891
  msgstr "使用警报为微服务可用性创建智能规则。"
18747
18892
 
@@ -18966,6 +19111,9 @@ msgstr "用戶名和登录别名必须不同。"
18966
19111
  msgid "Username and password"
18967
19112
  msgstr "用戶名和密码"
18968
19113
 
19114
+ msgid "Username must contain at least 3 characters."
19115
+ msgstr "用户名必须至少包含 3 个字元。"
19116
+
18969
19117
  msgid "Username must not contain spaces nor slashes (\"/\", \"\\\") nor (\"+\"), (\":\"), (\"$\") signs."
18970
19118
  msgstr "用戶名不得包含空格、斜线(\"/\"、\"\\\")以及 (\"+\")、(\":\")、(\"$\") 符号。"
18971
19119
 
@@ -19369,6 +19517,9 @@ msgstr "歡迎!"
19369
19517
  msgid "What can I help you with?"
19370
19518
  msgstr "有什麼可以幫您嗎?"
19371
19519
 
19520
+ msgid "What would you like to visualize in this SCADA widget?"
19521
+ msgstr "您希望在此 SCADA 小小组件中視覺化哪些內容?"
19522
+
19372
19523
  msgid "When"
19373
19524
  msgstr "当"
19374
19525
 
@@ -19528,6 +19679,9 @@ msgstr "小组件:最近的警报"
19528
19679
  msgid "Widgets: Rotation"
19529
19680
  msgstr "小组件:旋转"
19530
19681
 
19682
+ msgid "Widgets: SCADA"
19683
+ msgstr "小组件:SCADA"
19684
+
19531
19685
  msgid "Widgets: Silo"
19532
19686
  msgstr "小组件:接收器"
19533
19687
 
@@ -20689,6 +20843,9 @@ msgstr "例如,my-tenant"
20689
20843
  msgid "e.g. myCustomOperation"
20690
20844
  msgstr "例如,myCustomOperation"
20691
20845
 
20846
+ msgid "e.g. myPlaceholder"
20847
+ msgstr "例如:myPlaceholder"
20848
+
20692
20849
  msgid "e.g. myProperty"
20693
20850
  msgstr "例如,myProperty"
20694
20851
 
@@ -21241,6 +21398,9 @@ msgstr "{{ count }} 個月前"
21241
21398
  msgid "{{ count }} patches"
21242
21399
  msgstr "{{ count }} 个补丁"
21243
21400
 
21401
+ msgid "{{ count }} placeholders"
21402
+ msgstr "{{ count }} 占位符"
21403
+
21244
21404
  msgid "{{ count }} selected"
21245
21405
  msgstr "{{ count }} 已选择"
21246
21406
 
@@ -1 +1 @@
1
- (()=>{function e(t,i,c,n,s,a,d,u,o,l){function r(e){t.device=e.device,t.devices={},t.variables=[],t.devices[e.device.id]=e.device,_.forEach(e.children,function(e){t.devices[e.id]=e}),t.variables.push(t.device),t.variables.push(t.devices)}function v(){t.reloading=!0;var e,i=y("devices");return y("device")||i?(e=t.child.config.device.id,i=i,d.all({device:s.detail(e).then(u.getResData),children:i?c.listChildren(e):[]}).then(r).then(function(){t.reloading=!1})):(t.reloading=!1,d.when())}function h(e,i){var c;!t.reloading&&t.device&&(t.device.id===i.id?(c=i,_.isEqual(c.childDevices,t.device.childDevices)&&_.isEqual(c.childAssets,t.device.childAssets)?(t.device=c,t.devices[c.id]=c):v()):(c=i,t.devices[c.id]&&(t.devices[c.id]=c)))}function f(e){return"/managedobjects/".concat(e)}function g(e){o.addListener(t.$id,f(e),o.realtimeActions().UPDATE,h),o.start(t.$id,f(e))}function p(){t.devices&&Object.keys(t.devices).forEach(function(e){o.stop(t.$id,f(e))}),t.device=null,t.devices=null}function y(e){var e=e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),i=new RegExp("\\{\\{[^\\}]*\\b".concat(e,"\\b[^\\}]*}}")),e=new RegExp('ng[\\w-]*="[^"]*\\b'.concat(e,'\\b[^"]*'));return i.test(t.child.config.html)||e.test(t.child.config.html)}function C(){var e=[];t.countersLoaded=!1,y("devicesCount")&&e.push(l.getSummary().then(function(e){t.devicesCount=e.data.deviceWithChildrenCount,t.variables.push(t.devicesCount)})),y("deviceGroupsCount")&&e.push(s.getCount({fragmentType:"c8y_IsDeviceGroup"}).then(function(e){t.deviceGroupsCount=e,t.variables.push(t.deviceGroupsCount)})),y("usersCount")&&e.push(a.mustHaveAnyRole(["ROLE_USER_MANAGEMENT_READ"]).then(i.list).then(function(e){t.usersCount=e.length,t.variables.push(t.usersCount)})),y("criticalDevicesCount")&&e.push(s.list({fragmentType:"c8y_ActiveAlarmsStatus"}).then(function(e){t.criticalDevicesCount=_.filter(e,function(e){return e.c8y_ActiveAlarmsStatus&&e.c8y_ActiveAlarmsStatus.critical}).length,t.variables.push(t.criticalDevicesCount)})),y("onlineCount")&&e.push(c.list({pageSize:1e3}).then(function(e){t.onlineCount=_.filter(e,function(e){return n.isDeviceAvailable(e)}).length})),d.all(e).then(function(){t.countersLoaded=!0}),p(),v().then(function(){t.devices&&Object.keys(t.devices).forEach(g)})}_.assign(this,{isVariableUsed:y}),t.$watch("child.config.device",function(e,i){e&&!_.isEqual(e,i)&&C()},!0),t.$watch("child.config.html",function(e,i){void 0===e||_.isEqual(e,i)||C()}),t.$on("$destroy",p),t.variables=[],C()}e.$inject=["$scope","c8yUser","c8yDevices","c8yDeviceStatus","c8yInventory","c8yPermissions","$q","c8yBase","c8yRealtime","c8yStatistics"],angular.module("c8y.parts.htmlwidget").controller("HtmlWidgetCtrl",e)})();
1
+ (()=>{function e(t,i,c,n,s,a,d,o,u,l){function r(e){t.device=e.device,t.devices={},t.variables=[],t.devices[e.device.id]=e.device,_.forEach(e.children,function(e){t.devices[e.id]=e}),t.variables.push(t.device),t.variables.push(t.devices)}function v(){t.reloading=!0;var e,i=y("devices");return y("device")||i?(e=t.child.config.device.id,i=i,d.all({device:s.detail(e).then(o.getResData),children:i?c.listChildren(e):[]}).then(r).then(function(){t.reloading=!1})):(t.reloading=!1,d.when())}function h(e,i){var c;!t.reloading&&t.device&&(t.device.id===i.id?(c=i,_.isEqual(c.childDevices,t.device.childDevices)&&_.isEqual(c.childAssets,t.device.childAssets)?(t.device=c,t.devices[c.id]=c):v()):(c=i,t.devices[c.id]&&(t.devices[c.id]=c)))}function f(e){return"/managedobjects/".concat(e)}function g(e){u.addListener(t.$id,f(e),u.realtimeActions().UPDATE,h),u.start(t.$id,f(e))}function p(){t.devices&&Object.keys(t.devices).forEach(function(e){u.stop(t.$id,f(e))}),t.device=null,t.devices=null}function y(e){var e=e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),i=new RegExp("\\{\\{[^\\}]*\\b".concat(e,"\\b[^\\}]*}}")),e=new RegExp('ng[\\w-]*="[^"]*\\b'.concat(e,'\\b[^"]*'));return i.test(t.child.config.html)||e.test(t.child.config.html)}function C(){var e=[];t.countersLoaded=!1,y("devicesCount")&&e.push(l.getSummary().then(function(e){t.devicesCount=e.data.deviceWithChildrenCount,t.variables.push(t.devicesCount)})),y("deviceGroupsCount")&&e.push(s.getCount({fragmentType:"c8y_IsDeviceGroup"}).then(function(e){t.deviceGroupsCount=e,t.variables.push(t.deviceGroupsCount)})),y("usersCount")&&e.push(a.mustHaveAnyRole(["ROLE_USER_MANAGEMENT_READ"]).then(i.list).then(function(e){t.usersCount=e.length,t.variables.push(t.usersCount)})),y("criticalDevicesCount")&&e.push(s.list({fragmentType:"c8y_ActiveAlarmsStatus"}).then(function(e){t.criticalDevicesCount=_.filter(e,function(e){return e.c8y_ActiveAlarmsStatus&&e.c8y_ActiveAlarmsStatus.critical}).length,t.variables.push(t.criticalDevicesCount)})),y("onlineCount")&&e.push(c.list({pageSize:1e3}).then(function(e){t.onlineCount=_.filter(e,function(e){return n.isDeviceAvailable(e)}).length})),d.all(e).then(function(){t.countersLoaded=!0}),p(),v().then(function(){t.devices&&Object.keys(t.devices).forEach(g)})}_.assign(this,{$scope:t,isVariableUsed:y}),t.$watch("child.config.device",function(e,i){e&&!_.isEqual(e,i)&&C()},!0),t.$watch("child.config.html",function(e,i){void 0===e||_.isEqual(e,i)||C()}),t.$on("$destroy",p),t.variables=[],C()}e.$inject=["$scope","c8yUser","c8yDevices","c8yDeviceStatus","c8yInventory","c8yPermissions","$q","c8yBase","c8yRealtime","c8yStatistics"],angular.module("c8y.parts.htmlwidget").controller("HtmlWidgetCtrl",e)})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c8y/ng1-modules",
3
- "version": "1023.90.1",
3
+ "version": "1023.96.0",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Cumulocity",
6
6
  "description": "AngularJS modules for Cumulocity IoT applications.",
package/scada/index.js CHANGED
@@ -1 +1 @@
1
- function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}(()=>{function e(e,t){function c(n){n&&"object"===_typeof(n)&&(Array.isArray(n)?n.forEach(c):Object.keys(n).forEach(function(e){var t,o;"__target"===e&&n[e]&&"object"===_typeof(n[e])?(o=(t=n[e]).id,n[e]={id:o,name:t.name,c8y_IsDevice:t.c8y_IsDevice}):c(n[e])}))}e.add({name:"SCADA",description:t("Display a configurable SVG."),templateUrl:":::PLUGIN_PATH:::/views/component.html",configTemplateUrl:":::PLUGIN_PATH:::/views/componentConfig.html",previewImage:":::PLUGIN_PATH:::/img/scada-widget-pr.png",transformConfigWithContext:["config","context","dashboard",function(e,t,o){return o.deviceType&&e.deviceIds&&(e.deviceIds=_.mapValues(e.deviceIds,_.constant(t.id)),c(e)),e}],options:{groupsSelectable:!0}})}e.$inject=["c8yComponentsProvider","gettext"],angular.module("c8y.parts.scadaWidget",[]).config(e)})();
1
+ function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}(()=>{function e(e,t){function c(n){n&&"object"===_typeof(n)&&(Array.isArray(n)?n.forEach(c):Object.keys(n).forEach(function(e){var t,o;"__target"===e&&n[e]&&"object"===_typeof(n[e])?(o=(t=n[e]).id,n[e]={id:o,name:t.name,c8y_IsDevice:t.c8y_IsDevice}):c(n[e])}))}function o(e){return e.getFeatureStatePromise("ui.scada-widget.v2").then(function(e){return!e})}o.$inject=["c8yFeatureCacheService"],e.add({name:"SCADA",description:t("Display a configurable SVG."),templateUrl:":::PLUGIN_PATH:::/views/component.html",configTemplateUrl:":::PLUGIN_PATH:::/views/componentConfig.html",previewImage:":::PLUGIN_PATH:::/img/scada-widget-pr.png",transformConfigWithContext:["config","context","dashboard",function(e,t,o){return o.deviceType&&e.deviceIds&&(e.deviceIds=_.mapValues(e.deviceIds,_.constant(t.id)),c(e)),e}],options:{groupsSelectable:!0},showIf:o})}e.$inject=["c8yComponentsProvider","gettext"],angular.module("c8y.parts.scadaWidget",[]).config(e)})();
@@ -1 +1 @@
1
- (()=>{function e(s,n,o,r,t,e,i,u,a,l,c,g){var f,d=this;function h(e){return f=e?[]:d.users,d.users=[],o.list((e=_.get(d.filters,"text"),n=(n=_.map(_.get(d.filters,"globalRoles"),"id")).length?n.join(","):void 0,{withSubusersCount:!0,username:e,groups:n,withApps:!1,withGroups:!1,withRoles:!1,onlyRoots:_.isEmpty(e)})).then(p);var n}function p(e){E(e),d.users.paging=e.paging}function E(e){var n=d.users,t=n.paging,r=o.getTfaStrategy();_.forEach(e,function(t){var e=_.find(f,{id:t.id});t.twoFactorAuthenticationEnabled||s.all({enforced:o.isTfaActive(t),strategy:r}).then(function(e){var n=e.enforced,e=e.strategy;"SMS"!==e&&e||n&&(t.twoFactorAuthenticationEnabled=n)}),e&&(t._expanded=e._expanded),_.some(n,{id:t.id})||(n=n.concat([t]))}),n.paging=t,d.users=n}function R(e){d.globalRoles=e}function A(e){return e._globalRoles=_.map(_.get(e,"groups.references"),function(e){return _.find(d.globalRoles,{id:e.group.id})}),e}function U(){o.current().then(function(e){d.canAddUser=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")||d.FEATURE_USER_HIERARCHY&&o.hasRole(e,"ROLE_USER_MANAGEMENT_CREATE"),d.canRevokeTokens=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")})}function v(e){return f=d.users,o.listAll({owner:e.id,withSubusersCount:!0}).then(E)}_.assign(d,{ROUTE_NEW_USER:t.ROUTE_NEW_USER,$onInit:function(){s.all([h(),e.global.list({pageSize:1e4}).then(R)]).then(function(){return _.forEach(d.users,A)}),t.userHierarchyActive().then(function(e){d.FEATURE_USER_HIERARCHY=e}).then(U)},loadMore:function(){d.users.paging.loading=!0,d.users.paging.next().then(p).finally(function(){d.users.paging.loading=!1})},loadUsers:h,loadSubusers:v,changeUser:function(s,e){var n="changeGlobalRoles"===e.name;return t.warnAboutUserLogOutIfNeeded(s,{rolesChanged:n}).then(function(){return t.changeUser(s,e)}).then(function(e){var n,t,r=s;return(e=e||{}).removeUser&&(d.users=_.reject(d.users,{id:r.id}),t=_.get(r,"_owner.id"),d.users=_.map(d.users,function(e){return t&&t===e.id?(e.subusersCount--,angular.copy(e)):e})),e.refresh||e.removeUser||(n=o.list({username:r.id,withSubusersCount:!0}).then(_.first).then(function(t){var r=t.id,e=_.map(d.users,function(e){var n=r===e.id;return n&&(t._expanded=e._expanded),n?A(t):e});_.assign(e,_.pick(d.users,["statistics","paging"])),d.users=e})),n=e.refresh?h():n})},showExpandCollapse:function(){return d.FEATURE_USER_HIERARCHY&&_.some(d.users,function(e){return 0<e.subusersCount||_.get(e,"_owns.length")})},collapseAll:function(){t.collapseAll(d.users)},expandAll:function(){t.expandAll(d.users),s.all(_.map(d.users,function(e){return e.subusersCount>e._owns.length?v(e).then(function(){return!0}):s.resolve(!1)})).then(function(e){_.some(e)&&n(d.expandAll)})},filters:{},applyFilters:function(){h(!0)},clearFilters:function(){d.filters={},h(!0)},isAnyFilterSelected:function(){return _.some(d.filters,_.identity)},refresh:function(){return h(!0).then(function(){return _.forEach(d.users,A)})},revokeTokens:function(){function e(){return o.current().then(function(e){return t(e)}).then(function(e){return e?r.logoutAndReloadPage():s.resolve()})}var n=g.get("c8yAuthBridgeService").getPreferredLoginOption(),t=function(e){return!(!o.hasExternalOrigin(e)&&"BASIC"===n.type)};i({title:l("Confirm log out all users?"),body:c.getString('You are about to log out all users currently logged with "OAI-Secure" or "Single sign-on redirect". The JWT tokens retrieved by all devices in the current tenant will also be invalidated. Do you want to proceed?'),status:"warning",size:"sm",labels:{ok:l("Confirm")}}).then(function(){return o.revokeTokens()}).then(e).then(function(){return u.success(l("Logged out all users and invalidated tokens."))}).catch(function(e){e&&u.danger(a.getResErrorMessage(e))})}})}e.$inject=["$q","$timeout","c8yUser","c8yUserUtil","c8yUsersUi","c8yRoles","c8yModal","c8yAlert","c8yBase","gettext","gettextCatalog","$injector"],angular.module("c8y.users").component("c8yUserListView",{templateUrl:":::PLUGIN_PATH:::/userListView/userListView.html",controller:e,controllerAs:"vm"})})();
1
+ (()=>{function e(s,t,n,o,r,i,e,u,l,a,c,g,f){var d,h=this,p=(_.assign(h,{ROUTE_NEW_USER:i.ROUTE_NEW_USER,$onInit:function(){s.all([E(),e.global.list({pageSize:1e4}).then(v)]).then(function(){return _.forEach(h.users,y)}),i.userHierarchyActive().then(function(e){h.FEATURE_USER_HIERARCHY=e}).then(U),t.$watch("vm.filters.text",function(e,n){e!==n&&(h.showSearchHint=e&&0<e.length&&e.length<3,!e||3<=e.length?p(!0):n&&3<=n.length&&p(!0,!0))})},loadMore:function(){h.users.paging.loading=!0,h.users.paging.next().then(R).finally(function(){h.users.paging.loading=!1})},loadUsers:E,loadSubusers:S,changeUser:function(s,e){var n="changeGlobalRoles"===e.name;return i.warnAboutUserLogOutIfNeeded(s,{rolesChanged:n}).then(function(){return i.changeUser(s,e)}).then(function(e){var n,t,r=s;return(e=e||{}).removeUser&&(h.users=_.reject(h.users,{id:r.id}),t=_.get(r,"_owner.id"),h.users=_.map(h.users,function(e){return t&&t===e.id?(e.subusersCount--,angular.copy(e)):e})),e.refresh||e.removeUser||(n=o.list({username:r.id,withSubusersCount:!0}).then(_.first).then(function(t){var r=t.id,e=_.map(h.users,function(e){var n=r===e.id;return n&&(t._expanded=e._expanded),n?y(t):e});_.assign(e,_.pick(h.users,["statistics","paging"])),h.users=e})),n=e.refresh?E():n})},showExpandCollapse:function(){return h.FEATURE_USER_HIERARCHY&&_.some(h.users,function(e){return 0<e.subusersCount||_.get(e,"_owns.length")})},collapseAll:function(){i.collapseAll(h.users)},expandAll:function(){i.expandAll(h.users),s.all(_.map(h.users,function(e){return e.subusersCount>e._owns.length?S(e).then(function(){return!0}):s.resolve(!1)})).then(function(e){_.some(e)&&n(h.expandAll)})},filters:{},applyFilters:function(){E(!0)},clearFilters:function(){h.filters.globalRoles=[],E(!0)},isAnyFilterSelected:function(){return 0<_.get(h.filters,"globalRoles.length",0)},refresh:function(){return E(!0).then(function(){return _.forEach(h.users,y)})},revokeTokens:function(){function e(){return o.current().then(function(e){return t(e)}).then(function(e){return e?r.logoutAndReloadPage():s.resolve()})}var n=f.get("c8yAuthBridgeService").getPreferredLoginOption(),t=function(e){return!(!o.hasExternalOrigin(e)&&"BASIC"===n.type)};u({title:c("Confirm log out all users?"),body:g.getString('You are about to log out all users currently logged with "OAI-Secure" or "Single sign-on redirect". The JWT tokens retrieved by all devices in the current tenant will also be invalidated. Do you want to proceed?'),status:"warning",size:"sm",labels:{ok:c("Confirm")}}).then(function(){return o.revokeTokens()}).then(e).then(function(){return l.success(c("Logged out all users and invalidated tokens."))}).catch(function(e){e&&l.danger(a.getResErrorMessage(e))})},onSearchKeydown:function(e){"Enter"===e.key&&(e.preventDefault(),p.cancel(),E(!0))},clearSearch:function(){h.filters.text="",p.cancel(),E(!0)}}),_.debounce(function(e,n){E(e,n),t.$applyAsync()},300));function E(e){var n=1<arguments.length&&void 0!==arguments[1]&&arguments[1];return d=e?[]:h.users,h.users=[],o.list(n?{}:(e=_.get(h.filters,"text"),n=(n=_.map(_.get(h.filters,"globalRoles"),"id")).length?n.join(","):void 0,{withSubusersCount:!0,usernameContains:e,groups:n,withApps:!1,withGroups:!1,withRoles:!1,onlyRoots:_.isEmpty(e)})).then(R)}function R(e){A(e),h.users.paging=e.paging}function A(e){var n=h.users,t=n.paging,r=o.getTfaStrategy();_.forEach(e,function(t){var e=_.find(d,{id:t.id});t.twoFactorAuthenticationEnabled||s.all({enforced:o.isTfaActive(t),strategy:r}).then(function(e){var n=e.enforced,e=e.strategy;"SMS"!==e&&e||n&&(t.twoFactorAuthenticationEnabled=n)}),e&&(t._expanded=e._expanded),_.some(n,{id:t.id})||(n=n.concat([t]))}),n.paging=t,h.users=n}function v(e){h.globalRoles=e}function y(e){return e._globalRoles=_.map(_.get(e,"groups.references"),function(e){return _.find(h.globalRoles,{id:e.group.id})}),e}function U(){o.current().then(function(e){h.canAddUser=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")||h.FEATURE_USER_HIERARCHY&&o.hasRole(e,"ROLE_USER_MANAGEMENT_CREATE"),h.canRevokeTokens=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")})}function S(e){return d=h.users,o.listAll({owner:e.id,withSubusersCount:!0}).then(A)}}e.$inject=["$q","$scope","$timeout","c8yUser","c8yUserUtil","c8yUsersUi","c8yRoles","c8yModal","c8yAlert","c8yBase","gettext","gettextCatalog","$injector"],angular.module("c8y.users").component("c8yUserListView",{templateUrl:":::PLUGIN_PATH:::/userListView/userListView.html",controller:e,controllerAs:"vm"})})();