diff --git a/frontend/src/pages/Stats.tsx b/frontend/src/pages/Stats.tsx index f7ff314..1f8bfb8 100644 --- a/frontend/src/pages/Stats.tsx +++ b/frontend/src/pages/Stats.tsx @@ -9,9 +9,14 @@ import { CartesianGrid, ResponsiveContainer } from "recharts"; -import WordCloud from "../stats/WordCloud"; -import ActivityHeatmap from "../stats/ActivityHeatmap"; +import ActivityHeatmap from "../stats/ActivityHeatmap"; +import { ReactWordcloud } from '@cp949/react-wordcloud'; + +type BackendWord = { + word: string; + count: number; +} const StatPage = () => { const [data, setData] = useState([]); @@ -19,31 +24,45 @@ const StatPage = () => { const [loading, setLoading] = useState(true); const [heatmapData, setHeatmapData] = useState([]); + const [wordFrequencyData, setWordFrequencyData] = useState([]); useEffect(() => { // Posts per Day axios - .get("http://localhost:5000/stats/events_per_day") - .then(res => { - setData(res.data.filter((item: any) => new Date(item.date) >= new Date("2025-06-01"))); - setLoading(false); - }) - .catch(err => { - setError(err.response?.data?.error || "Failed to load data"); - setLoading(false); + .get("http://localhost:5000/stats/events_per_day") + .then(res => { + setData(res.data.filter((item: any) => new Date(item.date) >= new Date("2026-01-10"))); + setLoading(false); + }) + .catch(err => { + setError(err.response?.data?.error || "Failed to load data"); + setLoading(false); }); // Heatmap - axios - .get("http://localhost:5000/stats/heatmap") - .then(res => { - setHeatmapData(res.data); - setLoading(false); - }) - .catch(err => { - setError(err.response?.data?.error || "Failed to load heatmap data"); - setLoading(false); + axios + .get("http://localhost:5000/stats/heatmap") + .then(res => { + setHeatmapData(res.data); + setLoading(false); + }) + .catch(err => { + setError(err.response?.data?.error || "Failed to load heatmap data"); + setLoading(false); }); + + // Word Frequencies + axios + .get("http://localhost:5000/stats/word_frequencies") + .then(res => { + const mapped = res.data.map((d: BackendWord) => ( + {text: d.word, value: d.count} + )); + setWordFrequencyData(mapped); + }) + .catch(err => { + setError(err); + }); }, []); if (loading) return
Loading posts per day…
; @@ -68,7 +87,7 @@ const StatPage = () => {{error}
-