diff --git a/Front-End/messages/en/sidebar.json b/Front-End/messages/en/sidebar.json index 41e44f9..e56085e 100644 --- a/Front-End/messages/en/sidebar.json +++ b/Front-End/messages/en/sidebar.json @@ -4,7 +4,7 @@ "structure": "Structure", "directory": "Directory", "events": "Events", - "grades": "Grades", + "educational_monitoring": "Educational Monitoring", "settings": "Settings", "schoolAdmin": "School Administration" } diff --git a/Front-End/messages/fr/sidebar.json b/Front-End/messages/fr/sidebar.json index f5ebffe..364db2d 100644 --- a/Front-End/messages/fr/sidebar.json +++ b/Front-End/messages/fr/sidebar.json @@ -4,7 +4,7 @@ "structure": "Structure", "directory": "Annuaire", "events": "Evenements", - "grades": "Notes", + "educational_monitoring": "Suivi pédagogique", "settings": "Paramètres", "schoolAdmin": "Administration Scolaire" } diff --git a/Front-End/src/app/[locale]/admin/grades/page.js b/Front-End/src/app/[locale]/admin/grades/page.js index 2c00327..70c467a 100644 --- a/Front-End/src/app/[locale]/admin/grades/page.js +++ b/Front-End/src/app/[locale]/admin/grades/page.js @@ -1,10 +1,144 @@ 'use client'; -import React, { useState, useEffect } from 'react'; +import React, { useState } from 'react'; +import SelectChoice from '@/components/SelectChoice'; +import Button from '@/components/Button'; +import Table from '@/components/Table'; export default function Page() { + const [formData, setFormData] = useState({ + selectedStudent: null, + absences: [], + competenceReview: [ + { competence: 'Lecture', score: null }, + { competence: 'Écriture', score: null }, + { competence: 'Mathématiques', score: null }, + { competence: 'Sciences', score: null }, + ], + }); + + const students = [ + { id: 1, name: 'John Doe', class: 'CM2' }, + { id: 2, name: 'Jane Smith', class: 'CE1' }, + { id: 3, name: 'Alice Johnson', class: 'CM1' }, + ]; + + const absences = [ + { date: '2023-09-01', reason: 'Maladie' }, + { date: '2023-09-15', reason: 'Vacances' }, + { date: '2023-10-05', reason: 'Retard justifié' }, + ]; + + const handleChange = (field, value) => { + setFormData((prev) => ({ ...prev, [field]: value })); + }; + + const handleScoreChange = (index, score) => { + const updatedCompetenceReview = [...formData.competenceReview]; + updatedCompetenceReview[index].score = score; + setFormData((prev) => ({ + ...prev, + competenceReview: updatedCompetenceReview, + })); + }; + return ( -
-

Statistiques

+
+

Suivi pédagogique

+ + {/* Sélection de l'élève */} +
+

Sélectionner un élève

+ handleChange('selectedStudent', e.target.value)} + choices={students.map((student) => ({ + value: student.id, + label: `${student.name} - Classe : ${student.class}`, + }))} + required + /> +
+ + {/* Liste des absences */} + {formData.selectedStudent && ( +
+

Liste des absences

+
    + {absences.map((absence, index) => ( +
  • + {absence.date} + {absence.reason} +
  • + ))} +
+
+ )} + + {/* Bilan de compétence */} + {formData.selectedStudent && ( +
+

Bilan de compétence

+ row.competence, + }, + { + name: '1', + transform: (row, index) => ( + handleScoreChange(index, '1')} + /> + ), + }, + { + name: '2', + transform: (row, index) => ( + handleScoreChange(index, '2')} + /> + ), + }, + { + name: '3', + transform: (row, index) => ( + handleScoreChange(index, '3')} + /> + ), + }, + ]} + /> +
+
+ + )} ); } diff --git a/Front-End/src/app/[locale]/admin/layout.js b/Front-End/src/app/[locale]/admin/layout.js index 2bb4b5b..c85ab53 100644 --- a/Front-End/src/app/[locale]/admin/layout.js +++ b/Front-End/src/app/[locale]/admin/layout.js @@ -70,7 +70,7 @@ export default function Layout({ children }) { }, grades: { id: 'grades', - name: t('grades'), + name: t('educational_monitoring'), url: FE_ADMIN_GRADES_URL, icon: Award, }, diff --git a/Front-End/src/components/CheckBox.js b/Front-End/src/components/CheckBox.js index 7fb6e70..dfe8bec 100644 --- a/Front-End/src/components/CheckBox.js +++ b/Front-End/src/components/CheckBox.js @@ -6,11 +6,9 @@ const CheckBox = ({ handleChange, fieldName, itemLabelFunc = () => null, - labelAttenuated = () => false, horizontal, }) => { const isChecked = formData[fieldName].includes(parseInt(item.id)); - const isAttenuated = labelAttenuated(item) && !isChecked; return (
{itemLabelFunc(item)} @@ -37,7 +35,7 @@ const CheckBox = ({ {!horizontal && ( diff --git a/Front-End/src/components/CheckBoxList.js b/Front-End/src/components/CheckBoxList.js deleted file mode 100644 index 0e3dc97..0000000 --- a/Front-End/src/components/CheckBoxList.js +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react'; -import CheckBox from '@/components/CheckBox'; - -const CheckBoxList = ({ - items, - formData, - handleChange, - fieldName, - label, - icon: Icon, - className, - itemLabelFunc = (item) => item.name, - labelAttenuated = () => false, - horizontal = false, // Ajouter l'option horizontal -}) => { - return ( -
- -
- {items.map((item) => ( - - ))} -
-
- ); -}; - -export default CheckBoxList; diff --git a/Front-End/src/components/Inscription/InscriptionForm.js b/Front-End/src/components/Inscription/InscriptionForm.js index 0beb4b8..a72c3b3 100644 --- a/Front-End/src/components/Inscription/InscriptionForm.js +++ b/Front-End/src/components/Inscription/InscriptionForm.js @@ -12,6 +12,8 @@ import logger from '@/utils/logger'; import Popup from '@/components/Popup'; import InputPhone from '../InputPhone'; import { PhoneLabel } from '../PhoneLabel'; +import CheckBox from '@/components/CheckBox'; +import RadioList from '@/components/RadioList'; const InscriptionForm = ({ students, @@ -547,27 +549,35 @@ const InscriptionForm = ({ {selectedStudent.first_name} : {existingGuardians.map((guardian) => ( -
-
@@ -719,31 +729,28 @@ const InscriptionForm = ({ {groups.length > 0 ? (

Sélectionnez un groupe de documents

- {groups.map((group) => ( -
- - setFormData({ - ...formData, - selectedFileGroup: parseInt(e.target.value), - }) - } - className="form-radio h-4 w-4 text-emerald-600" - /> - -
- ))} + ({ + id: group.id, + label: `${group.name}${ + group.description ? ` (${group.description})` : '' + }`, + }))} + formData={{ + ...formData, + selectedFileGroup: parseInt(formData.selectedFileGroup, 10), + }} + handleChange={(e) => { + const value = parseInt(e.target.value, 10); + setFormData((prevData) => ({ + ...prevData, + selectedFileGroup: value, + })); + }} + fieldName="selectedFileGroup" + className="mt-4" + />
) : (

Attention! - {' '} Aucun groupe de documents n'a été créé.