- saving progress;

This commit is contained in:
Vitalii Kiiko
2024-12-16 15:13:41 +01:00
parent 9789f5a07a
commit ea2b46ddfe
5 changed files with 102 additions and 64 deletions

View File

@@ -26,6 +26,7 @@ import { Dialog } from 'primereact/dialog';
import FormField from '../../components/FormField';
import SoccorsoComunications from '../SoccorsoEditPreInstructor/components/SoccorsoComunications';
import RepeaterFields from '../DomandaEditPreInstructor/components/RepeaterFields';
import { wrap } from 'object-path-immutable';
const DomandaBeneficiario = () => {
const isAsyncRequest = useStore().main.isAsyncRequest();
@@ -169,6 +170,11 @@ const DomandaBeneficiario = () => {
storeSet.main.unsetAsyncRequest();
}
const updateNewAmendmentData = (value, path) => {
const newData = wrap(data).set(path, value).value();
setData(newData);
}
useEffect(() => {
if (formInitialData) {
//reset();
@@ -277,8 +283,8 @@ const DomandaBeneficiario = () => {
{data.id
? <div className="appPageSection">
<h2>{__('Documenti richiesti', 'gepafin')}</h2>
<RepeaterFields sourceId={id} sourceName="evaluation"/>
<h2>{__('Comunicazioni', 'gepafin')}</h2>
<SoccorsoComunications amendmentId={data.id} soccorsoStatus={data.status}/>
</div> : null}
{data.id
@@ -292,7 +298,7 @@ const DomandaBeneficiario = () => {
disabled={data.status === 'CLOSE'}
type="fileupload"
setDataFn={setValue}
saveFormCallback={doUpdateAmendment}
/*saveFormCallback={doUpdateAmendment}*/
fieldName={o.fieldId}
label={o.label}
control={control}
@@ -317,8 +323,15 @@ const DomandaBeneficiario = () => {
{data.id
? <div className="appPageSection">
<h2>{__('Comunicazioni', 'gepafin')}</h2>
<SoccorsoComunications amendmentId={data.id} soccorsoStatus={data.status}/>
<h2>{__('Documenti aggiuntivi', 'gepafin')}</h2>
<RepeaterFields
defaultValue={data.amendmentDocuments ?? []}
updateFn={(data) => updateNewAmendmentData(
data,
['amendmentDocuments']
)}
sourceId={data.id}
sourceName="evaluation"/>
</div> : null}
{data.id
@@ -337,6 +350,12 @@ const DomandaBeneficiario = () => {
onClick={() => setIsVisibleEmailDialog(true)}
label={__('Invia documenti via PEC', 'gepafin')}
icon="pi pi-envelope" iconPos="right"/> : null}
<Button
type="button"
disabled={isAsyncRequest}
onClick={doUpdateAmendment}
label={__('Salva', 'gepafin')}
icon="pi pi-save" iconPos="right"/>
<Button
type="button"
outlined

View File

@@ -11,14 +11,14 @@ const ListOfFiles = ({ files, updateFn, shouldDisableFieldFn, name, ndg, applica
{files.map((o, i) => <li key={o.id} className="appPageSection__listItem">
<div className="appPageSection__listItemRow">
<span>{o.label}</span>
<div className="appPageSection__iconActions">
{o.fileDetail && o.fileDetail.length === 1
? <Button icon="pi pi-eye" rounded
? <div className="appPageSection__iconActions">
<Button icon="pi pi-eye" rounded
onClick={() => {
window.open(o.fileDetail[0].filePath, '_blank').focus()
}}
outlined severity="info"
aria-label={__('Mostra', 'gepafin')}/> : null}
aria-label={__('Mostra', 'gepafin')}/>
<Button icon="pi pi-thumbs-up" rounded outlined
disabled={shouldDisableFieldFn(name)}
severity={!isNil(o.valid) && o.valid ? 'success' : 'secondary'}
@@ -35,7 +35,7 @@ const ListOfFiles = ({ files, updateFn, shouldDisableFieldFn, name, ndg, applica
[name, i, 'valid']
)}
aria-label={__('Giu', 'gepafin')}/>
</div>
</div> : null}
</div>
{o.fileDetail && o.fileDetail.length > 1
? <ul style={{
@@ -53,7 +53,8 @@ const ListOfFiles = ({ files, updateFn, shouldDisableFieldFn, name, ndg, applica
}}>
<span>{k.name}</span>
<div className="appPageSection__iconActions">
<ArchiveDocument ndg={ndg} applicationId={applicationId} fileId={k.id} docAttachmentId={k.documentAttachmentId}/>
<ArchiveDocument ndg={ndg} applicationId={applicationId} fileId={k.id}
docAttachmentId={k.documentAttachmentId}/>
<Button icon="pi pi-eye" rounded
onClick={() => {
window.open(k.filePath, '_blank').focus()

View File

@@ -13,8 +13,11 @@ import { Button } from 'primereact/button';
const RepeaterFields = ({
sourceId,
sourceName,
updateFn = () => {},
defaultValue = []
updateFn = () => {
},
defaultValue = [],
updateCallbackFn = () => {
}
}) => {
const [items, setItems] = useState([]);
const [chosen, setChosen] = useState('');
@@ -27,7 +30,8 @@ const RepeaterFields = ({
register,
trigger,
reset,
watch
watch,
getValues
} = useForm({
defaultValues: useMemo(() => {
return formInitialData;
@@ -51,8 +55,7 @@ const RepeaterFields = ({
const newItem = {
fieldId: uid,
nameValue: '',
fileValue: [],
valid: true
fileValue: []
}
setItems([...items, newItem]);
setChosen(uid);
@@ -93,7 +96,7 @@ const RepeaterFields = ({
...o,
fileValue: watchFile
} : o;
})
});
setItems([...updatedItems]);
}, [watchFile]);
@@ -105,7 +108,6 @@ const RepeaterFields = ({
setItems(defaultValue);
}, [])
console.log('items', items, chosen);
return (
<div className="fieldsRepeater">
<form className="appForm" onSubmit={handleSubmit(onSubmit)}>
@@ -157,7 +159,7 @@ const RepeaterFields = ({
className="fieldsRepeater__addNew"
outlined
type="button"
/*disabled={!isEmpty(chosen.fileId) && (isEmpty(chosen.name) || isEmpty(chosen.file))}*/
disabled={!isEmpty(chosen.fileId) && (isEmpty(watchName) || isEmpty(watchFile))}
onClick={addNew}
label={__('Aggiungi nuovo file', 'gepafin')}
/>

View File

@@ -88,7 +88,7 @@ const DomandaEditPreInstructor = () => {
const doNewSoccorso = () => {
if (connectedSoccorsoId !== 0) {
doSaveDraft(`/domande/${id}/soccorso/${connectedSoccorsoId}`)
navigate(`/domande/${id}/soccorso/${connectedSoccorsoId}`);
} else {
doSaveDraft(`/domande/${id}/aggiungi-soccorso/`)
}
@@ -605,16 +605,34 @@ const DomandaEditPreInstructor = () => {
</div>
</div>
{/*<div className="appPageSection">
<div className="appPageSection">
<h2>{__('Documenti di soccorso', 'gepafin')}</h2>
<ListOfFiles
files={data.files}
{data.amendmentDetails
.filter(o => o.amendmentDocuments && !isEmpty(o.amendmentDocuments)
|| o.formFieldDocuments && !isEmpty(o.formFieldDocuments))
.map(o => {
const aDocs = pathOr([],['amendmentDocuments'], o)
.map(o => ({
id: o.fieldId,
label: o.nameValue,
fileDetail: o.fileValue,
valid: o.valid
}));
const fDocs = pathOr([],['formFieldDocuments'], o);
return {
id: o.id,
files: [...aDocs, ...fDocs]
}
})
.map(o => <ListOfFiles
files={o.files}
updateFn={updateEvaluationValue}
shouldDisableFieldFn={shouldDisableField}
name="files"
ndg={data.ndg}
applicationId={id}/>
</div>*/}
applicationId={id}/>)}
</div>
<div className="appPageSection">
<h2>{__('Punteggi di valutazione', 'gepafin')}</h2>

View File

@@ -324,10 +324,7 @@ const SoccorsoEditPreInstructor = () => {
AmendmentsService.getSoccorsoById(getCallback, errGetCallback, [['id', soccorsoEntityId]]);
}, [amendmentId]);
useEffect(() => {
console.log(data);
}, [data]);
console.log('data', data.amendmentDocuments);
return (
<div className="appPage">
<div className="appPage__pageHeader">
@@ -426,7 +423,7 @@ const SoccorsoEditPreInstructor = () => {
defaultValue={formInitialData[o.fieldId] ? formInitialData[o.fieldId] : []}
accept={[]}
source="AMENDMENT"
sourceId={data.applicationId}
sourceId={amendmentId}
multiple={true}
/>
})}
@@ -435,14 +432,15 @@ const SoccorsoEditPreInstructor = () => {
<div className="appPageSection">
<h2>{__('Documenti aggiuntivi', 'gepafin')}</h2>
<RepeaterFields
{data.id
? <RepeaterFields
defaultValue={data.amendmentDocuments ?? []}
updateFn={(data) => updateNewAmendmentData(
data,
['amendmentDocuments']
)}
sourceId={amendmentId}
sourceName="AMENDMENT"/>
sourceName="AMENDMENT"/> : null}
</div>
<div className="appForm__field">