dashboard-shell-shell 1.0.1000000116 → 1.0.1000000117
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/assets/images/action.svg +6 -0
- package/assets/images/pl/logo.png +0 -0
- package/assets/styles/base/_functions.scss +0 -0
- package/assets/styles/base/_mixins.scss +1 -1
- package/assets/styles/global/_button.scss +17 -10
- package/assets/styles/global/_form.scss +2 -2
- package/assets/styles/global/_labeled-input.scss +6 -2
- package/assets/styles/global/_select.scss +6 -7
- package/assets/styles/global/_table.scss +3 -2
- package/assets/styles/global/_tooltip.scss +8 -1
- package/assets/styles/themes/_dark.scss +2 -0
- package/assets/styles/themes/_light.scss +5 -2
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +1 -3
- package/assets/translations/zh-hans.yaml +51 -28
- package/components/ActionDropdown.vue +1 -0
- package/components/ActionMenuShell.vue +6 -3
- package/components/BrandImage.vue +22 -0
- package/components/ClusterIconMenu.vue +1 -1
- package/components/CodeMirror.vue +1 -0
- package/components/CruResource.vue +1 -1
- package/components/CruResourceFooter.vue +1 -1
- package/components/ExplorerProjectsNamespaces.vue +4 -24
- package/components/GlobalRoleBindings.vue +112 -48
- package/components/IndentedPanel.vue +4 -10
- package/components/PromptRemove.vue +3 -3
- package/components/ResourceDetail/Masthead.vue +190 -242
- package/components/ResourceDetail/index.vue +20 -5
- package/components/ResourceList/Masthead.vue +146 -84
- package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
- package/components/ResourceTable.vue +76 -1
- package/components/SideNav.vue +66 -29
- package/components/SortableTable/THead.vue +6 -0
- package/components/SortableTable/index.vue +481 -388
- package/components/Tabbed/index.vue +4 -5
- package/components/auth/Principal.vue +3 -2
- package/components/auth/RoleDetailEdit.vue +58 -5
- package/components/auth/SelectPrincipal.vue +1 -0
- package/components/form/BannerSettings.vue +18 -16
- package/components/form/ChangePassword.vue +4 -4
- package/components/form/ColorInput.vue +32 -8
- package/components/form/Footer.vue +1 -1
- package/components/form/InputWithSelect.vue +2 -0
- package/components/form/KeyValue.vue +31 -7
- package/components/form/LabeledSelect.vue +178 -178
- package/components/form/Members/ClusterPermissionsEditor.vue +1 -2
- package/components/form/Members/MembershipEditor.vue +1 -1
- package/components/form/NameNsDescription.vue +24 -11
- package/components/form/Password.vue +6 -2
- package/components/form/ResourceQuota/Namespace.vue +1 -1
- package/components/form/ResourceQuota/NamespaceRow.vue +13 -10
- package/components/form/ResourceQuota/ProjectRow.vue +0 -1
- package/components/form/Select.vue +2 -2
- package/components/nav/Favorite.vue +5 -1
- package/components/nav/Group.vue +69 -23
- package/components/nav/Header.vue +82 -17
- package/components/nav/HeaderPageActionMenu.vue +1 -0
- package/components/nav/NamespaceFilter.vue +0 -3
- package/components/nav/TopLevelMenu.vue +182 -119
- package/components/nav/Type.vue +48 -11
- package/composables/useClickOutside.ts +1 -1
- package/config/product/auth.js +16 -7
- package/config/product/explorer.js +1 -1
- package/config/product/settings.js +17 -8
- package/config/settings.ts +28 -0
- package/edit/management.cattle.io.user.vue +17 -4
- package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
- package/edit/token.vue +1 -1
- package/list/harvesterhci.io.management.cluster.vue +17 -0
- package/list/management.cattle.io.setting.vue +22 -13
- package/list/management.cattle.io.user.vue +25 -14
- package/list/provisioning.cattle.io.cluster.vue +6 -7
- package/mixins/brand.js +17 -0
- package/package.json +1 -1
- package/pages/auth/login.vue +84 -29
- package/pages/c/_cluster/auth/roles/index.vue +61 -14
- package/pages/c/_cluster/settings/banners.vue +174 -101
- package/pages/c/_cluster/settings/brand.vue +348 -301
- package/pages/c/_cluster/settings/performance.vue +61 -38
- package/pages/home.vue +70 -21
- package/pages/prefs.vue +25 -23
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/promptRemove/mixin/roleDeletionCheck.js +2 -2
- package/scripts/clean +0 -0
- package/scripts/extension/bundle +0 -0
- package/scripts/extension/helm/scripts/package +0 -0
- package/scripts/extension/helm/scripts/patch +0 -0
- package/scripts/extension/helm/scripts/version +0 -0
- package/scripts/extension/helmpatch +0 -0
- package/scripts/extension/parse-tag-name +0 -0
- package/scripts/extension/publish +0 -0
- package/scripts/publish-shell.sh +86 -60
- package/scripts/serve-pkgs +0 -0
- package/scripts/sync-shell-deps +0 -0
- package/scripts/typegen.sh +44 -28
- package/store/i18n.js +5 -5
- package/store/prefs.js +17 -5
- package/store/type-map.js +2 -1
- package/types/shell/index.d.ts +1 -1
- package/utils/error.js +4 -0
- package/utils/router.js +3 -3
- package/vue.config.js +1 -6
- package/components/rancherResourceDetail/Masthead.vue +0 -769
- package/components/rancherResourceDetail/__tests__/Masthead.test.ts +0 -65
- package/components/rancherResourceDetail/index.vue +0 -591
- package/components/rancherResourceList/Masthead.vue +0 -375
- package/components/rancherResourceList/ResourceLoadingIndicator.vue +0 -140
- package/components/rancherResourceList/index.vue +0 -307
- package/components/rancherResourceList/resource-list.config.js +0 -7
- package/components/rancherResourceTable.vue +0 -783
- package/components/rancherSortableTable/THead.vue +0 -561
- package/components/rancherSortableTable/actions.js +0 -153
- package/components/rancherSortableTable/advanced-filtering.js +0 -272
- package/components/rancherSortableTable/debug.js +0 -117
- package/components/rancherSortableTable/filtering.js +0 -290
- package/components/rancherSortableTable/grouping.js +0 -48
- package/components/rancherSortableTable/index.vue +0 -2712
- package/components/rancherSortableTable/paging.js +0 -155
- package/components/rancherSortableTable/selection.js +0 -629
- package/components/rancherSortableTable/sortable-config.ts +0 -4
- package/components/rancherSortableTable/sorting.js +0 -129
- package/types/cloud-shell/index.d.ts +0 -11014
- /package/components/{rancherResourceList → ResourceList}/Masthead-btn.vue +0 -0
|
@@ -204,14 +204,16 @@ export default {
|
|
|
204
204
|
<template>
|
|
205
205
|
<Loading v-if="$fetchState.pending" />
|
|
206
206
|
<div v-else>
|
|
207
|
+
<!-- 面包屑 -->
|
|
208
|
+
<div class="excram-list">全局设置 / <span style="color: #1890FF;">性能</span></div>
|
|
207
209
|
<h1 class="mb-20">
|
|
208
210
|
{{ t('performance.label') }}
|
|
209
211
|
</h1>
|
|
210
212
|
<div>
|
|
211
|
-
<div class="ui-perf-setting">
|
|
212
|
-
<!--
|
|
213
|
-
<div class="
|
|
214
|
-
<h2>{{ t('performance.inactivity.title') }}</h2>
|
|
213
|
+
<div class="ui-perf-setting pb-40">
|
|
214
|
+
<!-- 闲置状态 -->
|
|
215
|
+
<div class="mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
216
|
+
<h2 class="mb-20">{{ t('performance.inactivity.title') }}</h2>
|
|
215
217
|
<p>{{ t('performance.inactivity.description') }}</p>
|
|
216
218
|
<Checkbox
|
|
217
219
|
v-model:value="value.inactivity.enabled"
|
|
@@ -238,21 +240,21 @@ export default {
|
|
|
238
240
|
/>
|
|
239
241
|
</div>
|
|
240
242
|
</div>
|
|
241
|
-
<!--
|
|
242
|
-
<div class="
|
|
243
|
-
<h2>{{ t('performance.websocketNotification.label') }}</h2>
|
|
243
|
+
<!-- WebSocket 通知 -->
|
|
244
|
+
<div class="mb-40 p-20" style="border: 1px solid var(--nav-border);">
|
|
245
|
+
<h2 class="mb-20">{{ t('performance.websocketNotification.label') }}</h2>
|
|
244
246
|
<p>{{ t('performance.websocketNotification.description') }}</p>
|
|
245
247
|
<Checkbox
|
|
246
248
|
v-model:value="value.disableWebsocketNotification"
|
|
247
249
|
:mode="mode"
|
|
248
250
|
:label="t('performance.websocketNotification.checkboxLabel')"
|
|
249
|
-
class="mt-10
|
|
251
|
+
class="mt-10"
|
|
250
252
|
:primary="true"
|
|
251
253
|
/>
|
|
252
254
|
</div>
|
|
253
255
|
<!-- Server Side Pagination -->
|
|
254
|
-
<div class="
|
|
255
|
-
<h2 id="ssp-setting">
|
|
256
|
+
<div class="mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
257
|
+
<h2 class="mb-20" id="ssp-setting">
|
|
256
258
|
{{ t('performance.serverPagination.label') }}
|
|
257
259
|
</h2>
|
|
258
260
|
<p>{{ t('performance.serverPagination.description') }}</p>
|
|
@@ -286,9 +288,9 @@ export default {
|
|
|
286
288
|
/>
|
|
287
289
|
</Collapse>
|
|
288
290
|
</div>
|
|
289
|
-
<!--
|
|
290
|
-
<div class="
|
|
291
|
-
<h2>{{ t('performance.incrementalLoad.label') }}</h2>
|
|
291
|
+
<!-- 增量加载 -->
|
|
292
|
+
<div class="mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
293
|
+
<h2 class="mb-20">{{ t('performance.incrementalLoad.label') }}</h2>
|
|
292
294
|
<Banner
|
|
293
295
|
color="warning"
|
|
294
296
|
>
|
|
@@ -318,9 +320,9 @@ export default {
|
|
|
318
320
|
/>
|
|
319
321
|
</div>
|
|
320
322
|
</div>
|
|
321
|
-
<!--
|
|
322
|
-
<div class="
|
|
323
|
-
<h2 v-t="'performance.manualRefresh.label'" />
|
|
323
|
+
<!-- 手动刷新 -->
|
|
324
|
+
<div class="mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
325
|
+
<h2 class="mb-20" v-t="'performance.manualRefresh.label'" />
|
|
324
326
|
<Banner
|
|
325
327
|
color="warning"
|
|
326
328
|
>
|
|
@@ -350,9 +352,9 @@ export default {
|
|
|
350
352
|
/>
|
|
351
353
|
</div>
|
|
352
354
|
</div>
|
|
353
|
-
<!--
|
|
354
|
-
<div class="
|
|
355
|
-
<h2 v-t="'performance.gc.label'" />
|
|
355
|
+
<!-- 资源垃圾回收 -->
|
|
356
|
+
<div class="mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
357
|
+
<h2 class="mb-20" v-t="'performance.gc.label'" />
|
|
356
358
|
<Banner
|
|
357
359
|
color="warning"
|
|
358
360
|
>
|
|
@@ -431,9 +433,9 @@ export default {
|
|
|
431
433
|
</div>
|
|
432
434
|
</div>
|
|
433
435
|
</div>
|
|
434
|
-
<!--
|
|
435
|
-
<div class="
|
|
436
|
-
<h2>{{ t('performance.nsFiltering.label') }}</h2>
|
|
436
|
+
<!-- 要求资源组/项目过滤 -->
|
|
437
|
+
<div class="mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
438
|
+
<h2 class="mb-20">{{ t('performance.nsFiltering.label') }}</h2>
|
|
437
439
|
<Banner
|
|
438
440
|
color="warning"
|
|
439
441
|
>
|
|
@@ -449,9 +451,9 @@ export default {
|
|
|
449
451
|
@update:value="compatibleWarning('forceNsFilterV2', $event)"
|
|
450
452
|
/>
|
|
451
453
|
</div>
|
|
452
|
-
<!--
|
|
453
|
-
<div class="
|
|
454
|
-
<h2>{{ t('performance.advancedWorker.label') }}</h2>
|
|
454
|
+
<!-- Websocket Web Worker -->
|
|
455
|
+
<div class="mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
456
|
+
<h2 class="mb-20">{{ t('performance.advancedWorker.label') }}</h2>
|
|
455
457
|
<Banner
|
|
456
458
|
color="warning"
|
|
457
459
|
>
|
|
@@ -477,10 +479,10 @@ export default {
|
|
|
477
479
|
:label="err"
|
|
478
480
|
/>
|
|
479
481
|
</template>
|
|
480
|
-
<div v-if="mode === 'edit'">
|
|
482
|
+
<div class="action-btn" v-if="mode === 'edit'">
|
|
481
483
|
<AsyncButton
|
|
482
484
|
data-testid="performance__save-btn"
|
|
483
|
-
class="pull-right
|
|
485
|
+
class="pull-right"
|
|
484
486
|
mode="apply"
|
|
485
487
|
:disabled="!canSave"
|
|
486
488
|
@click="save"
|
|
@@ -490,6 +492,17 @@ export default {
|
|
|
490
492
|
</template>
|
|
491
493
|
|
|
492
494
|
<style scoped lang='scss'>
|
|
495
|
+
.action-btn {
|
|
496
|
+
padding: 10px 30px;
|
|
497
|
+
position: fixed;
|
|
498
|
+
bottom: 0;
|
|
499
|
+
left: 0;
|
|
500
|
+
width: 100%;
|
|
501
|
+
background: var(--body-bg);
|
|
502
|
+
border-top: 1px solid var(--nav-border);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
|
|
493
506
|
.overlay {
|
|
494
507
|
width: 100%;
|
|
495
508
|
height: 100%;
|
|
@@ -499,17 +512,27 @@ export default {
|
|
|
499
512
|
background-color: var(--overlay-bg);
|
|
500
513
|
z-index: 1;
|
|
501
514
|
}
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
.underline {
|
|
509
|
-
text-decoration: underline;
|
|
510
|
-
}
|
|
515
|
+
.ui-perf-setting {
|
|
516
|
+
P {
|
|
517
|
+
line-height: 1.25;
|
|
518
|
+
margin-bottom: 10px;
|
|
511
519
|
}
|
|
512
|
-
|
|
513
|
-
|
|
520
|
+
|
|
521
|
+
.underline {
|
|
522
|
+
text-decoration: underline;
|
|
514
523
|
}
|
|
524
|
+
}
|
|
525
|
+
.input {
|
|
526
|
+
max-width: 25%;
|
|
527
|
+
}
|
|
528
|
+
h2{
|
|
529
|
+
font-size: 14px;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
.excram-list{
|
|
533
|
+
font-size: 14px;
|
|
534
|
+
line-height: 22px;
|
|
535
|
+
margin-bottom: 20px;
|
|
536
|
+
font-family: 'Microsoft YaHei';
|
|
537
|
+
}
|
|
515
538
|
</style>
|
package/pages/home.vue
CHANGED
|
@@ -64,7 +64,12 @@ export default defineComponent({
|
|
|
64
64
|
query: { [MODE]: _IMPORT }
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
+
const topLevelPermissions = sessionStorage.getItem('TOPLEVELPERMISSIONS') || ''
|
|
68
|
+
|
|
69
|
+
const topLevelPermissionsVis = topLevelPermissions && topLevelPermissions === 'superadmin'
|
|
70
|
+
|
|
67
71
|
return {
|
|
72
|
+
topLevelPermissionsVis,
|
|
68
73
|
HIDE_HOME_PAGE_CARDS,
|
|
69
74
|
fullVersion: getVersionInfo(this.$store).fullVersion,
|
|
70
75
|
// Page actions don't change on the Home Page
|
|
@@ -504,17 +509,26 @@ export default defineComponent({
|
|
|
504
509
|
</script>
|
|
505
510
|
|
|
506
511
|
<template>
|
|
512
|
+
<!-- 当 managementReady 为 true 时才显示首页内容 -->
|
|
507
513
|
<div
|
|
508
514
|
v-if="managementReady"
|
|
509
515
|
class="home-page"
|
|
510
516
|
>
|
|
517
|
+
|
|
518
|
+
<!-- 页签标题组件,不显示子页面标题和面包屑 -->
|
|
511
519
|
<TabTitle
|
|
520
|
+
v-if="topLevelPermissionsVis"
|
|
512
521
|
:show-child="false"
|
|
513
522
|
:breadcrumb="false"
|
|
514
523
|
>
|
|
524
|
+
|
|
525
|
+
<!-- 页面标题:{vendor} - 首页 -->
|
|
515
526
|
{{ `${vendor} - ${t('landing.homepage')}` }}
|
|
516
527
|
</TabTitle>
|
|
528
|
+
|
|
529
|
+
<!-- 首页欢迎横幅 -->
|
|
517
530
|
<BannerGraphic
|
|
531
|
+
v-if="topLevelPermissionsVis"
|
|
518
532
|
:small="true"
|
|
519
533
|
:title="t('landing.welcomeToRancher', {vendor})"
|
|
520
534
|
:pref="HIDE_HOME_PAGE_CARDS"
|
|
@@ -522,18 +536,28 @@ export default defineComponent({
|
|
|
522
536
|
data-testid="home-banner-graphic"
|
|
523
537
|
/>
|
|
524
538
|
<IndentedPanel class="mt-20 mb-20">
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
<!-- 如果用户还没看过“新功能”提示 -->
|
|
525
543
|
<div
|
|
526
|
-
v-if="!readWhatsNewAlready"
|
|
544
|
+
v-if="!readWhatsNewAlready && topLevelPermissionsVis"
|
|
527
545
|
class="row"
|
|
528
546
|
>
|
|
529
547
|
<div class="col span-12">
|
|
548
|
+
<!-- 信息提示横幅,颜色类型 info whats-new -->
|
|
530
549
|
<Banner
|
|
531
550
|
data-testid="changelog-banner"
|
|
532
551
|
color="info whats-new"
|
|
533
552
|
>
|
|
534
553
|
<div>
|
|
554
|
+
|
|
555
|
+
<!-- 显示版本更新提示 -->
|
|
535
556
|
{{ t('landing.seeWhatsNew', { version: CURRENT_RANCHER_VERSION }) }}
|
|
536
557
|
</div>
|
|
558
|
+
|
|
559
|
+
<!-- 跳转到更新日志链接 -->
|
|
560
|
+
<!-- 链接文本,支持 HTML 清理 -->
|
|
537
561
|
<a
|
|
538
562
|
class="hand banner-link"
|
|
539
563
|
:href="releaseNotesUrl"
|
|
@@ -547,13 +571,21 @@ export default defineComponent({
|
|
|
547
571
|
</Banner>
|
|
548
572
|
</div>
|
|
549
573
|
</div>
|
|
574
|
+
|
|
575
|
+
<!-- 主面板布局 -->
|
|
550
576
|
<div class="row home-panels">
|
|
551
577
|
<div class="col main-panel">
|
|
578
|
+
<h2 class="mb-20">
|
|
579
|
+
{{ t('landing.clusters.title') }}
|
|
580
|
+
</h2>
|
|
581
|
+
<!-- 如果不需要显示“设置登录页提示” -->
|
|
552
582
|
<div
|
|
553
|
-
v-if="!showSetLoginBanner"
|
|
583
|
+
v-if="!showSetLoginBanner && topLevelPermissionsVis"
|
|
554
584
|
class="mb-10 row"
|
|
555
585
|
>
|
|
556
586
|
<div class="col span-12">
|
|
587
|
+
|
|
588
|
+
<!-- 可关闭的提示横幅 -->
|
|
557
589
|
<Banner
|
|
558
590
|
color="set-login-page mt-0"
|
|
559
591
|
data-testid="set-login-page-banner"
|
|
@@ -563,6 +595,8 @@ export default defineComponent({
|
|
|
563
595
|
<div>
|
|
564
596
|
{{ t('landing.landingPrefs.title') }}
|
|
565
597
|
</div>
|
|
598
|
+
|
|
599
|
+
<!-- 用户点击后进入偏好设置 -->
|
|
566
600
|
<a
|
|
567
601
|
class="hand mr-20"
|
|
568
602
|
tabindex="0"
|
|
@@ -574,11 +608,17 @@ export default defineComponent({
|
|
|
574
608
|
</Banner>
|
|
575
609
|
</div>
|
|
576
610
|
</div>
|
|
611
|
+
|
|
612
|
+
<!-- 集群列表面板 -->
|
|
577
613
|
<div class="row panel">
|
|
614
|
+
|
|
615
|
+
<!-- 如果是多集群模式(mcm = multi-cluster management) -->
|
|
578
616
|
<div
|
|
579
617
|
v-if="mcm"
|
|
580
618
|
class="col span-12"
|
|
581
619
|
>
|
|
620
|
+
|
|
621
|
+
<!-- 分页资源表格 -->
|
|
582
622
|
<PaginatedResourceTable
|
|
583
623
|
v-if="provClusterSchema"
|
|
584
624
|
:schema="provClusterSchema"
|
|
@@ -598,27 +638,17 @@ export default defineComponent({
|
|
|
598
638
|
:fetchSecondaryResources="fetchSecondaryResources"
|
|
599
639
|
:fetchPageSecondaryResources="fetchPageSecondaryResources"
|
|
600
640
|
>
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
<h2 class="mb-0">
|
|
604
|
-
{{ t('landing.clusters.title') }}
|
|
605
|
-
</h2>
|
|
606
|
-
<BadgeState
|
|
607
|
-
v-if="clusterCount"
|
|
608
|
-
:label="clusterCount.toString()"
|
|
609
|
-
color="role-tertiary ml-20 mr-20"
|
|
610
|
-
/>
|
|
611
|
-
</div>
|
|
612
|
-
</template>
|
|
641
|
+
|
|
642
|
+
<!-- 表头中间:管理、导入、创建按钮 -->
|
|
613
643
|
<template
|
|
614
644
|
v-if="canCreateCluster || !!provClusterSchema"
|
|
615
|
-
#header-
|
|
645
|
+
#header-right
|
|
616
646
|
>
|
|
617
|
-
<div class="table-heading">
|
|
647
|
+
<div v-if="topLevelPermissionsVis" class="table-heading">
|
|
618
648
|
<router-link
|
|
619
649
|
v-if="!!provClusterSchema"
|
|
620
650
|
:to="manageLocation"
|
|
621
|
-
class="btn btn-sm role-
|
|
651
|
+
class="btn btn-sm role-primary"
|
|
622
652
|
data-testid="cluster-management-manage-button"
|
|
623
653
|
role="button"
|
|
624
654
|
:aria-label="t('cluster.manageAction')"
|
|
@@ -650,6 +680,8 @@ export default defineComponent({
|
|
|
650
680
|
</router-link>
|
|
651
681
|
</div>
|
|
652
682
|
</template>
|
|
683
|
+
|
|
684
|
+
<!-- 列渲染:集群名称 -->
|
|
653
685
|
<template #col:name="{row}">
|
|
654
686
|
<td class="col-name">
|
|
655
687
|
<div class="list-cluster-name">
|
|
@@ -657,6 +689,8 @@ export default defineComponent({
|
|
|
657
689
|
v-if="row.mgmt"
|
|
658
690
|
class="cluster-name"
|
|
659
691
|
>
|
|
692
|
+
|
|
693
|
+
<!-- 如果集群就绪且无错误,跳转到集群 Explorer 页面 -->
|
|
660
694
|
<router-link
|
|
661
695
|
v-if="row.mgmt.isReady && !row.hasError"
|
|
662
696
|
:to="{ name: 'c-cluster-explorer', params: { cluster: row.mgmt.id }}"
|
|
@@ -665,6 +699,8 @@ export default defineComponent({
|
|
|
665
699
|
>
|
|
666
700
|
{{ row.nameDisplay }}
|
|
667
701
|
</router-link>
|
|
702
|
+
|
|
703
|
+
<!-- 否则只显示名称 -->
|
|
668
704
|
<span v-else>{{ row.nameDisplay }}</span>
|
|
669
705
|
<i
|
|
670
706
|
v-if="row.unavailableMachines"
|
|
@@ -672,6 +708,8 @@ export default defineComponent({
|
|
|
672
708
|
class="conditions-alert-icon icon-alert icon"
|
|
673
709
|
/>
|
|
674
710
|
</p>
|
|
711
|
+
|
|
712
|
+
<!-- 集群描述 -->
|
|
675
713
|
<p
|
|
676
714
|
v-if="row.description"
|
|
677
715
|
class="cluster-description"
|
|
@@ -681,6 +719,8 @@ export default defineComponent({
|
|
|
681
719
|
</div>
|
|
682
720
|
</td>
|
|
683
721
|
</template>
|
|
722
|
+
|
|
723
|
+
<!-- 列渲染:Kubernetes 版本 + 架构 -->
|
|
684
724
|
<template #col:kubernetesVersion="{row}">
|
|
685
725
|
<td class="col-name">
|
|
686
726
|
<span>
|
|
@@ -694,6 +734,8 @@ export default defineComponent({
|
|
|
694
734
|
</div>
|
|
695
735
|
</td>
|
|
696
736
|
</template>
|
|
737
|
+
|
|
738
|
+
<!-- 列渲染:CPU 核数 -->
|
|
697
739
|
<template #col:cpu="{row}">
|
|
698
740
|
<td v-if="row.mgmt && cpuAllocatable(row.mgmt)">
|
|
699
741
|
{{ `${cpuAllocatable(row.mgmt)} ${t('landing.clusters.cores', {count:cpuAllocatable(row.mgmt) })}` }}
|
|
@@ -702,6 +744,8 @@ export default defineComponent({
|
|
|
702
744
|
—
|
|
703
745
|
</td>
|
|
704
746
|
</template>
|
|
747
|
+
|
|
748
|
+
<!-- 列渲染:内存 -->
|
|
705
749
|
<template #col:memory="{row}">
|
|
706
750
|
<td v-if="row.mgmt && memoryAllocatable(row.mgmt) && !memoryAllocatable(row.mgmt).match(/^0 [a-zA-z]/)">
|
|
707
751
|
{{ memoryAllocatable(row.mgmt) }}
|
|
@@ -710,16 +754,20 @@ export default defineComponent({
|
|
|
710
754
|
—
|
|
711
755
|
</td>
|
|
712
756
|
</template>
|
|
713
|
-
|
|
757
|
+
|
|
758
|
+
<!-- 列渲染:探索按钮 -->
|
|
759
|
+
<template #cell:explorer="{row}">
|
|
714
760
|
<router-link v-if="row && row.isReady" class="btn btn-sm role-primary" :to="{name: 'c-cluster', params: {cluster: row.id}}">
|
|
715
761
|
{{ t('landing.clusters.explore') }}
|
|
716
762
|
</router-link>
|
|
717
763
|
<button v-else :disabled="true" class="btn btn-sm role-primary">
|
|
718
764
|
{{ t('landing.clusters.explore') }}
|
|
719
765
|
</button>
|
|
720
|
-
</template>
|
|
766
|
+
</template>
|
|
721
767
|
</PaginatedResourceTable>
|
|
722
768
|
</div>
|
|
769
|
+
|
|
770
|
+
<!-- 单集群模式 -->
|
|
723
771
|
<div
|
|
724
772
|
v-else
|
|
725
773
|
class="col span-12"
|
|
@@ -728,7 +776,8 @@ export default defineComponent({
|
|
|
728
776
|
</div>
|
|
729
777
|
</div>
|
|
730
778
|
</div>
|
|
731
|
-
|
|
779
|
+
<!-- 右侧社区链接面板 -->
|
|
780
|
+
<!-- <CommunityLinks class="col span-3 side-panel" /> -->
|
|
732
781
|
</div>
|
|
733
782
|
</IndentedPanel>
|
|
734
783
|
</div>
|
|
@@ -776,7 +825,7 @@ export default defineComponent({
|
|
|
776
825
|
height: 39px;
|
|
777
826
|
|
|
778
827
|
& > a {
|
|
779
|
-
margin-
|
|
828
|
+
margin-right: 10px;
|
|
780
829
|
}
|
|
781
830
|
}
|
|
782
831
|
.panel:not(:first-child) {
|
package/pages/prefs.vue
CHANGED
|
@@ -191,11 +191,13 @@ export default {
|
|
|
191
191
|
<!-- Language -->
|
|
192
192
|
<div
|
|
193
193
|
v-if="hasMultipleLocales && !isHarvester"
|
|
194
|
-
class="
|
|
194
|
+
class="mb-20 p-20 pb-0"
|
|
195
|
+
style="border: 1px solid var(--nav-border);"
|
|
195
196
|
>
|
|
196
197
|
<h4
|
|
197
198
|
id="prefs-language"
|
|
198
199
|
v-t="'prefs.language'"
|
|
200
|
+
class="pb-20"
|
|
199
201
|
/>
|
|
200
202
|
<div class="row">
|
|
201
203
|
<div class="col span-4">
|
|
@@ -207,36 +209,35 @@ export default {
|
|
|
207
209
|
</div>
|
|
208
210
|
</div>
|
|
209
211
|
<!-- Theme -->
|
|
210
|
-
<div class="
|
|
211
|
-
<h4 v-t="'prefs.theme.label'" />
|
|
212
|
+
<div class="mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
213
|
+
<h4 v-t="'prefs.theme.label'" class="mb-20" />
|
|
212
214
|
<ButtonGroup
|
|
213
215
|
v-model:value="theme"
|
|
214
216
|
data-testid="prefs__themeOptions"
|
|
215
217
|
:options="themeOptions"
|
|
216
218
|
/>
|
|
217
|
-
<div class="mt-10">
|
|
219
|
+
<!-- <div class="mt-10">
|
|
218
220
|
<t
|
|
219
221
|
k="prefs.theme.autoDetail"
|
|
220
222
|
:pm="pm"
|
|
221
223
|
:am="am"
|
|
222
224
|
/>
|
|
223
|
-
</div>
|
|
225
|
+
</div> -->
|
|
224
226
|
</div>
|
|
225
227
|
<!-- Login landing page -->
|
|
226
228
|
<div
|
|
227
229
|
v-if="!isSingleProduct"
|
|
228
|
-
class="
|
|
230
|
+
class="mb-20 p-20"
|
|
231
|
+
style="border: 1px solid var(--nav-border);"
|
|
229
232
|
>
|
|
230
|
-
<
|
|
231
|
-
<h4 v-t="'prefs.landing.label'" />
|
|
233
|
+
<h4 v-t="'prefs.landing.label'" class="mb-20" />
|
|
232
234
|
<LandingPagePreference
|
|
233
235
|
data-testid="prefs__landingPagePreference"
|
|
234
236
|
/>
|
|
235
237
|
</div>
|
|
236
238
|
<!-- Display Settings -->
|
|
237
|
-
<div class="
|
|
238
|
-
<
|
|
239
|
-
<h4 v-t="'prefs.displaySettings.title'" />
|
|
239
|
+
<div class="mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
240
|
+
<h4 v-t="'prefs.displaySettings.title'" class="mb-20" />
|
|
240
241
|
<p class="set-landing-leadin">
|
|
241
242
|
{{ t('prefs.displaySettings.detail', {}, raw=true) }}
|
|
242
243
|
</p>
|
|
@@ -277,10 +278,10 @@ export default {
|
|
|
277
278
|
<!-- Confirmation setting -->
|
|
278
279
|
<div
|
|
279
280
|
v-if="!isSingleProduct"
|
|
280
|
-
class="col adv-features
|
|
281
|
+
class="col adv-features mb-20 p-20"
|
|
282
|
+
style="border: 1px solid var(--nav-border);"
|
|
281
283
|
>
|
|
282
|
-
<
|
|
283
|
-
<h4 v-t="'prefs.confirmationSetting.title'" />
|
|
284
|
+
<h4 v-t="'prefs.confirmationSetting.title'" class="mb-20" />
|
|
284
285
|
<Checkbox
|
|
285
286
|
v-model:value="scalingDownPrompt"
|
|
286
287
|
data-testid="prefs__scalingDownPrompt"
|
|
@@ -289,9 +290,8 @@ export default {
|
|
|
289
290
|
/>
|
|
290
291
|
</div>
|
|
291
292
|
<!-- Advanced Features -->
|
|
292
|
-
<div class="col adv-features
|
|
293
|
-
<
|
|
294
|
-
<h4 v-t="'prefs.advFeatures.title'" />
|
|
293
|
+
<div class="col adv-features mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
294
|
+
<h4 v-t="'prefs.advFeatures.title'" class="mb-20" />
|
|
295
295
|
<Checkbox
|
|
296
296
|
v-model:value="viewInApi"
|
|
297
297
|
data-testid="prefs__viewInApi"
|
|
@@ -332,9 +332,8 @@ export default {
|
|
|
332
332
|
</template>
|
|
333
333
|
</div>
|
|
334
334
|
<!-- YAML editor key mapping -->
|
|
335
|
-
<div class="col
|
|
336
|
-
<
|
|
337
|
-
<h4 v-t="'prefs.keymap.label'" />
|
|
335
|
+
<div class="col mb-20 p-20" style="border: 1px solid var(--nav-border);">
|
|
336
|
+
<h4 v-t="'prefs.keymap.label'" class="mb-20" />
|
|
338
337
|
<ButtonGroup
|
|
339
338
|
v-model:value="keymap"
|
|
340
339
|
data-testid="prefs__keymapOptions"
|
|
@@ -344,10 +343,10 @@ export default {
|
|
|
344
343
|
<!-- Helm Charts -->
|
|
345
344
|
<div
|
|
346
345
|
v-if="!isSingleProduct"
|
|
347
|
-
class="col
|
|
346
|
+
class="col mb-40 p-20"
|
|
347
|
+
style="border: 1px solid var(--nav-border);"
|
|
348
348
|
>
|
|
349
|
-
<
|
|
350
|
-
<h4 v-t="'prefs.helm.label'" />
|
|
349
|
+
<h4 v-t="'prefs.helm.label'" class="mb-20" />
|
|
351
350
|
<ButtonGroup
|
|
352
351
|
v-model:value="showPreRelease"
|
|
353
352
|
data-testid="prefs__helmOptions"
|
|
@@ -366,4 +365,7 @@ export default {
|
|
|
366
365
|
max-width: 80vw;
|
|
367
366
|
color: var(--input-label);
|
|
368
367
|
}
|
|
368
|
+
h4{
|
|
369
|
+
font-size: 14px;
|
|
370
|
+
}
|
|
369
371
|
</style>
|
package/pkg/tsconfig.json
CHANGED
|
@@ -27,25 +27,25 @@
|
|
|
27
27
|
],
|
|
28
28
|
"paths": {
|
|
29
29
|
"@shell/core/*": [
|
|
30
|
-
"../../node_modules/
|
|
30
|
+
"../../node_modules/@rancher/shell/core/*"
|
|
31
31
|
],
|
|
32
32
|
"@shell/config/*": [
|
|
33
|
-
"../../node_modules/
|
|
33
|
+
"../../node_modules/@rancher/shell/config/*"
|
|
34
34
|
],
|
|
35
35
|
"@shell/store/*": [
|
|
36
|
-
"../../node_modules/
|
|
36
|
+
"../../node_modules/@rancher/shell/store/*"
|
|
37
37
|
],
|
|
38
38
|
"@shell/plugins/*": [
|
|
39
|
-
"../../node_modules/
|
|
39
|
+
"../../node_modules/@rancher/shell/plugins/*"
|
|
40
40
|
],
|
|
41
41
|
"@shell/utils/*": [
|
|
42
|
-
"../../node_modules/
|
|
42
|
+
"../../node_modules/@rancher/shell/utils/*"
|
|
43
43
|
],
|
|
44
44
|
"@shell/models/*": [
|
|
45
|
-
"../../node_modules/
|
|
45
|
+
"../../node_modules/@rancher/shell/models/*"
|
|
46
46
|
],
|
|
47
47
|
"@shell/mixins/*": [
|
|
48
|
-
"../../node_modules/
|
|
48
|
+
"../../node_modules/@rancher/shell/mixins/*"
|
|
49
49
|
],
|
|
50
50
|
"@pkg/*": [
|
|
51
51
|
"./*"
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"**/*.ts",
|
|
57
57
|
"**/*.tsx",
|
|
58
58
|
"**/*.vue",
|
|
59
|
-
"../../node_modules/
|
|
60
|
-
"../../node_modules/
|
|
59
|
+
"../../node_modules/@rancher/shell/types/*.d.ts",
|
|
60
|
+
"../../node_modules/@rancher/shell/core/types.ts"
|
|
61
61
|
],
|
|
62
62
|
"exclude": [
|
|
63
63
|
"node_modules"
|
package/pkg/vue.config.js
CHANGED
|
@@ -117,7 +117,7 @@ module.exports = function(dir) {
|
|
|
117
117
|
if (p.use) {
|
|
118
118
|
p.use.forEach((u) => {
|
|
119
119
|
if (u.loader.includes('babel-loader')) {
|
|
120
|
-
p.exclude = /node_modules\/(
|
|
120
|
+
p.exclude = /node_modules\/(?!@rancher\/shell\/).*/;
|
|
121
121
|
}
|
|
122
122
|
});
|
|
123
123
|
}
|
|
@@ -92,10 +92,10 @@ export default {
|
|
|
92
92
|
this.info = '';
|
|
93
93
|
this.warning = this.t('rbac.globalRoles.usersBound', { count: uniqueUsersWithBinds.size });
|
|
94
94
|
} else {
|
|
95
|
-
this.info = this.t('rbac.globalRoles.notBound'
|
|
95
|
+
this.info = this.t('rbac.globalRoles.notBound');
|
|
96
96
|
}
|
|
97
97
|
} else {
|
|
98
|
-
this.info = this.t('rbac.globalRoles.notBound'
|
|
98
|
+
this.info = this.t('rbac.globalRoles.notBound');
|
|
99
99
|
}
|
|
100
100
|
} catch (e) {
|
|
101
101
|
this.info = this.t('rbac.globalRoles.unableToCheck');
|
package/scripts/clean
CHANGED
|
File without changes
|
package/scripts/extension/bundle
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|