add download csv ranking

This commit is contained in:
Noemi
2025-06-30 15:26:17 +02:00
parent 97e20d5656
commit 191209294d
2 changed files with 38 additions and 4 deletions

View File

@@ -6,6 +6,7 @@ import translationStrings from '../../../../translationStringsForComponents';
// api
import BandoService from '../../../../service/bando-service';
import ApplicationService from '../../../../service/application-service';
// tools
import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString';
@@ -23,6 +24,8 @@ import ProperBandoLabel from '../../../../components/ProperBandoLabel';
import { Dropdown } from 'primereact/dropdown';
import { Tag } from 'primereact/tag';
import { Calendar } from 'primereact/calendar';
import { storeSet } from '../../../../store';
const AllBandiPreInstructorTableAsync = () => {
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
@@ -86,10 +89,37 @@ const AllBandiPreInstructorTableAsync = () => {
};
const actionsBodyTemplate = (rowData) => {
return <Link to={`/bandi/${rowData.id}`}>
<Button severity="info" label={__('Mostra', 'gepafin')} icon="pi pi-eye" size="small" iconPos="right" />
<Button severity="info" label={__('Scarica graduatoria', 'gepafin')} icon="pi pi-download" size="small" iconPos="right" style={{marginTop:'10px'}}/>
</Link>
return (
<div className="p-d-flex p-flex-column">
<Link to={`/bandi/${rowData.id}`}>
<Button severity="info" label={__('Mostra', 'gepafin')} icon="pi pi-eye" size="small" iconPos="right" />
</Link>
<Button severity="info" label={__('Scarica graduatoria', 'gepafin')} icon="pi pi-download" size="small" iconPos="right" style={{marginTop:'10px'}} onClick={() => handleDownloadRanking(rowData.id)}/>
</div>
)
}
const downloadSuccessCallback = (resp, callId) => {
const file = new Blob([resp], { type: 'text/csv' });
const url = window.URL.createObjectURL(file);
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', `call-${callId}-applications-report.csv`);
document.body.appendChild(link);
link.click();
link.remove();
setLocalAsyncRequest(false);
}
const downloadErrorCallback = (resp) => {
setLocalAsyncRequest(false);
}
const handleDownloadRanking = (callId)=>{
setLocalAsyncRequest(true);
ApplicationService.downloadRanking(callId,
(resp)=>downloadSuccessCallback(resp,callId),
downloadErrorCallback)
}
const statusBodyTemplate = (rowData) => {

View File

@@ -67,4 +67,8 @@ export default class ApplicationService {
static reAdmitApplication = (id, callback, errCallback) => {
NetworkService.put(`${API_BASE_URL}/application/${id}/readmit`, {}, callback, errCallback);
};
static downloadRanking = (callId, callback, errCallback)=> {
NetworkService.getBlob(`${API_BASE_URL}/application/call/${callId}/ranking-csv`, callback, errCallback);
}
}