import Head from 'next/head' import { Card, Container } from 'react-bootstrap' import ComparativeBarChart from '../components/ComparativeBarChart' import { useEffect, useState } from 'react' import styles from "../styles/Home.module.css" import useStats from '../hooks/stats' import getDay from 'date-fns/getDay' import getWeek from '../util' export default function Home() { const [datasets, setDatasets] = useState(null); const [averages, setAverages] = useState(null); const [differences, setDifferences] = useState(null); useEffect(() => { if (datasets) { let newAverages = [] let newDifferences = [] for (let i = 0; i < datasets.length; i++) { let currentEntriesCount = 0; let previousEntriesCount = 0; for (let x of datasets[i].current) { if (x != null) { currentEntriesCount++; } } for (let x of datasets[i].previous) { if (x != null) { previousEntriesCount++; } } if (currentEntriesCount != 0) { newAverages[i] = datasets[i].current.reduce((a, b) => a + b) / currentEntriesCount; if (previousEntriesCount > 0) { newDifferences[i] = newAverages[i] - datasets[i].previous.reduce((a, b) => a + b) / datasets[i].previous.length } else { newDifferences[i] = newAverages[i] } } else { newDifferences[i] = 0; newAverages[i] = 0; } } setAverages(newAverages); setDifferences(newDifferences); } }, [datasets]); const { stats, loading, error } = useStats(14, "jour"); useEffect(() => { if (!error && !loading) { let reviewCount = [null, null, null, null, null, null, null]; let reviewCountPrev = [null, null, null, null, null, null, null] let reviewAvg = [null, null, null, null, null, null, null] let reviewAvgPrev = [null, null, null, null, null, null, null] for (let i = 0; i < stats.length; i++) { let date = new Date(Date.parse(stats[i].date)) let now = new Date(); let day = (date.getDay() - 1) % 7; let week = getWeek(date, 1); let thisWeek = getWeek(now, 1); if (week == thisWeek) { reviewCount[day] = stats[i].nb_avis; reviewAvg[day] = stats[i].moyenne_globale; } else if (week = thisWeek - 1) { reviewAvgPrev[day] = stats[i].moyenne_globale; reviewCountPrev[day] = stats[i].nb_avis; } } setDatasets([ { title: "Nombre d'avis", current: reviewCount, previous: reviewCountPrev }, { title: "Notes moyennes", current: reviewAvg, previous: reviewAvgPrev } ]) } }, [stats]); function dataVisualizer(title, current, previous, average, difference) { return