"use client"; import { useState, useEffect } from "react"; import dynamic from "next/dynamic"; // ⬅️ PENTING import { useUploadContext } from "../_context/upload-context"; import { Button } from "@/shared/components/ui/button"; import MetadataForm, { getInitialMetadata } from "./map/MetadataForm"; import TablePreview from "./map/TablePreview"; import { log } from "node:console"; import uploadApi from "@/shared/services/map-upload"; import { useUploadLogic } from "../_hooks/use-upload"; import { toast } from "sonner"; // 🔥 IMPORT DYNAMIC UNTUK KOMPONEN PETA const SpatialStylePreview = dynamic(() => import("./map/StylePreview"), { ssr: false, loading: () =>
Loading Map...
}); const StylingLayers = dynamic(() => import("./map/StylingLayers"), { ssr: false }); export default function StepValidate() { const { state, setState, goToStep } = useUploadContext(); const { loading, handleSaveToDatabase } = useUploadLogic(); // State lokal untuk Metadata & Style // const [metadata, setMetadata] = useState(state.result?.data.metadata_suggest || {}); const [metadata, setMetadata] = useState(() => getInitialMetadata(state.result?.data.metadata_suggest || {}) ); const [styleConfig, setStyleConfig] = useState({"styleType": "sld","sldContent": "\n\n\n \n layer\n \n \n \n \n \n \n #3388ff\n 0.5\n \n \n #232323\n 1\n \n \n \n \n \n \n \n\n"}); // Ambil dummy geosStyle atau fetch dari API const geosStyle = [{name: "Style A"}, {name: "Style B"}]; // const handleConfirm = async () => { // const table = state.result?.data; // const data = { // title: metadata.title, // columns: table.columns, // rows: table.preview, // author: metadata, // style: styleConfig.sldContent // } // handleSaveToDatabase // // Gabungkan metadata + style + data result -> Kirim ke API saveToDatabase // // goToStep("SUCCESS"); // }; const handleConfirm = async () => { // Validasi Frontend if (!metadata.title) { toast.warning("Judul data wajib diisi."); return; } const table = state.result?.data; const data = { title: metadata.title, path: state.result?.data.tmp_path, columns: table.columns, rows: table.preview, author: metadata, style: styleConfig.sldContent } await handleSaveToDatabase(data); }; return (

Validasi & Styling

{/* Bagian Peta Preview */}
{/* Bagian Kontrol Style */}
{/* Bagian Metadata */}

{state.result?.data.file_name}

{/* */}
{/* Bagian Tabel Preview */}

Cuplikan Data

{/* */}
{/* Bagian Info Dataset */}

Info Dataset

*AI Generate

setMetadata(updatedData)} />
); }