diff --git a/src/pages/BandoFlowEdit/index.js b/src/pages/BandoFlowEdit/index.js index 17b1365..b579a1e 100644 --- a/src/pages/BandoFlowEdit/index.js +++ b/src/pages/BandoFlowEdit/index.js @@ -1,7 +1,7 @@ import React, { useEffect, useState, useCallback, useRef } from 'react'; import { __, sprintf } from '@wordpress/i18n'; import { useNavigate, useParams } from 'react-router-dom'; -import { isEmpty, head, pathOr } from 'ramda'; +import { isEmpty, head, pathOr, isNil } from 'ramda'; // store import { storeGet, storeSet, useStore } from '../../store'; @@ -27,13 +27,13 @@ const BandoFlowEdit = () => { const flowData = useStore().main.flowData(); const flowEdges = useStore().main.flowEdges(); const [formOptions, setFormOptions] = useState([]); - const [initialForm, setInitialForm] = useState(0); + const [initialForm, setInitialForm] = useState(null); const [chosenMainFieldOptions, setChosenMainFieldOptions] = useState([]); const [chosenMainField, setChosenMainField] = useState(''); const [mainFieldSuboptions, setMainFieldSubOptions] = useState([]); const [bandoStatus, setBandoStatus] = useState(''); const [isFlowAllowed, setIsFlowAllowed] = useState(true); - const [finalForm, setFinalForm] = useState(0); + const [finalForm, setFinalForm] = useState(null); const flowMsgs = useRef(null); const toast = useRef(null); const [lines, setLines] = useState([]); @@ -70,7 +70,7 @@ const BandoFlowEdit = () => { } storeSet.main.flowData([]); storeSet.main.flowEdges([]); - setInitialForm(0); + setInitialForm(null); setChosenMainFieldOptions([]); setChosenMainField(''); setIsFlowAllowed(false); @@ -80,6 +80,7 @@ const BandoFlowEdit = () => { const updateInitialForm = (value) => { if (value !== finalForm) { + console.log('setInitialForm1') setInitialForm(value); if (forms.length === 2) { const finalForm = head(forms.filter(o => o.id !== value)); @@ -191,6 +192,7 @@ const BandoFlowEdit = () => { if (data.status === 'SUCCESS' && data.data) { storeSet.main.flowData(data.data.flowData); storeSet.main.flowEdges(data.data.flowEdges); + console.log('setInitialForm2') setInitialForm(data.data.initialForm); setFinalForm(data.data.finalForm); setBandoStatus(data.data.callStatus); @@ -210,7 +212,7 @@ const BandoFlowEdit = () => { const field = form ? head(form.content.filter(o => o.id === chosenFieldItem.chosenField)) : null; if (field) { const options = head(field.settings.filter(o => o.name === 'options')); - console.log('suboptions1', options.value) + console.log('suboptions1', options.value, data.data.initialForm) setMainFieldSubOptions(options.value); } } @@ -272,6 +274,38 @@ const BandoFlowEdit = () => { } } + useEffect(() => { + const isAsyncRequest = storeGet.main.isAsyncRequest(); + if ('PUBLISH' === bandoStatus || isAsyncRequest || isNil(initialForm)) { + return; + } + storeSet.main.flowData([]); + setChosenMainField(''); + console.log('suboptions3', [], initialForm) + setMainFieldSubOptions([]); + setChosenMainFieldOptions([]); + const flowForms = storeGet.main.flowForms(); + const form = head(flowForms.filter(o => String(o.id) === String(initialForm))) + const relevantFields = form + ? form.content + .filter(o => ['radio', 'select'].includes(o.name)) + .map(o => { + const label = head(o.settings.filter(o => o.name === 'label')); + return { value: o.id, label: label ? label.value : o.label }; + }) + : []; + setChosenMainFieldOptions([ + { label: isEmpty(relevantFields) ? __('Nessun scelta', 'gepafin') : '', value: '' }, + ...relevantFields] + ); + + if (flowForms.length === 2) { + setIsFlowAllowed(true) + } + + buildFlowEdges(); + }, [initialForm]); + useEffect(() => { const isAsyncRequest = storeGet.main.isAsyncRequest(); if (isAsyncRequest) { @@ -296,7 +330,7 @@ const BandoFlowEdit = () => { { label: __('Nessun scelta', 'gepafin'), name: '' }, ...options.value ] - console.log('suboptions2', suboptions) + console.log('suboptions2', suboptions, initialForm) setMainFieldSubOptions(suboptions); const data = { formId: parseInt(initialForm), @@ -335,39 +369,7 @@ const BandoFlowEdit = () => { useEffect(() => { const isAsyncRequest = storeGet.main.isAsyncRequest(); - if ('PUBLISH' === bandoStatus || isAsyncRequest) { - return; - } - storeSet.main.flowData([]); - setChosenMainField(''); - console.log('suboptions3', [], initialForm) - setMainFieldSubOptions([]); - setChosenMainFieldOptions([]); - const flowForms = storeGet.main.flowForms(); - const form = head(flowForms.filter(o => String(o.id) === String(initialForm))) - const relevantFields = form - ? form.content - .filter(o => ['radio', 'select'].includes(o.name)) - .map(o => { - const label = head(o.settings.filter(o => o.name === 'label')); - return { value: o.id, label: label ? label.value : o.label }; - }) - : []; - setChosenMainFieldOptions([ - { label: isEmpty(relevantFields) ? __('Nessun scelta', 'gepafin') : '', value: '' }, - ...relevantFields] - ); - - if (flowForms.length === 2) { - setIsFlowAllowed(true) - } - - buildFlowEdges(); - }, [initialForm]); - - useEffect(() => { - const isAsyncRequest = storeGet.main.isAsyncRequest(); - if (isAsyncRequest) { + if (isAsyncRequest || isNil(finalForm)) { return; } if ('PUBLISH' === bandoStatus) {