mirror of
https://github.com/ForFarmTeam/ForFarm.git
synced 2025-12-19 14:04:08 +01:00
ui: add delete and edit button ui to inventoty page
This commit is contained in:
parent
f2b2f0fcbe
commit
e0dc49499b
@ -6,15 +6,40 @@ import { Calendar, ChevronDown, Plus, Search } from "lucide-react";
|
|||||||
|
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
|
import {
|
||||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table";
|
Select,
|
||||||
import { Pagination, PaginationContent, PaginationItem, PaginationLink } from "@/components/ui/pagination";
|
SelectContent,
|
||||||
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
|
SelectGroup,
|
||||||
|
SelectItem,
|
||||||
|
SelectTrigger,
|
||||||
|
SelectValue,
|
||||||
|
} from "@/components/ui/select";
|
||||||
|
import {
|
||||||
|
Table,
|
||||||
|
TableBody,
|
||||||
|
TableCell,
|
||||||
|
TableHead,
|
||||||
|
TableHeader,
|
||||||
|
TableRow,
|
||||||
|
} from "@/components/ui/table";
|
||||||
|
import {
|
||||||
|
Pagination,
|
||||||
|
PaginationContent,
|
||||||
|
PaginationItem,
|
||||||
|
PaginationLink,
|
||||||
|
} from "@/components/ui/pagination";
|
||||||
|
import {
|
||||||
|
Popover,
|
||||||
|
PopoverContent,
|
||||||
|
PopoverTrigger,
|
||||||
|
} from "@/components/ui/popover";
|
||||||
import { Calendar as CalendarComponent } from "@/components/ui/calendar";
|
import { Calendar as CalendarComponent } from "@/components/ui/calendar";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
|
|
||||||
import { fetchInventoryItems } from "@/api/inventory";
|
import { fetchInventoryItems } from "@/api/inventory";
|
||||||
import { AddInventoryItem } from "./add-inventory-item";
|
import { AddInventoryItem } from "./add-inventory-item";
|
||||||
|
import { EditInventoryItem } from "./edit-inventory-item";
|
||||||
|
import { DeleteInventoryItem } from "./delete-inventory-item";
|
||||||
|
|
||||||
export default function InventoryPage() {
|
export default function InventoryPage() {
|
||||||
const [date, setDate] = useState<Date>();
|
const [date, setDate] = useState<Date>();
|
||||||
@ -33,12 +58,18 @@ export default function InventoryPage() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
return <div className="flex min-h-screen bg-background items-center justify-center">Loading...</div>;
|
return (
|
||||||
|
<div className="flex min-h-screen bg-background items-center justify-center">
|
||||||
|
Loading...
|
||||||
|
</div>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isError || !inventoryItems) {
|
if (isError || !inventoryItems) {
|
||||||
return (
|
return (
|
||||||
<div className="flex min-h-screen bg-background items-center justify-center">Error loading inventory data.</div>
|
<div className="flex min-h-screen bg-background items-center justify-center">
|
||||||
|
Error loading inventory data.
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,7 +78,9 @@ export default function InventoryPage() {
|
|||||||
inventoryType === "all"
|
inventoryType === "all"
|
||||||
? inventoryItems
|
? inventoryItems
|
||||||
: inventoryItems.filter((item) =>
|
: inventoryItems.filter((item) =>
|
||||||
inventoryType === "plantation" ? item.type === "Plantation" : item.type === "Fertilizer"
|
inventoryType === "plantation"
|
||||||
|
? item.type === "Plantation"
|
||||||
|
: item.type === "Fertilizer",
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -62,7 +95,8 @@ export default function InventoryPage() {
|
|||||||
<Button
|
<Button
|
||||||
variant={inventoryType === "all" ? "default" : "outline"}
|
variant={inventoryType === "all" ? "default" : "outline"}
|
||||||
onClick={() => setInventoryType("all")}
|
onClick={() => setInventoryType("all")}
|
||||||
className="w-24">
|
className="w-24"
|
||||||
|
>
|
||||||
All
|
All
|
||||||
</Button>
|
</Button>
|
||||||
<Select value={inventoryType} onValueChange={setInventoryType}>
|
<Select value={inventoryType} onValueChange={setInventoryType}>
|
||||||
@ -91,13 +125,22 @@ export default function InventoryPage() {
|
|||||||
</Button>
|
</Button>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className="w-auto p-0">
|
<PopoverContent className="w-auto p-0">
|
||||||
<CalendarComponent mode="single" selected={date} onSelect={setDate} initialFocus />
|
<CalendarComponent
|
||||||
|
mode="single"
|
||||||
|
selected={date}
|
||||||
|
onSelect={setDate}
|
||||||
|
initialFocus
|
||||||
|
/>
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
||||||
<div className="relative flex-1">
|
<div className="relative flex-1">
|
||||||
<Search className="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
|
<Search className="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
|
||||||
<Input type="search" placeholder="Search Farms" className="pl-8" />
|
<Input
|
||||||
|
type="search"
|
||||||
|
placeholder="Search Farms"
|
||||||
|
className="pl-8"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<AddInventoryItem />
|
<AddInventoryItem />
|
||||||
@ -116,12 +159,17 @@ export default function InventoryPage() {
|
|||||||
<TableHead className="text-right">Quantity</TableHead>
|
<TableHead className="text-right">Quantity</TableHead>
|
||||||
<TableHead>Last Updated</TableHead>
|
<TableHead>Last Updated</TableHead>
|
||||||
<TableHead>Status</TableHead>
|
<TableHead>Status</TableHead>
|
||||||
|
<TableHead>Edit</TableHead>
|
||||||
|
<TableHead>Delete</TableHead>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{filteredItems.length === 0 ? (
|
{filteredItems.length === 0 ? (
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell colSpan={6} className="text-center py-8 text-muted-foreground">
|
<TableCell
|
||||||
|
colSpan={6}
|
||||||
|
className="text-center py-8 text-muted-foreground"
|
||||||
|
>
|
||||||
No inventory items found
|
No inventory items found
|
||||||
</TableCell>
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
@ -136,7 +184,21 @@ export default function InventoryPage() {
|
|||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell>{item.lastUpdated}</TableCell>
|
<TableCell>{item.lastUpdated}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<Badge variant={item.status === "Low Stock" ? "destructive" : "default"}>{item.status}</Badge>
|
<Badge
|
||||||
|
variant={
|
||||||
|
item.status === "Low Stock"
|
||||||
|
? "destructive"
|
||||||
|
: "default"
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{item.status}
|
||||||
|
</Badge>
|
||||||
|
</TableCell>
|
||||||
|
<TableCell>
|
||||||
|
<EditInventoryItem />
|
||||||
|
</TableCell>
|
||||||
|
<TableCell>
|
||||||
|
<DeleteInventoryItem />
|
||||||
</TableCell>
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
))
|
))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user