diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 93a00bd..b4f9ae6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,6 +8,7 @@ "name": "notytex-frontend", "version": "2.0.0", "dependencies": { + "@sgratzl/chartjs-chart-boxplot": "^4.4.5", "axios": "^1.7.9", "chart.js": "^4.4.7", "pinia": "^2.2.6", @@ -1143,6 +1144,24 @@ "win32" ] }, + "node_modules/@sgratzl/boxplots": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sgratzl/boxplots/-/boxplots-2.0.0.tgz", + "integrity": "sha512-XHQTNTk0OtDEZyT7v+BKNKt4OEXYhn4GtfI+iQ1eFiFsx8Aq/csz+mOJYbfpkiP8Popd/8Nky8vLh1zzkYn0gw==", + "license": "MIT" + }, + "node_modules/@sgratzl/chartjs-chart-boxplot": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@sgratzl/chartjs-chart-boxplot/-/chartjs-chart-boxplot-4.4.5.tgz", + "integrity": "sha512-hvHcUIPIyzNPRmvPNIbA/R68zZKv7XHUcNrYJZTB8QsVE0KKuuGuEK98yCeCy32vZXQBl/PrHGOYMXeuqZrU0w==", + "license": "MIT", + "dependencies": { + "@sgratzl/boxplots": "^2.0.0" + }, + "peerDependencies": { + "chart.js": "^4.1.1" + } + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", diff --git a/frontend/package.json b/frontend/package.json index f902944..8bea27d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,20 +10,21 @@ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore" }, "dependencies": { - "vue": "^3.5.13", - "vue-router": "^4.5.0", - "pinia": "^2.2.6", + "@sgratzl/chartjs-chart-boxplot": "^4.4.5", "axios": "^1.7.9", "chart.js": "^4.4.7", - "vue-chartjs": "^5.3.2" + "pinia": "^2.2.6", + "vue": "^3.5.13", + "vue-chartjs": "^5.3.2", + "vue-router": "^4.5.0" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", - "vite": "^6.0.3", - "tailwindcss": "^3.4.17", - "postcss": "^8.4.49", "autoprefixer": "^10.4.20", "eslint": "^9.16.0", - "eslint-plugin-vue": "^9.31.0" + "eslint-plugin-vue": "^9.31.0", + "postcss": "^8.4.49", + "tailwindcss": "^3.4.17", + "vite": "^6.0.3" } } diff --git a/frontend/src/components/council/CouncilStudentDetail.vue b/frontend/src/components/council/CouncilStudentDetail.vue new file mode 100644 index 0000000..59d8b32 --- /dev/null +++ b/frontend/src/components/council/CouncilStudentDetail.vue @@ -0,0 +1,473 @@ + + + + + + + + + + {{ student.last_name }} {{ student.first_name }} + + #{{ student.rank }}/{{ totalStudents }} + + + ({{ gapToMean >= 0 ? '+' : '' }}{{ gapToMean.toFixed(1) }}) + + + + + {{ student.average !== null ? student.average.toFixed(2) : '-' }} + + /20 + + + + + + + + + + + + + + + Parcours sur l'annee + + + + + + + T{{ tri.trimester }} + + {{ tri.studentAvg !== null ? tri.studentAvg.toFixed(1) : '-' }} + + (cls {{ tri.classAvg !== null ? tri.classAvg.toFixed(1) : '-' }}) + #{{ tri.rank }} + + {{ tri.delta > 0 ? '+' : '' }}{{ tri.delta.toFixed(1) }} + + + + + + + + + + + Evaluations + + + {{ a.assessment_title }} + + + {{ a.score !== null ? `${a.score.toFixed(1)}/${a.max_points.toFixed(0)}` : '-' }} + + + ({{ a.score_on_20.toFixed(1) }}) + + + + + + + + + + + + + Domaines + + + + + + Competences + + + + + + + + + + diff --git a/frontend/src/components/council/CouncilStudentList.vue b/frontend/src/components/council/CouncilStudentList.vue new file mode 100644 index 0000000..49db9bb --- /dev/null +++ b/frontend/src/components/council/CouncilStudentList.vue @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + {{ student.last_name }} {{ student.first_name }} + + + + {{ trendIcon(student.trend) }} + + + {{ student.average !== null ? student.average.toFixed(1) : '-' }} + + + #{{ student.rank ?? '-' }} + + + + + + + + + diff --git a/frontend/src/views/CouncilView.vue b/frontend/src/views/CouncilView.vue index 425f25e..6fb634b 100644 --- a/frontend/src/views/CouncilView.vue +++ b/frontend/src/views/CouncilView.vue @@ -1,12 +1,240 @@ - - - Conseil de classe - Préparation et appréciations - - - - Interface de conseil de classe à implémenter - + + + + + + + + + + {{ classData.name }} + {{ classData.year }} + + + + T{{ t }} + + + + + + + Moy {{ currentStats.mean?.toFixed(1) || '-' }} + Med {{ currentStats.median?.toFixed(1) || '-' }} + σ {{ currentStats.std_dev?.toFixed(1) || '-' }} + Eleves {{ currentStats.students_count }} + Evals {{ currentStats.assessments_total }} + + + + + + + + + + + + + + + Selectionnez un eleve dans la liste + + + + + + + Aucune donnee disponible pour le trimestre {{ trimester }} + + + +
Préparation et appréciations
Interface de conseil de classe à implémenter
Selectionnez un eleve dans la liste
Aucune donnee disponible pour le trimestre {{ trimester }}