diff --git a/frontend/src/app/home/costs/page.tsx b/frontend/src/app/home/costs/page.tsx new file mode 100644 index 0000000..888023a --- /dev/null +++ b/frontend/src/app/home/costs/page.tsx @@ -0,0 +1,163 @@ +"use client"; + +import { CustomAreaChart } from "@/components/area-chart"; +import { TitleCard } from "@/components/title-card"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; + +import { useState, useEffect } from "react"; +import {MaterialSymbol} from "react-material-symbols"; +import Link from "next/link"; +import {Button} from "@/components/ui/button"; + +type CostsProps = { + electricity : number, + water : number, + today : number, +}[]; + +export default function Costs() { + const [data, setData] = useState([]); + + useEffect(() => { + async function fetchData() { + const temp = await fetch( + `http://${process.env.NEXT_PUBLIC_HOST_URL}/service/houses/1/costs`, + { + next: { revalidate: 60 }, // Revalidate every 60 seconds + }, + ); + setData(await temp.json()); + } + + fetchData().catch(console.error); + const interval = setInterval(() => { + fetchData().catch(console.error); + }, 5000); + return () => clearInterval(interval); + }, []); + + return ( +
+ + + + + + Net Expenses + + Your net expenses after considering earnings from the grid + + +
+
+

Today

+

{data.length !== 0 ? data[length-1].today : 0} €

+
+
+

Yesterday

+

356,48 €

+
+
+
+
+ + + + + Expenses + + Water and eletricity expenses + + +
+
+ +

Water

+

{data.length !== 0 ? data[length-1].water : 0} €

+
+
+ +

Electricity

+

{data.length !== 0 ? data[length-1].electricity : 0} €

+
+
+
+
+ + + + + Oh snap! These devices are having a power party. + + Consider adjusting them if needed. + + +
+
+ +
+ Microwave +
+
+ + + + + +
+ +
+
+ +
+ Microwave +
+
+ + + + + +
+ +
+
+ + + + Expenses by month + + +
+
+

November

+

{data.length !== 0 ? data[length-1].today : 0} €

+
+
+

Outubro

+

{data.length !== 0 ? data[length-1].water : 0} €

+
+
+
+ +
+
+
+
+ ); +}