- updated version;

This commit is contained in:
Vitalii Kiiko
2024-09-05 17:15:57 +02:00
parent d2a28bea1b
commit 4054745695
33 changed files with 516 additions and 296 deletions

View File

@@ -1,26 +1,30 @@
import React, { useEffect, useState } from 'react';
import React, { useEffect, useState, useCallback } from 'react';
import { __ } from '@wordpress/i18n';
import { useNavigate, useParams } from 'react-router-dom';
import { isEmpty } from 'ramda';
// store
import { storeSet, useStore } from '../../store';
// api
import FormsService from '../../service/forms-service';
// tools
import set404FromErrorResponse from '../../helpers/set404FromErrorResponse';
// 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 flowData = useStore().main.flowData();
const flowEdges = useStore().main.flowEdges();
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)
@@ -29,21 +33,26 @@ const BandoFlowEdit = () => {
const goBack = () => {
const bandoId = getBandoId();
navigate(`/bandi/${bandoId}/forms`);
navigate(`/tenders/${bandoId}/forms`);
}
const shoudDisableSaving = useCallback(() => {
return isEmpty(flowData) || isEmpty(flowEdges) || isEmpty(initialForm) || isEmpty(finalForm);
}, [flowData, flowEdges]);
const doSave = () => {
console.log('doSave');
}
const updateEdges = (data) => {
console.log('doSave', {
initialForm,
finalForm,
flowData,
flowEdges
});
}
const getFormsCallback = (data) => {
if (data.status === 'SUCCESS') {
const formOptions = data.data.map(o => ({label: o.label, value: o.id}))
setForms(data.data);
storeSet.main.flowForms(data.data);
setFormOptions(formOptions);
}
storeSet.main.unsetAsyncRequest();
@@ -60,6 +69,14 @@ const BandoFlowEdit = () => {
FormsService.getFormsForCall(bandoId, getFormsCallback, errGetFormsCallback);
}, [id]);
useEffect(() => {
return () => {
storeSet.main.flowForms([]);
storeSet.main.flowData([]);
storeSet.main.flowEdges([]);
}
}, [])
return (
<div className="appPage">
<div className="appPage__pageHeader">
@@ -104,7 +121,7 @@ const BandoFlowEdit = () => {
<div className="appPage__spacer"></div>
<div className="appPageSection">
<FlowBuilder forms={forms} initialForm={initialForm} finalForm={finalForm} updateFn={updateEdges}/>
<FlowBuilder initialForm={initialForm} finalForm={finalForm}/>
</div>
<div className="appPage__spacer"></div>
@@ -117,6 +134,7 @@ const BandoFlowEdit = () => {
label={__('Indietro', 'gepafin')} icon="pi pi-arrow-left" iconPos="left"/>
<Button
onClick={doSave}
disabled={shoudDisableSaving()}
label={__('Salva', 'gepafin')} icon="pi pi-save" iconPos="right"/>
</div>
</div>