import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { SearchIcon } from "@/components/ui/phosphor-icons"; import { LAND_MARKER_LABELS, LAND_MARKER_COLORS } from "@/lib/map-data"; import type { UserMarker } from "@/components/leaflet-map"; import { calcLineLength, calcPolygonArea } from "@/components/land/shape-placement-dialog"; interface LandDirectoryProps { searchQuery: string; setSearchQuery: (query: string) => void; filteredItems: UserMarker[]; selectedItemId: string | null; visibilityFilters: Record; onSelectItem: (item: UserMarker) => void; } function itemBadge(item: UserMarker): string { const coordinates = item.meta?.coordinates ?? []; if (item.type === "polygon" && coordinates.length > 0) { return `${(calcPolygonArea(coordinates) / 10000).toFixed(2)} Ha`; } if (item.type === "line" && coordinates.length > 0) { const length = calcLineLength(coordinates); return length >= 1000 ? `${(length / 1000).toFixed(2)} km` : `${length.toFixed(1)} m`; } if (item.type === "circle") { const radius = item.meta?.radius ?? 0; return `${radius.toFixed(1)} m`; } return LAND_MARKER_LABELS[item.type] ?? item.type; } export function LandDirectory({ searchQuery, setSearchQuery, filteredItems, selectedItemId, visibilityFilters, onSelectItem, }: LandDirectoryProps) { return ( GIS Layer Directory Select a marker or shape to review survey metadata and inspector details.
setSearchQuery(e.target.value)} />
{filteredItems.length > 0 ? (
{filteredItems.map((item) => { const isSelected = selectedItemId === item.id; const isVisible = visibilityFilters[item.type] !== false; const color = LAND_MARKER_COLORS[item.type] ?? "#6b7280"; return (
onSelectItem(item)} className={`p-3 border rounded-lg cursor-pointer flex justify-between items-center gap-2 transition-all ${ isSelected ? "border-primary bg-primary/5 text-primary font-semibold" : "border-border/60 hover:bg-muted" } ${!isVisible ? "opacity-45" : ""}`} > {item.name} {itemBadge(item)}
); })}
) : (

Belum ada penanda atau bentuk yang ditambahkan. Buka peta untuk mulai menambahkan.

)}
); }