@c8y/ng1-modules 1022.34.0 → 1022.44.3

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.
@@ -2480,6 +2480,9 @@ msgstr "品牌"
2480
2480
  msgid "Branding JSON editor"
2481
2481
  msgstr "品牌 JSON 編輯器"
2482
2482
 
2483
+ msgid "Branding assets"
2484
+ msgstr "品牌資產"
2485
+
2483
2486
  msgid "Branding base editor"
2484
2487
  msgstr "品牌基本編輯器"
2485
2488
 
@@ -2882,6 +2885,18 @@ msgstr "證書有效期少於 90 天"
2882
2885
  msgid "Certificate file"
2883
2886
  msgstr "證書檔案"
2884
2887
 
2888
+ msgid "Certificate fingerprint: \"{{ fingerprint }}\".\n"
2889
+ "Certificate subject name: \"{{ subjectName }}\"."
2890
+ msgstr "证书指纹:{{ fingerprint }}。\n"
2891
+ "证书主體名稱:{{ subjectName }}。"
2892
+
2893
+ msgid "Certificate fingerprint: \"{{ fingerprint }}\".\n"
2894
+ "Certificate subject name: \"{{ subjectName }}\".\n"
2895
+ "Expiration date: {{ expirationDate | absoluteDate }}."
2896
+ msgstr "证书指纹:{{ fingerprint }}。\n"
2897
+ "证书主體名稱:{{ subjectName }}。\n"
2898
+ "到期日期: {{ expirationDate | absoluteDate }}。"
2899
+
2885
2900
  msgid "Certificate in PEM format"
2886
2901
  msgstr "PEM 格式的证书"
2887
2902
 
@@ -2894,6 +2909,11 @@ msgstr "证书密码"
2894
2909
  msgid "Certificate saved."
2895
2910
  msgstr "证书已保存。"
2896
2911
 
2912
+ msgid "Certificate serial number: \"{{ serialNumber }}\".\n"
2913
+ "Expiration date: {{ expirationDate | absoluteDate }}."
2914
+ msgstr "证书序号:{{ serialNumber }}。\n"
2915
+ "到期日期: {{ expirationDate | absoluteDate }}。"
2916
+
2897
2917
  msgid "Certificates"
2898
2918
  msgstr "证书"
2899
2919
 
@@ -3351,6 +3371,9 @@ msgstr "单击链接以下载受影响设备的文件。"
3351
3371
  msgid "Click to add points and set the area. Drag the points to adjust."
3352
3372
  msgstr "单击可添加点并设置区域。拖动要调整的点。"
3353
3373
 
3374
+ msgid "Click to change"
3375
+ msgstr "點擊以更改"
3376
+
3354
3377
  msgid "Click to edit"
3355
3378
  msgstr "按一下以編輯"
3356
3379
 
@@ -3432,15 +3455,15 @@ msgstr "线圈(离散输出)"
3432
3455
  msgid "Collapse"
3433
3456
  msgstr "折疊"
3434
3457
 
3458
+ msgid "Collapse \"{{ assetPropertyLabel }}\""
3459
+ msgstr "折叠「{{ assetPropertyLabel }}」"
3460
+
3435
3461
  msgid "Collapse all"
3436
3462
  msgstr "全部折疊"
3437
3463
 
3438
3464
  msgid "Collapse navigator on start up"
3439
3465
  msgstr "启动时折疊导航器"
3440
3466
 
3441
- msgid "Collapse {{ assetPropertyLabel }}"
3442
- msgstr "折疊 {{ assetPropertyLabel }}"
3443
-
3444
3467
  msgid "Color"
3445
3468
  msgstr "颜色"
3446
3469
 
@@ -3531,15 +3554,15 @@ msgstr "複雜屬性。"
3531
3554
  msgid "Compressed files must have an index.html at root. URLs in the web application can be relative."
3532
3555
  msgstr "压缩文件必须在根目录中有一个 index.html。Web 应用程序中的 URL 则可以是相对的。"
3533
3556
 
3557
+ msgid "Computed properties"
3558
+ msgstr "計算屬性"
3559
+
3534
3560
  msgid "Computed property configuration"
3535
3561
  msgstr "计算的属性配置"
3536
3562
 
3537
3563
  msgid "Computed property.`tooltip`"
3538
3564
  msgstr "已計算屬性。"
3539
3565
 
3540
- msgid "Computed`properties`"
3541
- msgstr "計算"
3542
-
3543
3566
  msgid "Concepts`KEEP_ORIGINAL`"
3544
3567
  msgstr "Concepts"
3545
3568
 
@@ -3621,6 +3644,9 @@ msgstr "配置将更新。"
3621
3644
  msgid "Configurations"
3622
3645
  msgstr "配置"
3623
3646
 
3647
+ msgid "Configure"
3648
+ msgstr "設定"
3649
+
3624
3650
  msgid "Configure DHCP settings"
3625
3651
  msgstr "配置 DHCP 设置"
3626
3652
 
@@ -3636,6 +3662,9 @@ msgstr "配置列: {{label}}"
3636
3662
  msgid "Configure columns"
3637
3663
  msgstr "配置列"
3638
3664
 
3665
+ msgid "Configure computed properties"
3666
+ msgstr "設定計算屬性"
3667
+
3639
3668
  msgid "Configure computed property"
3640
3669
  msgstr "配置计算的属性"
3641
3670
 
@@ -3676,6 +3705,12 @@ msgstr "配置位置"
3676
3705
  msgid "Configure preferences"
3677
3706
  msgstr "配置首选项"
3678
3707
 
3708
+ msgid "Configure the settings below for each computed property. These configurations determine how\n"
3709
+ " the properties will be calculated and displayed. All required fields must be completed before\n"
3710
+ " you can apply the changes."
3711
+ msgstr "\n\n"
3712
+ " 請為每個計算屬性設定以下設置。這些設置將決定屬性的計算方式與显示效果。全部必需欄位皆須完整填寫後,方能应用更改。"
3713
+
3679
3714
  msgid "Configured data point not available on the selected device."
3680
3715
  msgstr "配置的資料點在所選設備上不可用。"
3681
3716
 
@@ -3943,6 +3978,9 @@ msgstr "Cookie 首选项"
3943
3978
  msgid "Cookies are important to the proper functioning of a site. To improve your website experience, we use cookies to remember log-in details and provide secure log-in, collect statistics to optimize site functionality, and deliver content tailored to your interests. Click \"Agree and proceed\" to accept cookies and go directly to the site or click \"Configure preferences\" for further details and to manage your options. You can revoke your consent at any time."
3944
3979
  msgstr "Cookie 對站點的正常運行很重要。為了改善您的網站體驗,我們使用 Cookie 來記住登入詳細資訊並提供安全登入,收集統計資料以優化網站功能,並根據您的興趣提供量身定制的內容。按一下 \"同意並繼續\" 以接受 Cookie 並直接訪問站點,或按一下 \"配寘首選項\" 以獲取更多詳細資訊並管理您的選項。您可以隨時撤銷您的同意。"
3945
3980
 
3981
+ msgid "Copied asset file path to clipboard. You can use it e.g. in custom CSS."
3982
+ msgstr "已將資產檔案路徑複製至剪貼簿。您可於例如自訂 CSS 等情境中使用此路徑。"
3983
+
3946
3984
  msgid "Copied to clipboard"
3947
3985
  msgstr "已複製到剪貼板"
3948
3986
 
@@ -6423,6 +6461,9 @@ msgstr "输入您的短信提供商提供的凭据。这将启用利用短信服
6423
6461
  msgid "Enter your email address and we'll send you a secure link to reset your password."
6424
6462
  msgstr "输入您的电子邮件地址,我们将向您发送一个安全链接以重置您的密码。"
6425
6463
 
6464
+ msgid "Enter your feedback here"
6465
+ msgstr "請在此處輸入您的意見回饋"
6466
+
6426
6467
  msgid "Enter your password"
6427
6468
  msgstr "输入您的密码"
6428
6469
 
@@ -6585,6 +6626,9 @@ msgstr "退出編輯模式"
6585
6626
  msgid "Expand"
6586
6627
  msgstr "展開"
6587
6628
 
6629
+ msgid "Expand \"{{ assetPropertyLabel }}\""
6630
+ msgstr "展开「{{ assetPropertyLabel }}」"
6631
+
6588
6632
  msgid "Expand all"
6589
6633
  msgstr "全部展開"
6590
6634
 
@@ -6597,9 +6641,6 @@ msgstr "展開導航控件"
6597
6641
  msgid "Expand node"
6598
6642
  msgstr "展開節點"
6599
6643
 
6600
- msgid "Expand {{ assetPropertyLabel }}"
6601
- msgstr "展开 {{ assetPropertyLabel }}"
6602
-
6603
6644
  msgid "Expand/collapse"
6604
6645
  msgstr "展开/折叠"
6605
6646
 
@@ -6848,6 +6889,9 @@ msgstr "未能在平台更新域。"
6848
6889
  msgid "Failed to update the connection"
6849
6890
  msgstr "无法更新连接"
6850
6891
 
6892
+ msgid "Failed to upload asset."
6893
+ msgstr "资产上传失败。"
6894
+
6851
6895
  msgid "Failure reason"
6852
6896
  msgstr "故障原因"
6853
6897
 
@@ -7427,6 +7471,9 @@ msgstr "应包括以下必填字段:{{fields}}"
7427
7471
  msgid "Font size of measurement value (px)"
7428
7472
  msgstr "测量值字体大小 (px)"
7429
7473
 
7474
+ msgid "Fonts"
7475
+ msgstr "字體"
7476
+
7430
7477
  msgid "Fonts URL"
7431
7478
  msgstr "字體 URL"
7432
7479
 
@@ -8350,6 +8397,9 @@ msgstr "如何在小組件物品中使用屬性"
8350
8397
  msgid "How would you like to proceed with sub-users when the owner is deleted?"
8351
8398
  msgstr "删除所有者时,您想对子用户做什么?"
8352
8399
 
8400
+ msgid "How would you rate your experience with this feature?"
8401
+ msgstr "您對這項功能的體驗如何?"
8402
+
8353
8403
  msgid "I/O and PLC"
8354
8404
  msgstr "I/O 和 PLC"
8355
8405
 
@@ -8459,6 +8509,9 @@ msgstr "已提取映像 \"{{imageName}}\"。"
8459
8509
  msgid "Image display"
8460
8510
  msgstr "圖像顯示"
8461
8511
 
8512
+ msgid "Images"
8513
+ msgstr "图像"
8514
+
8462
8515
  msgid "Imperial"
8463
8516
  msgstr "英制"
8464
8517
 
@@ -8840,6 +8893,9 @@ msgstr "项目"
8840
8893
  msgid "Items per page"
8841
8894
  msgstr "每页面的项目数"
8842
8895
 
8896
+ msgid "I’m open to being contacted for follow-up about my feedback"
8897
+ msgstr "我樂意接受後續聯繫,以進一步討論我的意見回饋。"
8898
+
8843
8899
  msgid "J2ME commands"
8844
8900
  msgstr "J2ME 命令"
8845
8901
 
@@ -9101,6 +9157,9 @@ msgstr "左"
9101
9157
  msgid "Legacy"
9102
9158
  msgstr "原有"
9103
9159
 
9160
+ msgid "Legacy configuration"
9161
+ msgstr "遺留配置"
9162
+
9104
9163
  msgid "Legacy configuration snapshot"
9105
9164
  msgstr "原有配置快照"
9106
9165
 
@@ -9434,6 +9493,12 @@ msgstr "登錄别名不得包含斜线(\"/\"、\"\\\")和 (\"+\")、(\":\")
9434
9493
  msgid "Login error"
9435
9494
  msgstr "登錄錯誤"
9436
9495
 
9496
+ msgid "Login image"
9497
+ msgstr "登入图像"
9498
+
9499
+ msgid "Login image file"
9500
+ msgstr "登入圖片文件"
9501
+
9437
9502
  msgid "Login options"
9438
9503
  msgstr "登錄选项"
9439
9504
 
@@ -12345,9 +12410,15 @@ msgstr "提供商名称"
12345
12410
  msgid "Provisioned"
12346
12411
  msgstr "已预配"
12347
12412
 
12413
+ msgid "Provisioned certificate stored in user object: \"{{ userName }}\""
12414
+ msgstr "已配置的证书储存於用户物件中:\"{{ userName }}\""
12415
+
12348
12416
  msgid "Provisioned certificates"
12349
12417
  msgstr "提供的憑證"
12350
12418
 
12419
+ msgid "Provisioned certificates removed from user: \"{{ userName }}\""
12420
+ msgstr "已從用户移除的預先配置证书:\"{{ userName }}\""
12421
+
12351
12422
  msgid "Public key"
12352
12423
  msgstr "公钥"
12353
12424
 
@@ -12807,9 +12878,6 @@ msgstr "註冊失敗"
12807
12878
  msgid "Regular expression"
12808
12879
  msgstr "正则表达式"
12809
12880
 
12810
- msgid "Regular`properties`"
12811
- msgstr "普通"
12812
-
12813
12881
  msgid "Regular`style`"
12814
12882
  msgstr "普通"
12815
12883
 
@@ -13161,6 +13229,9 @@ msgstr "已從 {{ restoredStateCreationDate }} 還原儀表板狀態"
13161
13229
  msgid "Result"
13162
13230
  msgstr "结果"
13163
13231
 
13232
+ msgid "Result type"
13233
+ msgstr "結果類型"
13234
+
13164
13235
  msgid "Results found"
13165
13236
  msgstr "找到结果"
13166
13237
 
@@ -13227,6 +13298,9 @@ msgstr "撤消已配置的憑證?"
13227
13298
  msgid "Revoke provisioned certificates?"
13228
13299
  msgstr "撤消已配置的憑證?"
13229
13300
 
13301
+ msgid "Revoked serials: {{ revokedSerials }}"
13302
+ msgstr "撤消的序列號: {{ revokedSerials }}"
13303
+
13230
13304
  msgid "Right"
13231
13305
  msgstr "右"
13232
13306
 
@@ -13623,6 +13697,9 @@ msgstr "從設備支援的配置清單中選取配置。"
13623
13697
  msgid "Select a configuration to preview."
13624
13698
  msgstr "選取要預覽的配置。"
13625
13699
 
13700
+ msgid "Select a data point to view its aggregated values in the time slider."
13701
+ msgstr "选择一个数据点,即可在时间滑桿中检视其聚合值。"
13702
+
13626
13703
  msgid "Select a date range"
13627
13704
  msgstr "選取日期範圍"
13628
13705
 
@@ -14741,6 +14818,9 @@ msgstr "嚴重性:{{ alarmSeverity }}"
14741
14818
  msgid "Shades"
14742
14819
  msgstr "陰影"
14743
14820
 
14821
+ msgid "Share your feedback, suggestions, or any issues you’ve encountered."
14822
+ msgstr "請分享您的意見回饋、建議或任何您遇到的問題。"
14823
+
14744
14824
  msgid "Shared User Manager"
14745
14825
  msgstr "共享的用户管理器"
14746
14826
 
@@ -15441,6 +15521,9 @@ msgstr "证书主题"
15441
15521
  msgid "Submit"
15442
15522
  msgstr "提交"
15443
15523
 
15524
+ msgid "Submit feedback"
15525
+ msgstr "提交意見回饋"
15526
+
15444
15527
  msgid "Subnet mask"
15445
15528
  msgstr "子网掩码"
15446
15529
 
@@ -15585,6 +15668,12 @@ msgstr "支持的 fieldbus 版本"
15585
15668
  msgid "Supported file types:"
15586
15669
  msgstr "支持的檔案類型:"
15587
15670
 
15671
+ msgid "Supported files: *.ico"
15672
+ msgstr "支持的文件:*.ico"
15673
+
15674
+ msgid "Supported files: *.png, *.svg, *.jpg"
15675
+ msgstr "支持的文件:*.png、*.svg、*.jpg"
15676
+
15588
15677
  msgid "Supported formats: OpenSSHv1, OpenSSHv2, PEM, SSH2.<br>Supported algorithms: RSA, DSA, ECDSA, ED25519."
15589
15678
  msgstr "支援的格式:OpenSSHv1、OpenSSHv2、PEM、SSH2。<br>支援的演算法:RSA、DSA、ECDSA、ED25519。"
15590
15679
 
@@ -15786,6 +15875,18 @@ msgstr "租户已激活。"
15786
15875
  msgid "Tenant auth configuration"
15787
15876
  msgstr "租户身份验证配置"
15788
15877
 
15878
+ msgid "Tenant certificate authority"
15879
+ msgstr "租戶憑證授權機構"
15880
+
15881
+ msgid "Tenant certificate authority (CA) created for tenant \"{{ tenantId }}\""
15882
+ msgstr "為租戶「{{ tenantId }}」创建的租户憑證授權機構 (CA)"
15883
+
15884
+ msgid "Tenant certificate authority (CA) renewal for tenant \"{{ tenantId }}\" failed"
15885
+ msgstr "租戶憑證授權機構 (CA) 為租戶「{{ tenantId }}」的更新失败"
15886
+
15887
+ msgid "Tenant certificate authority (CA) was renewed for tenant \"{{ tenantId }}\""
15888
+ msgstr "租戶憑證授權機構 (CA) 已為租戶「{{ tenantId }}」完成更新。"
15889
+
15789
15890
  msgid "Tenant created."
15790
15891
  msgstr "租户已创建。"
15791
15892
 
@@ -15876,6 +15977,9 @@ msgstr "值为零时要显示的文本"
15876
15977
  msgid "Text-based configuration"
15877
15978
  msgstr "基于文本的配置"
15878
15979
 
15980
+ msgid "Thank you for your feedback."
15981
+ msgstr "感謝您的意見回饋。"
15982
+
15879
15983
  msgid "The \"Allowed domain\" setting allows your JavaScript web application to directly communicate with the REST API.\n\n"
15880
15984
  "Options:\n"
15881
15985
  "- Enter \"*\" to allow communication from any host,\n"
@@ -15895,6 +15999,9 @@ msgstr "所上傳存檔的 \"contextPath\" 或 \"key\" 與現有應用程式不
15895
15999
  msgid "The Administration application enables account administrators to manage their users, roles, tenants, applications and business rules and lets them configure a number of settings for their account."
15896
16000
  msgstr "Administration 應用程式使帳戶管理員能夠管理其用戶、角色、租戶、應用程式和業務規則,並允許他們配置帳戶的許多設置。"
15897
16001
 
16002
+ msgid "The CA certificate has not been renewed; however, it may still have sufficient validity remaining."
16003
+ msgstr "CA 证书尚未更新;然而,其剩餘有效期可能仍足夠。"
16004
+
15898
16005
  msgid "The Cockpit application allows you to build IoT applications in minutes.\n"
15899
16006
  " To get started, connect any device to the platform.\n"
15900
16007
  " If you do not have an IoT device to hand, you can start by connecting your smartphone.\n"
@@ -17678,6 +17785,9 @@ msgstr "当您正在编辑值时,值已被更改。"
17678
17785
  msgid "Value in ms"
17679
17786
  msgstr "值(毫秒)"
17680
17787
 
17788
+ msgid "Value is applied in px"
17789
+ msgstr "值以像素为单位应用"
17790
+
17681
17791
  msgid "Value must be a full or relative URL."
17682
17792
  msgstr "值必須為完整或相對 URL。"
17683
17793
 
@@ -17753,6 +17863,9 @@ msgstr "已添加具有此路径的变量。"
17753
17863
  msgid "Variables"
17754
17864
  msgstr "变量"
17755
17865
 
17866
+ msgid "Variants"
17867
+ msgstr "變體"
17868
+
17756
17869
  msgid "Vehicle tracking device"
17757
17870
  msgstr "车辆跟踪设备"
17758
17871
 
@@ -17913,6 +18026,12 @@ msgstr "我們不收集任何個人資料。我們從您的手機中檢索的唯
17913
18026
  msgid "We recommend you to meet these conditions for a stronger password:"
17914
18027
  msgstr "我們建議您滿足以下條件以找到更強的密碼:"
17915
18028
 
18029
+ msgid "We value your feedback."
18030
+ msgstr "我們重視您的意見回饋。"
18031
+
18032
+ msgid "We want to hear from you. Share your feedback on the <strong>{{featurePreviewName}}</strong> feature preview to help us improve Cumulocity."
18033
+ msgstr "我們期待您的意見。請分享您對此功能預覽的回饋, <strong>{{featurePreviewName}}</strong>功能预览,帮助我们改进 Cumulocity。"
18034
+
17916
18035
  msgid "We will now log you out and redirect to your new domain {{vm.redirectUrl}} in <b>1</b> second."
17917
18036
  msgid_plural "We will now log you out and redirect to your new domain {{vm.redirectUrl}} in <b>{{$count}}</b> seconds."
17918
18037
  msgstr[0] "我们现将您注销并在 <b>{{$count}}</b> 秒内重定向到您的新域 {{vm.redirectUrl}}。"
@@ -18533,6 +18652,9 @@ msgstr "您的流覽器不支援視頻標記。"
18533
18652
  msgid "Your device was successfully registered."
18534
18653
  msgstr "您的设备已成功注册。"
18535
18654
 
18655
+ msgid "Your insights and suggestions directly influence the future of the platform."
18656
+ msgstr "您的見解與建議將直接影響本平台的未來發展。"
18657
+
18536
18658
  msgid "Your password is expired. Please set a new password."
18537
18659
  msgstr "您的密码已过期。请设置新密码。"
18538
18660
 
@@ -18545,6 +18667,9 @@ msgstr "您的密码将在 {{expirationTime | relativeDate}} 过期。请立即
18545
18667
  msgid "Your phone number"
18546
18668
  msgstr "您的电话号码"
18547
18669
 
18670
+ msgid "Your rating: {{ starCount }} star(s)"
18671
+ msgstr "您的評分: {{ starCount }} 星級"
18672
+
18548
18673
  msgid "Zoom in"
18549
18674
  msgstr "放大"
18550
18675
 
@@ -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(g,m,f,w,p,h,E,P,A,y,S,v,T,R){return e.$inject=["$scope","$q"],{restrict:"EA",scope:{user:"=",forms:"=",password:"=",hideUsername:"=?",hideActive:"=?",hideFirstName:"=?",hideLastName:"=?",hideEmail:"=?",hideTelephone:"=?",hideCustomProperties:"=?",hideTfaOption:"=?",hidePasswordReset:"=?",hideChangePassword:"=?",hideOwner:"=?",hideDelegate:"=?",disabledEdit:"=?",hideLanguage:"=?",userTfaEnforced:"=?",topLevelTfaEnforced:"=?"},templateUrl:":::PLUGIN_PATH:::/ui/user/editUser.directive.html",controller:e,controllerAs:"vm",link:function(e,t){$(t).find("input[name=email]").bind("blur",function(){e.emailWarning=!(e.user&&e.user.email)})}};function e(o,s){var e="maxlength",n=v("Messaging application is not subscribed."),r=["userOrigin"],i={NEWUSERNAME:{type:"validation",text:v('Username "new" is not allowed.')},PATTERN:{type:"pattern",text:v("Invalid pattern.")},PATTERN_PASSWORD:{type:"pattern",text:T.getString(A.validation.password.message)},PATTERN_USERNAME:{type:"pattern",text:T.getString(A.validation.user.message)},PATTERN_DISPLAYNAME:{type:"pattern",text:T.getString(A.validation.loginAlias.message)},SAME_AS_CURRENT_PASSWORD:{type:"same_as_current",text:v("New password can't be the same as current one.")},PASSWORD_MISSMATCH:{type:"password_missmatch",text:v("Passwords do not match.")},REQUIRED:{type:"required",text:v("This field is required.")},EMAIL:{type:"email",text:v("Invalid email address.")},PASSWORD_STRENGTH:{type:"password_strength",text:A.validation.passwordStrengthChecklist.message},INTERNATIONALPHONENUMBER_PHONE:{type:"internationalPhoneNumber",text:T.getString(A.validation.internationalPhoneNumber.message)},MAXLENGTH_FIRSTNAME:{type:e,text:"".concat(T.getString("Max length:")," 50")},MAXLENGTH_LASTNAME:{type:e,text:"".concat(T.getString("Max length:")," 50")},MAXLENGTH_USERNAME:{type:e,text:"".concat(T.getString("Max length:")," 254")},MAXLENGTH_DISPLAYNAME:{type:e,text:"".concat(T.getString("Max length:")," 254")},MAXLENGTH_PHONE:{type:e,text:"".concat(T.getString("Max length:")," 254")},MAXLENGTH_EMAIL:{type:e,text:"".concat(T.getString("Max length:")," 254")}},d=this,u=(_.assign(o,{confirmPassword:"",invalid:angular.bind(g,g.invalid,o.forms,"userForm"),isInvalidConfirmPassword:function(){var e=o.forms.userForm,t=e.password.$pristine,e=e.confirmPassword.$touched&&e.confirmPassword.$invalid;return!t&&e},changePasswordConfirm:function(){o.forms.userForm.confirmPassword&&o.forms.userForm.confirmPassword.$setValidity(i.PASSWORD_MISSMATCH.type,o.forms.userForm.confirmPassword.$viewValue===o.user.password)},getErrorFeedback:function(r){var n=o.forms.userForm[r]||{},a=[];return _.forEach(n.$error||{},function(e,t){var s;"parse"===t?o.forms.userForm.phone.$setValidity(t,!0):(t=t.toUpperCase(),s="".concat(t,"_").concat(r.toUpperCase()),e&&n.$touched&&(e=i[s]||i[t],a.push(T.getString(e.text))))}),a.join("<br>")},getUserCustomProperties:l,humanize:g.humanizeFragment,changePassword:function(){R.changeCurrentUserPassword()},isChangePasswordVisible:function(){return!o.disabledEdit&&o.changePasswordBtn&&!o.hideChangePassword&&o.user&&!o.user.sendPasswordResetEmail&&o.userCanChangePasswordAndEmail},passwordRegex:A.validation.password.pattern,tfaAvailable:!1,delegateTo:function(){m.current().then(function(e){o.user.delegatedBy=e.id}),a()},undelegate:function(){o.user.delegatedBy=null,a()},setOwner:function(e){o.user.owner=e,d.isParentDropDownOpen=!1,d.ownerHiddenForm.$setDirty()},userCanChangePasswordAndEmail:!1,requirementsFulfilled:!0,onRequirementsFulfilledChange:function(e){e=o.requirementsFulfilled=e;e||o.forms.userForm.password.$setValidity(i.PATTERN_PASSWORD.type,!0),o.forms.userForm.password.$setValidity(i.PASSWORD_STRENGTH.type,e)}}),_.assign(d,{onToggleDropdown:function(e){e&&(d.ownerDropDownInitialized=!0)},twoFactorAuthenticationCheckboxDisabled:function(){return o.topLevelTfaEnforced||o.disabledEdit||"TOTP"===d.tfaStrategy||!o.smsMicroserviceAvailable||!o.notCurrentUser&&"SMS"===d.tfaStrategy},enforceTfaCheckboxDisbaled:function(){return o.topLevelTfaEnforced||o.disabledEdit||!o.notCurrentUser||c()},messagingWarningVisible:function(){return!o.smsMicroserviceAvailable&&"SMS"===d.tfaStrategy},shouldEnableRevokeTOTPSecretButton:c}),p.getStrongPasswordSettings().then(t),o.$watch("user",function(e,t){var r,a;e&&e!==t&&(a=!(r=e).id,o.password.strength=r.passwordStrength,o.changePasswordBtn=!o.password.showPassword,o.emailWarning=!r.email,o.smsWarningPopover=n,a&&(o.userPasswordAction="sendPasswordByEmail"),delete o.confirmPassword,o.notCurrentUser=null,t=/.*/,(e=r)&&!e.id&&(t=A.validation.user.pattern),o.userNamePattern=t,o.loginAliasPattern=A.validation.loginAlias.pattern,o.hideLanguage||f.get("language").then(function(e){e&&(o.user.language={name:P.getLanguageNativeName(e),code:e}),o.languages=_.map(h.getSupportedLanguages(),function(e){return Object.assign({name:P.getLanguageNativeName(e),code:e},{})})}),y.isActivatedFor("units-conversion")&&(o.unitsConversionActive=!0),s.all({tfaAvailable:m.isTfaAvailable(),smsMicroserviceAvailable:E.isAvailable({contextPath:"messaging"}),twoFactorAuthenticationEnabled:m.isTfaActive(r),tfaStrategy:m.getTfaStrategy(),isCurrentUser:m.checkIfCurrent(r)}).then(function(e){var t=e.tfaAvailable,s=e.smsMicroserviceAvailable,r=e.twoFactorAuthenticationEnabled,n=e.tfaStrategy,e=e.isCurrentUser;o.notCurrentUser=!e,o.tfaAvailable=t,o.smsMicroserviceAvailable=!!s,d.tfaStrategy=n,o.user.twoFactorAuthenticationEnabled=!a&&r,o.userCanChangePasswordAndEmail=a||!m.hasExternalOrigin(o.user)&&e,d.userHasExternalOrigin=m.hasExternalOrigin(o.user)}),o.hideOwner||(o.ownerEditDisabled=!1,m.current().then(function(e){var t=w.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN"),s=w.hasRole(e,"ROLE_USER_MANAGEMENT_CREATE");!t&&s&&(d.rootOwner=[e],d.currentOwner=e.id,d.defaultOwner=e,a)&&(o.ownerEditDisabled=!0,r.owner=d.currentOwner)})),o.noCustomPropertiesToDisplay=_.isEmpty(l(o.user)),u())}));function l(e){var s={};return e&&e.customProperties&&_.forEach(e.customProperties,function(e,t){r.includes(t)||(s[t]="object"===_typeof(e)?angular.toJson(e,!0):e)}),s}function t(e){var t=e.enforceStrength;o.passwordStrengthEnforced=t||e.strengthValidity}function a(){o.delegationHiddenForm.$setDirty()}function c(){return"TOTP"===d.tfaStrategy&&o.user.twoFactorAuthenticationEnabled}o.$watch("user.password",function(){o.forms.userForm&&o.forms.userForm.password&&o.forms.userForm.password.$setValidity(i.SAME_AS_CURRENT_PASSWORD.type,!o.notCurrentUser&&!m.isCurrentPassword(o.forms.userForm.password.$viewValue)||o.notCurrentUser)}),o.$watch("userPasswordAction",function(e,t){e!==t&&(t={setUserPasswordAndForceToReset:{sendPasswordResetEmail:!1,shouldResetPassword:!0,showPassword:!0},setUserPassword:{sendPasswordResetEmail:!1,shouldResetPassword:!1,showPassword:!0},sendPasswordByEmail:{sendPasswordResetEmail:!0,shouldResetPassword:!1,showPassword:!1}}[e])&&(o.user.sendPasswordResetEmail=t.sendPasswordResetEmail,o.user.shouldResetPassword=t.shouldResetPassword,o.password.showPassword=t.showPassword)}),o.sendPasswordResetEmailToUser=_.debounce(function(){o.user&&o.user.email&&m.sendPasswordResetMail(o.user.email,o.user.tenantId).then(function(){S.success(v("Password reset link sent."))}).catch(function(){S.danger(v("Failed to send password reset link."))})},300)}}e.$inject=["c8yBase","c8yUser","c8yUserPreferences","c8yPermissions","c8yLoginOptions","c8yLocales","c8yApplication","LocalesUtil","c8yConfig","c8yBeta","c8yAlert","gettext","gettextCatalog","c8yModalService"],angular.module("c8y.ui").directive("c8yEditUser",e).directive("c8yUiEditUser",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(g,m,f,w,p,h,P,E,A,y,S,v,T,R){return e.$inject=["$scope","$q"],{restrict:"EA",scope:{user:"=",forms:"=",password:"=",hideUsername:"=?",hideActive:"=?",hideFirstName:"=?",hideLastName:"=?",hideEmail:"=?",hideTelephone:"=?",hideCustomProperties:"=?",hideTfaOption:"=?",hidePasswordReset:"=?",hideChangePassword:"=?",hideOwner:"=?",hideDelegate:"=?",disabledEdit:"=?",hideLanguage:"=?",userTfaEnforced:"=?",topLevelTfaEnforced:"=?"},templateUrl:":::PLUGIN_PATH:::/ui/user/editUser.directive.html",controller:e,controllerAs:"vm",link:function(e,t){$(t).find("input[name=email]").bind("blur",function(){e.emailWarning=!(e.user&&e.user.email)})}};function e(o,r){var e="maxlength",n=v("Messaging application is not subscribed."),s=["userOrigin"],i={NEWUSERNAME:{type:"validation",text:v('Username "new" is not allowed.')},PATTERN:{type:"pattern",text:v("Invalid pattern.")},PATTERN_PASSWORD:{type:"pattern",text:T.getString(A.validation.password.message)},PATTERN_USERNAME:{type:"pattern",text:T.getString(A.validation.user.message)},PATTERN_DISPLAYNAME:{type:"pattern",text:T.getString(A.validation.loginAlias.message)},SAME_AS_CURRENT_PASSWORD:{type:"same_as_current",text:v("New password can't be the same as current one.")},PASSWORD_MISSMATCH:{type:"password_missmatch",text:v("Passwords do not match.")},REQUIRED:{type:"required",text:v("This field is required.")},EMAIL:{type:"email",text:v("Invalid email address.")},PASSWORD_STRENGTH:{type:"password_strength",text:A.validation.passwordStrengthChecklist.message},INTERNATIONALPHONENUMBER_PHONE:{type:"internationalPhoneNumber",text:T.getString(A.validation.internationalPhoneNumber.message)},MAXLENGTH_FIRSTNAME:{type:e,text:"".concat(T.getString("Max length:")," 50")},MAXLENGTH_LASTNAME:{type:e,text:"".concat(T.getString("Max length:")," 50")},MAXLENGTH_USERNAME:{type:e,text:"".concat(T.getString("Max length:")," 254")},MAXLENGTH_DISPLAYNAME:{type:e,text:"".concat(T.getString("Max length:")," 254")},MAXLENGTH_PHONE:{type:e,text:"".concat(T.getString("Max length:")," 254")},MAXLENGTH_EMAIL:{type:e,text:"".concat(T.getString("Max length:")," 254")}},d=this,u=(_.assign(o,{confirmPassword:"",invalid:angular.bind(g,g.invalid,o.forms,"userForm"),isInvalidConfirmPassword:function(){var e=o.forms.userForm,t=e.password.$pristine,e=e.confirmPassword.$touched&&e.confirmPassword.$invalid;return!t&&e},changePasswordConfirm:function(){o.forms.userForm.confirmPassword&&o.forms.userForm.confirmPassword.$setValidity(i.PASSWORD_MISSMATCH.type,o.forms.userForm.confirmPassword.$viewValue===o.user.password)},getErrorFeedback:function(s){var n=o.forms.userForm[s]||{},a=[];return _.forEach(n.$error||{},function(e,t){var r;"parse"===t?o.forms.userForm.phone.$setValidity(t,!0):(t=t.toUpperCase(),r="".concat(t,"_").concat(s.toUpperCase()),e&&n.$touched&&(e=i[r]||i[t],a.push(T.getString(e.text))))}),a.join("<br>")},getUserCustomProperties:l,humanize:g.humanizeFragment,changePassword:function(){R.changeCurrentUserPassword()},isChangePasswordVisible:function(){return!o.disabledEdit&&o.changePasswordBtn&&!o.hideChangePassword&&o.user&&!o.user.sendPasswordResetEmail&&o.userCanChangePasswordAndEmail},passwordRegex:A.validation.password.pattern,tfaAvailable:!1,delegateTo:function(){m.current().then(function(e){o.user.delegatedBy=e.id}),a()},undelegate:function(){o.user.delegatedBy=null,a()},setOwner:function(e){o.user.owner=e,d.isParentDropDownOpen=!1,d.ownerHiddenForm.$setDirty()},userCanChangePasswordAndEmail:!1,requirementsFulfilled:!0,onRequirementsFulfilledChange:function(e){e=o.requirementsFulfilled=e;e||o.forms.userForm.password.$setValidity(i.PATTERN_PASSWORD.type,!0),o.forms.userForm.password.$setValidity(i.PASSWORD_STRENGTH.type,e)}}),_.assign(d,{onToggleDropdown:function(e){e&&(d.ownerDropDownInitialized=!0)},twoFactorAuthenticationCheckboxDisabled:function(){return o.topLevelTfaEnforced||o.disabledEdit||"TOTP"===d.tfaStrategy||!o.smsMicroserviceAvailable||!o.notCurrentUser&&"SMS"===d.tfaStrategy},enforceTfaCheckboxDisbaled:function(){return o.topLevelTfaEnforced||o.disabledEdit||!o.notCurrentUser||c()},messagingWarningVisible:function(){return!o.smsMicroserviceAvailable&&"SMS"===d.tfaStrategy},shouldEnableRevokeTOTPSecretButton:c}),p.getStrongPasswordSettings().then(t),o.$watch("user",function(e,t){var s,a;e&&e!==t&&(a=!(s=e).id,o.password.strength=s.passwordStrength,o.changePasswordBtn=!o.password.showPassword,o.emailWarning=!s.email,o.smsWarningPopover=n,a&&(o.userPasswordAction="sendPasswordByEmail"),delete o.confirmPassword,o.notCurrentUser=null,t=/.*/,(e=s)&&!e.id&&(t=A.validation.user.pattern),o.userNamePattern=t,o.loginAliasPattern=A.validation.loginAlias.pattern,o.hideLanguage||f.get("language").then(function(e){e&&(o.user.language={name:E.getLanguageNativeName(e),code:e}),o.languages=_.map(h.getSupportedLanguages(),function(e){return Object.assign({name:E.getLanguageNativeName(e),code:e},{})})}),y.isActivatedFor("units-conversion")&&(o.unitsConversionActive=!0),r.all({tfaAvailable:m.isTfaAvailable(),smsMicroserviceAvailable:P.isAvailable({contextPath:"messaging"}),twoFactorAuthenticationEnabled:m.isTfaActive(s),tfaStrategy:m.getTfaStrategy(),isCurrentUser:m.checkIfCurrent(s)}).then(function(e){var t=e.tfaAvailable,r=e.smsMicroserviceAvailable,s=e.twoFactorAuthenticationEnabled,n=e.tfaStrategy,e=e.isCurrentUser;o.notCurrentUser=!e,o.tfaAvailable=t,o.smsMicroserviceAvailable=!!r,d.tfaStrategy=n,o.user.twoFactorAuthenticationEnabled=!a&&s,o.userCanChangePasswordAndEmail=a||!m.hasExternalOrigin(o.user)&&e,d.userHasExternalOrigin=m.hasExternalOrigin(o.user)}),o.hideOwner||(o.ownerEditDisabled=!1,m.current().then(function(e){var t=w.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN"),r=w.hasRole(e,"ROLE_USER_MANAGEMENT_CREATE");!t&&r&&(d.rootOwner=[e],d.currentOwner=e.id,d.defaultOwner=e,a)&&(o.ownerEditDisabled=!0,s.owner=d.currentOwner)})),o.noCustomPropertiesToDisplay=_.isEmpty(l(o.user)),u())}));function l(e){var r={};return e&&e.customProperties&&_.forEach(e.customProperties,function(e,t){s.includes(t)||(r[t]="object"===_typeof(e)?angular.toJson(e,!0):e)}),r}function t(e){var t=e.enforceStrength;o.passwordStrengthEnforced=t||e.strengthValidity}function a(){o.delegationHiddenForm.$setDirty()}function c(){return"TOTP"===d.tfaStrategy&&o.user.twoFactorAuthenticationEnabled}o.$watch("user.password",function(){o.forms.userForm&&o.forms.userForm.password&&o.forms.userForm.password.$setValidity(i.SAME_AS_CURRENT_PASSWORD.type,!o.notCurrentUser&&!m.isCurrentPassword(o.forms.userForm.password.$viewValue)||o.notCurrentUser)}),o.$watch("userPasswordAction",function(e,t){e!==t&&(t={setUserPasswordAndForceToReset:{sendPasswordResetEmail:!1,shouldResetPassword:!0,showPassword:!0},setUserPassword:{sendPasswordResetEmail:!1,shouldResetPassword:!1,showPassword:!0},sendPasswordByEmail:{sendPasswordResetEmail:!0,shouldResetPassword:!1,showPassword:!1}}[e])&&(o.user.sendPasswordResetEmail=t.sendPasswordResetEmail,o.user.shouldResetPassword=t.shouldResetPassword,o.password.showPassword=t.showPassword)}),o.sendPasswordResetEmailToUser=_.debounce(function(){o.user&&o.user.email&&m.sendPasswordResetMail(o.user.email,o.user.tenantId).then(function(){S.success(v("Password reset link sent."))}).catch(function(){S.danger(v("Failed to send password reset link."))})},300)}}e.$inject=["c8yBase","c8yUser","c8yUserPreferences","c8yPermissions","c8yLoginOptions","c8yLocales","c8yApplication","LocalesUtil","c8yConfig","c8yBeta","c8yAlert","gettext","gettextCatalog","c8yChangeCurrentUserPasswordService"],angular.module("c8y.ui").directive("c8yEditUser",e).directive("c8yUiEditUser",e)})();
@@ -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(i,u,t,s,c,n,e,r,o,a,l,f,d,y){return w.$inject=["options","$uibModalInstance"],{askForPassword:function(){try{return i.get("c8yPasswordConfirm").confirmPassword().toPromise()}catch(e){return u.resolve(!0)}},currentPassword:function(){return i.get("c8yPasswordConfirm").currentPassword().toPromise().then(function(e){return null===e?u.reject():u.resolve(e)})},warnIfPasswordExpiresSoon:function(){var e="passwordExpirationAlertsDisplayed";function a(e,t){return!e||moment(e).isBefore(moment(t))}return u.all({user:c.current(),expirationAlertsDisplayedPreference:n.get(e),validityLimitInDays:r.detailValue({category:"password",key:"limit.validity"},0)}).then(function(e){var t,n,r=e.user,o=e.validityLimitInDays,e=e.expirationAlertsDisplayedPreference||{LESS_THAN_WEEK:null,LESS_THAN_DAY:null};return 0!==o&&(o=moment(r.lastPasswordChange).add(o,"days"),n=!1,(t=moment.duration(o.diff(moment())).asDays())<=1&&a(e.LESS_THAN_DAY,r.lastPasswordChange)?(n=!0,e.LESS_THAN_DAY=moment().format(s.dateFullFormat)):t<=7&&a(e.LESS_THAN_WEEK,r.lastPasswordChange)&&(n=!0,e.LESS_THAN_WEEK=moment().format(s.dateFullFormat)),n)&&l.warning(d.getString("Your password will expire {{expirationTime | relativeDate}}. Consider changing password now.",{expirationTime:o})),e}).then(_.partial(n.set,e))},createUserFlatTree:function(e){return g(m(e))},buildUserTree:m,flattenTree:g,search:function(e,t){var n=["userName","lastName","firstName","email","phone"],r=_.constant(!0),o=_.constant(!0);{var a;e&&(a=new RegExp(e,"i"),r=function(t){return _.some(n,function(e){return a.test(t[e])})})}{var i;t&&t.length&&(i=_.reduce(t,function(e,t){return e[t.id]=!0,e},{}),o=function(e){return _.some(e.groups.references,function(e){return i[_.get(e,"group.id")]})})}return function(e){return r(e)&&o(e)}},selectUserDialog:function(e){return t.open({templateUrl:":::PLUGIN_PATH:::/ui/user/selectUser.modal.html",controllerAs:"vm",ariaLabelledBy:"modal-title",ariaDescribedBy:"modal-body",controller:w,resolve:{options:_.constant(e)}}).result},userHierarchyActive:_.once(function(){return e.listByUser().then(function(e){return!!_.find(e,{key:"c8y-feature-user-hierarchy"})})}),hideUsers:function(e,t){function n(){var t=_.keyBy(r,"id");return _.filter(e,function(e){return t[e.owner]&&!t[e.id]})}var r=_(_.isArray(t)?t:[t]).map(p(e)).value();for(;n().length;)r=_.union(r,n());return _.uniq(r)},mapToUsersInMemory:p,canUserManageTenant:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.user,n=e.tenant,r=e.mustBeTopTenant,o=i.get("c8yPermissions"),a=i.get("c8yTenant");return u.all({user:t||c.current(),tenant:n||a.current()}).then(function(e){var t=a.isTopTenant(e.tenant.name),n=_.get(e.tenant,"allowCreateTenants");return o.hasRole(e.user,"ROLE_TENANT_MANAGEMENT_READ")&&(r?t:t||n)})},requireLogout:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:angular.noop;return a({title:f("Logout required"),body:f("You must log out to apply your changes. Do you want to proceed?"),status:"warning",labels:{ok:f("Confirm and log out"),cancel:f("Cancel")},dismissValue:"canceled"}).then(e).then(h)},logoutAndReloadPage:h};function m(t){e=t,n=_.keyBy(e,"id");var n,e=_.reject(e,function(e){return e.owner&&!n[e.owner]&&delete e.owner,e.owner}),r=_.keyBy(t,"id");return _.forEach(t,function(e){e._owns=_.filter(t,{owner:e.id}),e._owner=_.get(r,e.owner)}),e}function p(n){return function(e){var t;return"string"==typeof e&&(t=e),"object"===_typeof(e)&&(t=e.userName),_.find(n,{userName:t})}}function g(e,t,n){var n=n||[],e=_.sortBy(e,["id","lastName"]),r=t||0;return _.reduce(e,function(e,t){return t._depth=r,e.push(t),g(t._owns,r+1,e)},n)}function w(e,t){_.assign(this,{textOk:f("Select"),textCancel:f("Cancel")},e,t)}function h(){return o.logout().then(function(e){e&&e.url?y.location.href=e.url:y.location.reload()})}}e.$inject=["$injector","$q","$uibModal","c8yBase","c8yUser","c8yUserPreferences","c8yApplication","c8ySettings","c8yAuth","c8yModal","c8yAlert","gettext","gettextCatalog","$window"],angular.module("c8y.ui").factory("c8yUserUtil",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(i,u,t,s,c,n,e,r,o,a,l,f,d,y){return w.$inject=["options","$uibModalInstance"],{askForPassword:function(){try{return i.get("c8yPasswordConfirm").confirmPassword().toPromise()}catch(e){return u.resolve(!0)}},currentPassword:function(){return i.get("c8yPasswordConfirm").currentPassword().toPromise().then(function(e){return null===e?u.reject():u.resolve(e)})},warnIfPasswordExpiresSoon:function(){var e="passwordExpirationAlertsDisplayed";function a(e,t){return!e||moment(e).isBefore(moment(t))}return c.current().then(function(o){return"OAUTH2"===_.get(o,"customProperties.userOrigin")?u.resolve():u.all({expirationAlertsDisplayedPreference:n.get(e),validityLimitInDays:r.detailValue({category:"password",key:"limit.validity"},0)}).then(function(e){var t,n,r=e.expirationAlertsDisplayedPreference,e=e.validityLimitInDays,r=r||{LESS_THAN_WEEK:null,LESS_THAN_DAY:null};return 0!==e&&(e=moment(o.lastPasswordChange).add(e,"days"),n=!1,(t=moment.duration(e.diff(moment())).asDays())<=1&&a(r.LESS_THAN_DAY,o.lastPasswordChange)?(n=!0,r.LESS_THAN_DAY=moment().format(s.dateFullFormat)):t<=7&&a(r.LESS_THAN_WEEK,o.lastPasswordChange)&&(n=!0,r.LESS_THAN_WEEK=moment().format(s.dateFullFormat)),n)&&l.warning(d.getString("Your password will expire {{expirationTime | relativeDate}}. Consider changing password now.",{expirationTime:e})),r}).then(_.partial(n.set,e))})},createUserFlatTree:function(e){return g(m(e))},buildUserTree:m,flattenTree:g,search:function(e,t){var n=["userName","lastName","firstName","email","phone"],r=_.constant(!0),o=_.constant(!0);{var a;e&&(a=new RegExp(e,"i"),r=function(t){return _.some(n,function(e){return a.test(t[e])})})}{var i;t&&t.length&&(i=_.reduce(t,function(e,t){return e[t.id]=!0,e},{}),o=function(e){return _.some(e.groups.references,function(e){return i[_.get(e,"group.id")]})})}return function(e){return r(e)&&o(e)}},selectUserDialog:function(e){return t.open({templateUrl:":::PLUGIN_PATH:::/ui/user/selectUser.modal.html",controllerAs:"vm",ariaLabelledBy:"modal-title",ariaDescribedBy:"modal-body",controller:w,resolve:{options:_.constant(e)}}).result},userHierarchyActive:_.once(function(){return e.listByUser().then(function(e){return!!_.find(e,{key:"c8y-feature-user-hierarchy"})})}),hideUsers:function(e,t){function n(){var t=_.keyBy(r,"id");return _.filter(e,function(e){return t[e.owner]&&!t[e.id]})}var r=_(_.isArray(t)?t:[t]).map(p(e)).value();for(;n().length;)r=_.union(r,n());return _.uniq(r)},mapToUsersInMemory:p,canUserManageTenant:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.user,n=e.tenant,r=e.mustBeTopTenant,o=i.get("c8yPermissions"),a=i.get("c8yTenant");return u.all({user:t||c.current(),tenant:n||a.current()}).then(function(e){var t=a.isTopTenant(e.tenant.name),n=_.get(e.tenant,"allowCreateTenants");return o.hasRole(e.user,"ROLE_TENANT_MANAGEMENT_READ")&&(r?t:t||n)})},requireLogout:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:angular.noop;return a({title:f("Logout required"),body:f("You must log out to apply your changes. Do you want to proceed?"),status:"warning",labels:{ok:f("Confirm and log out"),cancel:f("Cancel")},dismissValue:"canceled"}).then(e).then(h)},logoutAndReloadPage:h};function m(t){e=t,n=_.keyBy(e,"id");var n,e=_.reject(e,function(e){return e.owner&&!n[e.owner]&&delete e.owner,e.owner}),r=_.keyBy(t,"id");return _.forEach(t,function(e){e._owns=_.filter(t,{owner:e.id}),e._owner=_.get(r,e.owner)}),e}function p(n){return function(e){var t;return"string"==typeof e&&(t=e),"object"===_typeof(e)&&(t=e.userName),_.find(n,{userName:t})}}function g(e,t,n){var n=n||[],e=_.sortBy(e,["id","lastName"]),r=t||0;return _.reduce(e,function(e,t){return t._depth=r,e.push(t),g(t._owns,r+1,e)},n)}function w(e,t){_.assign(this,{textOk:f("Select"),textCancel:f("Cancel")},e,t)}function h(){return o.logout().then(function(e){e&&e.url?y.location.href=e.url:y.location.reload()})}}e.$inject=["$injector","$q","$uibModal","c8yBase","c8yUser","c8yUserPreferences","c8yApplication","c8ySettings","c8yAuth","c8yModal","c8yAlert","gettext","gettextCatalog","$window"],angular.module("c8y.ui").factory("c8yUserUtil",e)})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c8y/ng1-modules",
3
- "version": "1022.34.0",
3
+ "version": "1022.44.3",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Cumulocity",
6
6
  "description": "AngularJS modules for Cumulocity IoT applications.",
@@ -1 +1 @@
1
- (()=>{function e(p,v,u,f,m){return{require:"ngModel",restrict:"EA",link:function(i,a,e,n){var c,s,r;function t(){var e,t;r=!1,(s=n.$viewValue)?(c=i.$new(!0),_.forEach(i.mapping,function(e,t){Object.defineProperty(c,t,{enumerable:!0,get:_.partial(d,t)})}),_.assign(c,{goToGroupDetails:o,goToDeviceDetails:l,getActiveAlarmsStatusClass:g,isReady:_.constant(!0)}),"none"===i.sanitizationOption&&(r=!0),e=angular.element('<div ng-if="isReady()" style="width:100%;height:100%;transform: translateZ(0);"></div>'),t=$.parseHTML(s,void 0,r),$(t).is("svg")?(e.append($(t).filter("svg")),n.$setValidity("c8y-scada-svg",!0)):(e.html('<div class="alert-warning" translate style="padding: 20px;">'.concat(m("Invalid SVG"),"</div>")),n.$setValidity("c8y-scada-svg",!1)),p(e)(c),a.html(""),a.append(e)):n.$setValidity("c8y-scada-svg",!1)}function d(t){var e=i.mapping[t],a=_.find(i.devices,function(e){return i.deviceIds[t]===e.id});return f.getValueForMapping(a,e)}function o(e){v.path("/group/".concat(e))}function l(e){v.path("/device/".concat(e))}function g(e){return _.toLower(u.getHighestSeverityFromAlarmsStatus(e))||"none"}n.$render=t,i.$watch("mapping",t),i.$watch("deviceIds",t,!0)},scope:{mapping:"=",devices:"=",deviceIds:"=",sanitizationOption:"=?"},replace:!1}}e.$inject=["$compile","$location","c8yAlarms","ScadaWidgetUtilSvc","gettext"],angular.module("c8y.parts.scadaWidget").directive("c8yScadaSvg",e)})();
1
+ (()=>{function e(p,u,v,m,f){return{require:"ngModel",restrict:"EA",link:function(i,a,e,n){var c,s,r;function t(){var e,t;r=!1,(s=n.$viewValue)?(c=i.$new(!0),_.forEach(i.mapping,function(e,t){Object.defineProperty(c,t,{enumerable:!0,get:_.partial(o,t)})}),_.assign(c,{goToGroupDetails:d,goToDeviceDetails:l,getActiveAlarmsStatusClass:g,isReady:_.constant(!0)}),"none"===i.sanitizationOption&&(r=!0),e=angular.element('<div ng-if="isReady()" style="width:100%;height:100%;transform: translateZ(0);"></div>'),t=document.implementation.createHTMLDocument(""),t=$.parseHTML(s,t,r),$(t).is("svg")?(e.append($(t).filter("svg")),n.$setValidity("c8y-scada-svg",!0)):(e.html('<div class="alert-warning" translate style="padding: 20px;">'.concat(f("Invalid SVG"),"</div>")),n.$setValidity("c8y-scada-svg",!1)),p(e)(c),a.html(""),a.append(e)):n.$setValidity("c8y-scada-svg",!1)}function o(t){var e=i.mapping[t],a=_.find(i.devices,function(e){return i.deviceIds[t]===e.id});return m.getValueForMapping(a,e)}function d(e){u.path("/group/".concat(e))}function l(e){u.path("/device/".concat(e))}function g(e){return _.toLower(v.getHighestSeverityFromAlarmsStatus(e))||"none"}n.$render=t,i.$watch("mapping",t),i.$watch("deviceIds",t,!0)},scope:{mapping:"=",devices:"=",deviceIds:"=",sanitizationOption:"=?"},replace:!1}}e.$inject=["$compile","$location","c8yAlarms","ScadaWidgetUtilSvc","gettext"],angular.module("c8y.parts.scadaWidget").directive("c8yScadaSvg",e)})();