diff --git a/Client/src/Pages/Infrastructure/Details/index.jsx b/Client/src/Pages/Infrastructure/Details/index.jsx
index d90b54ba6..ccff1388d 100644
--- a/Client/src/Pages/Infrastructure/Details/index.jsx
+++ b/Client/src/Pages/Infrastructure/Details/index.jsx
@@ -17,8 +17,10 @@ import {
TzTick,
PercentTick,
InfrastructureTooltip,
+ TemperatureTooltip,
} from "../../../Components/Charts/Utils/chartUtils";
import PropTypes from "prop-types";
+import Monitors from "../../Monitors/Home";
const BASE_BOX_PADDING_VERTICAL = 4;
const BASE_BOX_PADDING_HORIZONTAL = 8;
@@ -205,52 +207,51 @@ const InfrastructureDetails = () => {
// end height calculations
const buildStatBoxes = (monitor) => {
- let latestCheck = monitor?.checks[0] ?? null;
+ let latestCheck = monitor?.checks[monitor?.checks.length - 1] ?? null;
if (latestCheck === null) return [];
// Extract values from latest check
- const physicalCores = latestCheck?.cpu?.physical_core ?? null;
- const logicalCores = latestCheck?.cpu?.logical_core ?? null;
- const cpuFrequency = latestCheck?.cpu?.frequency ?? null;
+ const physicalCores = latestCheck?.cpu?.physical_core ?? 0;
+ const logicalCores = latestCheck?.cpu?.logical_core ?? 0;
+ const cpuFrequency = latestCheck?.cpu?.frequency ?? 0;
const cpuTemperature =
latestCheck?.cpu?.temperature?.reduce((acc, curr) => acc + curr, 0) /
latestCheck?.cpu?.temperature?.length ?? 0;
- const memoryTotalBytes = latestCheck?.memory?.total_bytes ?? null;
- const diskTotalBytes = latestCheck?.disk[0]?.total_bytes ?? null;
+ const memoryTotalBytes = latestCheck?.memory?.total_bytes ?? 0;
+ const diskTotalBytes = latestCheck?.disk[0]?.total_bytes ?? 0;
const os = latestCheck?.host?.os ?? null;
const platform = latestCheck?.host?.platform ?? null;
const osPlatform = os === null && platform === null ? null : `${os} ${platform}`;
-
return [
{
id: 0,
heading: "CPU (Physical)",
- subHeading: physicalCores ? `${physicalCores} cores` : null,
+ subHeading: `${physicalCores} cores`,
},
{
id: 1,
heading: "CPU (Logical)",
- subHeading: logicalCores ? `${logicalCores} cores` : null,
+ subHeading: `${logicalCores} cores`,
},
{
id: 2,
heading: "CPU Frequency",
- subHeading: cpuFrequency ? `${(cpuFrequency / 1000).toFixed(2)} Ghz` : null,
+ subHeading: `${(cpuFrequency / 1000).toFixed(2)} Ghz`,
},
{
id: 3,
heading: "Average CPU Temperature",
- subHeading: cpuTemperature ? `${cpuTemperature.toFixed(2)} C` : null,
+ subHeading: `${cpuTemperature.toFixed(2)} C`,
},
{
id: 4,
heading: "Memory",
- subHeading: memoryTotalBytes ? formatBytes(memoryTotalBytes) : null,
+ subHeading: formatBytes(memoryTotalBytes),
},
{
id: 5,
heading: "Disk",
- subHeading: diskTotalBytes ? formatBytes(diskTotalBytes) : null,
+ subHeading: formatBytes(diskTotalBytes),
},
{ id: 6, heading: "Uptime", subHeading: "100%" },
{
@@ -263,38 +264,38 @@ const InfrastructureDetails = () => {
heading: "OS",
subHeading: osPlatform,
},
- ].filter((box) => box.subHeading !== null);
+ ];
};
const buildGaugeBoxConfigs = (monitor) => {
- let latestCheck = monitor?.checks[0] ?? null;
+ let latestCheck = monitor?.checks[monitor?.checks.length - 1] ?? null;
if (latestCheck === null) return [];
// Extract values from latest check
- const memoryUsagePercent = latestCheck?.memory?.usage_percent ?? null;
- const memoryUsedBytes = latestCheck?.memory?.used_bytes ?? null;
- const memoryTotalBytes = latestCheck?.memory?.total_bytes ?? null;
- const cpuUsagePercent = latestCheck?.cpu?.usage_percent ?? null;
- const cpuPhysicalCores = latestCheck?.cpu?.physical_core ?? null;
- const cpuFrequency = latestCheck?.cpu?.frequency ?? null;
+ const memoryUsagePercent = latestCheck?.memory?.usage_percent ?? 0;
+ const memoryUsedBytes = latestCheck?.memory?.used_bytes ?? 0;
+ const memoryTotalBytes = latestCheck?.memory?.total_bytes ?? 0;
+ const cpuUsagePercent = latestCheck?.cpu?.usage_percent ?? 0;
+ const cpuPhysicalCores = latestCheck?.cpu?.physical_core ?? 0;
+ const cpuFrequency = latestCheck?.cpu?.frequency ?? 0;
return [
{
type: "memory",
- value: memoryUsagePercent ? decimalToPercentage(memoryUsagePercent) : null,
+ value: decimalToPercentage(memoryUsagePercent),
heading: "Memory Usage",
metricOne: "Used",
- valueOne: memoryUsedBytes ? formatBytes(memoryUsedBytes) : null,
+ valueOne: formatBytes(memoryUsedBytes),
metricTwo: "Total",
- valueTwo: memoryTotalBytes ? formatBytes(memoryTotalBytes) : null,
+ valueTwo: formatBytes(memoryTotalBytes),
},
{
type: "cpu",
- value: cpuUsagePercent ? decimalToPercentage(cpuUsagePercent) : null,
+ value: decimalToPercentage(cpuUsagePercent),
heading: "CPU Usage",
metricOne: "Cores",
valueOne: cpuPhysicalCores ?? 0,
metricTwo: "Frequency",
- valueTwo: cpuFrequency ? `${(cpuFrequency / 1000).toFixed(2)} Ghz` : null,
+ valueTwo: `${(cpuFrequency / 1000).toFixed(2)} Ghz`,
},
...(latestCheck?.disk ?? []).map((disk, idx) => ({
type: "disk",
@@ -306,48 +307,127 @@ const InfrastructureDetails = () => {
metricTwo: "Total",
valueTwo: formatBytes(disk.total_bytes),
})),
- ].filter(
- (box) => box.value !== null && box.valueOne !== null && box.valueTwo !== null
- );
+ ];
+ };
+
+ const buildTemps = (monitor) => {
+ let numCores = 0;
+ const checks = monitor?.checks ?? null;
+ if (checks === null) return [];
+ for (const check of checks) {
+ if (check.cpu.temperature.length > numCores) {
+ numCores = check.cpu.temperature.length;
+ break;
+ }
+ }
+
+ if (numCores === 0) return [];
+
+ const temps = monitor?.checks?.map((check) => {
+ if (check.cpu.temperature.length > numCores) {
+ numCores = check.cpu.temperature.length;
+ }
+
+ // If there's no data, set the temperature to 0
+ if (check.cpu.temperature.length === 0) {
+ check.cpu.temperature = Array(numCores).fill(0);
+ }
+
+ return check.cpu.temperature.reduce(
+ (acc, cur, idx) => {
+ acc[`core${idx + 1}`] = cur;
+ return acc;
+ },
+ {
+ createdAt: check.createdAt,
+ }
+ );
+ });
+ return { tempKeys: Object.keys(temps[0]).slice(1), temps };
};
const buildAreaChartConfigs = (monitor) => {
- let latestCheck = monitor?.checks[0] ?? null;
+ let latestCheck = monitor?.checks[monitor?.checks.length - 1] ?? null;
if (latestCheck === null) return [];
- const temps = monitor?.checks?.map((check) =>
- check.cpu.temperature.map((temp, idx) => {
- return { [`core${idx + 1}`]: temp };
- })
- );
- console.log(temps);
- console.log(latestCheck);
+ const tempData = buildTemps(monitor);
return [
{
type: "memory",
- dataKey: latestCheck?.memory?.usage_percent ? "memory.usage_percent" : null,
+ data: monitor?.checks ?? [],
+ dataKeys: ["memory.usage_percent"],
heading: "Memory usage",
strokeColor: theme.palette.primary.main,
+ gradientStartColor: theme.palette.primary.main,
yLabel: "Memory Usage",
yDomain: [0, 1],
+ yTick: ,
+ xTick: ,
+ toolTip: (
+
+ ),
},
{
type: "cpu",
- dataKey: latestCheck?.cpu?.usage_percent ? "cpu.usage_percent" : null,
+ data: monitor?.checks ?? [],
+ dataKeys: ["cpu.usage_percent"],
heading: "CPU usage",
strokeColor: theme.palette.success.main,
+ gradientStartColor: theme.palette.success.main,
yLabel: "CPU Usage",
yDomain: [0, 1],
+ yTick: ,
+ xTick: ,
+ toolTip: (
+
+ ),
+ },
+ {
+ type: "temperature",
+ data: tempData.temps,
+ dataKeys: tempData.tempKeys,
+ strokeColor: theme.palette.error.main,
+ gradientStartColor: theme.palette.error.main,
+ heading: "CPU Temperature",
+ yLabel: "Temperature",
+ xTick: ,
+ yDomain: [0, 200],
+ toolTip: (
+
+ ),
},
...(latestCheck?.disk?.map((disk, idx) => ({
type: "disk",
+ data: monitor?.checks ?? [],
diskIndex: idx,
- dataKey: `disk[${idx}].usage_percent`,
+ dataKeys: [`disk[${idx}].usage_percent`],
heading: `Disk${idx} usage`,
strokeColor: theme.palette.warning.main,
+ gradientStartColor: theme.palette.warning.main,
yLabel: "Disk Usage",
yDomain: [0, 1],
+ yTick: ,
+ xTick: ,
+ toolTip: (
+
+ ),
})) || []),
- ].filter((box) => box.dataKey !== null);
+ ];
};
// Fetch data
@@ -459,28 +539,16 @@ const InfrastructureDetails = () => {
(
-
- )}
- xTick={}
- yTick={}
+ customTooltip={config.toolTip}
+ xTick={config.xTick}
+ yTick={config.yTick}
strokeColor={config.strokeColor}
gradient={true}
- gradientStartColor={config.strokeColor}
+ gradientStartColor={config.gradientStartColor}
gradientEndColor="#ffffff"
/>