feat: add temporal Mol explorer
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-14 15:19:42 +02:00
parent 0ec1ab4970
commit c0943fe7d4
39 changed files with 3065 additions and 163 deletions
@@ -0,0 +1,62 @@
import { useEffect, useState } from 'react'
import { formatError } from '../lib/formatError'
import { temporalApi } from '../services/api/temporal'
import type { TemporalComparisonResponse, VectorSelectionBBox } from '../types'
export function useTemporalComparison(selectedProjectId: string | null) {
const [temporalComparison, setTemporalComparison] = useState<TemporalComparisonResponse | null>(null)
const [temporalComparisonLoading, setTemporalComparisonLoading] = useState(false)
const [temporalComparisonError, setTemporalComparisonError] = useState<string | null>(null)
useEffect(() => {
setTemporalComparison(null)
setTemporalComparisonError(null)
}, [selectedProjectId])
const clearTemporalComparison = () => {
setTemporalComparison(null)
setTemporalComparisonError(null)
}
const compareTemporalSnapshots = async (
earlierDatasetId: string,
laterDatasetId: string,
bbox: VectorSelectionBBox,
): Promise<TemporalComparisonResponse | null> => {
if (!selectedProjectId) {
setTemporalComparisonError('Open eerst een project om evoluties te vergelijken.')
return null
}
if (!earlierDatasetId || !laterDatasetId) {
setTemporalComparisonError('Kies twee meetmomenten uit dezelfde tijdreeks.')
return null
}
setTemporalComparisonLoading(true)
setTemporalComparisonError(null)
try {
const result = await temporalApi.compare(selectedProjectId, {
earlier_dataset_id: earlierDatasetId,
later_dataset_id: laterDatasetId,
bbox,
preview_limit: 500,
})
setTemporalComparison(result)
return result
} catch (error) {
setTemporalComparison(null)
setTemporalComparisonError(formatError(error, 'De evolutieanalyse is mislukt.'))
return null
} finally {
setTemporalComparisonLoading(false)
}
}
return {
temporalComparison,
temporalComparisonLoading,
temporalComparisonError,
compareTemporalSnapshots,
clearTemporalComparison,
}
}