import React, { useState, useEffect} from 'react'; import { __ } from '@wordpress/i18n'; import { is, uniq, isNil, head } from 'ramda'; import { Link, useNavigate } from 'react-router-dom'; // api import AssignedApplicationService from '../../../../service/assigned-application-service'; // 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 { Button } from 'primereact/button'; import { Calendar } from 'primereact/calendar'; import ProperBandoLabel from '../../../../components/ProperBandoLabel'; import { Dropdown } from 'primereact/dropdown'; import { Tag } from 'primereact/tag'; import translationStrings from '../../../../translationStringsForComponents'; import { useStoreValue } from '../../../../store'; import { klona } from 'klona'; const APP_HUB_ID = process.env.REACT_APP_HUB_ID; const PreInstructorDomandeTable = ({ userId = null, statuses = [] }) => { const navigate = useNavigate(); const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [statusesForFilter, setStatusesForFilter] = useState([]); const userData = useStoreValue('userData'); useEffect(() => { if (!isNil(userId)) { setLocalAsyncRequest(true); if (userId === 0) { AssignedApplicationService.getAssignedApplications(getCallback, errGetCallbacks, [ ['statuses', statuses] ]); } else { AssignedApplicationService.getAssignedApplications(getCallback, errGetCallbacks, [ ['userId', userId], ['statuses', statuses] ]); } } }, [userId]); const getCallback = (data) => { if (data.status === 'SUCCESS') { setItems(getFormattedData(data.data)); setStatusesForFilter(uniq(data.data.map(o => o.status))) initFilters(); } setLocalAsyncRequest(false); } const errGetCallbacks = (data) => { setLocalAsyncRequest(false); } const getFormattedData = (data) => { return data.map((d) => { d.evaluationEndDate = is(String, d.evaluationEndDate) ? new Date(d.evaluationEndDate) : (d.evaluationEndDate ? d.evaluationEndDate : ''); 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 initFilters = () => { setFilters({ global: { value: null, matchMode: FilterMatchMode.CONTAINS }, callName: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }, companyName: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }, submissionDate: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, evaluationEndDate: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, applicationStatus: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] } }); }; const renderHeader = () => { return (