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éé.