From c5cb980e6193d6021fb568378ef51572294cd1a2 Mon Sep 17 00:00:00 2001 From: Marcelo Fukumoto Date: Mon, 18 May 2026 23:07:55 +0200 Subject: [PATCH 01/28] Added workload-dashboard --- .../Resource/Detail/Card/StatusCard/index.vue | 27 +- .../components/Resource/Detail/Card/index.vue | 29 +- .../components/Resource/Detail/StatusRow.vue | 21 +- shell/config/product/explorer.js | 19 +- shell/config/router/routes.js | 4 + .../_cluster/explorer/workload-dashboard.vue | 513 ++++++++++++++++++ 6 files changed, 593 insertions(+), 20 deletions(-) create mode 100644 shell/pages/c/_cluster/explorer/workload-dashboard.vue diff --git a/shell/components/Resource/Detail/Card/StatusCard/index.vue b/shell/components/Resource/Detail/Card/StatusCard/index.vue index c5b8cda97ba..4d1a3bd8645 100644 --- a/shell/components/Resource/Detail/Card/StatusCard/index.vue +++ b/shell/components/Resource/Detail/Card/StatusCard/index.vue @@ -8,12 +8,16 @@ import { useI18n } from '@shell/composables/useI18n'; import { StateColor } from '@shell/utils/style'; import { computed } from 'vue'; import { useStore } from 'vuex'; +import type { RouteLocationRaw } from 'vue-router'; export interface Props { title: string; resources?: any[]; showScaling?: boolean; + showPercent?: boolean; noResourcesMessage?: string; + to?: RouteLocationRaw; + rowTo?: RouteLocationRaw | string; } @@ -24,7 +28,10 @@ const i18n = useI18n(store); const props = withDefaults(defineProps(), { resources: undefined, showScaling: false, - noResourcesMessage: undefined + showPercent: true, + noResourcesMessage: undefined, + to: undefined, + rowTo: undefined }); const emit = defineEmits(['decrease', 'increase']); @@ -85,6 +92,14 @@ const rows = computed(() => { })); }); +function rowRoute(label: string): RouteLocationRaw | undefined { + if (!props.rowTo || typeof props.rowTo === 'string') { + return undefined; + } + + return { ...props.rowTo, query: { q: label } }; +} +