From 00a9630e299646c162be64001dbbe013bb5ee51c Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 31 Jan 2025 10:06:28 -0800 Subject: [PATCH] Add reusable TimeFrameHeader component --- .../MonitorTimeFrameHeader/index.jsx | 72 +++++++++++++++++++ .../MonitorTimeFrameHeader/skeleton.jsx | 23 ++++++ 2 files changed, 95 insertions(+) create mode 100644 Client/src/Components/MonitorTimeFrameHeader/index.jsx create mode 100644 Client/src/Components/MonitorTimeFrameHeader/skeleton.jsx diff --git a/Client/src/Components/MonitorTimeFrameHeader/index.jsx b/Client/src/Components/MonitorTimeFrameHeader/index.jsx new file mode 100644 index 000000000..e43d63494 --- /dev/null +++ b/Client/src/Components/MonitorTimeFrameHeader/index.jsx @@ -0,0 +1,72 @@ +import { Stack, Typography, Button, ButtonGroup } from "@mui/material"; +import { useTheme } from "@emotion/react"; +import SkeletonLayout from "./skeleton"; +import PropTypes from "prop-types"; + +const MonitorTimeFrameHeader = ({ + shouldRender = true, + hasDateRange = true, + dateRange, + setDateRange, +}) => { + const theme = useTheme(); + + if (!shouldRender) { + return ; + } + + let timeFramePicker = null; + + if (hasDateRange) { + timeFramePicker = ( + + + + + + ); + } + + return ( + + + Showing statistics for past{" "} + {dateRange === "day" ? "24 hours" : dateRange === "week" ? "7 days" : "30 days"}. + + {timeFramePicker} + + ); +}; + +MonitorTimeFrameHeader.propTypes = { + shouldRender: PropTypes.bool, + hasDateRange: PropTypes.bool, + dateRange: PropTypes.string, + setDateRange: PropTypes.func, +}; + +export default MonitorTimeFrameHeader; diff --git a/Client/src/Components/MonitorTimeFrameHeader/skeleton.jsx b/Client/src/Components/MonitorTimeFrameHeader/skeleton.jsx new file mode 100644 index 000000000..d7c395d54 --- /dev/null +++ b/Client/src/Components/MonitorTimeFrameHeader/skeleton.jsx @@ -0,0 +1,23 @@ +import { Stack, Skeleton } from "@mui/material"; + +const SkeletonLayout = () => { + return ( + + + + + ); +}; + +export default SkeletonLayout;