From f0f6e9ffeeedc6d7ede61ce197cbe99fa91b3c3d Mon Sep 17 00:00:00 2001 From: stardom3645 Date: Thu, 16 Jul 2026 14:30:29 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[Mold][=EB=9E=99=20=EC=8B=9C=EA=B0=81?= =?UTF-8?q?=ED=99=94]=201=EC=B0=A8=20UX=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F?= =?UTF-8?q?=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/public/locales/en.json | 4 +- ui/public/locales/ko_KR.json | 4 +- ui/src/views/infra/InfraSummary.vue | 59 ++- ui/src/views/infra/zone/RackDiagramTab.vue | 478 +++++++++++++++++---- 4 files changed, 466 insertions(+), 79 deletions(-) diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json index 1b8302865a2b..1d7b798cc57e 100644 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@ -5344,5 +5344,7 @@ "rackDiagram.totalFreeU": "Free U", "rackDiagram.cardView": "Card", "rackDiagram.listView": "List", -"rackDiagram.countSuffix": "" +"rackDiagram.countSuffix": "", +"rackDiagram.expandView": "Expand rack visualization", +"rackDiagram.restoreSplitView": "Show summary panel" } diff --git a/ui/public/locales/ko_KR.json b/ui/public/locales/ko_KR.json index 6957a06fdd14..34835632c71a 100644 --- a/ui/public/locales/ko_KR.json +++ b/ui/public/locales/ko_KR.json @@ -5347,5 +5347,7 @@ "rackDiagram.totalFreeU": "\uc5ec\uc720 U", "rackDiagram.cardView": "\uce74\ub4dc\ud615", "rackDiagram.listView": "\ubaa9\ub85d\ud615", -"rackDiagram.countSuffix": "\uac1c" +"rackDiagram.countSuffix": "\uac1c", +"rackDiagram.expandView": "\ub799 \uc2dc\uac01\ud654 \ud655\uc7a5", +"rackDiagram.restoreSplitView": "\uc694\uc57d \uc601\uc5ed \ud45c\uc2dc" } diff --git a/ui/src/views/infra/InfraSummary.vue b/ui/src/views/infra/InfraSummary.vue index 094c17c5608a..c6a84adf2bf4 100644 --- a/ui/src/views/infra/InfraSummary.vue +++ b/ui/src/views/infra/InfraSummary.vue @@ -148,8 +148,8 @@ -
-
+
+
- - + +
@@ -211,6 +213,7 @@ export default { data () { return { loading: true, + rackVisualizationExpanded: false, routes: {}, sections: ['zones', 'pods', 'clusters', 'hosts', 'storagepools', 'imagestores', 'objectstores', 'systemvms', 'routers', 'cpusockets', 'managementservers', 'alerts', 'ilbvms', 'metrics'], summaryGroups: [ @@ -401,15 +404,46 @@ export default { display: flex; align-items: flex-start; gap: 12px; + transition: gap 0.28s cubic-bezier(0.22, 1, 0.36, 1); } .summary-cards-pane { width: 34%; + max-width: 34%; flex: 0 0 34%; + max-height: 5000px; padding: 10px; + overflow: hidden; border-radius: 12px; border: 1px solid #dfe3e8; background: linear-gradient(180deg, #f8f9fb 0%, #f3f5f8 100%); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.65); + transition: + width 0.28s cubic-bezier(0.22, 1, 0.36, 1), + max-width 0.28s cubic-bezier(0.22, 1, 0.36, 1), + flex-basis 0.28s cubic-bezier(0.22, 1, 0.36, 1), + max-height 0.28s cubic-bezier(0.22, 1, 0.36, 1), + padding 0.28s cubic-bezier(0.22, 1, 0.36, 1), + opacity 0.2s ease, + transform 0.28s cubic-bezier(0.22, 1, 0.36, 1), + visibility 0s linear; + } + + .infra-summary-layout.is-rack-expanded { + gap: 0; + } + + .infra-summary-layout.is-rack-expanded .summary-cards-pane { + width: 0; + max-width: 0; + flex: 0 0 0; + max-height: 0; + padding: 0; + border-width: 0; + opacity: 0; + visibility: hidden; + pointer-events: none; + transform: translateX(-16px); + transition-delay: 0s, 0s, 0s, 0s, 0s, 0s, 0s, 0.28s; } .summary-group { padding: 10px 10px 0; @@ -481,6 +515,14 @@ export default { width: 66%; flex: 0 0 66%; min-width: 320px; + transition: + width 0.28s cubic-bezier(0.22, 1, 0.36, 1), + flex-basis 0.28s cubic-bezier(0.22, 1, 0.36, 1); + } + .infra-summary-layout.is-rack-expanded .rack-visualization-pane { + width: 100%; + flex: 1 1 100%; + min-width: 0; } .chart-card-inner { text-align: center; @@ -528,10 +570,19 @@ export default { .summary-cards-pane, .rack-visualization-pane { width: 100%; + max-width: 100%; flex: 1 1 100%; min-width: 0; } } + + @media (prefers-reduced-motion: reduce) { + .infra-summary-layout, + .summary-cards-pane, + .rack-visualization-pane { + transition: none; + } + } .intermediate-certificate { opacity: 1; transform: none; diff --git a/ui/src/views/infra/zone/RackDiagramTab.vue b/ui/src/views/infra/zone/RackDiagramTab.vue index 4ccf6135e670..fe589d842e48 100644 --- a/ui/src/views/infra/zone/RackDiagramTab.vue +++ b/ui/src/views/infra/zone/RackDiagramTab.vue @@ -91,13 +91,33 @@ {{ t('label.actions') }} + + + + + +
- +
+ +
-
+
@@ -346,14 +369,14 @@
- {{ rack.name }} ({{ rack.totalHeight }}U) + {{ rack.name }}
@@ -443,7 +466,13 @@
+
@@ -694,16 +728,18 @@