import React, { useState, useEffect, useCallback, useRef } from 'react'; import { __ } from '@wordpress/i18n'; import { isEmpty, isNil, pluck } from 'ramda'; // api import PecEmailService from '../../../../service/pec-email-service'; // tools import renderHtmlContent from '../../../../helpers/renderHtmlContent'; // components import { FilterMatchMode, FilterOperator } from 'primereact/api'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { Button } from 'primereact/button'; import { Toast } from 'primereact/toast'; import { Dialog } from 'primereact/dialog'; import translationStrings from '../../../../translationStringsForComponents'; import { autorizationNames } from '../../../../configData'; const LatestPecEmailsTable = () => { const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); const [selectedProducts, setSelectedProducts] = useState(null); const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [isVisibleDetails, setIsVisibleDetails] = useState(false); const [previewItem, setPreviewItem] = useState({}); const toast = useRef(null); useEffect(() => { setLocalAsyncRequest(true); PecEmailService.getPecEmails(getCallback, errGetCallbacks); }, []); const getCallback = (data) => { if (data.status === 'SUCCESS') { setItems(data.data); } setLocalAsyncRequest(false); } const errGetCallbacks = () => { setLocalAsyncRequest(false); } 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 doAccept = (ids) => { if (isEmpty(ids)) { return; } setLocalAsyncRequest(true); PecEmailService.doUserAction(getUserActionCallback, errGetUserActionCallbacks, [ ['userActionIds', ids] ]); } const getUserActionCallback = (resp) => { if (resp.status === 'SUCCESS') { if (toast.current && resp.message) { toast.current.show({ severity: 'success', summary: '', detail: resp.message }); } PecEmailService.getPecEmails(getCallback, errGetCallbacks); } else { setLocalAsyncRequest(false); } } const errGetUserActionCallbacks = (resp) => { setLocalAsyncRequest(false); if (toast.current && resp.message) { toast.current.show({ severity: resp.status === 'SUCCESS' ? 'info' : 'error', summary: '', detail: resp.message }); } } const doShowDetails = (row) => { setPreviewItem(row); setIsVisibleDetails(true); } const headerDialog = () => { return {__('I dettagli dell\'email', 'gepafin')}; } const hideDialog = () => { setIsVisibleDetails(false); setPreviewItem({}); } const footerDialog = useCallback(() => { return
}, [previewItem]); const renderHeader = useCallback(() => { return (
); }, [selectedProducts]); const typeBodyTemplate = (rowData) => { return !isNil(autorizationNames[rowData.type]) ? autorizationNames[rowData.type] : rowData.type; } const actionsBodyTemplate = (rowData) => { return
} const header = renderHeader(); return
setSelectedProducts(e.value)} onFilter={(e) => setFilters(e.filters)}>

{__('Tipo:', 'gepafin')}

{previewItem.type}

{__('Oggetto:', 'gepafin')}

{renderHtmlContent(previewItem.subject)}

{__('Il corpo:', 'gepafin')}

{renderHtmlContent(previewItem.htmlContent)}
} export default LatestPecEmailsTable;