import React, { useState, useEffect} from 'react'; import { __ } from '@wordpress/i18n'; import { uniq } from 'ramda'; // tools import getBandoLabel from '../../../../helpers/getBandoLabel'; import getBandoSeverity from '../../../../helpers/getBandoSeverity'; // components import { FilterMatchMode, FilterOperator } from 'primereact/api'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { InputText } from 'primereact/inputtext'; import { IconField } from 'primereact/iconfield'; import { InputIcon } from 'primereact/inputicon'; import { Dropdown } from 'primereact/dropdown'; import { InputNumber } from 'primereact/inputnumber'; import { Button } from 'primereact/button'; import { Calendar } from 'primereact/calendar'; import { Tag } from 'primereact/tag'; import ProperBandoLabel from '../../../../components/ProperBandoLabel'; import { Link } from 'react-router-dom'; const MyLatestSubmissionsTable = () => { const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); const [loading, setLoading] = useState(false); const [globalFilterValue, setGlobalFilterValue] = useState(''); const [statuses, setStatuses] = useState([]); useEffect(() => { // TODO const items = [ { name: 'Bando Innovazione 2024', end_date: '2024-08-08T00:00:00+00:00', modify_date: '2024-08-30T00:00:00+00:00', progress: 50, status: 'DRAFT', id: 11 }, { name: 'Bando Sostenibilità 2024', end_date: '2024-07-28T00:00:00+00:00', modify_date: '2024-08-15T00:00:00+00:00', progress: 25, status: 'DRAFT', id: 9 } ] setItems(getFormattedBandiData(items)); setStatuses(uniq(items.map(o => o.status))) setLoading(false); initFilters(); }, []); const getFormattedBandiData = (data) => { return [...(data || [])].map((d) => { d.modify_date = new Date(d.modify_date); d.end_date = new Date(d.end_date); return d; }); }; const formatDate = (value) => { return value.toLocaleDateString('it-IT', { day: '2-digit', month: '2-digit', year: 'numeric' }); }; const clearFilter = () => { initFilters(); }; const onGlobalFilterChange = (e) => { const value = e.target.value; let _filters = { ...filters }; _filters['global'].value = value; setFilters(_filters); setGlobalFilterValue(value); }; const initFilters = () => { setFilters({ global: { value: null, matchMode: FilterMatchMode.CONTAINS }, name: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }, modify_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 }] }, }); setGlobalFilterValue(''); }; const renderHeader = () => { return (
); }; const dateModifyBodyTemplate = (rowData) => { return formatDate(rowData.modify_date); }; const dateEndBodyTemplate = (rowData) => { return formatDate(rowData.end_date); }; const dateFilterTemplate = (options) => { return options.filterCallback(e.value, options.index)} dateFormat="mm/dd/yy" placeholder="mm/dd/yyyy" mask="99/99/9999" />; }; const balanceFilterTemplate = (options) => { return options.filterCallback(e.value, options.index)} />; }; const statusBodyTemplate = (rowData) => { return ; }; const statusFilterTemplate = (options) => { return options.filterCallback(e.value, options.index)} itemTemplate={statusItemTemplate} placeholder="Select One" className="p-column-filter" showClear />; }; const statusItemTemplate = (option) => { return ; }; const actionsBodyTemplate = (rowData) => { return