'use client';
import React, { useEffect, useState } from 'react';
import dynamic from 'next/dynamic';
import { useValidationStore } from '@/store/validation-store';
import { visualizationClient } from '@/lib/api/visualization-client';
const LeafletCompareMap = dynamic(
() => import('./leaflet-compare-map'),
{ ssr: false, loading: () =>
Loading Comparison Map...
}
);
export function ValidationViewer() {
const { artifactId, groundTruthFileId, selectedVariable } = useValidationStore();
const [bounds, setBounds] = useState<[number, number, number, number] | undefined>(undefined);
const [isBoundsLoading, setIsBoundsLoading] = useState(true);
const varName = selectedVariable || "C13";
useEffect(() => {
if (groundTruthFileId) {
setIsBoundsLoading(true);
visualizationClient.getBounds(groundTruthFileId, varName).then(res => {
if (res.success && res.data && res.data.bounds) {
const [[south, west], [north, east]] = res.data.bounds;
setBounds([south, west, north, east]);
}
}).catch(console.error)
.finally(() => setIsBoundsLoading(false));
}
}, [groundTruthFileId, varName]);
if (!artifactId || !groundTruthFileId) {
return (
);
}
if (isBoundsLoading) {
return (
Fetching geographic coordinates...
);
}
const generatedUrl = visualizationClient.getLayerUrl(artifactId, varName, 0);
const truthUrl = visualizationClient.getLayerUrl(groundTruthFileId, varName, 0);
return (
Ground Truth (Left)
AI Generated (Right)
);
}