import React, { useEffect, useState, useRef } from 'react'; import { __ } from '@wordpress/i18n'; import { useNavigate } from 'react-router-dom'; import { Button } from 'primereact/button'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { Tag } from 'primereact/tag'; import { Toast } from 'primereact/toast'; import { Skeleton } from 'primereact/skeleton'; import RendicontazioneService from '../service/rendicontazioneService'; const STATUS_TAGS = { NOT_STARTED: { severity: 'info', label: 'Da avviare' }, DRAFT: { severity: 'warning', label: 'In compilazione' }, SUBMITTED: { severity: 'info', label: 'Inviata' }, UNDER_REVIEW: { severity: 'info', label: 'In valutazione' }, APPROVED: { severity: 'success', label: 'Approvata' }, REJECTED: { severity: 'danger', label: 'Respinta' }, AWAITING_AMENDMENT: { severity: 'warning', label: 'Soccorso istruttorio' } }; const RendicontazioniMie = () => { const navigate = useNavigate(); const toast = useRef(null); const [rows, setRows] = useState([]); const [loading, setLoading] = useState(true); const load = () => { setLoading(true); RendicontazioneService.listMine( (resp) => { const practices = (resp?.data?.practices || []).map(p => ({ ...p, isReady: false })); const ready = (resp?.data?.ready_to_start || []).map(r => ({ ...r, isReady: true })); setRows([...practices, ...ready]); setLoading(false); }, (err) => { toast.current?.show({ severity: 'error', summary: __('Errore', 'gepafin'), detail: err?.detail }); setLoading(false); } ); }; useEffect(() => { load(); /* eslint-disable-next-line */ }, []); const handleStart = (applicationId) => { RendicontazioneService.startPractice(applicationId, (resp) => { toast.current?.show({ severity: 'success', summary: __('Rendicontazione avviata', 'gepafin') }); navigate(`/rendicontazioni/${resp.data.id}`); }, (err) => toast.current?.show({ severity: 'error', summary: __('Avvio fallito', 'gepafin'), detail: err?.detail }) ); }; const callTpl = (row) => (