import React, { useState, useEffect} from 'react'; import { __ } from '@wordpress/i18n'; import { uniq } from 'ramda'; // api import BandoService from '../../../../service/bando-service'; // components import { FilterMatchMode, FilterOperator } from 'primereact/api'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { Button } from 'primereact/button'; import { Calendar } from 'primereact/calendar'; import ProperBandoLabel from '../../../../components/ProperBandoLabel'; import { Link } from 'react-router-dom'; import translationStrings from '../../../../translationStringsForComponents'; import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString'; import getTimeFromISOstring from '../../../../helpers/getTimeFromISOstring'; const LatestBandiTable = () => { const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [, setStatuses] = useState([]); /*const [totalRecordsNum, setTotalRecordsNum] = useState(0); const [perPageNum, setPerPageNum] = useState(0); const getPaginationQuery = () => { return { "globalFilters": { "page": 1, "limit": 5, "sortBy": { "columnName": "ID", "sortDesc": true } } } } const onPageChange = (e) => { console.log('onPageChange', e) }*/ useEffect(() => { setLocalAsyncRequest(true); BandoService.getBandi(getCallback, errGetCallbacks); //const paginationQuery = getPaginationQuery(); //BandoService.getBandiPaginated(paginationQuery, getCallback, errGetCallbacks); }, []); const getCallback = (data) => { if (data.status === 'SUCCESS') { /*const { body, totalRecords, currentPage, totalPages, pageSize } = data.data; setTotalRecordsNum(totalRecords); setPerPageNum(pageSize); const newItems = body.filter(o => o.status === 'PUBLISH'); setItems(getFormattedBandiData(newItems)); setStatuses(uniq(body.map(o => o.status)));*/ const newItems = data.data.filter(o => o.status === 'PUBLISH'); setItems(getFormattedBandiData(newItems)); setStatuses(uniq(data.data.map(o => o.status))); initFilters(); } setLocalAsyncRequest(false); } const errGetCallbacks = (data) => { setLocalAsyncRequest(false); } const getFormattedBandiData = (data) => { return [...(data || [])].map((d) => { d.start_date = new Date(d.dates[0]); d.end_date = new Date(d.dates[1]); return d; }); }; const formatDate = (value) => { return value.toLocaleDateString('it-IT', { day: '2-digit', month: '2-digit', year: 'numeric' }); }; const clearFilter = () => { initFilters(); }; const initFilters = () => { setFilters({ global: { value: null, matchMode: FilterMatchMode.CONTAINS }, name: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }, start_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, end_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] } }); }; const renderHeader = () => { return (