fix: calcul nombre de pages dans chaque tab

This commit is contained in:
N3WT DE COMPET
2025-05-05 21:39:10 +02:00
parent 5927e48e65
commit 5440f5cbdb
3 changed files with 66 additions and 36 deletions

View File

@ -90,20 +90,26 @@ export default function CreateSubscriptionPage() {
const isSubmitDisabled = () => {
// Vérifie si les champs requis sont remplis
const requiredFields = ['schoolYear', 'studentLastName', 'studentFirstName'];
const hasErrors = requiredFields.some((field) => getLocalError(field) !== '');
const requiredFields = [
'schoolYear',
'studentLastName',
'studentFirstName',
];
const hasErrors = requiredFields.some(
(field) => getLocalError(field) !== ''
);
// Vérifie si un groupe de fichiers est sélectionné
const isFileGroupSelected = formData.selectedFileGroup !== null;
// Vérifie si au moins un frais de scolarité est sélectionné
const hasSelectedTuitionFees = formData.selectedTuitionFees.length > 0;
// Vérifie les conditions spécifiques pour le responsable
const isGuardianValid = isNewResponsable
? getLocalError('guardianEmail') === ''
: formData.selectedGuardians.length > 0;
// Retourne true si une des conditions n'est pas remplie
return (
hasErrors ||

View File

@ -71,14 +71,20 @@ export default function Page({ params: { locale } }) {
const currentSchoolYear = getCurrentSchoolYear(); // Exemple : "2024-2025"
const nextSchoolYear = getNextSchoolYear(); // Exemple : "2025-2026"
const historicalYears = getHistoricalYears();
const [totalCurrentSchoolYearPages, setTotalCurrentSchoolYearPages] =
useState(1);
const [totalNextSchoolYearPages, setTotalNextSchoolYearPages] = useState(1);
const [totalHistoricalPages, setTotalHistoricalPages] = useState(1);
const [currentSchoolYearPage, setCurrentSchoolYearPage] = useState(1);
const [currentSchoolNextYearPage, setCurrentSchoolNextYearPage] = useState(1);
const [currentSchoolHistoricalYearPage, setCurrentSchoolHistoricalYearPage] =
useState(1);
const [searchTerm, setSearchTerm] = useState('');
const [alertPage, setAlertPage] = useState(false);
const [isLoading, setIsLoading] = useState(false);
const [activeTab, setActiveTab] = useState('currentYear');
const [currentPage, setCurrentPage] = useState(1);
const [totalPages, setTotalPages] = useState(1);
const [totalCurrentYear, setTotalCurrentYear] = useState(0);
const [totalSubscribed, setTotalNextYear] = useState(0);
const [totalNextYear, setTotalNextYear] = useState(0);
const [totalHistorical, setTotalHistorical] = useState(0);
const [itemsPerPage, setItemsPerPage] = useState(10); // Définir le nombre d'éléments par page
@ -131,7 +137,7 @@ export default function Page({ params: { locale } }) {
* @param {Array} data.registerForms - The array of registration forms.
* @param {number} data.count - The total count of registration forms.
*/
const registerFormPendingDataHandler = (data) => {
const registerFormCurrrentYearDataHandler = (data) => {
if (data) {
const { registerForms, count, page_size } = data;
if (registerForms) {
@ -140,7 +146,7 @@ export default function Page({ params: { locale } }) {
const calculatedTotalPages =
count === 0 ? 1 : Math.ceil(count / page_size);
setTotalCurrentYear(count);
setTotalPages(calculatedTotalPages);
setTotalCurrentSchoolYearPages(calculatedTotalPages);
}
};
@ -151,13 +157,16 @@ export default function Page({ params: { locale } }) {
* @param {Array} data.registerForms - An array of registration forms.
* @param {number} data.count - The total count of subscribed forms.
*/
const registerFormSubscribedDataHandler = (data) => {
const registerFormNextYearDataHandler = (data) => {
if (data) {
const { registerForms, count, page_size } = data;
setTotalNextYear(count);
if (registerForms) {
setRegistrationFormsDataNextYear(registerForms);
}
const calculatedTotalPages =
count === 0 ? 1 : Math.ceil(count / page_size);
setTotalNextYear(count);
setTotalNextSchoolYearPages(calculatedTotalPages);
}
};
@ -168,14 +177,17 @@ export default function Page({ params: { locale } }) {
* @param {Array} data.registerForms - The array of archived register forms.
* @param {number} data.count - The total count of archived register forms.
*/
const registerFormArchivedDataHandler = (data) => {
const registerFormHistoricalDataHandler = (data) => {
if (data) {
const { registerForms, count, page_size } = data;
setTotalHistorical(count);
if (registerForms) {
setRegistrationFormsDataHistorical(registerForms);
}
const calculatedTotalPages =
count === 0 ? 1 : Math.ceil(count / page_size);
setTotalHistorical(count);
setTotalHistoricalPages(calculatedTotalPages);
}
};
@ -187,11 +199,11 @@ export default function Page({ params: { locale } }) {
fetchRegisterForms(
selectedEstablishmentId,
CURRENT_YEAR,
currentPage,
currentSchoolYearPage,
itemsPerPage,
searchTerm
)
.then(registerFormPendingDataHandler)
.then(registerFormCurrrentYearDataHandler)
.catch(requestErrorHandler),
fetchClasses(selectedEstablishmentId)
@ -201,10 +213,10 @@ export default function Page({ params: { locale } }) {
.catch(requestErrorHandler),
fetchRegisterForms(selectedEstablishmentId, NEXT_YEAR)
.then(registerFormSubscribedDataHandler)
.then(registerFormNextYearDataHandler)
.catch(requestErrorHandler),
fetchRegisterForms(selectedEstablishmentId, HISTORICAL)
.then(registerFormArchivedDataHandler)
.then(registerFormHistoricalDataHandler)
.catch(requestErrorHandler),
fetchProfiles()
.then((data) => {
@ -227,7 +239,7 @@ export default function Page({ params: { locale } }) {
fetchDataAndSetState();
}
}, [selectedEstablishmentId, reloadFetch, currentPage, searchTerm]);
}, [selectedEstablishmentId, reloadFetch, currentSchoolYearPage, searchTerm]);
useEffect(() => {
if (selectedEstablishmentId) {
@ -236,17 +248,17 @@ export default function Page({ params: { locale } }) {
fetchRegisterForms(
selectedEstablishmentId,
CURRENT_YEAR,
currentPage,
currentSchoolYearPage,
itemsPerPage,
searchTerm
)
.then(registerFormPendingDataHandler)
.then(registerFormCurrrentYearDataHandler)
.catch(requestErrorHandler);
fetchRegisterForms(selectedEstablishmentId, NEXT_YEAR)
.then(registerFormSubscribedDataHandler)
.then(registerFormNextYearDataHandler)
.catch(requestErrorHandler);
fetchRegisterForms(selectedEstablishmentId, HISTORICAL)
.then(registerFormArchivedDataHandler)
.then(registerFormHistoricalDataHandler)
.catch(requestErrorHandler);
setIsLoading(false);
@ -265,13 +277,15 @@ export default function Page({ params: { locale } }) {
*/
useEffect(() => {
if (activeTab === 'currentYear') {
setTotalPages(Math.ceil(totalCurrentYear / itemsPerPage));
setTotalCurrentSchoolYearPages(
Math.ceil(totalCurrentYear / itemsPerPage)
);
} else if (activeTab === 'nextYear') {
setTotalPages(Math.ceil(totalSubscribed / itemsPerPage));
setTotalNextSchoolYearPages(Math.ceil(totalNextYear / itemsPerPage));
} else if (activeTab === 'historical') {
setTotalPages(Math.ceil(totalHistorical / itemsPerPage));
setTotalHistoricalPages(Math.ceil(totalHistorical / itemsPerPage));
}
}, [currentPage]);
}, [currentSchoolYearPage]);
const handleSepaFileUpload = (file, row) => {
if (!file || !row) {
@ -377,7 +391,7 @@ export default function Page({ params: { locale } }) {
};
const handlePageChange = (newPage) => {
setCurrentPage(newPage);
setCurrentSchoolYearPage(newPage);
};
const updateRF = (updatedData) => {
@ -756,7 +770,7 @@ export default function Page({ params: { locale } }) {
<>
{nextSchoolYear}
<span className="ml-2 text-sm text-gray-400">
({totalSubscribed})
({totalNextYear})
</span>
</>
}
@ -813,7 +827,7 @@ export default function Page({ params: { locale } }) {
<div className="w-full">
<DjangoCSRFToken csrfToken={csrfToken} />
<Table
key={`${currentPage}-${searchTerm}`}
key={`${currentSchoolYearPage}-${searchTerm}`}
data={
activeTab === 'currentYear'
? registrationFormsDataCurrentYear
@ -823,8 +837,20 @@ export default function Page({ params: { locale } }) {
}
columns={columns}
itemsPerPage={itemsPerPage}
currentPage={currentPage}
totalPages={totalPages}
currentPage={
activeTab === 'currentYear'
? currentSchoolYearPage
: activeTab === 'nextYear'
? currentSchoolNextYearPage
: currentSchoolHistoricalYearPage
}
totalPages={
activeTab === 'currentYear'
? totalCurrentSchoolYearPages
: activeTab === 'nextYear'
? totalNextSchoolYearPages
: totalHistoricalPages
}
onPageChange={handlePageChange}
/>
</div>