From 9e12d87edd8504902975a09db779bea1c5403e2f Mon Sep 17 00:00:00 2001 From: Gabe Kangas Date: Mon, 26 Oct 2020 23:53:04 -0700 Subject: [PATCH] Some progress on charts --- web/pages/components/chart.tsx | 58 ++++++++++++++++++++++++++++++++++ web/pages/hardware-info.tsx | 57 ++++++++++++++++++++++----------- web/pages/viewer-info.tsx | 21 ++++++------ 3 files changed, 107 insertions(+), 29 deletions(-) create mode 100644 web/pages/components/chart.tsx 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

- - - - } - /> + + + {/* + + + } /> - + */}
);