import React, { useState, useEffect } from 'react'; import { __ } from '@wordpress/i18n'; import { is, uniq } from 'ramda'; import { Link } from 'react-router-dom'; // store //import { storeSet, storeGet } from '../../../../store'; // api import ApplicationService from '../../../../service/application-service'; // 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 { Button } from 'primereact/button'; import { Calendar } from 'primereact/calendar'; import ProperBandoLabel from '../../../../components/ProperBandoLabel'; import translationStrings from '../../../../translationStringsForComponents'; const AllDomandeTable = ({ openDialogFn, updaterString = '' }) => { const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [globalFilterValue, setGlobalFilterValue] = useState(''); const [, setStatuses] = useState([]); useEffect(() => { setLocalAsyncRequest(true); ApplicationService.getApplications(getCallback, errGetCallbacks, [ ['statuses', ['SUBMIT', 'EVALUATION', 'SOCCORSO']] ]); }, [updaterString]); const getCallback = (data) => { if (data.status === 'SUCCESS') { setItems(getFormattedData(data.data)); setStatuses(uniq(data.data.map(o => o.status))) initFilters(); } setLocalAsyncRequest(false); } const errGetCallbacks = (data) => { setLocalAsyncRequest(false); } const getFormattedData = (data) => { return data.map((d) => { d.callEndDate = is(String, d.callEndDate) ? new Date(d.callEndDate) : (d.callEndDate ? d.callEndDate : ''); d.modifiedDate = is(String, d.modifiedDate) ? new Date(d.modifiedDate) : (d.modifiedDate ? d.modifiedDate : ''); d.submissionDate = is(String, d.submissionDate) ? new Date(d.submissionDate) : (d.submissionDate ? d.submissionDate : ''); 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 }, callTitle: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }, submissionDate: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, callEndDate: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] } }); setGlobalFilterValue(''); }; const renderHeader = () => { return (
); }; const dateAppliedBodyTemplate = (rowData) => { return formatDate(rowData.submissionDate); }; const dateEndBodyTemplate = (rowData) => { return formatDate(rowData.callEndDate); }; const dateFilterTemplate = (options) => { return options.filterCallback(e.value, options.index)} dateFormat="mm/dd/yy" placeholder="mm/dd/yyyy" mask="99/99/9999"/>; }; const statusBodyTemplate = (rowData) => { return ; }; const actionsBodyTemplate = (rowData) => { return
{openDialogFn ?
} const header = renderHeader(); return (
setFilters(e.filters)}>
) } export default AllDomandeTable;