diff --git a/pvc-vue/src/components/ClusterOverview.vue b/pvc-vue/src/components/ClusterOverview.vue index 3e55afb..0faef84 100644 --- a/pvc-vue/src/components/ClusterOverview.vue +++ b/pvc-vue/src/components/ClusterOverview.vue @@ -6,7 +6,7 @@
-
Information
+
Cluster Information
@@ -130,7 +130,7 @@
-
Utilization
+
Health & Utilization Graphs
@@ -240,7 +240,7 @@
-
Messages
+
Health Messages
@@ -1110,14 +1110,12 @@ const toggleSection = (section) => { .metrics-row { display: grid; - grid-template-columns: repeat(8, 1fr); gap: 0.5rem; width: 100%; } .graphs-row { display: grid; - grid-template-columns: repeat(4, 1fr); gap: 0.5rem; width: 100%; } @@ -1215,53 +1213,61 @@ const toggleSection = (section) => { text-shadow: 1px 1px 2px rgba(0,0,0,0.1); } -@media (max-width: 1500px) { +@media (min-width: 1201px) { .metrics-row { grid-template-columns: repeat(4, 1fr); } + /* 4x1 for health/utilization graphs in full width */ + .graphs-row { + grid-template-columns: repeat(4, 1fr); + } + + /* 3x1 for state graphs in full width */ + .states-graphs-row { + grid-template-columns: repeat(3, 1fr); + } +} + +@media (min-width: 801px) and (max-width: 1200px) { + .metrics-row { + grid-template-columns: repeat(2, 1fr); /* 2 columns when between 800px and 1200px */ + } + + /* 2x2 for health/utilization graphs in medium width */ .graphs-row { grid-template-columns: repeat(2, 1fr); } - /* Match graphs: 2 across at this breakpoint */ - .messages-list { - grid-template-columns: repeat(2, 1fr); - } -} - -@media (max-width: 1148px) { - /* Match graphs: 1 across at this breakpoint */ - .messages-list { + /* 1x3 for state graphs in medium width (vertical stack) */ + .states-graphs-row { grid-template-columns: 1fr; } } -@media (max-width: 740px) { - .metrics-row, .graphs-row { +@media (max-width: 800px) { + .metrics-row { + grid-template-columns: 1fr; /* 1 column when <= 800px */ + } + + /* 1x4 for health/utilization graphs in narrow width */ + .graphs-row { grid-template-columns: 1fr; } - /* Allow messages to be narrower on very small screens */ - .messages-list { - grid-template-columns: 1fr; /* Already 1fr from previous breakpoint */ - } - - /* Even on small screens, ensure messages have reasonable width */ - .health-message { - min-width: 0; /* Allow shrinking */ - white-space: normal; /* Allow text wrapping on small screens */ - } - - .message-text { - white-space: normal; /* Allow text wrapping on small screens */ - } - - .metric-card { - min-width: 0; + /* 1x3 for state graphs in narrow width */ + .states-graphs-row { + grid-template-columns: 1fr; } } +/* Base styles for graphs-row and states-graphs-row */ +.graphs-row, .states-graphs-row { + display: grid; + gap: 0.5rem; + width: 100%; +} + .status-maintenance { color: #0d6efd; /* Bootstrap blue */ } @@ -1392,38 +1398,6 @@ const toggleSection = (section) => { padding: 0.5rem; /* Consistent padding on all sides */ } -/* New row for the 3 state graphs with wider minimum width */ -.states-graphs-row { - display: grid; - grid-template-columns: repeat(3, 1fr); /* 3 equal columns */ - gap: 0.5rem; - width: 100%; -} - -/* Responsive behavior for state graphs */ -@media (max-width: 1500px) { - .states-graphs-row { - grid-template-columns: repeat(3, 1fr); /* Keep 3 columns at this breakpoint */ - } -} - -@media (max-width: 1148px) { - .states-graphs-row { - grid-template-columns: repeat(2, 1fr); /* 2 columns at medium size */ - } - - /* Make state graphs have a wider minimum width */ - .states-graphs-row .metric-card { - min-width: 216px; /* 20% wider than the 180px for other cards */ - } -} - -@media (max-width: 740px) { - .states-graphs-row { - grid-template-columns: 1fr; /* 1 column at small size */ - } -} - /* Darker legend text for better readability */ :deep(.chartjs-legend-item) { color: #333 !important;