dashboard-shell-shell 3.0.5-test.19 → 3.0.5-test.20

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.
Files changed (33) hide show
  1. package/assets/styles/global/_button.scss +1 -1
  2. package/assets/translations/zh-hans.yaml +49 -5
  3. package/components/CodeMirror.vue +6 -4
  4. package/components/ContainerResourceLimit.vue +2 -2
  5. package/components/ResourceDetail/legacy.vue +15 -15
  6. package/components/ResourceList/Masthead.vue +9 -13
  7. package/components/SortableTable/index.vue +4 -1
  8. package/components/Tabbed/index.vue +3 -2
  9. package/components/breadcrumb/index.vue +1 -0
  10. package/components/form/ArrayList.vue +1 -2
  11. package/components/form/ArrayListGrouped.vue +3 -1
  12. package/components/form/HookOption.vue +4 -0
  13. package/components/form/KeyValue.vue +4 -0
  14. package/components/form/Labels.vue +1 -1
  15. package/components/form/Networking.vue +6 -8
  16. package/components/form/PodAffinity.vue +4 -2
  17. package/components/form/Security.vue +1 -3
  18. package/components/form/ServiceNameSelect.vue +1 -2
  19. package/config/product/explorer.js +4 -1
  20. package/detail/node.vue +28 -23
  21. package/dialog/AddCustomBadgeDialog.vue +17 -9
  22. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
  23. package/edit/persistentvolume/index.vue +3 -1
  24. package/edit/persistentvolumeclaim.vue +2 -0
  25. package/edit/workload/Job.vue +4 -5
  26. package/edit/workload/Upgrading.vue +2 -2
  27. package/edit/workload/index.vue +16 -12
  28. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -0
  29. package/package.json +1 -1
  30. package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
  31. package/pages/c/_cluster/explorer/tools/index.vue +6 -6
  32. package/rancher-components/Banner/Banner.vue +1 -1
  33. package/scripts/publish-shell.sh +1 -1
@@ -120,7 +120,7 @@ button,
120
120
  line-height: $btn-sm-height - 2px;
121
121
 
122
122
  &:focus, &.focused {
123
- border: 0;
123
+ // border: 0;
124
124
  }
125
125
  }
126
126
  }
@@ -111,6 +111,8 @@ generic:
111
111
  =1 {匹配 {total, number} 个中的 1 个:"{sample}"}
112
112
  other {匹配 {total, number} 中的 {matched, number} 个,包括 "{sample}"}
113
113
  }
114
+ ariaLabel:
115
+ genericAddRow: 添加
114
116
 
115
117
  graph:
116
118
  loading: 正在加载 Chart 数据...
@@ -2575,7 +2577,7 @@ ingress:
2575
2577
  required: 目标服务是必填的
2576
2578
  warning: "警告:默认后端将全局用于整个集群"
2577
2579
  ingressClass:
2578
- label: IngressClass
2580
+ label: Ingress类
2579
2581
  rules:
2580
2582
  addPath: 添加路径
2581
2583
  addRule: 添加规则
@@ -2916,7 +2918,7 @@ logging:
2916
2918
  default: /run/log/journal
2917
2919
  elasticsearch:
2918
2920
  host: 主机
2919
- scheme: Scheme
2921
+ scheme: 协议
2920
2922
  port: 端口
2921
2923
  indexName: 索引名称
2922
2924
  user: 用户名
@@ -5938,7 +5940,9 @@ workload:
5938
5940
  exec: 容器内运行的命令以 0 状态退出
5939
5941
  image: 容器镜像
5940
5942
  imagePullPolicy: 镜像拉取策略
5941
- imagePullSecrets: 拉取密文
5943
+ imagePullSecrets:
5944
+ label: 镜像拉取密钥
5945
+ tooltip: 必须为 kubernetes.io/dockercfg 或 kubernetes.io/dockerconfigjson 类型
5942
5946
  init: 初始化容器
5943
5947
  lifecycleHook:
5944
5948
  postStart:
@@ -5966,7 +5970,7 @@ workload:
5966
5970
  label: 端口
5967
5971
  placeholder: 例如:3000
5968
5972
  scheme:
5969
- label: Scheme
5973
+ label: 协议
5970
5974
  placeholder: 例如:HTTP
5971
5975
  httpHeaders:
5972
5976
  title: HTTP 头部
@@ -6017,7 +6021,7 @@ workload:
6017
6021
  hostPID: 使用主机 PID 资源组
6018
6022
  podFsGroup: Pod 文件系统组
6019
6023
  privileged:
6020
- label: Privileged
6024
+ label: 特权模式
6021
6025
  'false': 否
6022
6026
  'true': "是:容器可以完全访问主机"
6023
6027
  readOnlyRootFilesystem:
@@ -6512,6 +6516,26 @@ typeDescription:
6512
6516
  management.cattle.io.setting: 统一配置平台基础选项与全局设置,支持CA证书、密码规则、域名、Token时效等核心配置。
6513
6517
  management.cattle.io.user: 用于管理用户账号,支持创建、维护用户信息,可设置用户权限、管理密码等,保障系统资源仅由授权用户访问,提升系统安全性。
6514
6518
  harvesterhci.io.management.cluster: 提供虚拟化集群的实时健康状态监控、版本号管理及资源负载管理,支持批量导入/删除集群、配置调优与权限分级功能,实现高效运维管控。
6519
+ projectsnamespaces: 项目/资源组是用于在集群内实现资源隔离和多租户管理的基本单元。通过项目可以对一组命名空间及相关资源进行统一的权限、配额和策略管理。
6520
+ members: 集群和项目成员管理页面用于配置用户和用户组对资源的访问权限。通过角色绑定(RBAC)来控制成员在集群或项目范围内的操作权限,实现安全的协同管理。
6521
+ event: 事件记录了 Kubernetes 资源(如 Pod、节点等)的状态变化、错误信息和生命周期事件。通过查看事件可以快速诊断应用部署和运行中的问题。
6522
+ apps.deployment: Deployment 提供了对 Pod 和 ReplicaSet 的声明式更新管理。您可以定义应用的期望状态(如副本数、镜像版本),Deployment 控制器将以受控的方式逐步完成部署和滚动更新。
6523
+ batch.job: Job 用于创建一个或多个 Pod 并确保指定数量的 Pod 成功终止。适用于运行一次性任务或批处理作业,任务完成后 Pod 不会自动重启。
6524
+ apps.statefulset: StatefulSet 用于管理有状态应用的工作负载 API 对象。它为每个 Pod 提供稳定的网络标识符和持久化存储,确保 Pod 的部署、扩展、更新和删除都有序进行。
6525
+ pod: Pod 是 Kubernetes 中最小的可部署计算单元,包含一个或多个共享存储和网络资源的容器。Pod 代表了集群中运行的单个应用实例,是工作负载执行的实际载体。
6526
+ autoscaling.horizontalpodautoscaler: HorizontalPodAutoscaler (HPA) 用于根据观察到的 CPU 利用率或其他自定义指标自动调整工作负载的 Pod 副本数量,实现应用的水平自动扩缩容。
6527
+ networking.k8s.io.ingress: Ingress 用于管理对集群内服务的外部访问,提供 HTTP 和 HTTPS 路由规则。通过 Ingress 可以配置负载均衡、SSL 终止和基于名称的虚拟主机等能力。
6528
+ service: Service 用于将一组 Pod 暴露为网络服务,提供稳定的 IP 地址和 DNS 名称,并实现负载均衡。Service 确保您的应用程序在网络中可被发现和可靠访问。
6529
+ storage.k8s.io.storageclass: 存储池页面用于集中管理和配置集群中的持久化存储资源。您可以在此查看存储提供商、创建存储类(StorageClass)并为有状态应用动态提供持久卷(Persistent Volume)。
6530
+ persistentvolume: PersistentVolume (PV) 是集群中的一块持久化存储资源,由管理员预先配置或通过存储类动态供应。PV 为需要持久化数据的应用提供独立于 Pod 生命周期的存储空间。
6531
+ persistentvolumeclaim: 虚拟磁盘是提供给虚拟机使用的持久化存储设备,为虚拟机操作系统和应用数据提供独立的、可扩展的存储空间。虚拟磁盘的生命周期可以与虚拟机解耦,实现数据的持久化保存。
6532
+ configmap: ConfigMap 用于将非机密的配置数据以键值对形式保存,并注入到 Pod 中作为环境变量、命令行参数或配置文件使用。实现应用配置与容器镜像的分离,便于配置管理。
6533
+ secret: Secret 用于存储和管理敏感信息,如密码、OAuth 令牌和 SSH 密钥等。Secret 以加密方式保存数据,并可以安全地挂载到 Pod 中供容器使用,避免敏感信息硬编码。
6534
+ projectsecret: Secret 用于存储和管理敏感信息,如密码、OAuth 令牌和 SSH 密钥等。Secret 以加密方式保存数据,并可以安全地挂载到 Pod 中供容器使用,避免敏感信息硬编码。
6535
+ networking.k8s.io.networkpolicy: 网络策略用于控制 Pod 组之间的网络通信规则,实现 Kubernetes 集群内的网络隔离。通过定义入站和出站规则,可以精确控制 Pod 之间的网络访问权限。
6536
+ limitrange: 限制范围用于在命名空间内限制资源的使用量,包括 Pod 的计算资源(CPU、内存)请求和限制、存储卷大小以及可创建的资源对象数量,防止资源过度消耗。
6537
+ resourcequota: 资源配额用于限制命名空间可以使用的总体资源总量,包括计算资源、存储资源以及可创建的对象数量。它确保命名空间内的资源使用不会超过分配的配额限制。
6538
+ policy.poddisruptionbudget: Pod 中断预算用于限制自愿中断期间同时终止的 Pod 副本数量,确保应用的高可用性。它可以防止在节点维护或集群缩容时导致的应用服务中断。
6515
6539
  typeLabel:
6516
6540
  management.cattle.io.project: |-
6517
6541
  {count, plural,
@@ -6869,6 +6893,26 @@ typeLabel:
6869
6893
  one { 工作负载 }
6870
6894
  other { 工作负载 }
6871
6895
  }
6896
+ cluster : |-
6897
+ {count, plural,
6898
+ one { 集群 }
6899
+ other { 集群 }
6900
+ }
6901
+ servicediscovery : |-
6902
+ {count, plural,
6903
+ one { 服务发现 }
6904
+ other { 服务发现 }
6905
+ }
6906
+ storage : |-
6907
+ {count, plural,
6908
+ one { 存储 }
6909
+ other { 存储 }
6910
+ }
6911
+ policy : |-
6912
+ {count, plural,
6913
+ one { 策略 }
6914
+ other { 策略 }
6915
+ }
6872
6916
  harvesterhci.io.management.cluster: |-
6873
6917
  {count, plural,
6874
6918
  one { Cloud 集群 }
@@ -323,12 +323,12 @@ export default {
323
323
  }
324
324
 
325
325
  &.as-text-area .codemirror-container{
326
- min-height: 40px;
326
+ min-height: 32px !important;
327
327
  position: relative;
328
328
  display: block;
329
329
  box-sizing: border-box;
330
330
  width: 100%;
331
- padding: 10px;
331
+ padding: 8px 10px 0 10px !important;
332
332
  background-color: var(--input-bg);
333
333
  border-radius: var(--border-radius);
334
334
  border: solid var(--border-width) var(--input-border);
@@ -418,7 +418,7 @@ export default {
418
418
 
419
419
  .code-mirror {
420
420
  position: relative;
421
- margin-bottom: 20px;
421
+ margin-bottom: 0 !important;
422
422
 
423
423
  .escape-text {
424
424
  font-size: 12px;
@@ -498,5 +498,7 @@ export default {
498
498
  }
499
499
  }
500
500
  }
501
-
501
+ .CodeMirror-scroll {
502
+ min-height: 350px;
503
+ }
502
504
  </style>
@@ -177,7 +177,7 @@ export default {
177
177
  </div>
178
178
  </div>
179
179
 
180
- <div class="row mb-20">
180
+ <div class="row">
181
181
  <span class="col span-6">
182
182
  <UnitInput
183
183
  v-model:value="requestsCpu"
@@ -206,7 +206,7 @@ export default {
206
206
  </span>
207
207
  </div>
208
208
 
209
- <div class="row mb-20">
209
+ <div class="row">
210
210
  <span class="col span-6">
211
211
  <UnitInput
212
212
  v-model:value="limitsCpu"
@@ -523,21 +523,21 @@ export default {
523
523
  />
524
524
 
525
525
  <component
526
- :is="showComponent"
527
- v-else
528
- ref="comp"
529
- v-model:value="value"
530
- v-bind="$data"
531
- :done-params="doneParams"
532
- :done-route="doneRoute"
533
- :mode="mode"
534
- :initial-value="initialModel"
535
- :live-value="liveModel"
536
- :real-mode="realMode"
537
- :class="{'flex-content': flexContent}"
538
- @update:value="$emit('input', $event)"
539
- @update:mode="setMode"
540
- @set-subtype="setSubtype"
526
+ :is="showComponent"
527
+ v-else
528
+ ref="comp"
529
+ v-model:value="value"
530
+ v-bind="$data"
531
+ :done-params="doneParams"
532
+ :done-route="doneRoute"
533
+ :mode="mode"
534
+ :initial-value="initialModel"
535
+ :live-value="liveModel"
536
+ :real-mode="realMode"
537
+ :class="{'flex-content': flexContent}"
538
+ @update:value="$emit('input', $event)"
539
+ @update:mode="setMode"
540
+ @set-subtype="setSubtype"
541
541
  />
542
542
 
543
543
  <button
@@ -156,37 +156,34 @@ export default {
156
156
  demoDisplay() {
157
157
 
158
158
  const product = this.$store.getters['productId'];
159
- const productId = this.$store.getters['type-map/groupForBasicType'](this.$store.getters['productId'], this._createLocation.params.resource);
160
- const parts = productId?.split('::');
159
+ const productId = this.$store.getters['type-map/groupForBasicType'](this.$store.getters['productId'], this._createLocation?.params?.resource);
160
+ console.log(this._createLocation, 'this._createLocation?.params?.resource')
161
+ console.log(this._createLocation?.params?.resource, 'this._createLocation?.params?.resource')
162
+ let parts = productId?.split('::');
161
163
  const newString = 'root';
162
164
 
163
- // const product = this.$store.getters['productId'];
164
- // const productId = this.$store.getters['type-map/groupForBasicType'](this.$store.getters['productId'], this._createLocation.params.resource);
165
-
166
- // const parts = productId?.split('::') || [];
167
- // const newString = 'root';
168
-
165
+ if (!parts) {
166
+ if (this.$route.path.includes('/c/local/explorer/secret')) {
167
+ parts = ['storage']
168
+ }
169
+ }
169
170
 
170
171
  const breadcrumbList = {
171
172
  'harvesterhci.io.management.cluster': {
172
173
  origin: 'Harvester 集群',
173
174
  bread: ['虚拟化管理'],
174
- description: '提供虚拟化集群的实时健康状态监控、版本号管理及资源负载管理,支持批量导入/删除集群、配置调优与权限分级功能,实现高效运维管控。'
175
175
  },
176
176
  'management.cattle.io.user': {
177
177
  origin: '用户',
178
178
  bread: ['用户 & 认证'],
179
- description: '用于管理用户账号,支持创建、维护用户信息,可设置用户权限、管理密码等,保障系统资源仅由授权用户访问,提升系统安全性。'
180
179
  },
181
180
  'management.cattle.io.setting':{
182
181
  origin: '基础设置',
183
182
  bread: ['全局设置'],
184
- description: '统一配置平台基础选项与全局设置,支持CA证书、密码规则、域名、Token时效等核心配置。'
185
183
  },
186
184
  'management.cattle.io.feature':{
187
185
  origin: '功能开关',
188
186
  bread: ['全局设置'],
189
- description: '还没有添加描述。。。。'
190
187
  },
191
188
  }
192
189
  const resourcePath = this.$route.params.resource || ''
@@ -194,7 +191,6 @@ export default {
194
191
  const breadcrumb = []
195
192
  if (breadcrumbList[resourcePath] && Object.keys(breadcrumbList[resourcePath]).length > 0) {
196
193
  breadcrumb.push(...breadcrumbList[resourcePath].bread)
197
- this.description = breadcrumbList[resourcePath].description
198
194
  return breadcrumb
199
195
  } else {
200
196
  if (!parts?.includes(newString)) {
@@ -2201,6 +2201,9 @@ export default {
2201
2201
  td {
2202
2202
  padding: 8px 5px;
2203
2203
  border: 0;
2204
+ white-space: normal;
2205
+ word-break: break-all;
2206
+ overflow-wrap: break-word;
2204
2207
 
2205
2208
  &:first-child {
2206
2209
  padding-left: 10px;
@@ -2664,7 +2667,7 @@ export default {
2664
2667
  .sort-table-div{
2665
2668
  width:100%;
2666
2669
  white-space:nowrap;
2667
- // overflow-x: auto;
2670
+ overflow-x: auto;
2668
2671
  }
2669
2672
 
2670
2673
  /* 滚动阴影左边 */
@@ -390,6 +390,7 @@ export default {
390
390
 
391
391
  + .tab-container {
392
392
  border: solid thin var(--border);
393
+ border-top: 0px;
393
394
  }
394
395
 
395
396
  .tab.active {
@@ -504,8 +505,8 @@ margin: 0px -20px;
504
505
  display: flex;
505
506
  border-bottom:1px solid #d7d7d7;
506
507
  padding: 0 0 0 20px;
507
- overflow: auto;
508
- overflow-y: hidden;
508
+ // overflow: auto;
509
+ // overflow-y: hidden;
509
510
  /* flex: 1 0; */
510
511
  /* flex-direction: column; */
511
512
 
@@ -44,6 +44,7 @@ export default {
44
44
  demoDisplay() {
45
45
 
46
46
  const resources = this.$route.params?.resource || ''
47
+ console.log(resources, 'resources')
47
48
 
48
49
  const productId = this.$store.getters['type-map/groupForBasicType'](this.$store.getters['productId'], resources);
49
50
 
@@ -265,9 +265,8 @@ export default {
265
265
  >
266
266
 
267
267
  <div class="row">
268
- <div style="width: 100%;" class="col">
268
+ <div v-if="title" style="width: 100%;" class="col">
269
269
  <div
270
- v-if="title"
271
270
  class="clearfix"
272
271
  role="group"
273
272
  >
@@ -120,7 +120,8 @@ export default {
120
120
 
121
121
  <style lang="scss">
122
122
  .array-list-grouped {
123
- & > .box {
123
+ .box {
124
+ border: 1px solid var(--tabbed-border);
124
125
  position: relative;
125
126
  display: block;
126
127
 
@@ -140,6 +141,7 @@ export default {
140
141
  }
141
142
 
142
143
  & > .info-box {
144
+ border: 0px solid #fff;
143
145
  margin-bottom: 0;
144
146
  padding-right: 25px;
145
147
  }
@@ -275,4 +275,8 @@ export default {
275
275
  border: solid 1px var(--primary);
276
276
  color: var(--primary);
277
277
  }
278
+
279
+ H4{
280
+ font-size: 14px;
281
+ }
278
282
  </style>
@@ -1054,4 +1054,8 @@ export default {
1054
1054
  border-collapse: separate;
1055
1055
  z-index: 0; // Prevent label from cover other elements outside of the input
1056
1056
  }
1057
+
1058
+ h3{
1059
+ font-size: 14px;
1060
+ }
1057
1061
  </style>
@@ -162,7 +162,7 @@ export default {
162
162
  <div :class="defaultSectionClass">
163
163
  <div class="labels">
164
164
  <div class="labels__header mb-20">
165
- <div v-if="showLabelTitle">
165
+ <div v-if="showLabelTitle" style="font-size: 14px;">
166
166
  <t k="labels.labels.title" />
167
167
  </div>
168
168
  <ToggleSwitch
@@ -160,7 +160,7 @@ export default {
160
160
  <div>
161
161
  <div>
162
162
  <h3>{{ t('workload.container.titles.networkSettings') }}</h3>
163
- <div class="row mb-20">
163
+ <div class="row">
164
164
  <div class="col span-6">
165
165
  <LabeledSelect
166
166
  v-model:value="networkMode"
@@ -205,12 +205,11 @@ export default {
205
205
  </div>
206
206
  </div>
207
207
  </div>
208
- <div class="spacer" />
209
208
 
210
- <div>
209
+ <div class="mt-20">
211
210
  <h3>{{ t('workload.networking.dns') }}</h3>
212
211
  <div class="row">
213
- <div class="col span-6">
212
+ <div class="span-6">
214
213
  <ArrayList
215
214
  key="dnsNameservers"
216
215
  v-model:value="nameservers"
@@ -222,7 +221,7 @@ export default {
222
221
  @update:value="update"
223
222
  />
224
223
  </div>
225
- <div class="col span-6">
224
+ <div class="span-6">
226
225
  <ArrayList
227
226
  key="dnsSearches"
228
227
  v-model:value="searches"
@@ -237,7 +236,7 @@ export default {
237
236
  </div>
238
237
  </div>
239
238
 
240
- <div class="mt-20">
239
+ <div>
241
240
  <div class="row">
242
241
  <KeyValue
243
242
  v-model:value="options"
@@ -253,9 +252,8 @@ export default {
253
252
  />
254
253
  </div>
255
254
  </div>
256
- <div class="spacer" />
257
255
 
258
- <div class="row mt-20">
256
+ <div class="row mt-40">
259
257
  <div class="col span-12">
260
258
  <KeyValue
261
259
  key="hostAliases"
@@ -436,7 +436,7 @@ export default {
436
436
  @update:value="e=>updateLabelSelector(e, props)"
437
437
  />
438
438
  <div class="row mt-20">
439
- <div class="col span-6">
439
+ <div class="col">
440
440
  <LabeledSelect
441
441
  v-if="hasNodes"
442
442
  v-model:value="props.row.value.topologyKey"
@@ -464,9 +464,11 @@ export default {
464
464
  @update:value="update"
465
465
  />
466
466
  </div>
467
+ </div>
468
+ <div class="row">
467
469
  <div
468
470
  v-if="'weight' in props.row.value"
469
- class="col span-6"
471
+ class="col"
470
472
  >
471
473
  <LabeledInput
472
474
  v-model:value.number="props.row.value.weight"
@@ -157,7 +157,6 @@ export default {
157
157
  </div>
158
158
  </div>
159
159
  </div>
160
- <div class="spacer" />
161
160
 
162
161
  <div>
163
162
  <div class="row">
@@ -191,11 +190,10 @@ export default {
191
190
  </div>
192
191
  </div>
193
192
  </div>
194
- <div class="spacer" />
195
193
 
196
194
  <div
197
195
  data-testid="input-security-runAsUser"
198
- class="row mb-10"
196
+ class="row"
199
197
  >
200
198
  <div class="col span-6">
201
199
  <LabeledInput
@@ -120,8 +120,7 @@ export default {
120
120
 
121
121
  <template>
122
122
  <div>
123
- <div class="spacer" />
124
- <div class="row mb-10">
123
+ <div class="row mb-10 mt-40">
125
124
  <h3>{{ t('workload.serviceAccountName.label') }}</h3>
126
125
  </div>
127
126
  <div class="row span-6">
@@ -75,7 +75,9 @@ export function init(store) {
75
75
  NODE,
76
76
  VIRTUAL_TYPES.CLUSTER_MEMBERS,
77
77
  EVENT,
78
- 'c-cluster-explorer-tools'
78
+ 'c-cluster-explorer-tools',
79
+ 'management.cattle.io.project',
80
+ 'management.cattle.io.clusterroletemplatebinding'
79
81
  ], 'cluster');
80
82
  basicType([
81
83
  LIMIT_RANGE,
@@ -95,6 +97,7 @@ export function init(store) {
95
97
  STORAGE_CLASS,
96
98
  SECRET,
97
99
  VIRTUAL_TYPES.PROJECT_SECRETS,
100
+ VIRTUAL_TYPES.NAMESPACES,
98
101
  CONFIG_MAP
99
102
  ], 'storage');
100
103
  basicType([
package/detail/node.vue CHANGED
@@ -196,28 +196,7 @@ export default {
196
196
  v-else
197
197
  class="node"
198
198
  >
199
- <div class="spacer" />
200
- <div class="alerts">
201
- <Alert
202
- class="mr-10"
203
- :status="pidPressureStatus"
204
- :message="t('node.detail.glance.pidPressure')"
205
- />
206
- <Alert
207
- class="mr-10"
208
- :status="diskPressureStatus"
209
- :message="t('node.detail.glance.diskPressure')"
210
- />
211
- <Alert
212
- class="mr-10"
213
- :status="memoryPressureStatus"
214
- :message="t('node.detail.glance.memoryPressure')"
215
- />
216
- <Alert
217
- :status="kubeletStatus"
218
- :message="t('node.detail.glance.kubelet')"
219
- />
220
- </div>
199
+ <div style="font-size: 14px;margin-bottom: 32px;">监控数据</div>
221
200
  <div class="mt-20 resources">
222
201
  <ConsumptionGauge
223
202
  :resource-name="t('node.detail.glance.consumptionGauge.cpu')"
@@ -237,7 +216,24 @@ export default {
237
216
  :used="value.podConsumed"
238
217
  />
239
218
  </div>
240
- <div class="spacer" />
219
+ <div class="alerts mt-10">
220
+ <Alert
221
+ :status="pidPressureStatus"
222
+ :message="t('node.detail.glance.pidPressure')"
223
+ />
224
+ <Alert
225
+ :status="diskPressureStatus"
226
+ :message="t('node.detail.glance.diskPressure')"
227
+ />
228
+ <Alert
229
+ :status="memoryPressureStatus"
230
+ :message="t('node.detail.glance.memoryPressure')"
231
+ />
232
+ <Alert
233
+ :status="kubeletStatus"
234
+ :message="t('node.detail.glance.kubelet')"
235
+ />
236
+ </div>
241
237
  <ResourceTabs
242
238
  :value="value"
243
239
  :mode="mode"
@@ -331,4 +327,13 @@ export default {
331
327
  width: 30%;
332
328
  }
333
329
  }
330
+ .alerts{
331
+ display: flex;
332
+ flex-wrap: wrap;
333
+ justify-content: space-between;
334
+ >div{
335
+ width: 30%;
336
+ margin-bottom: 10px;
337
+ }
338
+ }
334
339
  </style>
@@ -236,7 +236,7 @@ export default {
236
236
  <div class="badge-preview-header">
237
237
  <p> {{ t('clusterBadge.modal.previewHeader') }}</p>
238
238
  <div
239
- class="col span-12"
239
+ class="span-12"
240
240
  >
241
241
  <ClusterProviderIcon
242
242
  :cluster="{...previewCluster, badge: displayClusterPrevIcon}"
@@ -340,7 +340,7 @@ export default {
340
340
  display: flex;
341
341
  width: 100%;
342
342
  gap: 40px;
343
- padding: 10px 5px;
343
+ // padding: 10px 5px;
344
344
  margin-bottom: 30px;
345
345
  margin-top: 5px;
346
346
  background: var(--body-bg);
@@ -424,26 +424,34 @@ export default {
424
424
  }
425
425
 
426
426
  .badge-customisation {
427
- display: flex;
428
- gap: 10px;
427
+ // display: flex;
428
+ // gap: 10px;
429
429
 
430
- div {
430
+ >div {
431
431
  display: flex;
432
+ // align-items: flex-end;
433
+ margin-bottom: 30px;
432
434
  flex-direction: column;
433
- flex: 1;
434
- gap: 10px;
435
+ // flex: 1;
436
+ // gap: 10px;
435
437
 
436
438
  .color-input {
437
439
  display: flex;
438
440
  padding: 6px 10px;
439
441
  min-height: 61px;
440
442
  }
443
+
444
+ .checkbox-outer-container{
445
+ min-width: 160px;
446
+ margin-bottom: 10px;
447
+ // align-items: flex-start;
448
+ }
441
449
  }
442
450
 
443
451
  &-color {
444
452
  display: flex;
445
- flex-direction: column;
446
- gap: 10px;
453
+ // flex-direction: column;
454
+ // gap: 10px;
447
455
  }
448
456
  }
449
457
 
@@ -49,8 +49,8 @@ export default {
49
49
 
50
50
  <template>
51
51
  <div>
52
- <div class="row mb-20">
53
- <div class="col span-12">
52
+ <div class="row">
53
+ <div class="span-12">
54
54
  <ArrayListGrouped
55
55
  v-model:value="value.spec.behavior[type].policies"
56
56
  :add-label="t('hpa.scalingRule.addPolicy')"
@@ -59,7 +59,7 @@ export default {
59
59
  >
60
60
  <template #default="props">
61
61
  <div class="row">
62
- <div class="col span-4">
62
+ <div class="col">
63
63
  <LabeledSelect
64
64
  v-model:value="props.row.value.type"
65
65
  :mode="mode"
@@ -72,7 +72,9 @@ export default {
72
72
  :label="t('hpa.scalingRule.policy.type')"
73
73
  />
74
74
  </div>
75
- <div class="col span-4">
75
+ </div>
76
+ <div class="row">
77
+ <div class="col">
76
78
  <LabeledInput
77
79
  v-model:value.number="props.row.value.value"
78
80
  :mode="mode"
@@ -83,7 +85,9 @@ export default {
83
85
  :label="t('hpa.scalingRule.policy.value')"
84
86
  />
85
87
  </div>
86
- <div class="col span-4">
88
+ </div>
89
+ <div class="row">
90
+ <div class="col">
87
91
  <LabeledInput
88
92
  v-model:value.number="props.row.value.periodSeconds"
89
93
  :mode="mode"
@@ -125,6 +129,5 @@ export default {
125
129
  />
126
130
  </div>
127
131
  </div>
128
- <div class="row mb-40" />
129
132
  </div>
130
133
  </template>
@@ -298,7 +298,7 @@ export default {
298
298
  :label="t('persistentVolume.customize.label')"
299
299
  :weight="0"
300
300
  >
301
- <div class="row mb-20">
301
+ <div class="row">
302
302
  <div class="col span-6">
303
303
  <h3>{{ t('persistentVolume.customize.accessModes.label') }}</h3>
304
304
  <div>
@@ -323,6 +323,8 @@ export default {
323
323
  />
324
324
  </div>
325
325
  </div>
326
+ </div>
327
+ <div class="row">
326
328
  <div class="col span-6">
327
329
  <ArrayList
328
330
  v-model:value="value.spec.mountOptions"
@@ -257,6 +257,8 @@ export default {
257
257
  @update:value="updateDefaults"
258
258
  />
259
259
  </div>
260
+ </div>
261
+ <div class="row">
260
262
  <div class="col span-6">
261
263
  <div class="row">
262
264
  <div
@@ -150,7 +150,7 @@ export default {
150
150
 
151
151
  <template>
152
152
  <form>
153
- <div class="row mb-20">
153
+ <div class="row">
154
154
  <div
155
155
  data-testid="input-job-completions"
156
156
  class="col span-6"
@@ -178,7 +178,7 @@ export default {
178
178
  />
179
179
  </div>
180
180
  </div>
181
- <div class="row mb-20">
181
+ <div class="row">
182
182
  <div
183
183
  data-testid="input-job-backoffLimit"
184
184
  class="col span-6"
@@ -208,7 +208,7 @@ export default {
208
208
  </div>
209
209
 
210
210
  <template v-if="isCronJob">
211
- <div class="row mb-20">
211
+ <div class="row ">
212
212
  <div
213
213
  data-testid="input-job-successful"
214
214
  class="col span-6"
@@ -234,7 +234,7 @@ export default {
234
234
  />
235
235
  </div>
236
236
  </div>
237
- <div class="row mb-20">
237
+ <div class="row">
238
238
  <div
239
239
  data-testid="input-job-startingDeadlineSeconds"
240
240
  class="col span-6"
@@ -276,7 +276,6 @@ export default {
276
276
  </div>
277
277
  <div
278
278
  data-testid="input-job-concurrencyPolicy"
279
-
280
279
  class="col span-8"
281
280
  >
282
281
  <RadioGroup
@@ -241,7 +241,7 @@ export default {
241
241
  </div>
242
242
  <div
243
243
  v-if="isStatefulSet && !noDeploymentSpec"
244
- class="row mb-20"
244
+ class="row"
245
245
  >
246
246
  <div
247
247
  class="col span-6"
@@ -252,7 +252,7 @@ export default {
252
252
  name="podManagement"
253
253
  :mode="mode"
254
254
  :label="t('workload.upgrading.podManagementPolicy.label')"
255
- :options="['OrderedReady', 'Parallel']"
255
+ :options="['OrderedReady (顺序就绪模式)', 'Parallel (并行模式)']"
256
256
  @update:value="update"
257
257
  />
258
258
  </div>
@@ -194,7 +194,7 @@ export default {
194
194
  <div>
195
195
  <div
196
196
  :style="{'align-items':'center'}"
197
- class="row mb-20"
197
+ class="row"
198
198
  >
199
199
  <div class="col span-6">
200
200
  <LabeledInput
@@ -214,7 +214,7 @@ export default {
214
214
  />
215
215
  </div>
216
216
  </div>
217
- <h3>{{ t('workload.container.titles.image') }}</h3>
217
+ <h3 class="mt-20">{{ t('workload.container.titles.image') }}</h3>
218
218
  <div class="row">
219
219
  <div class="col span-6">
220
220
  <LabeledInput
@@ -252,7 +252,7 @@ export default {
252
252
  </div>
253
253
  </div>
254
254
  <div>
255
- <h3>
255
+ <h3 class="mt-20">
256
256
  {{ t('workload.container.ports.expose') }}
257
257
  <i
258
258
  v-clean-tooltip="{content: t('workload.container.ports.toolTip'), triggers: ['hover', 'touch', 'focus'] }"
@@ -274,8 +274,7 @@ export default {
274
274
  />
275
275
  </div>
276
276
  </div>
277
- <div class="spacer" />
278
- <div>
277
+ <div class="mt-40">
279
278
  <h3>{{ t('workload.container.titles.command') }}</h3>
280
279
  <Command
281
280
  v-model:value="allContainers[i]"
@@ -295,8 +294,7 @@ export default {
295
294
  :loading="isLoadingSecondaryResources"
296
295
  @update:value="updateServiceAccount"
297
296
  />
298
- <div class="spacer" />
299
- <div>
297
+ <div class="mt-40">
300
298
  <h3>{{ t('workload.container.titles.lifecycle') }}</h3>
301
299
  <LifecycleHooks
302
300
  v-model:value="allContainers[i].lifecycle"
@@ -449,8 +447,7 @@ export default {
449
447
  </div>
450
448
  </div>
451
449
 
452
- <div>
453
- <div class="spacer" />
450
+ <div class="mt-40">
454
451
  <h3 class="mb-10">
455
452
  <t k="workload.scheduling.titles.priority" />
456
453
  </h3>
@@ -563,7 +560,7 @@ export default {
563
560
  >
564
561
  <div>
565
562
  <h3>{{ t('workload.container.titles.podLabels') }}</h3>
566
- <div class="row mb-20">
563
+ <div class="row">
567
564
  <KeyValue
568
565
  key="labels"
569
566
  v-model:value="podLabels"
@@ -573,8 +570,7 @@ export default {
573
570
  :protip="false"
574
571
  />
575
572
  </div>
576
- <div class="spacer" />
577
- <h3>{{ t('workload.container.titles.podAnnotations') }}</h3>
573
+ <h3 class="mt-40">{{ t('workload.container.titles.podAnnotations') }}</h3>
578
574
  <div class="row">
579
575
  <KeyValue
580
576
  key="annotations"
@@ -666,8 +662,16 @@ export default {
666
662
  border-bottom: 1px solid var(--border);
667
663
  margin-bottom: 20px;
668
664
  }
665
+
666
+ > .tab-container{
667
+ border: none !important;
668
+ }
669
669
  }
670
670
  .padded {
671
671
  padding-bottom: 10px;
672
672
  }
673
+
674
+ H3{
675
+ font-size: 14px;
676
+ }
673
677
  </style>
@@ -233,6 +233,8 @@ export default {
233
233
  />
234
234
  </div>
235
235
  </div>
236
+ </div>
237
+ <div class="row">
236
238
  <div
237
239
  v-if="isCreatePV"
238
240
  class="col"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dashboard-shell-shell",
3
- "version": "3.0.5-test.19",
3
+ "version": "3.0.5-test.20",
4
4
  "description": "Rancher Dashboard Shell",
5
5
  "repository": "https://github.com/rancherlabs/dashboard",
6
6
  "license": "Apache-2.0",
@@ -49,7 +49,7 @@ export default {
49
49
  margin-left: 10px;
50
50
 
51
51
  &:hover {
52
- border-color: var(--lightest);
52
+ // border-color: var(--lightest);
53
53
  }
54
54
 
55
55
  > I {
@@ -230,7 +230,7 @@ export default {
230
230
 
231
231
  .name {
232
232
  white-space: nowrap;
233
- overflow: hidden;
233
+ // overflow: hidden;
234
234
  text-overflow: ellipsis;
235
235
  margin: 0;
236
236
  }
@@ -249,7 +249,7 @@ export default {
249
249
  .version {
250
250
  color: var(--muted);
251
251
  white-space: nowrap;
252
- overflow: hidden;
252
+ // overflow: hidden;
253
253
  text-overflow: ellipsis;
254
254
  font-size: 0.9em;
255
255
  margin-top: 4px;
@@ -262,10 +262,10 @@ export default {
262
262
  .description-content {
263
263
  display: -webkit-box;
264
264
  -webkit-box-orient: vertical;
265
- -webkit-line-clamp: 3;
266
- line-clamp: 3;
267
- overflow: hidden;
268
- text-overflow: ellipsis;
265
+ // -webkit-line-clamp: 3;
266
+ // line-clamp: 3;
267
+ // overflow: hidden;
268
+ // text-overflow: ellipsis;
269
269
  color: var(--text-muted);
270
270
  }
271
271
 
@@ -164,7 +164,7 @@ $icon-size: 24px;
164
164
  margin: 0px 0px 20px 0px;
165
165
  position: relative;
166
166
  width: 100%;
167
- height: 32px;
167
+ min-height: 32px;
168
168
  color: var(--body-text);
169
169
 
170
170
  &__icon {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
3
  # 执行命令示例:
4
- # TAG=shell-pkg-v3.0.5-test.19 ./shell/scripts/publish-shell.sh
4
+ # TAG=shell-pkg-v3.0.5-test.20 ./shell/scripts/publish-shell.sh
5
5
 
6
6
  set -euo pipefail
7
7