From 713af3ac32d536ea028b066aaf58462811e7bcaa Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Mon, 31 Mar 2025 16:14:27 +0200 Subject: [PATCH] - re added tables with pagination; --- .../getQueryParamsForPaginatedEndpoint.js | 8 +- .../components/AllBandiTableAsync/index.js | 181 +++++++++++++ src/pages/Bandi/index.js | 4 +- .../AllBandiPreInstructorTableAsync/index.js | 181 +++++++++++++ src/pages/BandiPreInstructor/index.js | 4 +- .../DraftApplicationsTableAsync/index.js | 43 +-- .../components/LatestBandiTableAsync/index.js | 31 +-- src/pages/Dashboard/index.js | 16 +- .../index.js | 246 +++++++++++++++++ .../MyLatestSubmissionsTableAsync/index.js | 250 ++++++++++++++++++ src/pages/DashboardBeneficiario/index.js | 10 +- .../index.js | 31 +-- .../index.js | 36 +-- src/pages/DashboardInstructorManager/index.js | 16 +- .../DomandeTablePreInstructorAsync/index.js | 36 +-- src/pages/DashboardPreInstructor/index.js | 6 +- .../components/AllDomandeTableAsync/index.js | 41 +-- src/pages/Domande/index.js | 14 +- src/pages/DomandeArchive/index.js | 5 +- .../DomandeArchivePreInstructor/index.js | 4 +- .../AllDomandeBeneficiarioTableAsync/index.js | 200 ++++++++++++++ src/pages/DomandeBeneficiario/index.js | 5 +- src/pages/DomandeInstructorManager/index.js | 60 +---- .../DomandeMieInstructorManager/index.js | 10 +- src/pages/DomandePreInstructor/index.js | 4 +- .../{Applications => Imieibandi}/index.js | 8 +- .../index.js | 10 +- .../index.js | 32 +-- .../index.js | 12 +- .../SoccorsiPreInstructorTableAsync/index.js | 4 +- .../SoccorsoIstruttorioPreInstructor/index.js | 7 +- .../BeneficiarioUltimeDomandeTable/index.js | 119 ++++----- src/routes.js | 6 +- src/translationStringsForComponents.js | 5 + 34 files changed, 1225 insertions(+), 420 deletions(-) create mode 100644 src/pages/Bandi/components/AllBandiTableAsync/index.js create mode 100644 src/pages/BandiPreInstructor/components/AllBandiPreInstructorTableAsync/index.js create mode 100644 src/pages/DashboardBeneficiario/components/LatestBandiBeneficiarioTableAsync/index.js create mode 100644 src/pages/DashboardBeneficiario/components/MyLatestSubmissionsTableAsync/index.js create mode 100644 src/pages/DomandeBeneficiario/components/AllDomandeBeneficiarioTableAsync/index.js rename src/pages/{Applications => Imieibandi}/index.js (88%) diff --git a/src/helpers/getQueryParamsForPaginatedEndpoint.js b/src/helpers/getQueryParamsForPaginatedEndpoint.js index 155210b..54f7eac 100644 --- a/src/helpers/getQueryParamsForPaginatedEndpoint.js +++ b/src/helpers/getQueryParamsForPaginatedEndpoint.js @@ -1,9 +1,9 @@ import { isEmpty, pathOr } from 'ramda'; import formatDateString from './formatDateString'; -const getQueryParamsForPaginatedEndpoint = (lazyState, statuses) => { +const getQueryParamsForPaginatedEndpoint = (lazyState, statuses, sortByCol = 'applicationId') => { let sortBy = { - columnName: 'applicationId', + columnName: sortByCol, sortDesc: true }; @@ -13,6 +13,7 @@ const getQueryParamsForPaginatedEndpoint = (lazyState, statuses) => { sortDesc: lazyState.sortOrder === -1 } } + return { globalFilters: { page: lazyState.page ? lazyState.page + 1 : 1, @@ -22,9 +23,10 @@ const getQueryParamsForPaginatedEndpoint = (lazyState, statuses) => { status: statuses, filters: Object.keys(lazyState.filters).reduce((acc, cur) => { const value = pathOr('', ['filters', cur, 'value'], lazyState); + const matchMode = pathOr('', ['filters', cur, 'matchMode'], lazyState); if (!isEmpty(value)) { acc[cur] = typeof value.getMonth === 'function' - ? formatDateString(value) + ? {value: formatDateString(value), matchMode} : lazyState.filters[cur]; } return acc; diff --git a/src/pages/Bandi/components/AllBandiTableAsync/index.js b/src/pages/Bandi/components/AllBandiTableAsync/index.js new file mode 100644 index 0000000..1b90675 --- /dev/null +++ b/src/pages/Bandi/components/AllBandiTableAsync/index.js @@ -0,0 +1,181 @@ +import React, { useEffect, useState, useCallback } from 'react'; +import { __ } from '@wordpress/i18n'; +import { Link } from 'react-router-dom'; + +import translationStrings from '../../../../translationStringsForComponents'; + +// api +import BandoService from '../../../../service/bando-service'; + +// tools +import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString'; +import getTimeFromISOstring from '../../../../helpers/getTimeFromISOstring'; +import getFormattedDateString from '../../../../helpers/getFormattedDateString'; +import getBandoLabel from '../../../../helpers/getBandoLabel'; +import getBandoSeverity from '../../../../helpers/getBandoSeverity'; +import getQueryParamsForPaginatedEndpoint from '../../../../helpers/getQueryParamsForPaginatedEndpoint'; + +// components +import { DataTable } from 'primereact/datatable'; +import { Column } from 'primereact/column'; +import { Button } from 'primereact/button'; +import ProperBandoLabel from '../../../../components/ProperBandoLabel'; +import { Dropdown } from 'primereact/dropdown'; +import { Tag } from 'primereact/tag'; +import { Calendar } from 'primereact/calendar'; + +const AllBandiTableAsync = () => { + const [localAsyncRequest, setLocalAsyncRequest] = useState(false); + const [items, setItems] = useState(null); + const [totalRecordsNum, setTotalRecordsNum] = useState(0); + const [lazyState, setLazyState] = useState({ + first: 0, + rows: 5, + page: 0, + sortField: null, + sortOrder: null, + filters: { + name: { value: null, matchMode: 'contains' }, + startDate: { value: null, matchMode: 'date_is' }, + endDate: { value: null, matchMode: 'date_is' }, + status: { value: null, matchMode: 'equals' } + } + }); + const statuses = []; + + const getPaginationQuery = useCallback(() => getQueryParamsForPaginatedEndpoint(lazyState, statuses, 'id'), [lazyState]); + + const onPage = (event) => { + setLazyState(event); + }; + + const onSort = (event) => { + event['first'] = 0; + event['page'] = 0; + setLazyState(event); + }; + + const onFilter = useCallback((event) => { + event['first'] = 0; + event['page'] = 0; + setLazyState(event); + }, [lazyState]); + + const getCallback = (resp) => { + if (resp.status === 'SUCCESS') { + const { body, totalRecords, + //currentPage, totalPages, pageSize + } = resp.data; + setTotalRecordsNum(totalRecords); + setItems(getFormattedData(body)); + } + setLocalAsyncRequest(false); + } + + const errGetCallbacks = () => { + setLocalAsyncRequest(false); + } + + const getFormattedData = (data) => { + return [...(data || [])].map((d) => { + d.startDate = new Date(d.dates[0]); + d.endDate = new Date(d.dates[1]); + + return d; + }); + }; + + const actionsBodyTemplate = (rowData) => { + return + + +