diff --git a/code/interface_admin/components/ComparativeBarChart.jsx b/code/interface_admin/components/ComparativeBarChart.jsx index c2cbd01..c29b4b4 100644 --- a/code/interface_admin/components/ComparativeBarChart.jsx +++ b/code/interface_admin/components/ComparativeBarChart.jsx @@ -1,17 +1,11 @@ import React from 'react' import { Bar } from 'react-chartjs-2' -import Chart from 'chart.js/auto'; +import Chart from 'chart.js/auto'; //NE SURTOUT PAS SUPPRIMER CET IMPORT export default function ComparativeBarChart({ xlabels, data0, label0, data1, label1}) { return ( + ) +} diff --git a/code/interface_admin/hooks/stats.js b/code/interface_admin/hooks/stats.js index 4b630ce..447d7a2 100644 --- a/code/interface_admin/hooks/stats.js +++ b/code/interface_admin/hooks/stats.js @@ -20,7 +20,7 @@ export default function useStats(limit, interval) { useEffect(() => { fetchData(limit, interval); - }, []) + }, [limit, interval]) return {stats, loading, error}; } \ No newline at end of file diff --git a/code/interface_admin/pages/avis/index.js b/code/interface_admin/pages/avis/index.js index 4ff8a39..26e4a85 100644 --- a/code/interface_admin/pages/avis/index.js +++ b/code/interface_admin/pages/avis/index.js @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react' -import { Card, Container, Form, Row, Table } from 'react-bootstrap' +import { Card, Container, Form, Row } from 'react-bootstrap' import AvisList from '../../components/AvisList'; import useReviews from '../../hooks/reviews'; import styles from '../../styles/AvisListPage.module.css' diff --git a/code/interface_admin/pages/index.js b/code/interface_admin/pages/index.js index 553c24b..e7bb436 100644 --- a/code/interface_admin/pages/index.js +++ b/code/interface_admin/pages/index.js @@ -12,7 +12,7 @@ export default function Home() { const [datasets, setDatasets] = useState(null); const [averages, setAverages] = useState(null); const [differences, setDifferences] = useState(null); - + useEffect(() => { if (datasets) { let newAverages = [] @@ -20,25 +20,25 @@ export default function Home() { for (let i = 0; i < datasets.length; i++) { let currentEntriesCount = 0; let previousEntriesCount = 0; - for(let x of datasets[i].current) { - if(x != null) { + for (let x of datasets[i].current) { + if (x != null) { currentEntriesCount++; } } - for(let x of datasets[i].previous) { - if(x != null) { + 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) { + 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 { + } else { newDifferences[i] = newAverages[i] } - }else { + } else { newDifferences[i] = 0; newAverages[i] = 0; } @@ -47,31 +47,31 @@ export default function Home() { setDifferences(newDifferences); } }, [datasets]); - + const { stats, loading, error } = useStats(14, "jour"); - + useEffect(() => { console.log(getDay(new Date("2023-03-20T14:00:00.000Z"))) }) - + 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++) { + 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); - console.log({date,week,thisWeek,day}) - if(week == thisWeek) { + console.log({ date, week, thisWeek, day }) + if (week == thisWeek) { reviewCount[day] = stats[i].nb_avis; reviewAvg[day] = stats[i].moyenne_globale; - }else if(week = thisWeek - 1){ + } else if (week = thisWeek - 1) { reviewAvgPrev[day] = stats[i].moyenne_globale; reviewCountPrev[day] = stats[i].nb_avis; } @@ -82,53 +82,52 @@ export default function Home() { ]) } }, [stats]); - + function dataVisualizer(title, current, previous, average, difference) { return
-

{title}

- - Moyenne - -
- {Math.round(average * 1e2) / 1e2} -
-
= 0 ? styles.averagePositive : styles.averageNegative].join(' ')} - > - {(difference >= 0 ? "+" : "-") + Math.round(difference * 1e2) / 1e2} -
-
-
- -
+

{title}

+ + Moyenne + +
+ {Math.round(average * 1e2) / 1e2} +
+
= 0 ? styles.averagePositive : styles.averageNegative].join(' ')} + > + {(difference >= 0 ? "+" : "-") + Math.round(difference * 1e2) / 1e2} +
+
+
+ +
} - + return ( <> - - Create Next App - - - - - Vos performances cette semaine - - {datasets && averages && differences && datasets.map((set, i) => dataVisualizer(set.title, set.current, set.previous, averages[i], differences[i]))} - -
-
-
-
+ + Telereview + + + + + Vos performances cette semaine + + {datasets && averages && differences && datasets.map((set, i) => dataVisualizer(set.title, set.current, set.previous, averages[i], differences[i]))} + +
+
+
+
- ) - } - \ No newline at end of file + ) +} diff --git a/code/interface_admin/pages/stats.js b/code/interface_admin/pages/stats.js index 9be9933..800e60f 100644 --- a/code/interface_admin/pages/stats.js +++ b/code/interface_admin/pages/stats.js @@ -1,7 +1,69 @@ -import React from 'react' +import React, { useEffect, useState } from 'react' +import { Card, Container, Form, Row } from 'react-bootstrap'; +import StatBarChart from '../components/StatBarChart'; +import useStats from '../hooks/stats'; export default function Stats() { + const [statName,setStatName] = useState("moyenne_globale") + const [timeInterval, setTimeInterval] = useState("jour") + const [chartReady, setChartReady] = useState(false); + const [xlabels, setXlabels] = useState([]); + const [plotData, setPlotData] = useState([]); + + const {loading, error, stats} = useStats(10,timeInterval); + + useEffect(() => { + if(!loading && !error) { + let newXlabels = []; + let newPlotData = []; + for(let i = 0; i < stats.length; i++) { + newXlabels.push(stats[i].date); + newPlotData.push(stats[i][statName]); + } + setXlabels(newXlabels); + setPlotData(newPlotData); + setChartReady(true); + console.log(timeInterval, stats, plotData, xlabels); + }else { + setChartReady(false); + } + }, [stats, statName, timeInterval, loading, error]) + + return ( -
stats
+ + + Tous les avis + + +
+ + Statistique + setStatName(e.target.value)}> + + + + + + + + + Periode + setTimeInterval(e.target.value)}> + + + + + + +
+
+ + {error &&

Error

} + {chartReady && } +
+
+
+
) } diff --git a/docs/charte_graphique.md b/docs/charte_graphique.md new file mode 100644 index 0000000..25ce42b --- /dev/null +++ b/docs/charte_graphique.md @@ -0,0 +1,3 @@ +# Codes hex couleurs +#6B8000 +#A6CC00 \ No newline at end of file