chore: Capacité de l'établissement retourné en variable de session /

login sur la home page
This commit is contained in:
N3WT DE COMPET
2025-05-22 18:47:19 +02:00
parent 3b667d3b15
commit 87b8cf6c05
6 changed files with 54 additions and 32 deletions

View File

@ -23,7 +23,7 @@ import {
} from '@/app/actions/subscriptionAction';
import { useEstablishment } from '@/context/EstablishmentContext';
import { useClasses } from '@/context/ClassesContext';
import { Award, BookOpen, FileText } from 'lucide-react';
import { Award, FileText } from 'lucide-react';
import SectionHeader from '@/components/SectionHeader';
import GradesDomainBarChart from '@/components/Grades/GradesDomainBarChart';
import InputText from '@/components/InputText';
@ -210,7 +210,7 @@ export default function Page() {
return (
<div className="p-8 space-y-8">
<SectionHeader
icon={BookOpen}
icon={Award}
title="Suivi pédagogique"
description="Suivez le parcours d'un élève"
/>
@ -219,7 +219,7 @@ export default function Page() {
<div className="flex flex-row gap-8 items-start">
{/* Colonne gauche : InputText + bouton */}
<div className="w-4/5 flex items-end gap-4">
<div className="flex-1">
<div className="flex-[3_3_0%]">
<InputText
name="studentSearch"
type="text"
@ -231,8 +231,7 @@ export default function Page() {
enable={true}
/>
</div>
{/* Sélecteur de période */}
{formData.selectedStudent && (
<div className="flex-[1_1_0%]">
<SelectChoice
name="period"
label="Période"
@ -250,28 +249,30 @@ export default function Page() {
})}
selected={selectedPeriod || ''}
callback={(e) => setSelectedPeriod(Number(e.target.value))}
disabled={false}
disabled={!formData.selectedStudent}
/>
)}
<Button
primary
onClick={() => {
const periodString = getPeriodString(
selectedPeriod,
selectedEstablishmentEvaluationFrequency
);
const url = `${FE_ADMIN_GRADES_STUDENT_COMPETENCIES_URL}?studentId=${formData.selectedStudent}&period=${periodString}`;
router.push(url);
}}
className="mb-1 px-4 py-2 rounded-md shadow bg-emerald-500 text-white hover:bg-emerald-600"
icon={<Award className="w-6 h-6" />}
text="Evaluer"
title="Evaluez l'élève"
disabled={!formData.selectedStudent || !selectedPeriod}
/>
</div>
<div className="flex-[1_1_0%] flex items-end">
<Button
primary
onClick={() => {
const periodString = getPeriodString(
selectedPeriod,
selectedEstablishmentEvaluationFrequency
);
const url = `${FE_ADMIN_GRADES_STUDENT_COMPETENCIES_URL}?studentId=${formData.selectedStudent}&period=${periodString}`;
router.push(url);
}}
className="mb-1 px-4 py-2 rounded-md shadow bg-emerald-500 text-white hover:bg-emerald-600 w-full"
icon={<Award className="w-6 h-6" />}
text="Evaluer"
title="Evaluez l'élève"
disabled={!formData.selectedStudent || !selectedPeriod}
/>
</div>
</div>
{/* Colonne droite : Photo élève */}
<div className="w-2/5 flex flex-col items-center justify-center">
<div className="w-1/5 flex flex-col items-center justify-center">
{formData.selectedStudent &&
(() => {
const student = students.find(

View File

@ -38,7 +38,8 @@ export default function DashboardPage() {
});
const [classes, setClasses] = useState([]);
const { selectedEstablishmentId } = useEstablishment();
const { selectedEstablishmentId, selectedEstablishmentTotalCapacity } =
useEstablishment();
const { showNotification } = useNotification();
useEffect(() => {
@ -116,13 +117,13 @@ export default function DashboardPage() {
/>
<StatCard
title={t('structureCapacity')}
value={`${structureCapacity}`}
value={`${selectedEstablishmentTotalCapacity}`}
icon={<School className="text-green-500" size={24} />}
color="emerald"
/>
<StatCard
title={t('capacityRate')}
value={`${((totalStudents / structureCapacity) * 100).toFixed(1)}%`}
value={`${((totalStudents / selectedEstablishmentTotalCapacity) * 100).toFixed(1)}%`}
icon={<School className="text-orange-500" size={24} />}
color="orange"
/>