mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
fix: calcul nombre de pages dans chaque tab
This commit is contained in:
@ -74,7 +74,6 @@ class RegisterFormView(APIView):
|
|||||||
"""
|
"""
|
||||||
# Récupération des paramètres
|
# Récupération des paramètres
|
||||||
filter = request.GET.get('filter', '').strip()
|
filter = request.GET.get('filter', '').strip()
|
||||||
search = request.GET.get('search', '').strip()
|
|
||||||
page_size = request.GET.get('page_size', None)
|
page_size = request.GET.get('page_size', None)
|
||||||
establishment_id = request.GET.get('establishment_id', None)
|
establishment_id = request.GET.get('establishment_id', None)
|
||||||
|
|
||||||
@ -98,7 +97,6 @@ class RegisterFormView(APIView):
|
|||||||
registerForms_List = RegistrationForm.objects.filter(school_year=next_year)
|
registerForms_List = RegistrationForm.objects.filter(school_year=next_year)
|
||||||
elif filter == 'historical':
|
elif filter == 'historical':
|
||||||
registerForms_List = RegistrationForm.objects.filter(school_year__in=historical_years)
|
registerForms_List = RegistrationForm.objects.filter(school_year__in=historical_years)
|
||||||
registerForms_List = bdd.getObjects(RegistrationForm, 'status', RegistrationForm.RegistrationFormStatus.RF_VALIDATED)
|
|
||||||
else:
|
else:
|
||||||
registerForms_List = None
|
registerForms_List = None
|
||||||
|
|
||||||
|
|||||||
@ -90,8 +90,14 @@ export default function CreateSubscriptionPage() {
|
|||||||
|
|
||||||
const isSubmitDisabled = () => {
|
const isSubmitDisabled = () => {
|
||||||
// Vérifie si les champs requis sont remplis
|
// Vérifie si les champs requis sont remplis
|
||||||
const requiredFields = ['schoolYear', 'studentLastName', 'studentFirstName'];
|
const requiredFields = [
|
||||||
const hasErrors = requiredFields.some((field) => getLocalError(field) !== '');
|
'schoolYear',
|
||||||
|
'studentLastName',
|
||||||
|
'studentFirstName',
|
||||||
|
];
|
||||||
|
const hasErrors = requiredFields.some(
|
||||||
|
(field) => getLocalError(field) !== ''
|
||||||
|
);
|
||||||
|
|
||||||
// Vérifie si un groupe de fichiers est sélectionné
|
// Vérifie si un groupe de fichiers est sélectionné
|
||||||
const isFileGroupSelected = formData.selectedFileGroup !== null;
|
const isFileGroupSelected = formData.selectedFileGroup !== null;
|
||||||
|
|||||||
@ -71,14 +71,20 @@ export default function Page({ params: { locale } }) {
|
|||||||
const currentSchoolYear = getCurrentSchoolYear(); // Exemple : "2024-2025"
|
const currentSchoolYear = getCurrentSchoolYear(); // Exemple : "2024-2025"
|
||||||
const nextSchoolYear = getNextSchoolYear(); // Exemple : "2025-2026"
|
const nextSchoolYear = getNextSchoolYear(); // Exemple : "2025-2026"
|
||||||
const historicalYears = getHistoricalYears();
|
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 [searchTerm, setSearchTerm] = useState('');
|
||||||
const [alertPage, setAlertPage] = useState(false);
|
const [alertPage, setAlertPage] = useState(false);
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const [activeTab, setActiveTab] = useState('currentYear');
|
const [activeTab, setActiveTab] = useState('currentYear');
|
||||||
const [currentPage, setCurrentPage] = useState(1);
|
|
||||||
const [totalPages, setTotalPages] = useState(1);
|
|
||||||
const [totalCurrentYear, setTotalCurrentYear] = useState(0);
|
const [totalCurrentYear, setTotalCurrentYear] = useState(0);
|
||||||
const [totalSubscribed, setTotalNextYear] = useState(0);
|
const [totalNextYear, setTotalNextYear] = useState(0);
|
||||||
const [totalHistorical, setTotalHistorical] = useState(0);
|
const [totalHistorical, setTotalHistorical] = useState(0);
|
||||||
const [itemsPerPage, setItemsPerPage] = useState(10); // Définir le nombre d'éléments par page
|
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 {Array} data.registerForms - The array of registration forms.
|
||||||
* @param {number} data.count - The total count of registration forms.
|
* @param {number} data.count - The total count of registration forms.
|
||||||
*/
|
*/
|
||||||
const registerFormPendingDataHandler = (data) => {
|
const registerFormCurrrentYearDataHandler = (data) => {
|
||||||
if (data) {
|
if (data) {
|
||||||
const { registerForms, count, page_size } = data;
|
const { registerForms, count, page_size } = data;
|
||||||
if (registerForms) {
|
if (registerForms) {
|
||||||
@ -140,7 +146,7 @@ export default function Page({ params: { locale } }) {
|
|||||||
const calculatedTotalPages =
|
const calculatedTotalPages =
|
||||||
count === 0 ? 1 : Math.ceil(count / page_size);
|
count === 0 ? 1 : Math.ceil(count / page_size);
|
||||||
setTotalCurrentYear(count);
|
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 {Array} data.registerForms - An array of registration forms.
|
||||||
* @param {number} data.count - The total count of subscribed forms.
|
* @param {number} data.count - The total count of subscribed forms.
|
||||||
*/
|
*/
|
||||||
const registerFormSubscribedDataHandler = (data) => {
|
const registerFormNextYearDataHandler = (data) => {
|
||||||
if (data) {
|
if (data) {
|
||||||
const { registerForms, count, page_size } = data;
|
const { registerForms, count, page_size } = data;
|
||||||
setTotalNextYear(count);
|
|
||||||
if (registerForms) {
|
if (registerForms) {
|
||||||
setRegistrationFormsDataNextYear(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 {Array} data.registerForms - The array of archived register forms.
|
||||||
* @param {number} data.count - The total count of archived register forms.
|
* @param {number} data.count - The total count of archived register forms.
|
||||||
*/
|
*/
|
||||||
const registerFormArchivedDataHandler = (data) => {
|
const registerFormHistoricalDataHandler = (data) => {
|
||||||
if (data) {
|
if (data) {
|
||||||
const { registerForms, count, page_size } = data;
|
const { registerForms, count, page_size } = data;
|
||||||
|
|
||||||
setTotalHistorical(count);
|
|
||||||
if (registerForms) {
|
if (registerForms) {
|
||||||
setRegistrationFormsDataHistorical(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(
|
fetchRegisterForms(
|
||||||
selectedEstablishmentId,
|
selectedEstablishmentId,
|
||||||
CURRENT_YEAR,
|
CURRENT_YEAR,
|
||||||
currentPage,
|
currentSchoolYearPage,
|
||||||
itemsPerPage,
|
itemsPerPage,
|
||||||
searchTerm
|
searchTerm
|
||||||
)
|
)
|
||||||
.then(registerFormPendingDataHandler)
|
.then(registerFormCurrrentYearDataHandler)
|
||||||
.catch(requestErrorHandler),
|
.catch(requestErrorHandler),
|
||||||
|
|
||||||
fetchClasses(selectedEstablishmentId)
|
fetchClasses(selectedEstablishmentId)
|
||||||
@ -201,10 +213,10 @@ export default function Page({ params: { locale } }) {
|
|||||||
.catch(requestErrorHandler),
|
.catch(requestErrorHandler),
|
||||||
|
|
||||||
fetchRegisterForms(selectedEstablishmentId, NEXT_YEAR)
|
fetchRegisterForms(selectedEstablishmentId, NEXT_YEAR)
|
||||||
.then(registerFormSubscribedDataHandler)
|
.then(registerFormNextYearDataHandler)
|
||||||
.catch(requestErrorHandler),
|
.catch(requestErrorHandler),
|
||||||
fetchRegisterForms(selectedEstablishmentId, HISTORICAL)
|
fetchRegisterForms(selectedEstablishmentId, HISTORICAL)
|
||||||
.then(registerFormArchivedDataHandler)
|
.then(registerFormHistoricalDataHandler)
|
||||||
.catch(requestErrorHandler),
|
.catch(requestErrorHandler),
|
||||||
fetchProfiles()
|
fetchProfiles()
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
@ -227,7 +239,7 @@ export default function Page({ params: { locale } }) {
|
|||||||
|
|
||||||
fetchDataAndSetState();
|
fetchDataAndSetState();
|
||||||
}
|
}
|
||||||
}, [selectedEstablishmentId, reloadFetch, currentPage, searchTerm]);
|
}, [selectedEstablishmentId, reloadFetch, currentSchoolYearPage, searchTerm]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (selectedEstablishmentId) {
|
if (selectedEstablishmentId) {
|
||||||
@ -236,17 +248,17 @@ export default function Page({ params: { locale } }) {
|
|||||||
fetchRegisterForms(
|
fetchRegisterForms(
|
||||||
selectedEstablishmentId,
|
selectedEstablishmentId,
|
||||||
CURRENT_YEAR,
|
CURRENT_YEAR,
|
||||||
currentPage,
|
currentSchoolYearPage,
|
||||||
itemsPerPage,
|
itemsPerPage,
|
||||||
searchTerm
|
searchTerm
|
||||||
)
|
)
|
||||||
.then(registerFormPendingDataHandler)
|
.then(registerFormCurrrentYearDataHandler)
|
||||||
.catch(requestErrorHandler);
|
.catch(requestErrorHandler);
|
||||||
fetchRegisterForms(selectedEstablishmentId, NEXT_YEAR)
|
fetchRegisterForms(selectedEstablishmentId, NEXT_YEAR)
|
||||||
.then(registerFormSubscribedDataHandler)
|
.then(registerFormNextYearDataHandler)
|
||||||
.catch(requestErrorHandler);
|
.catch(requestErrorHandler);
|
||||||
fetchRegisterForms(selectedEstablishmentId, HISTORICAL)
|
fetchRegisterForms(selectedEstablishmentId, HISTORICAL)
|
||||||
.then(registerFormArchivedDataHandler)
|
.then(registerFormHistoricalDataHandler)
|
||||||
.catch(requestErrorHandler);
|
.catch(requestErrorHandler);
|
||||||
|
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
@ -265,13 +277,15 @@ export default function Page({ params: { locale } }) {
|
|||||||
*/
|
*/
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (activeTab === 'currentYear') {
|
if (activeTab === 'currentYear') {
|
||||||
setTotalPages(Math.ceil(totalCurrentYear / itemsPerPage));
|
setTotalCurrentSchoolYearPages(
|
||||||
|
Math.ceil(totalCurrentYear / itemsPerPage)
|
||||||
|
);
|
||||||
} else if (activeTab === 'nextYear') {
|
} else if (activeTab === 'nextYear') {
|
||||||
setTotalPages(Math.ceil(totalSubscribed / itemsPerPage));
|
setTotalNextSchoolYearPages(Math.ceil(totalNextYear / itemsPerPage));
|
||||||
} else if (activeTab === 'historical') {
|
} else if (activeTab === 'historical') {
|
||||||
setTotalPages(Math.ceil(totalHistorical / itemsPerPage));
|
setTotalHistoricalPages(Math.ceil(totalHistorical / itemsPerPage));
|
||||||
}
|
}
|
||||||
}, [currentPage]);
|
}, [currentSchoolYearPage]);
|
||||||
|
|
||||||
const handleSepaFileUpload = (file, row) => {
|
const handleSepaFileUpload = (file, row) => {
|
||||||
if (!file || !row) {
|
if (!file || !row) {
|
||||||
@ -377,7 +391,7 @@ export default function Page({ params: { locale } }) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handlePageChange = (newPage) => {
|
const handlePageChange = (newPage) => {
|
||||||
setCurrentPage(newPage);
|
setCurrentSchoolYearPage(newPage);
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateRF = (updatedData) => {
|
const updateRF = (updatedData) => {
|
||||||
@ -756,7 +770,7 @@ export default function Page({ params: { locale } }) {
|
|||||||
<>
|
<>
|
||||||
{nextSchoolYear}
|
{nextSchoolYear}
|
||||||
<span className="ml-2 text-sm text-gray-400">
|
<span className="ml-2 text-sm text-gray-400">
|
||||||
({totalSubscribed})
|
({totalNextYear})
|
||||||
</span>
|
</span>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
@ -813,7 +827,7 @@ export default function Page({ params: { locale } }) {
|
|||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
<DjangoCSRFToken csrfToken={csrfToken} />
|
<DjangoCSRFToken csrfToken={csrfToken} />
|
||||||
<Table
|
<Table
|
||||||
key={`${currentPage}-${searchTerm}`}
|
key={`${currentSchoolYearPage}-${searchTerm}`}
|
||||||
data={
|
data={
|
||||||
activeTab === 'currentYear'
|
activeTab === 'currentYear'
|
||||||
? registrationFormsDataCurrentYear
|
? registrationFormsDataCurrentYear
|
||||||
@ -823,8 +837,20 @@ export default function Page({ params: { locale } }) {
|
|||||||
}
|
}
|
||||||
columns={columns}
|
columns={columns}
|
||||||
itemsPerPage={itemsPerPage}
|
itemsPerPage={itemsPerPage}
|
||||||
currentPage={currentPage}
|
currentPage={
|
||||||
totalPages={totalPages}
|
activeTab === 'currentYear'
|
||||||
|
? currentSchoolYearPage
|
||||||
|
: activeTab === 'nextYear'
|
||||||
|
? currentSchoolNextYearPage
|
||||||
|
: currentSchoolHistoricalYearPage
|
||||||
|
}
|
||||||
|
totalPages={
|
||||||
|
activeTab === 'currentYear'
|
||||||
|
? totalCurrentSchoolYearPages
|
||||||
|
: activeTab === 'nextYear'
|
||||||
|
? totalNextSchoolYearPages
|
||||||
|
: totalHistoricalPages
|
||||||
|
}
|
||||||
onPageChange={handlePageChange}
|
onPageChange={handlePageChange}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user