diff --git a/src/features/dashboard/components/CameraStatus.tsx b/src/features/dashboard/components/CameraStatus.tsx index 47cb2d6..9c28274 100644 --- a/src/features/dashboard/components/CameraStatus.tsx +++ b/src/features/dashboard/components/CameraStatus.tsx @@ -9,7 +9,7 @@ type CameraStatusProps = { const CameraStatus = ({ title, status, description }: CameraStatusProps) => { return ( - +

{description}

diff --git a/src/features/dashboard/components/DashboardGrid.tsx b/src/features/dashboard/components/DashboardGrid.tsx index b76ea25..b430106 100644 --- a/src/features/dashboard/components/DashboardGrid.tsx +++ b/src/features/dashboard/components/DashboardGrid.tsx @@ -7,8 +7,11 @@ const DashboardGrid = () => {
- - +
+ + + +
); }; diff --git a/src/features/dashboard/components/StatusItems/StatusItemCPU.tsx b/src/features/dashboard/components/StatusItems/StatusItemCPU.tsx index 937e5c4..3ae97f6 100644 --- a/src/features/dashboard/components/StatusItems/StatusItemCPU.tsx +++ b/src/features/dashboard/components/StatusItems/StatusItemCPU.tsx @@ -8,7 +8,7 @@ type StatusItemProps = { const StatusItemCPU = ({ statusInfoItem, description }: StatusItemProps) => { return ( -
+
diff --git a/src/features/dashboard/components/StatusItems/StatusItemLocal.tsx b/src/features/dashboard/components/StatusItems/StatusItemLocal.tsx index 77dd4ba..f99cf40 100644 --- a/src/features/dashboard/components/StatusItems/StatusItemLocal.tsx +++ b/src/features/dashboard/components/StatusItems/StatusItemLocal.tsx @@ -15,7 +15,7 @@ const StatusItemLocal = ({ statusInfoItem, description }: StatusItemProps) => { }; return ( -
+
diff --git a/src/features/dashboard/components/StatusItems/StatusItemThreads.tsx b/src/features/dashboard/components/StatusItems/StatusItemThreads.tsx index 01e9239..69ce8c8 100644 --- a/src/features/dashboard/components/StatusItems/StatusItemThreads.tsx +++ b/src/features/dashboard/components/StatusItems/StatusItemThreads.tsx @@ -8,7 +8,7 @@ type StatusItemProps = { const StatusItemThreads = ({ statusInfoItem, description }: StatusItemProps) => { return ( -
+
diff --git a/src/features/dashboard/components/StatusItems/StatusItemUTC.tsx b/src/features/dashboard/components/StatusItems/StatusItemUTC.tsx index 0b7a5d0..b4adef8 100644 --- a/src/features/dashboard/components/StatusItems/StatusItemUTC.tsx +++ b/src/features/dashboard/components/StatusItems/StatusItemUTC.tsx @@ -15,7 +15,7 @@ const StatusItemUTC = ({ statusInfoItem, description }: StatusItemProps) => { }; return ( -
+
diff --git a/src/features/dashboard/components/SystemHealth.tsx b/src/features/dashboard/components/SystemHealth.tsx new file mode 100644 index 0000000..c93d731 --- /dev/null +++ b/src/features/dashboard/components/SystemHealth.tsx @@ -0,0 +1,34 @@ +import type { SystemHealthStatus } from "../../../types/types"; +import Badge from "../../../ui/Badge"; +import { useGetSystemHealth } from "../hooks/useGetSystemHealth"; + +const SystemHealth = () => { + const { query } = useGetSystemHealth(); + + const startTime = query?.data?.StartTimeHumane; + const uptime = query?.data?.UptimeHumane; + const statuses = query?.data?.Status; + + return ( +
+
+
+

Start Time

{startTime} +
+
+

Up Time

{uptime} +
+
+ +
+ {statuses?.map((status: SystemHealthStatus) => ( +
+ {status.id} +
+ ))} +
+
+ ); +}; + +export default SystemHealth; diff --git a/src/features/dashboard/components/SystemOverview.tsx b/src/features/dashboard/components/SystemOverview.tsx index de6e89b..05d1f20 100644 --- a/src/features/dashboard/components/SystemOverview.tsx +++ b/src/features/dashboard/components/SystemOverview.tsx @@ -1,10 +1,12 @@ import Card from "../../../ui/Card"; import CardHeader from "../../../ui/CardHeader"; +import SystemHealth from "./SystemHealth"; const SystemOverview = () => { return ( - + + ); }; diff --git a/src/routes/baywatch.tsx b/src/routes/baywatch.tsx index f7401ab..0cb9718 100644 --- a/src/routes/baywatch.tsx +++ b/src/routes/baywatch.tsx @@ -9,7 +9,6 @@ export const Route = createFileRoute("/baywatch")({ function RouteComponent() { return (
-

Cameras

diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 8cd7e69..301f601 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -8,7 +8,6 @@ export const Route = createFileRoute("/")({ function HomePage() { return (
-

Dashboard

); diff --git a/src/types/types.ts b/src/types/types.ts index 127fad1..b130f22 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -16,3 +16,8 @@ export type Region = { name: string; brushColour: string; }; + +export type SystemHealthStatus = { + id: string; + tags: string[]; +}; diff --git a/src/ui/Badge.tsx b/src/ui/Badge.tsx new file mode 100644 index 0000000..7e088af --- /dev/null +++ b/src/ui/Badge.tsx @@ -0,0 +1,24 @@ +import type { Icon, IconDefinition } from "@fortawesome/fontawesome-svg-core"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { capitalize } from "../utils/utils"; + +type BadgeProps = { + icon?: Icon | IconDefinition; + text: string; +}; + +const Badge = ({ icon, text }: BadgeProps) => { + const lowerCaseWord = text.toLowerCase(); + return ( + + {icon && } + {capitalize(lowerCaseWord)} + + ); +}; + +export default Badge; diff --git a/src/utils/utils.ts b/src/utils/utils.ts new file mode 100644 index 0000000..23c5527 --- /dev/null +++ b/src/utils/utils.ts @@ -0,0 +1,3 @@ +export function capitalize(s?: string) { + return s ? s.charAt(0).toUpperCase() + s.slice(1) : ""; +}