import React, { useState, useEffect, useMemo } from "react"; import { getDepartmentCorrelation, DepartmentCorrelationParams, TaxType } from "../../../api/stats"; import { DepartmentCorrelationPoint } from "../../../models/DepartmentCorrelation"; import { groupByCommune } from "./scatterplot.utils"; const ScatterPlot: React.FC = () => { const [raw, setRaw] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [selectedTax, setSelectedTax] = useState("tfpb"); const [year, setYear] = useState(2019); const [department, setDepartment] = useState(""); useEffect(() => { let cancelled = false; async function load() { try { setLoading(true); setError(null); const params: DepartmentCorrelationParams = { tax: selectedTax, year, department }; const res = await getDepartmentCorrelation(params); if (!cancelled) setRaw(res.member); } catch (e: any) { if (!cancelled) setError(e.message ?? "Erreur API"); } finally { if (!cancelled) setLoading(false); } } load(); return () => { cancelled = true; }; }, [selectedTax, year, department]); const series = useMemo(() => groupByCommune(raw), [raw]); if (loading) return

Chargement…

; if (error) return

Erreur : {error}

; if (raw.length === 0) return

Aucune donnée.

; return (
); }; export default ScatterPlot;