Skip to content

Commit

Permalink
grid details page
Browse files Browse the repository at this point in the history
  • Loading branch information
Codebmk committed Jan 31, 2025
1 parent c9999a0 commit ccc664d
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 6 deletions.
29 changes: 25 additions & 4 deletions netmanager-app/app/(authenticated)/grids/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
"use client";

import { useState } from "react";
import { useRouter } from "next/navigation";
import { ChevronLeft, Copy } from "lucide-react";
import { useEffect, useState } from "react";
import { useParams, useRouter } from "next/navigation";
import { ChevronLeft, Copy, Loader2 } from "lucide-react";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import {
Expand All @@ -17,9 +17,12 @@ import { Label } from "@/components/ui/label";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { GridSitesTable } from "@/components/grids/grid-sites";
import { DateRangePicker } from "@/components/grids/date-range-picker";
import { useGridDetails } from "@/core/hooks/useGrids";

export default function GridDetailsPage() {
const router = useRouter();
const { id } = useParams();
const { gridDetails, isLoading, error } = useGridDetails(id.toString());
const [gridData, setGridData] = useState({
name: "gambia",
id: "673cf5b9328bd600130351c4",
Expand All @@ -28,6 +31,16 @@ export default function GridDetailsPage() {
description: "",
});

useEffect(() => {
setGridData({
...gridDetails,
name: gridDetails.name,
visibility: gridDetails.visibility,
administrativeLevel: gridDetails.admin_level,
description: gridDetails.description,
});
}, [gridDetails]);

const handleCopyToClipboard = (text: string) => {
navigator.clipboard.writeText(text);
};
Expand All @@ -40,6 +53,14 @@ export default function GridDetailsPage() {
// Save changes
};

if (isLoading) {
return (
<div className="flex items-center justify-center min-h-screen">
<Loader2 className="w-8 h-8 animate-spin" />
</div>
);
}

return (
<div className="p-6 space-y-6">
{/* Header */}
Expand All @@ -66,7 +87,7 @@ export default function GridDetailsPage() {
<div className="space-y-2">
<Label htmlFor="gridId">Grid ID *</Label>
<div className="flex gap-2">
<Input id="gridId" value={gridData.id} readOnly />
<Input id="gridId" value={gridData._id} readOnly />
<Button
variant="outline"
size="icon"
Expand Down
4 changes: 2 additions & 2 deletions netmanager-app/core/hooks/useGrids.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
} from "@tanstack/react-query";
import { AxiosError } from "axios";
import { grids } from "../apis/grids";
import { CreateGrid } from "@/app/types/grids";
import { CreateGrid, Grid } from "@/app/types/grids";
import { GridsState, setError, setGrids } from "../redux/slices/gridsSlice";
import { useDispatch } from "react-redux";
import { useAppSelector } from "../redux/hooks";
Expand Down Expand Up @@ -58,7 +58,7 @@ export const useGridDetails = (gridId: string) => {
});

return {
getGridDetails: mutation.mutate || [],
gridDetails: mutation.mutate || [],
isLoading: mutation.isPending,
error: mutation.error as Error | null,
};
Expand Down

0 comments on commit ccc664d

Please sign in to comment.