diff --git a/src/app/api/servers/route.ts b/src/app/api/servers/route.ts index c67a31a..6454d7b 100644 --- a/src/app/api/servers/route.ts +++ b/src/app/api/servers/route.ts @@ -65,6 +65,7 @@ export async function POST(request: Request) { name: body.name, ip: body.ip, coordinates: body.coordinates, + location: body.location, }); servers.write(); diff --git a/src/app/dashboard/server.tsx b/src/app/dashboard/server.tsx index cc7e9c0..3c1ef37 100644 --- a/src/app/dashboard/server.tsx +++ b/src/app/dashboard/server.tsx @@ -36,7 +36,7 @@ import { } from "lucide-react"; import { useState } from "react"; -function UsageBar({ +export function UsageBar({ value, Icon, text, diff --git a/src/app/servers/Map.tsx b/src/app/servers/Map.tsx index 5c17c82..c6060a7 100644 --- a/src/app/servers/Map.tsx +++ b/src/app/servers/Map.tsx @@ -1,12 +1,23 @@ -import React, { useRef, useEffect } from "react"; +import React, { useRef, useEffect, useState } from "react"; import maplibregl from "maplibre-gl"; import "maplibre-gl/dist/maplibre-gl.css"; import Server from "@/types/server"; +import { + Sheet, + SheetContent, + SheetDescription, + SheetHeader, + SheetTitle, + SheetTrigger, +} from "@/components/ui/sheet"; +import ServerComponent, { UsageBar } from "../dashboard/server"; +import { Cpu, HardDrive, MapPin, MemoryStick, Network } from "lucide-react"; export default function Map({ servers }: { servers: Server[] }) { const mapContainer = useRef(null); const map = useRef(null); const markers = useRef([]); + const [sheet, setSheet] = useState(); // Initialize map only once useEffect(() => { @@ -45,10 +56,8 @@ export default function Map({ servers }: { servers: Server[] }) { .setLngLat(server.coordinates) .addTo(map.current!); - // Optional: add popup or click event marker.getElement().addEventListener("click", () => { - // Your logic here - console.log("Clicked on server", server.name); + setSheet(server); }); markers.current.push(marker); @@ -56,5 +65,53 @@ export default function Map({ servers }: { servers: Server[] }) { }); }, [servers]); - return
; + return ( +
+ setSheet(undefined)}> + {sheet && ( + + + {sheet.name} + + {sheet.status[0].toUpperCase() + sheet.status.slice(1)} {" ยท "} + {sheet.ip} + {sheet.location && ( + + + {sheet.location} + + )} + + +
+ + + + +
+
+ )} +
+
+ ); } diff --git a/src/app/servers/NewServerDialog.tsx b/src/app/servers/NewServerDialog.tsx index 511851e..5e46978 100644 --- a/src/app/servers/NewServerDialog.tsx +++ b/src/app/servers/NewServerDialog.tsx @@ -38,7 +38,7 @@ export default function NewServerDialog({ > New - + Add Server @@ -73,6 +73,9 @@ export default function NewServerDialog({ +