diff --git a/web/pages/components/chart.tsx b/web/pages/components/chart.tsx
new file mode 100644
index 000000000..3412331c9
--- /dev/null
+++ b/web/pages/components/chart.tsx
@@ -0,0 +1,58 @@
+import { LineChart, XAxis, YAxis, Line, Tooltip, Legend } from "recharts";
+import { timeFormat } from "d3-time-format";
+
+export default function Chart({ data, color, unit }) {
+ const CustomizedTooltip = (props) => {
+ const { active, payload } = props;
+ if (active && payload && payload[0]) {
+ const time = payload[0].payload
+ ? timeFormat("%I:%M")(new Date(payload[0].payload.time), {
+ nearestTo: 1,
+ })
+ : "";
+ return (
+
+
+ {time} {payload[0].payload.value} %
+
+
+ );
+ }
+ return null;
+ };
+
+ const timeFormatter = (tick) => {
+ return timeFormat("%I:%M")(new Date(tick), {
+ nearestTo: 1,
+ });
+ };
+
+ return (
+
+
+
+ } />
+
+
+
+ );
+}
diff --git a/web/pages/hardware-info.tsx b/web/pages/hardware-info.tsx
index f26c0aeee..76ac091e4 100644
--- a/web/pages/hardware-info.tsx
+++ b/web/pages/hardware-info.tsx
@@ -1,18 +1,14 @@
-import React, { useState, useEffect, useContext } from 'react';
+import React, { useState, useEffect } from 'react';
+import { timeFormat } from "d3-time-format";
import { HARDWARE_STATS, fetchData, FETCH_INTERVAL } from './utils/apis';
-import { BroadcastStatusContext } from './utils/broadcast-status-context';
+import Chart from './components/chart.tsx'
export default function HardwareInfo() {
- const context = useContext(BroadcastStatusContext);
- const { broadcastActive } = context || {};
-
const [hardwareStatus, setHardwareStatus] = useState({});
const getHardwareStatus = async () => {
try {
const result = await fetchData(HARDWARE_STATS);
- console.log("hardare result", result)
-
setHardwareStatus({ ...result });
} catch (error) {
@@ -24,7 +20,7 @@ export default function HardwareInfo() {
let getStatusIntervalId = null;
getHardwareStatus();
- getStatusIntervalId = setInterval(getHardwareStatus, FETCH_INTERVAL); //runs every 1 min.
+ getStatusIntervalId = setInterval(getHardwareStatus, FETCH_INTERVAL); // runs every 1 min.
// returned function will be called on component unmount
return () => {
@@ -32,14 +28,39 @@ export default function HardwareInfo() {
}
}, []);
- return (
-
-
Hardware Info
-
cpu:[], disk: [], memory: []; value = %age.
-
the times should be the same for each, though milliseconds differ
-
- {JSON.stringify(hardwareStatus)}
+
+
+ if (!hardwareStatus.cpu) {
+ return null;
+ }
+
+ return (
+
+
+
Hardware Info
+
+
CPU
+
+ Memory
+
+ Disk
+
+
+
+
cpu:[], disk: [], memory: []; value = %age.
+
the times should be the same for each, though milliseconds differ
+
+ {JSON.stringify(hardwareStatus)}
+
-
- );
-}
+ );
+
+
+}
\ No newline at end of file
diff --git a/web/pages/viewer-info.tsx b/web/pages/viewer-info.tsx
index 7e5a482bd..dc3a46c83 100644
--- a/web/pages/viewer-info.tsx
+++ b/web/pages/viewer-info.tsx
@@ -1,6 +1,5 @@
import React, { useState, useEffect, useContext } from 'react';
-import {timeFormat} from 'd3-time-format';
-import { LineChart, XAxis, YAxis, Line, Tooltip } from 'recharts';
+import Chart from "./components/chart.tsx";
import { BroadcastStatusContext } from './utils/broadcast-status-context';
import { VIEWERS_OVER_TIME, fetchData } from './utils/apis';
@@ -66,19 +65,19 @@ export default function ViewersOverTime() {
Current Viewers
-
-
-
- }
- />
+
+
+ {/*
+
+
+ } />
-
+ */}
);