import React, { useState, useEffect} from 'react'; import { __ } from '@wordpress/i18n'; import { is, uniq } from 'ramda'; // tools import getBandoSeverity from '../../../../helpers/getBandoSeverity'; import getBandoLabel from '../../../../helpers/getBandoLabel'; import getDateFromISOstring from '../../../../helpers/getDateFromISOstring'; // 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 { Dropdown } from 'primereact/dropdown'; 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'; import translationStrings from '../../../../translationStringsForComponents'; const AllBandiTable = () => { const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [statuses, setStatuses] = useState([]); useEffect(() => { setLocalAsyncRequest(true); BandoService.getBandi(getCallback, errGetCallbacks); }, []); const getCallback = (data) => { if (data.status === 'SUCCESS') { setItems(getFormattedBandiData(data.data)); setStatuses(uniq(data.data.map(o => o.status))) initFilters(); } setLocalAsyncRequest(false); } const errGetCallbacks = (data) => { setLocalAsyncRequest(false); } const getFormattedBandiData = (data) => { return data.map((d) => { d.dateStart = is(String, d.dates[0]) ? new Date(d.dates[0]) : (d.dates[0] ? d.dates[0] : ''); d.dateEnd = is(String, d.dates[1]) ? new Date(d.dates[1]) : (d.dates[1] ? d.dates[1] : ''); return d; }); }; const clearFilter = () => { initFilters(); }; const initFilters = () => { setFilters({ global: { value: null, matchMode: FilterMatchMode.CONTAINS }, name: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }, dateStart: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, dateEnd: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }, }); }; const renderHeader = () => { return (
); }; /*const nameBodyTemplate = (rowData) => { return {rowData.name} }*/ const dateStartBodyTemplate = (rowData) => { return getDateFromISOstring(rowData.dateStart); }; const dateEndBodyTemplate = (rowData) => { return getDateFromISOstring(rowData.dateEnd); }; const dateFilterTemplate = (options) => { return options.filterCallback(e.value, options.index)} dateFormat="dd/mm/yy" placeholder="dd/mm/yyyy" mask="99/99/9999" />; }; const statusBodyTemplate = (rowData) => { return ; }; const statusFilterTemplate = (options) => { return options.filterCallback(e.value, options.index)} itemTemplate={statusItemTemplate} placeholder={translationStrings.selectOneLabel} className="p-column-filter" showClear />; }; const statusItemTemplate = (option) => { return ; }; const actionsBodyTemplate = (rowData) => { return