dquote> - updated registartion page, added gdpr and marketing checkboxes;

dquote> - fixed number input;
dquote> - updated latest submissions table component;
This commit is contained in:
Vitalii Kiiko
2024-10-07 11:06:35 +02:00
parent c687bec8d5
commit ad42ed6326
9 changed files with 254 additions and 78 deletions

View File

@@ -42,6 +42,7 @@ const BandoApplication = () => {
const [formId, setFormId] = useState('');
const [totalSteps, setTotalSteps] = useState(0);
const [completedSteps, setCompletedSteps] = useState(0);
const [applicationStatus, setApplicationStatus] = useState('');
const [activeStep, setActiveStep] = useState(1);
const isAsyncRequest = useStore().main.isAsyncRequest();
const toast = useRef(null);
@@ -86,6 +87,9 @@ const BandoApplication = () => {
detail: __('La domanda è stata presentata!', 'gepafin')
});
}
if (data.data.applicationStatus) {
setApplicationStatus(data.data.applicationStatus);
}
}
storeSet.main.unsetAsyncRequest();
}
@@ -126,24 +130,24 @@ const BandoApplication = () => {
const newFormValues = Object.keys(formValues)
.filter(v => usedFieldsIds.includes(v))
.reduce((acc, cur) => {
const formField = head(formData.filter(o => o.id === cur));
let fieldVal = formValues[cur];
const formField = head(formData.filter(o => o.id === cur));
let fieldVal = formValues[cur];
if (formValues[cur] && formValues[cur].toISOString) {
const tzAwareDate = new TZDate(formValues[cur], 'Europe/Berlin');
fieldVal = tzAwareDate.toISOString().substring(0, 19);
}
if (formValues[cur] && formValues[cur].toISOString) {
const tzAwareDate = new TZDate(formValues[cur], 'Europe/Berlin');
fieldVal = tzAwareDate.toISOString().substring(0, 19);
}
fieldVal = !fieldVal ? null : fieldVal;
if (formField && formField.name === 'fileupload') {
fieldVal = is(Array, fieldVal) ? fieldVal.map(o => o.id).join(',') : fieldVal;
}
acc.push({
'fieldId': cur,
'fieldValue': fieldVal
});
return acc;
}, []);
fieldVal = !fieldVal ? null : fieldVal;
if (formField && formField.name === 'fileupload') {
fieldVal = is(Array, fieldVal) ? fieldVal.map(o => o.id).join(',') : fieldVal;
}
acc.push({
'fieldId': cur,
'fieldValue': fieldVal
});
return acc;
}, []);
const submitData = {
formFields: newFormValues
}
@@ -167,7 +171,8 @@ const BandoApplication = () => {
return !isNaN(parsed) ? parsed : 0;
}
const saveDraftCallback = (data, saveAndMove) => {
const saveDraftCallback = (data, saveAndMove = '') => {
storeSet.main.unsetAsyncRequest();
if (data.status === 'SUCCESS') {
if (toast.current) {
toast.current.show({
@@ -176,18 +181,16 @@ const BandoApplication = () => {
detail: __('Salvato!', 'gepafin')
});
}
if (!isEmpty(saveAndMove)) {
if (!isEmpty(saveAndMove) && is(String, saveAndMove)) {
storeSet.main.setAsyncRequest();
ApplicationService.getApplicationForm(data.data.id, getApplFormCallback, errGetApplFormCallbacks, [
['formId', formId],
['action', saveAndMove]
]);
} else {
// update info about application completeness
ApplicationService.getApplicationForm(data.data.id, getStatusCheckCallback, errGetStatusCheckCallbacks);
}
}
storeSet.main.unsetAsyncRequest();
}
const errSaveDraftCallback = (data) => {
@@ -221,26 +224,10 @@ const BandoApplication = () => {
const goBackward = () => {
saveDraft('PREVIOUS');
/*if (formId) {
const applId = getApplicationId();
storeSet.main.setAsyncRequest();
ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks, [
['formId', formId],
['action', 'PREVIOUS']
]);
}*/
}
const goForward = () => {
saveDraft('NEXT');
/*if (formId) {
const applId = getApplicationId();
storeSet.main.setAsyncRequest();
ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks, [
['formId', formId],
['action', 'NEXT']
]);
}*/
}
const getApplFormCallback = (data) => {
@@ -250,6 +237,7 @@ const BandoApplication = () => {
setFormId(data.data.formId);
setTotalSteps(data.data.totalFormSteps);
setCompletedSteps(data.data.completedSteps);
setApplicationStatus(data.data.applicationStatus)
setActiveStep(data.data.currentStep);
if (data.data.applicationFormResponse.formFields) {
@@ -361,24 +349,24 @@ const BandoApplication = () => {
return ['paragraph'].includes(o.name) && text
? <div className="appForm__content" key={o.id}>{renderHtmlContent(text.value)}</div>
: <FormField
key={o.id}
type={o.name}
fieldName={o.id}
label={label ? label.value : ''}
placeholder={placeholder ? placeholder.value : ''}
control={control}
register={register}
errors={errors}
defaultValue={values[o.id]}
maxFractionDigits={step ? step.value : 0}
accept={mimeValue}
config={validations}
options={options ? options.value : []}
setDataFn={setValue}
sourceId={getApplicationId()}
useGrouping={false}
tableColumns={tableColumns ? tableColumns.value : {}}
/>
key={o.id}
type={o.name}
fieldName={o.id}
label={label ? label.value : ''}
placeholder={placeholder ? placeholder.value : ''}
control={control}
register={register}
errors={errors}
defaultValue={values[o.id]}
maxFractionDigits={step ? step.value : 0}
accept={mimeValue}
config={validations}
options={options ? options.value : []}
setDataFn={setValue}
sourceId={getApplicationId()}
useGrouping={false}
tableColumns={tableColumns ? tableColumns.value : {}}
/>
})}
<div className="appPage__spacer"></div>
@@ -392,26 +380,28 @@ const BandoApplication = () => {
{activeStep > 1 && activeStep <= totalSteps
? <Button
type="button"
disabled={'SUBMIT' === applicationStatus}
onClick={goBackward}
label={__('Vai indietro', 'gepafin')}
icon="pi pi-arrow-left"
iconPos="left"/> : null}
<Button
type="button"
disabled={isAsyncRequest}
disabled={isAsyncRequest || 'SUBMIT' === applicationStatus}
onClick={saveDraft}
outlined
label={__('Salva bozza', 'gepafin')} icon="pi pi-save" iconPos="right"/>
{activeStep < totalSteps
//&& activeStep === completedSteps
//&& activeStep === completedSteps
? <Button
type="button"
disabled={'SUBMIT' === applicationStatus}
onClick={goForward}
label={__('Vai avanti', 'gepafin')}
icon="pi pi-arrow-right"
iconPos="right"/> : null}
<Button
disabled={completedSteps === 0 || completedSteps !== totalSteps}
disabled={completedSteps === 0 || completedSteps !== totalSteps || 'SUBMIT' === applicationStatus}
label={__('Invia', 'gepafin')}
icon="pi pi-check"
iconPos="right"/>