- updates;

This commit is contained in:
Vitalii Kiiko
2024-09-04 12:49:14 +02:00
parent 949ff95933
commit d2a28bea1b
10 changed files with 552 additions and 15 deletions

View File

@@ -0,0 +1,128 @@
import React, { useEffect, useState } from 'react';
import { __ } from '@wordpress/i18n';
import { useNavigate, useParams } from 'react-router-dom';
// store
import { storeSet, useStore } from '../../store';
// components
import { Button } from 'primereact/button';
import { InputText } from 'primereact/inputtext';
import { Dropdown } from 'primereact/dropdown';
import FormsService from '../../service/forms-service';
import set404FromErrorResponse from '../../helpers/set404FromErrorResponse';
import FlowBuilder from '../../components/FlowBuilder';
const BandoFlowEdit = () => {
const { id } = useParams();
const navigate = useNavigate();
const [forms, setForms] = useState([]);
const [formOptions, setFormOptions] = useState([]);
const [initialForm, setInitialForm] = useState(0);
const [finalForm, setFinalForm] = useState(0);
const isAsyncRequest = useStore().main.isAsyncRequest();
const getBandoId = () => {
const parsed = parseInt(id)
return !isNaN(parsed) ? parsed : 0;
}
const goBack = () => {
const bandoId = getBandoId();
navigate(`/bandi/${bandoId}/forms`);
}
const doSave = () => {
console.log('doSave');
}
const updateEdges = (data) => {
}
const getFormsCallback = (data) => {
if (data.status === 'SUCCESS') {
const formOptions = data.data.map(o => ({label: o.label, value: o.id}))
setForms(data.data);
setFormOptions(formOptions);
}
storeSet.main.unsetAsyncRequest();
}
const errGetFormsCallback = (data) => {
set404FromErrorResponse(data);
storeSet.main.unsetAsyncRequest();
}
useEffect(() => {
const bandoId = getBandoId();
storeSet.main.setAsyncRequest();
FormsService.getFormsForCall(bandoId, getFormsCallback, errGetFormsCallback);
}, [id]);
return (
<div className="appPage">
<div className="appPage__pageHeader">
<h1>{__('Gestisci flusso dei form', 'gepafin')}</h1>
<p>
{__('Scegli un form iniziale e li form finale e aggiungi i form intermedi per questo bando', 'gepafin')}
</p>
</div>
<div className="appPage__spacer"></div>
<div className="appPageSection">
<div className="row">
<div className="appForm__field">
<label htmlFor="initialForm">{__('Scegli form iniziale', 'gepafin')}</label>
<Dropdown
id="initialForm"
value={initialForm}
onChange={(e) => setInitialForm(e.value)}
optionDisabled={(opt) => finalForm === opt.value}
options={formOptions}
optionLabel="label"
optionValue="value"
placeholder={__('Scegli il form', 'gepafin')} />
</div>
<div className="appForm__field">
<label htmlFor="finalForm">{__('Scegli form finale', 'gepafin')}</label>
<Dropdown
id="finalForm"
value={finalForm}
onChange={(e) => setFinalForm(e.value)}
optionDisabled={(opt) => initialForm === opt.value}
options={formOptions}
optionLabel="label"
optionValue="value"
placeholder={__('Scegli il form', 'gepafin')} />
</div>
</div>
</div>
<div className="appPage__spacer"></div>
<div className="appPageSection">
<FlowBuilder forms={forms} initialForm={initialForm} finalForm={finalForm} updateFn={updateEdges}/>
</div>
<div className="appPage__spacer"></div>
<div className="appPageSection">
<div className="appPageSection__actions">
<Button
onClick={goBack}
outlined
label={__('Indietro', 'gepafin')} icon="pi pi-arrow-left" iconPos="left"/>
<Button
onClick={doSave}
label={__('Salva', 'gepafin')} icon="pi pi-save" iconPos="right"/>
</div>
</div>
</div>
)
}
export default BandoFlowEdit;

View File

@@ -35,7 +35,7 @@ const BandoFormsEdit = () => {
navigate(`/bandi/${bandoId}/forms`);
}
const doSave = () => {
const doSave = (shouldRedirect = false) => {
const content = storeGet.main.formElements();
const bandoId = getBandoId();
const parsedFormId = parseInt(formId)
@@ -47,21 +47,25 @@ const BandoFormsEdit = () => {
storeSet.main.setAsyncRequest();
if (bandoFormId === 0) {
FormsService.createFormForCall(bandoId, formData, formCreateCallback, errFormCreateCallback);
FormsService.createFormForCall(bandoId, formData, (data) => formCreateCallback(data, shouldRedirect), errFormCreateCallback);
} else {
FormsService.updateForm(bandoFormId, formData, formCreateCallback, errFormCreateCallback);
FormsService.updateForm(bandoFormId, formData, (data) => formCreateCallback(data, shouldRedirect), errFormCreateCallback);
}
}
const formCreateCallback = (data) => {
const formCreateCallback = (data, shouldRedirect) => {
if (data.status === 'SUCCESS') {
const parsed = parseInt(id)
const bandoId = !isNaN(parsed) ? parsed : 0;
storeSet.main.unsetAsyncRequest();
const bandoId = getBandoId();
if (shouldRedirect) {
navigate(`/bandi/${bandoId}/forms/${data.data.id}/preview`);
return;
}
if (data.data.id) {
navigate(`/bandi/${bandoId}/forms/${data.data.id}`);
}
}
storeSet.main.unsetAsyncRequest();
}
const errFormCreateCallback = (data) => {
@@ -70,8 +74,7 @@ const BandoFormsEdit = () => {
}
const openPreview = () => {
const bandoId = getBandoId();
navigate(`/bandi/${bandoId}/forms/${formId}/preview`);
doSave(true);
}
const confirmDelete = (event) => {