@c8y/ng1-modules 1023.88.4 → 1023.92.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.
- package/core/locales/de.po +74 -19
- package/core/locales/es.po +74 -19
- package/core/locales/fr.po +74 -19
- package/core/locales/ja_JP.po +66 -18
- package/core/locales/ko.po +74 -19
- package/core/locales/nl.po +74 -19
- package/core/locales/pl.po +74 -19
- package/core/locales/pt_BR.po +74 -19
- package/core/locales/zh_CN.po +74 -19
- package/core/locales/zh_TW.po +74 -19
- package/package.json +1 -1
- package/users/userListView/userListView.component.js +1 -1
- package/users/userListView/userListView.html +85 -44
package/core/locales/zh_TW.po
CHANGED
|
@@ -1755,6 +1755,9 @@ msgstr "所有软件类型"
|
|
|
1755
1755
|
msgid "All statuses"
|
|
1756
1756
|
msgstr "所有状态"
|
|
1757
1757
|
|
|
1758
|
+
msgid "All time`interval option`"
|
|
1759
|
+
msgstr "全部歷來"
|
|
1760
|
+
|
|
1758
1761
|
msgid "All types"
|
|
1759
1762
|
msgstr "所有类型"
|
|
1760
1763
|
|
|
@@ -3127,6 +3130,9 @@ msgstr "居中"
|
|
|
3127
3130
|
msgid "Certificate"
|
|
3128
3131
|
msgstr "证书"
|
|
3129
3132
|
|
|
3133
|
+
msgid "Certificate (PEM)"
|
|
3134
|
+
msgstr "证书 (PEM)"
|
|
3135
|
+
|
|
3130
3136
|
msgid "Certificate ID field"
|
|
3131
3137
|
msgstr "证书 ID 字段"
|
|
3132
3138
|
|
|
@@ -4897,6 +4903,12 @@ msgstr "當前"
|
|
|
4897
4903
|
msgid "Currently installed"
|
|
4898
4904
|
msgstr "当前已安装"
|
|
4899
4905
|
|
|
4906
|
+
msgid "Currently saved certificate"
|
|
4907
|
+
msgstr "当前保存的证书"
|
|
4908
|
+
|
|
4909
|
+
msgid "Currently saved private key"
|
|
4910
|
+
msgstr "当前已保存的私钥"
|
|
4911
|
+
|
|
4900
4912
|
msgid "Custom"
|
|
4901
4913
|
msgstr "自定义"
|
|
4902
4914
|
|
|
@@ -6493,6 +6505,12 @@ msgstr "在表格儲存格周圍繪製邊框"
|
|
|
6493
6505
|
msgid "Drop"
|
|
6494
6506
|
msgstr "放置"
|
|
6495
6507
|
|
|
6508
|
+
msgid "Drop a new certificate to replace"
|
|
6509
|
+
msgstr "发行一张新证书以替换"
|
|
6510
|
+
|
|
6511
|
+
msgid "Drop a new private key to replace"
|
|
6512
|
+
msgstr "放置一個新的私钥以替换"
|
|
6513
|
+
|
|
6496
6514
|
msgid "Drop file here"
|
|
6497
6515
|
msgstr "将文件放在此处"
|
|
6498
6516
|
|
|
@@ -6505,6 +6523,12 @@ msgstr "将文件放在此处"
|
|
|
6505
6523
|
msgid "Drop files here or click to browse"
|
|
6506
6524
|
msgstr "將檔案放置在此處或按一下以瀏覽"
|
|
6507
6525
|
|
|
6526
|
+
msgid "Drop the certificate in PEM format."
|
|
6527
|
+
msgstr "請上傳 PEM 格式的证书。"
|
|
6528
|
+
|
|
6529
|
+
msgid "Drop the private key in PEM format."
|
|
6530
|
+
msgstr "請提供 PEM 格式的私钥。"
|
|
6531
|
+
|
|
6508
6532
|
msgid "Due to the large number, only a subset of alarms are displayed. Use search to narrow down the number of results."
|
|
6509
6533
|
msgstr "由於數量眾多,僅顯示報警的子集。請使用搜尋縮小結果數量。"
|
|
6510
6534
|
|
|
@@ -6781,6 +6805,9 @@ msgstr "啟用深色主題支援"
|
|
|
6781
6805
|
msgid "Enable in-product information & communication"
|
|
6782
6806
|
msgstr "啟用產品中資訊和通信"
|
|
6783
6807
|
|
|
6808
|
+
msgid "Enable mTLS authentication"
|
|
6809
|
+
msgstr "启用 mTLS 身份验证"
|
|
6810
|
+
|
|
6784
6811
|
msgid "Enable message banner"
|
|
6785
6812
|
msgstr "啟用消息橫幅"
|
|
6786
6813
|
|
|
@@ -8025,11 +8052,11 @@ msgstr "若要连接模拟设备,请在已安装 `\n"
|
|
|
8025
8052
|
" <a href=\"https://github.com/thin-edge/tedge-demo-container\" target=\"_blank\" rel=\"noopener noreferrer\">tedge-demo-container</a>`。"
|
|
8026
8053
|
|
|
8027
8054
|
msgid "For correct application behavior you can use only \"{{ host }}\" or \"{{\n"
|
|
8028
|
-
"
|
|
8029
|
-
"
|
|
8030
|
-
msgstr "
|
|
8031
|
-
"
|
|
8032
|
-
"
|
|
8055
|
+
" defaultRedirectUrl\n"
|
|
8056
|
+
" }}\", the latter one is recommended."
|
|
8057
|
+
msgstr "為確保应用程序能正確運作,您只能使用「{{ host }}」或「{{\n"
|
|
8058
|
+
" defaultRedirectUrl\n"
|
|
8059
|
+
" }}」,建議使用後者。"
|
|
8033
8060
|
|
|
8034
8061
|
msgid "For details refer to the\n"
|
|
8035
8062
|
" <a c8y-guide-href=\"/docs/standard-tenant/standard-tenant-introduction\">\n"
|
|
@@ -8935,6 +8962,9 @@ msgstr "隐藏详细信息"
|
|
|
8935
8962
|
msgid "Hide devices"
|
|
8936
8963
|
msgstr "隐藏设备"
|
|
8937
8964
|
|
|
8965
|
+
msgid "Hide in widget"
|
|
8966
|
+
msgstr "在小组件中隱藏"
|
|
8967
|
+
|
|
8938
8968
|
msgid "Hide password"
|
|
8939
8969
|
msgstr "隱藏密碼"
|
|
8940
8970
|
|
|
@@ -10292,11 +10322,21 @@ msgstr "主要警报"
|
|
|
10292
10322
|
msgid "Major`alarm`"
|
|
10293
10323
|
msgstr "主要"
|
|
10294
10324
|
|
|
10295
|
-
msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{
|
|
10296
|
-
|
|
10297
|
-
|
|
10298
|
-
|
|
10299
|
-
msgstr "
|
|
10325
|
+
msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{\n"
|
|
10326
|
+
" redirectURI\n"
|
|
10327
|
+
" }}\" or to the full URIs of the used applications if the authorization server\n"
|
|
10328
|
+
" does not support patterns."
|
|
10329
|
+
msgstr "请确保授权服务器中的「有效重定向 URI」已设置为「{{\n"
|
|
10330
|
+
" redirectURI\n"
|
|
10331
|
+
" }}」,或若授权服务器\n"
|
|
10332
|
+
" 不支援模式,则应设置为所使用的应用程序的完整 URI。"
|
|
10333
|
+
|
|
10334
|
+
msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{\n"
|
|
10335
|
+
" redirectURI\n"
|
|
10336
|
+
" }}\"."
|
|
10337
|
+
msgstr "請確認授權伺服器中的「有效重定向 URI」已設定為「{{\n"
|
|
10338
|
+
" redirectURI\n"
|
|
10339
|
+
" }}」。"
|
|
10300
10340
|
|
|
10301
10341
|
msgid "Make sure that:"
|
|
10302
10342
|
msgstr "確保:"
|
|
@@ -11295,6 +11335,9 @@ msgstr "沒有可供顯示的數據。"
|
|
|
11295
11335
|
msgid "No date filter"
|
|
11296
11336
|
msgstr "無日期篩選器"
|
|
11297
11337
|
|
|
11338
|
+
msgid "No date filter applied — every record is returned regardless of when it occurred."
|
|
11339
|
+
msgstr "未应用日期篩选条件 — 无论发生时间如何,所有记录都会被回传。"
|
|
11340
|
+
|
|
11298
11341
|
msgid "No delegation"
|
|
11299
11342
|
msgstr "无委托"
|
|
11300
11343
|
|
|
@@ -13089,9 +13132,15 @@ msgstr "面板的打印屏幕"
|
|
|
13089
13132
|
msgid "Private key"
|
|
13090
13133
|
msgstr "私钥"
|
|
13091
13134
|
|
|
13135
|
+
msgid "Private key (PEM)"
|
|
13136
|
+
msgstr "私钥 (PEM)"
|
|
13137
|
+
|
|
13092
13138
|
msgid "Private key cipher does not match"
|
|
13093
13139
|
msgstr "私钥密码不匹配"
|
|
13094
13140
|
|
|
13141
|
+
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."
|
|
13142
|
+
msgstr "與客戶端证书相符的私钥,格式為 PEM(PKCS#8)。平台會在首次保存後對靜態私钥進行加密,並在後續加载時僅返回加密後的值。可接受的檔案副檔名:.pem、.key。"
|
|
13143
|
+
|
|
13095
13144
|
msgid "Private key must be provided when \"Public/private keys\" option is selected."
|
|
13096
13145
|
msgstr "选择 \"公钥/私钥\" 选项时,必须提供私钥。"
|
|
13097
13146
|
|
|
@@ -13230,6 +13279,9 @@ msgstr "提供的憑證"
|
|
|
13230
13279
|
msgid "Provisioned certificates removed from user object: \"{{ userName }}\""
|
|
13231
13280
|
msgstr "已從使用者物件移除預先配置的憑證:\"{{ userName }}\""
|
|
13232
13281
|
|
|
13282
|
+
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."
|
|
13283
|
+
msgstr "由您的授權伺服器所信任的憑證授權機構(CA)為此租戶簽發的、採用 PEM 格式的公開 X.509 客戶端憑證。接受的檔案副檔名:.pem。"
|
|
13284
|
+
|
|
13233
13285
|
msgid "Public key"
|
|
13234
13286
|
msgstr "公钥"
|
|
13235
13287
|
|
|
@@ -15864,9 +15916,6 @@ msgstr "顯示符合以下条件的复选框:"
|
|
|
15864
15916
|
msgid "Show cleared alarms"
|
|
15865
15917
|
msgstr "顯示清除的警报"
|
|
15866
15918
|
|
|
15867
|
-
msgid "Show controls directly in the widget view for easier access."
|
|
15868
|
-
msgstr "將控制項直接顯示在小组件視圖中,以便於存取。"
|
|
15869
|
-
|
|
15870
15919
|
msgid "Show data point"
|
|
15871
15920
|
msgstr "顯示資料點"
|
|
15872
15921
|
|
|
@@ -15915,9 +15964,6 @@ msgstr "顯示於圖例"
|
|
|
15915
15964
|
msgid "Show in navigator"
|
|
15916
15965
|
msgstr "顯示在导航器中"
|
|
15917
15966
|
|
|
15918
|
-
msgid "Show in widget"
|
|
15919
|
-
msgstr "顯示於小工具中"
|
|
15920
|
-
|
|
15921
15967
|
msgid "Show items registered`between dates`"
|
|
15922
15968
|
msgstr "將項顯示為已註冊"
|
|
15923
15969
|
|
|
@@ -17407,6 +17453,12 @@ msgstr "预览显示来自单一来源的原始文件结构。"
|
|
|
17407
17453
|
msgid "The preview shows the structure of the raw file from all sources."
|
|
17408
17454
|
msgstr "预览画面显示了来自全部来源的原始文件结构。"
|
|
17409
17455
|
|
|
17456
|
+
msgid "The private key is encrypted for security reasons."
|
|
17457
|
+
msgstr "基於安全考量,私钥已進行加密。"
|
|
17458
|
+
|
|
17459
|
+
msgid "The private key will be encrypted on the server after saving."
|
|
17460
|
+
msgstr "私钥在保存後將於伺服器上進行加密。"
|
|
17461
|
+
|
|
17410
17462
|
msgid "The provided name is already taken."
|
|
17411
17463
|
msgstr "提供的名稱已被使用。"
|
|
17412
17464
|
|
|
@@ -17517,9 +17569,6 @@ msgstr "阈值不能小于 1%。"
|
|
|
17517
17569
|
msgid "The time context can be configured in the widget view mode."
|
|
17518
17570
|
msgstr "時間上下文可在小工具檢視模式中進行設定。"
|
|
17519
17571
|
|
|
17520
|
-
msgid "The time context can only get changed in the configuration."
|
|
17521
|
-
msgstr "時間上下文只能在設定檔中進行變更。"
|
|
17522
|
-
|
|
17523
17572
|
msgid "The update method is determined by the widget type. Some widgets support real-time updates via WebSocket connection, while others use periodic refreshes."
|
|
17524
17573
|
msgstr "更新方式取決於小工具類型。部分小工具支援透過 WebSocket 連線進行即時更新,而其他小工具則採用定期刷新機制。"
|
|
17525
17574
|
|
|
@@ -18742,6 +18791,9 @@ msgstr "使用 * 以允许任意值。"
|
|
|
18742
18791
|
msgid "Use [Enter] or <br> tag to add a new line"
|
|
18743
18792
|
msgstr "使用 [Enter] 或 <br> 標籤添加新行"
|
|
18744
18793
|
|
|
18794
|
+
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."
|
|
18795
|
+
msgstr "请使用客户端证书(mTLS)而非客户端密码,来让平台向授权伺服器进行身份验证。仅当授权伺服器强制执行基于证书的客户端身份验证时,才应使用此选项。"
|
|
18796
|
+
|
|
18745
18797
|
msgid "Use alarms to create smart rules for microservice availability."
|
|
18746
18798
|
msgstr "使用警报为微服务可用性创建智能规则。"
|
|
18747
18799
|
|
|
@@ -21345,6 +21397,9 @@ msgstr "{{hours}} 小時 1 分鐘"
|
|
|
21345
21397
|
msgid "{{hours}} hours {{minutes}} minutes"
|
|
21346
21398
|
msgstr "{{hours}} 小時 {{minutes}} 分鐘"
|
|
21347
21399
|
|
|
21400
|
+
msgid "{{interval}}, {{aggregation}}"
|
|
21401
|
+
msgstr "{{interval}}, {{aggregation}}"
|
|
21402
|
+
|
|
21348
21403
|
msgid "{{minutes}} minutes"
|
|
21349
21404
|
msgstr "{{minutes}} 分鐘"
|
|
21350
21405
|
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{function e(s,n,o,r,
|
|
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"})})();
|
|
@@ -21,21 +21,40 @@
|
|
|
21
21
|
<div class="input-group input-group-search">
|
|
22
22
|
<input
|
|
23
23
|
class="form-control"
|
|
24
|
-
title="{{ '
|
|
24
|
+
title="{{ 'Search users' | translate }}"
|
|
25
25
|
id="Filter"
|
|
26
|
-
placeholder="{{ '
|
|
26
|
+
placeholder="{{ 'Search users' | translate }}"
|
|
27
27
|
type="search"
|
|
28
28
|
ng-model="vm.filters.text"
|
|
29
|
+
ng-keydown="vm.onSearchKeydown($event)"
|
|
29
30
|
/>
|
|
30
|
-
<span
|
|
31
|
+
<span
|
|
32
|
+
class="input-group-addon"
|
|
33
|
+
ng-if="!vm.filters.text"
|
|
34
|
+
>
|
|
31
35
|
<i c8y-icon="search"></i>
|
|
32
36
|
</span>
|
|
37
|
+
<span
|
|
38
|
+
class="input-group-addon clickable"
|
|
39
|
+
title="{{ 'Clear search' | translate }}"
|
|
40
|
+
ng-if="vm.filters.text && !vm.showSearchHint"
|
|
41
|
+
ng-click="vm.clearSearch()"
|
|
42
|
+
>
|
|
43
|
+
<i c8y-icon="times"></i>
|
|
44
|
+
</span>
|
|
45
|
+
<span
|
|
46
|
+
class="input-group-addon text-warning"
|
|
47
|
+
title="{{ 'Enter at least 3 characters to search.' | translate }}"
|
|
48
|
+
ng-if="vm.showSearchHint"
|
|
49
|
+
>
|
|
50
|
+
<i c8y-icon="exclamation-circle"></i>
|
|
51
|
+
</span>
|
|
33
52
|
<span
|
|
34
53
|
class="sr-only"
|
|
35
54
|
for="Filter"
|
|
36
55
|
translate
|
|
37
56
|
>
|
|
38
|
-
|
|
57
|
+
Search users
|
|
39
58
|
</span>
|
|
40
59
|
</div>
|
|
41
60
|
</div>
|
|
@@ -57,7 +76,6 @@
|
|
|
57
76
|
title="{{ 'Apply filters' | translate }}"
|
|
58
77
|
type="button"
|
|
59
78
|
ng-click="vm.applyFilters()"
|
|
60
|
-
c8y-key-shortcut="Enter"
|
|
61
79
|
>
|
|
62
80
|
<i c8y-icon="filter"></i>
|
|
63
81
|
<span
|
|
@@ -86,32 +104,6 @@
|
|
|
86
104
|
</form>
|
|
87
105
|
</li>
|
|
88
106
|
|
|
89
|
-
<li>
|
|
90
|
-
<button
|
|
91
|
-
class="btn btn-link hidden-sm"
|
|
92
|
-
title="{{ 'Expand all' | translate }}"
|
|
93
|
-
type="button"
|
|
94
|
-
ng-click="vm.expandAll()"
|
|
95
|
-
ng-show="vm.showExpandCollapse()"
|
|
96
|
-
>
|
|
97
|
-
<i c8y-icon="window-maximize"></i>
|
|
98
|
-
{{ 'Expand all' | translate }}
|
|
99
|
-
</button>
|
|
100
|
-
</li>
|
|
101
|
-
|
|
102
|
-
<li>
|
|
103
|
-
<button
|
|
104
|
-
class="btn btn-link hidden-sm"
|
|
105
|
-
title="{{ 'Collapse all' | translate }}"
|
|
106
|
-
type="button"
|
|
107
|
-
ng-click="vm.collapseAll()"
|
|
108
|
-
ng-show="vm.showExpandCollapse()"
|
|
109
|
-
>
|
|
110
|
-
<i c8y-icon="minus"></i>
|
|
111
|
-
{{ 'Collapse all' | translate }}
|
|
112
|
-
</button>
|
|
113
|
-
</li>
|
|
114
|
-
|
|
115
107
|
<li
|
|
116
108
|
title="{{ 'Add user' | translate }}"
|
|
117
109
|
ng-show="vm.canAddUser"
|
|
@@ -129,19 +121,6 @@
|
|
|
129
121
|
</a>
|
|
130
122
|
</li>
|
|
131
123
|
|
|
132
|
-
<li ng-show="vm.canRevokeTokens">
|
|
133
|
-
<button
|
|
134
|
-
class="btn btn-link"
|
|
135
|
-
title="{{ 'Log out all users' | translate }}"
|
|
136
|
-
type="button"
|
|
137
|
-
data-cy="c8y-users--log-out-all-users"
|
|
138
|
-
ng-click="vm.revokeTokens()"
|
|
139
|
-
>
|
|
140
|
-
<i c8y-icon="account-disable"></i>
|
|
141
|
-
{{ 'Log out all users' | translate }}
|
|
142
|
-
</button>
|
|
143
|
-
</li>
|
|
144
|
-
|
|
145
124
|
<li>
|
|
146
125
|
<button
|
|
147
126
|
class="btn btn-link"
|
|
@@ -153,6 +132,68 @@
|
|
|
153
132
|
{{ 'Reload' | translate }}
|
|
154
133
|
</button>
|
|
155
134
|
</li>
|
|
135
|
+
|
|
136
|
+
<li ng-show="vm.showExpandCollapse() || vm.canRevokeTokens">
|
|
137
|
+
<div
|
|
138
|
+
class="dropdown"
|
|
139
|
+
uib-dropdown
|
|
140
|
+
>
|
|
141
|
+
<button
|
|
142
|
+
class="dropdown-toggle c8y-dropdown d-flex a-i-center"
|
|
143
|
+
title="{{ 'More' | translate }}…"
|
|
144
|
+
aria-haspopup="true"
|
|
145
|
+
type="button"
|
|
146
|
+
uib-dropdown-toggle
|
|
147
|
+
>
|
|
148
|
+
<span
|
|
149
|
+
class="text-truncate"
|
|
150
|
+
translate
|
|
151
|
+
>More…</span
|
|
152
|
+
>
|
|
153
|
+
<i c8y-icon="caret-down"></i>
|
|
154
|
+
</button>
|
|
155
|
+
<ul
|
|
156
|
+
class="dropdown-menu dropdown-menu-right"
|
|
157
|
+
uib-dropdown-menu
|
|
158
|
+
>
|
|
159
|
+
<li>
|
|
160
|
+
<button
|
|
161
|
+
class="btn btn-link hidden-sm"
|
|
162
|
+
title="{{ 'Expand all' | translate }}"
|
|
163
|
+
type="button"
|
|
164
|
+
ng-click="vm.expandAll()"
|
|
165
|
+
ng-show="vm.showExpandCollapse()"
|
|
166
|
+
>
|
|
167
|
+
<i c8y-icon="window-maximize"></i>
|
|
168
|
+
{{ 'Expand all' | translate }}
|
|
169
|
+
</button>
|
|
170
|
+
</li>
|
|
171
|
+
<li>
|
|
172
|
+
<button
|
|
173
|
+
class="btn btn-link hidden-sm"
|
|
174
|
+
title="{{ 'Collapse all' | translate }}"
|
|
175
|
+
type="button"
|
|
176
|
+
ng-click="vm.collapseAll()"
|
|
177
|
+
ng-show="vm.showExpandCollapse()"
|
|
178
|
+
>
|
|
179
|
+
<i c8y-icon="minus"></i>
|
|
180
|
+
{{ 'Collapse all' | translate }}
|
|
181
|
+
</button>
|
|
182
|
+
</li>
|
|
183
|
+
<li ng-show="vm.canRevokeTokens">
|
|
184
|
+
<button
|
|
185
|
+
title="{{ 'Log out all users' | translate }}"
|
|
186
|
+
type="button"
|
|
187
|
+
data-cy="c8y-users--log-out-all-users"
|
|
188
|
+
ng-click="vm.revokeTokens()"
|
|
189
|
+
>
|
|
190
|
+
<i c8y-icon="account-disable"></i>
|
|
191
|
+
{{ 'Log out all users' | translate }}
|
|
192
|
+
</button>
|
|
193
|
+
</li>
|
|
194
|
+
</ul>
|
|
195
|
+
</div>
|
|
196
|
+
</li>
|
|
156
197
|
</c8y-ui-action-bar-set>
|
|
157
198
|
|
|
158
199
|
<c8y-help src="/docs/standard-tenant/managing-users/#managing-users"></c8y-help>
|