diff --git a/src/pages/Dashboard/components/DraftApplicationsTableAsync/index.js b/src/pages/Dashboard/components/DraftApplicationsTableAsync/index.js index 98c2d59..e41262f 100644 --- a/src/pages/Dashboard/components/DraftApplicationsTableAsync/index.js +++ b/src/pages/Dashboard/components/DraftApplicationsTableAsync/index.js @@ -25,7 +25,7 @@ import { Tag } from 'primereact/tag'; import translationStrings from '../../../../translationStringsForComponents'; -const DraftApplicationsTableAsync = () => { +const DraftApplicationsTableAsync = ({ disableActions = false }) => { const chosenCompanyId = useStoreValue('chosenCompanyId'); const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [items, setItems] = useState(null); @@ -188,9 +188,10 @@ const DraftApplicationsTableAsync = () => { style={{ minWidth: '7rem' }} body={statusBodyTemplate}/> - + body={actionsBodyTemplate}/> : null} ) diff --git a/src/pages/Dashboard/components/LatestBandiTableAsync/index.js b/src/pages/Dashboard/components/LatestBandiTableAsync/index.js index 549f2b6..6065c77 100644 --- a/src/pages/Dashboard/components/LatestBandiTableAsync/index.js +++ b/src/pages/Dashboard/components/LatestBandiTableAsync/index.js @@ -26,7 +26,7 @@ import { Dropdown } from 'primereact/dropdown'; import { Tag } from 'primereact/tag'; import { Calendar } from 'primereact/calendar'; -const LatestBandiTableAsync = () => { +const LatestBandiTableAsync = ({ disableActions = false }) => { const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [items, setItems] = useState(null); const [totalRecordsNum, setTotalRecordsNum] = useState(0); @@ -265,8 +265,9 @@ const LatestBandiTableAsync = () => { header={__('Stato', 'gepafin')} style={{ minWidth: '7rem' }} body={statusBodyTemplate} /> - + {!disableActions + ? : null} ) diff --git a/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js b/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js new file mode 100644 index 0000000..c9e78d2 --- /dev/null +++ b/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js @@ -0,0 +1,143 @@ +import React, { useState, useEffect} from 'react'; +import { __ } from '@wordpress/i18n'; +import { uniq } from 'ramda'; + +// api +import BandoService from '../../../../service/bando-service'; + +// tools +import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString'; +import getTimeFromISOstring from '../../../../helpers/getTimeFromISOstring'; + +// 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 PecEmailService from '../../../../service/pec-email-service'; + +const LatestPecEmailsTable = () => { + const [items, setItems] = useState(null); + const [filters, setFilters] = useState(null); + const [localAsyncRequest, setLocalAsyncRequest] = useState(false); + const [, setStatuses] = useState([]); + + useEffect(() => { + setLocalAsyncRequest(true); + PecEmailService.getPecEmails(getCallback, errGetCallbacks); + }, []); + + const getCallback = (data) => { + if (data.status === 'SUCCESS') { + setItems(data.data); + /*setStatuses(uniq(data.data.map(o => o.status))); + initFilters();*/ + } + setLocalAsyncRequest(false); + } + + const errGetCallbacks = () => { + 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 ( +
+
+ ); + }; + + const dateStartBodyTemplate = (rowData) => { + const startTimeObj = getTimeParsedFromString(rowData.startTime); + return formatDate(rowData.start_date) + ' ' + getTimeFromISOstring(startTimeObj); + }; + + const dateEndBodyTemplate = (rowData) => { + const endTimeObg = getTimeParsedFromString(rowData.endTime); + return formatDate(rowData.end_date) + ' ' + getTimeFromISOstring(endTimeObg); + }; + + 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 actionsBodyTemplate = (rowData) => { + return +