|
@@ -24,7 +24,7 @@ export default function Map({ servers }: { servers: Server[] }) {
|
|
const mapContainer = useRef<HTMLDivElement | null>(null);
|
|
const mapContainer = useRef<HTMLDivElement | null>(null);
|
|
const map = useRef<maplibregl.Map | null>(null);
|
|
const map = useRef<maplibregl.Map | null>(null);
|
|
const markers = useRef<maplibregl.Marker[]>([]);
|
|
const markers = useRef<maplibregl.Marker[]>([]);
|
|
- const [sheet, setSheet] = useState<Server | undefined>();
|
|
|
|
|
|
+ const [sheet, setSheet] = useState<number | undefined>();
|
|
|
|
|
|
// Initialize map only once
|
|
// Initialize map only once
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
@@ -57,14 +57,14 @@ export default function Map({ servers }: { servers: Server[] }) {
|
|
markers.current = [];
|
|
markers.current = [];
|
|
|
|
|
|
// Add new markers
|
|
// Add new markers
|
|
- servers.forEach((server) => {
|
|
|
|
|
|
+ servers.forEach((server, i) => {
|
|
if (server.coordinates) {
|
|
if (server.coordinates) {
|
|
const marker = new maplibregl.Marker({ color: "#ff3e00" })
|
|
const marker = new maplibregl.Marker({ color: "#ff3e00" })
|
|
.setLngLat(server.coordinates)
|
|
.setLngLat(server.coordinates)
|
|
.addTo(map.current!);
|
|
.addTo(map.current!);
|
|
|
|
|
|
marker.getElement().addEventListener("click", () => {
|
|
marker.getElement().addEventListener("click", () => {
|
|
- setSheet(server);
|
|
|
|
|
|
+ setSheet(i);
|
|
});
|
|
});
|
|
|
|
|
|
markers.current.push(marker);
|
|
markers.current.push(marker);
|
|
@@ -75,7 +75,7 @@ export default function Map({ servers }: { servers: Server[] }) {
|
|
return (
|
|
return (
|
|
<div ref={mapContainer} className="w-full h-full">
|
|
<div ref={mapContainer} className="w-full h-full">
|
|
<Sheet open={sheet != undefined} onOpenChange={() => setSheet(undefined)}>
|
|
<Sheet open={sheet != undefined} onOpenChange={() => setSheet(undefined)}>
|
|
- {sheet && (
|
|
|
|
|
|
+ {sheet != undefined && (
|
|
<SheetContent>
|
|
<SheetContent>
|
|
<SheetHeader>
|
|
<SheetHeader>
|
|
<div className="flex items-center gap-2">
|
|
<div className="flex items-center gap-2">
|
|
@@ -83,15 +83,15 @@ export default function Map({ servers }: { servers: Server[] }) {
|
|
<ServerIcon className="w-4.5 h-4.5 text-current my-auto" />
|
|
<ServerIcon className="w-4.5 h-4.5 text-current my-auto" />
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div>
|
|
- <SheetTitle>{sheet.name}</SheetTitle>
|
|
|
|
|
|
+ <SheetTitle>{servers[sheet].name}</SheetTitle>
|
|
<SheetDescription className="flex gap-2">
|
|
<SheetDescription className="flex gap-2">
|
|
- {sheet.status[0].toUpperCase() + sheet.status.slice(1)}{" "}
|
|
|
|
|
|
+ {servers[sheet].status[0].toUpperCase() + servers[sheet].status.slice(1)}{" "}
|
|
{" · "}
|
|
{" · "}
|
|
- {sheet.ip}
|
|
|
|
- {sheet.location && (
|
|
|
|
|
|
+ {servers[sheet].ip}
|
|
|
|
+ {servers[sheet].location && (
|
|
<span className="flex items-center gap-0.5">
|
|
<span className="flex items-center gap-0.5">
|
|
<MapPin size={14} />
|
|
<MapPin size={14} />
|
|
- {sheet.location}
|
|
|
|
|
|
+ {servers[sheet].location}
|
|
</span>
|
|
</span>
|
|
)}
|
|
)}
|
|
</SheetDescription>
|
|
</SheetDescription>
|
|
@@ -100,25 +100,25 @@ export default function Map({ servers }: { servers: Server[] }) {
|
|
</SheetHeader>
|
|
</SheetHeader>
|
|
<div className="px-4 gap-4 flex flex-col">
|
|
<div className="px-4 gap-4 flex flex-col">
|
|
<UsageBar
|
|
<UsageBar
|
|
- value={sheet.cpu}
|
|
|
|
|
|
+ value={servers[sheet].cpu}
|
|
Icon={Cpu}
|
|
Icon={Cpu}
|
|
text="CPU"
|
|
text="CPU"
|
|
color="var(--chart-2)"
|
|
color="var(--chart-2)"
|
|
/>
|
|
/>
|
|
<UsageBar
|
|
<UsageBar
|
|
- value={sheet.memory}
|
|
|
|
|
|
+ value={servers[sheet].memory}
|
|
Icon={MemoryStick}
|
|
Icon={MemoryStick}
|
|
text="Memory"
|
|
text="Memory"
|
|
color="var(--chart-1)"
|
|
color="var(--chart-1)"
|
|
/>
|
|
/>
|
|
<UsageBar
|
|
<UsageBar
|
|
- value={sheet.storage}
|
|
|
|
|
|
+ value={servers[sheet].storage}
|
|
Icon={HardDrive}
|
|
Icon={HardDrive}
|
|
text="Storage"
|
|
text="Storage"
|
|
color="var(--chart-5)"
|
|
color="var(--chart-5)"
|
|
/>
|
|
/>
|
|
<ByteUnit
|
|
<ByteUnit
|
|
- value={sheet.network}
|
|
|
|
|
|
+ value={servers[sheet].network}
|
|
Icon={Network}
|
|
Icon={Network}
|
|
text="Network"
|
|
text="Network"
|
|
color="var(--chart-3)"
|
|
color="var(--chart-3)"
|