- added duplicate form from another call functionality;
- fixed styles; - added copy icon for user emails; - added hotkey to open loginadmin page quickly; - added modal for archiving document; - added modal for create appointment;
This commit is contained in:
@@ -3,31 +3,36 @@ import { __ } from '@wordpress/i18n';
|
||||
import { useParams, useNavigate } from 'react-router-dom';
|
||||
import { isEmpty } from 'ramda';
|
||||
import { classNames } from 'primereact/utils';
|
||||
import { klona } from 'klona';
|
||||
|
||||
// components
|
||||
import { Button } from 'primereact/button';
|
||||
import { Dropdown } from 'primereact/dropdown';
|
||||
// store
|
||||
import { storeSet } from '../../store';
|
||||
|
||||
// service
|
||||
import FormsService from '../../service/forms-service';
|
||||
|
||||
// store
|
||||
import { storeSet } from '../../store';
|
||||
import set404FromErrorResponse from '../../helpers/set404FromErrorResponse';
|
||||
import BandoService from '../../service/bando-service';
|
||||
// tools
|
||||
import uniqid from '../../helpers/uniqid';
|
||||
import set404FromErrorResponse from '../../helpers/set404FromErrorResponse';
|
||||
|
||||
// components
|
||||
import { Button } from 'primereact/button';
|
||||
import { Dropdown } from 'primereact/dropdown';
|
||||
import BandoService from '../../service/bando-service';
|
||||
import { Toast } from 'primereact/toast';
|
||||
|
||||
const BandoForms = () => {
|
||||
const { id } = useParams();
|
||||
const navigate = useNavigate()
|
||||
const [templates, setTemplates] = useState(null);
|
||||
const [selectedTemplate, setSelectedTemplate] = useState(null);
|
||||
const [selectedForm, setSelectedForm] = useState(null);
|
||||
const [selectedForDuplicateForm, setSelectedForDuplicateForm] = useState(null);
|
||||
const [selectedForDuplicateForm, setSelectedForDuplicateForm] = useState(0);
|
||||
const [forms, setForms] = useState([]);
|
||||
const [bandoStatus, setBandoStatus] = useState('');
|
||||
const [allBandiOptions, setAllBandiOptions] = useState([]);
|
||||
const [allBandiIsLoading, setAllBandiIsLoading] = useState(false);
|
||||
const [selectedBandoIdForDuplicate, setSelectedBandoIdForDuplicate] = useState(0);
|
||||
const [allFormsOptions, setAllFormsOptions] = useState([]);
|
||||
const [allFormsIsLoading, setAllFormsIsLoading] = useState(false);
|
||||
const [selectedFormIdForDuplicate, setSelectedFormIdForDuplicate] = useState(0);
|
||||
const toast = useRef(null);
|
||||
|
||||
const doCreateNewForm = () => {
|
||||
@@ -53,11 +58,11 @@ const BandoForms = () => {
|
||||
|
||||
if (!isEmpty(selectedFormArr)) {
|
||||
storeSet.main.setAsyncRequest();
|
||||
FormsService.getFormById(selectedForDuplicateForm, getFormCallback, errGetFormCallbacks);
|
||||
FormsService.getFormById(selectedForDuplicateForm, getFormDuplicateCallback, errGetFormDuplicateCallbacks);
|
||||
}
|
||||
}
|
||||
|
||||
const getFormCallback = (data) => {
|
||||
const getFormDuplicateCallback = (data) => {
|
||||
if (data.status === 'SUCCESS') {
|
||||
const newLabel = `${data.data.label} (copy)`;
|
||||
|
||||
@@ -76,9 +81,10 @@ const BandoForms = () => {
|
||||
errFormCreateCallback
|
||||
);
|
||||
}
|
||||
storeSet.main.unsetAsyncRequest();
|
||||
}
|
||||
|
||||
const errGetFormCallbacks = (data) => {
|
||||
const errGetFormDuplicateCallbacks = (data) => {
|
||||
set404FromErrorResponse(data);
|
||||
storeSet.main.unsetAsyncRequest();
|
||||
}
|
||||
@@ -141,17 +147,52 @@ const BandoForms = () => {
|
||||
storeSet.main.unsetAsyncRequest();
|
||||
}
|
||||
|
||||
const getAllBandiCallback = (data) => {
|
||||
if (data.status === 'SUCCESS') {
|
||||
setAllBandiOptions(data.data.filter(o => o.id !== parseInt(id)).map(o => ({ label: o.name, value: o.id })))
|
||||
}
|
||||
setAllBandiIsLoading(false);
|
||||
}
|
||||
|
||||
const errGetAllBandiCallback = () => {
|
||||
setAllBandiIsLoading(false);
|
||||
}
|
||||
|
||||
const getAllFormsCallback = (data) => {
|
||||
if (data.status === 'SUCCESS') {
|
||||
setAllFormsOptions(data.data.map(o => ({ label: o.label, value: o.id })));
|
||||
}
|
||||
setAllFormsIsLoading(false);
|
||||
}
|
||||
|
||||
const errGetAllFormsCallback = () => {
|
||||
setAllFormsIsLoading(false);
|
||||
}
|
||||
|
||||
const doDuplicateFormOfAnotherBando = () => {
|
||||
if (selectedBandoIdForDuplicate !== 0 && selectedFormIdForDuplicate !== 0) {
|
||||
storeSet.main.setAsyncRequest();
|
||||
FormsService.getFormById(selectedFormIdForDuplicate, getFormDuplicateCallback, errGetFormDuplicateCallbacks);
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (selectedBandoIdForDuplicate !== 0) {
|
||||
setAllFormsIsLoading(true);
|
||||
FormsService.getFormsForCall(selectedBandoIdForDuplicate, getAllFormsCallback, errGetAllFormsCallback);
|
||||
}
|
||||
}, [selectedBandoIdForDuplicate]);
|
||||
|
||||
useEffect(() => {
|
||||
const parsed = parseInt(id)
|
||||
const bandoId = !isNaN(parsed) ? parsed : 0;
|
||||
|
||||
setTemplates([
|
||||
{ label: 'Form template', value: 11 }
|
||||
])
|
||||
|
||||
storeSet.main.setAsyncRequest();
|
||||
BandoService.getBando(id, getCallback, errGetCallback);
|
||||
FormsService.getFormsForCall(bandoId, getFormsCallback, errGetFormsCallback);
|
||||
|
||||
setAllBandiIsLoading(true);
|
||||
BandoService.getBandi(getAllBandiCallback, errGetAllBandiCallback);
|
||||
}, [id]);
|
||||
|
||||
return (
|
||||
@@ -164,7 +205,7 @@ const BandoForms = () => {
|
||||
</div>
|
||||
|
||||
<div className="appPage__spacer"></div>
|
||||
<Toast ref={toast} />
|
||||
<Toast ref={toast}/>
|
||||
|
||||
<div className="appPage__content">
|
||||
|
||||
@@ -191,7 +232,7 @@ const BandoForms = () => {
|
||||
</div>*/}
|
||||
|
||||
<div className="appPageSection__withBorder">
|
||||
<h2>{__('Crea un nuovo Form da Zero', 'gepafin')}</h2>
|
||||
<h2>{__('Crea un nuovo Form o duplica', 'gepafin')}</h2>
|
||||
<div className="row">
|
||||
<p>{__('Inizia con un form completamente vuoto e personalizzabile', 'gepafin')}</p>
|
||||
<Button
|
||||
@@ -202,19 +243,46 @@ const BandoForms = () => {
|
||||
</div>
|
||||
<div className="row">
|
||||
<p>{__('Duplica il form creato in precedenza', 'gepafin')}</p>
|
||||
<Dropdown
|
||||
id="form"
|
||||
disabled={isEmpty(forms)}
|
||||
value={selectedForDuplicateForm}
|
||||
onChange={(e) => setSelectedForDuplicateForm(e.value)}
|
||||
options={forms}
|
||||
optionLabel="label"
|
||||
placeholder={__('Seleziona form', 'gepafin')}/>
|
||||
<Button
|
||||
type="button"
|
||||
disabled={'PUBLISH' === bandoStatus || isEmpty(forms)}
|
||||
onClick={doDuplicateForm}
|
||||
label={__('Duplicare', 'gepafin')}/>
|
||||
<div className="row">
|
||||
<Dropdown
|
||||
id="form"
|
||||
disabled={isEmpty(forms)}
|
||||
value={selectedForDuplicateForm}
|
||||
onChange={(e) => setSelectedForDuplicateForm(e.value)}
|
||||
options={forms}
|
||||
optionLabel="label"
|
||||
placeholder={__('Seleziona form', 'gepafin')}/>
|
||||
<Button
|
||||
type="button"
|
||||
disabled={'PUBLISH' === bandoStatus || isEmpty(forms) || selectedForDuplicateForm === 0}
|
||||
onClick={doDuplicateForm}
|
||||
label={__('Duplicare', 'gepafin')}/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="row">
|
||||
<p>{__('Duplica il form dal altro bando', 'gepafin')}</p>
|
||||
<div className="row">
|
||||
<Dropdown
|
||||
id="form"
|
||||
disabled={allBandiIsLoading}
|
||||
value={selectedBandoIdForDuplicate}
|
||||
onChange={(e) => setSelectedBandoIdForDuplicate(e.value)}
|
||||
options={allBandiOptions}
|
||||
placeholder={__('Seleziona bando', 'gepafin')}/>
|
||||
<Dropdown
|
||||
id="form"
|
||||
disabled={allFormsIsLoading}
|
||||
value={selectedFormIdForDuplicate}
|
||||
onChange={(e) => setSelectedFormIdForDuplicate(e.value)}
|
||||
options={allFormsOptions}
|
||||
placeholder={__('Seleziona form', 'gepafin')}/>
|
||||
<Button
|
||||
type="button"
|
||||
disabled={selectedBandoIdForDuplicate === 0 || selectedFormIdForDuplicate === 0}
|
||||
onClick={doDuplicateFormOfAnotherBando}
|
||||
label={__('Duplicare', 'gepafin')}/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user