= (props) => {
onClick={() => props.onNodeClick(nodeId, isPVEItem ? 'pve' : 'pbs')}
>
{/* Name */}
- |
+ |
= (props) => {
|
{/* Uptime */}
-
+ |
= (props) => {
|
{/* CPU */}
-
+ |
@@ -590,7 +594,7 @@ export const NodeSummaryTable: Component = (props) => {
|
{/* Memory */}
-
+ |
@@ -633,7 +637,7 @@ export const NodeSummaryTable: Component = (props) => {
|
{/* Disk */}
-
+ |
= (props) => {
{/* Temperature */}
- |
+ |
= (props) => {
{/* Dashboard tab: VMs and CTs */}
- |
+ |
{online ? getCountValue(item, 'vmCount') ?? '-' : '-'}
|
-
+ |
{online ? getCountValue(item, 'containerCount') ?? '-' : '-'}
@@ -716,14 +720,14 @@ export const NodeSummaryTable: Component = (props) => {
{/* Storage tab: Storage and Disks */}
- |
+ |
{online ? getCountValue(item, 'storageCount') ?? '-' : '-'}
|
-
+ |
{online ? getCountValue(item, 'diskCount') ?? '-' : '-'}
@@ -734,7 +738,7 @@ export const NodeSummaryTable: Component = (props) => {
{/* Backups tab: Backups */}
- |
+ |
{online ? getCountValue(item, 'backupCount') ?? '-' : '-'}
diff --git a/frontend-modern/src/components/shared/Sparkline.tsx b/frontend-modern/src/components/shared/Sparkline.tsx
index b4d8367..f745a3c 100644
--- a/frontend-modern/src/components/shared/Sparkline.tsx
+++ b/frontend-modern/src/components/shared/Sparkline.tsx
@@ -95,11 +95,9 @@ export const Sparkline: Component = (props) => {
const dpr = window.devicePixelRatio || 1;
canvas.width = w * dpr;
canvas.height = h * dpr;
- // Only set explicit width style if a fixed width was provided
- // Otherwise let CSS handle the width (w-full class)
- if (props.width !== 0) {
- canvas.style.width = `${w}px`;
- }
+ // Always set explicit width style to prevent canvas from expanding beyond container
+ // When width=0, we use the calculated container width
+ canvas.style.width = `${w}px`;
canvas.style.height = `${h}px`;
ctx.scale(dpr, dpr);
@@ -255,12 +253,13 @@ export const Sparkline: Component = (props) => {
return (
<>
-
+
| | | | |