"use client"; import React from "react"; interface TableProps { title: string; columns: string[]; rows: any[]; total: number; limit?: number; variant?: "preview" | "warning"; } function Table({ title, columns, rows, total, limit = 100, variant = "preview" }: TableProps) { const displayedRows = rows.slice(0, limit); const shorten = (text: any, max = 80) => { if (!text) return "—"; const strText = String(text); return strText.length > max ? strText.slice(0, max) + "..." : strText; }; return (
{columns.map((col) => ( ))} {displayedRows.length > 0 ? ( displayedRows.map((row, idx) => ( {columns.map((col) => ( ))} )) ) : ( )}
{col}
{row[col] !== null && row[col] !== undefined && row[col] !== "" ? ( col === "geometry" ? ( shorten(row[col], 50) ) : ( shorten(row[col], 80) ) ) : ( )}
Tidak ada data yang dapat ditampilkan

Menampilkan {Math.min(limit, displayedRows.length)} dari {total} baris.

{variant === "preview" && (

Hanya menampilkan cuplikan data

)}
); } interface TablePreviewProps { result: { columns?: string[]; preview?: any[]; geometry_valid?: number; geometry_empty?: number; warning_rows?: any[]; [key: string]: any; } | null; } export default function TablePreview({ result }: TablePreviewProps) { if (!result) return null; const { columns = [], preview = [], geometry_valid = 0, geometry_empty = 0, warning_rows = [], } = result; return (
{/* 1. WARNING TABLE (Jika ada data yang tidak valid geometrinya) */} {warning_rows?.length > 0 && (

⚠️ Periksa Data Wilayah

Sistem tidak dapat mendeteksi geometri untuk data di bawah ini. Pastikan nama wilayah sesuai referensi.

)} {/* 2. PREVIEW TABLE (Data Valid) */}
{geometry_valid > 0 ? (
) : ( !warning_rows?.length &&
Tidak ada data preview tersedia.
)} ); }