- company files for evaluation functionality;
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
||||
import { classNames } from 'primereact/utils';
|
||||
import { __ } from '@wordpress/i18n';
|
||||
import { isEmpty, pathOr, pluck } from 'ramda';
|
||||
import { isEmpty, isNil, pathOr, pluck } from 'ramda';
|
||||
|
||||
// service
|
||||
import FileUploadService from '../../../../service/file-upload-service';
|
||||
@@ -27,7 +27,8 @@ const FileSelect = ({
|
||||
sourceId = 0,
|
||||
source = 'DOCUMENT',
|
||||
documentCategories = [],
|
||||
saveFormCallback
|
||||
saveFormCallback,
|
||||
attachFilesCallback,
|
||||
}) => {
|
||||
//const [stateFieldData, setStateFieldData] = useState([]);
|
||||
const stateFieldData = useRef([]);
|
||||
@@ -52,6 +53,16 @@ const FileSelect = ({
|
||||
setAddNewMode(false);
|
||||
}, [selectedUnconfirmed]);
|
||||
|
||||
const attachSelectedFilesCallback = useCallback(() => {
|
||||
const existingIds = pluck('id', stateFieldData.current);
|
||||
const selectedToBeAdded = selectedUnconfirmed.filter(o => !existingIds.includes(o.id));
|
||||
setSelectedUnconfirmed([]);
|
||||
|
||||
// eslint-disable-next-line array-callback-return
|
||||
selectedToBeAdded.map(o => attachFilesCallback(o));
|
||||
setAddNewMode(false);
|
||||
}, [selectedUnconfirmed]);
|
||||
|
||||
const doGoBackToListOfFiles = () => {
|
||||
setSelectedUnconfirmed([]);
|
||||
setAddNewMode(false);
|
||||
@@ -100,7 +111,8 @@ const FileSelect = ({
|
||||
defaultFocus: 'reject',
|
||||
acceptClassName: 'p-button-danger',
|
||||
accept: () => removeAttached(id),
|
||||
reject: () => {}
|
||||
reject: () => {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -116,19 +128,19 @@ const FileSelect = ({
|
||||
? o
|
||||
: documentCategories.includes(o.category.id))
|
||||
.reduce((acc, cur) => {
|
||||
const catName = pathOr('', ['category', 'categoryName'], cur);
|
||||
const catLabel = pathOr('', ['category', 'description'], cur);
|
||||
const catName = pathOr('', ['category', 'categoryName'], cur);
|
||||
const catLabel = pathOr('', ['category', 'description'], cur);
|
||||
|
||||
if (!acc[catName]) {
|
||||
acc[catName] = {
|
||||
code: catName,
|
||||
label: catLabel,
|
||||
items: []
|
||||
};
|
||||
}
|
||||
acc[catName].items.push(cur)
|
||||
return acc;
|
||||
}, {});
|
||||
if (!acc[catName]) {
|
||||
acc[catName] = {
|
||||
code: catName,
|
||||
label: catLabel,
|
||||
items: []
|
||||
};
|
||||
}
|
||||
acc[catName].items.push(cur)
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
setOptionsTransformed(Object.values(optionsDefault));
|
||||
}
|
||||
@@ -137,13 +149,14 @@ const FileSelect = ({
|
||||
useEffect(() => {
|
||||
stateFieldData.current = defaultValue;
|
||||
}, [defaultValue]);
|
||||
//console.log([...stateFieldData.current])
|
||||
|
||||
return (
|
||||
<>
|
||||
<label htmlFor={fieldName} className={classNames({ 'p-error': errors[fieldName] })}>
|
||||
{label}{config.required || config.isRequired ?
|
||||
<span className="appForm__field--required">*</span> : null}
|
||||
</label>
|
||||
{!isNil(label)
|
||||
? <label htmlFor={fieldName} className={classNames({ 'p-error': errors[fieldName] })}>
|
||||
{label}{config.required || config.isRequired ?
|
||||
<span className="appForm__field--required">*</span> : null}
|
||||
</label> : null}
|
||||
<div className="fileselectInner">
|
||||
{addNewMode
|
||||
? <div className="fileselectInner__selectionBox">
|
||||
@@ -160,7 +173,7 @@ const FileSelect = ({
|
||||
? <Button
|
||||
severity="success"
|
||||
disabled={loading}
|
||||
onClick={attachSelectedFiles}
|
||||
onClick={!isNil(attachFilesCallback) ? attachSelectedFilesCallback : attachSelectedFiles}
|
||||
label={__('Conferma i file scelti', 'gepafin')}
|
||||
icon="pi pi-arrow-right" size="small" iconPos="right"/>
|
||||
: <Button
|
||||
@@ -172,19 +185,21 @@ const FileSelect = ({
|
||||
</div> : null}
|
||||
{!isEmpty(optionsTransformed) && !addNewMode
|
||||
? <div className="fileselectInner__selectedFiles">
|
||||
<p>{__('I file selezionati')}</p>
|
||||
<p><strong>{__('I file selezionati:')}</strong></p>
|
||||
<ul>
|
||||
{[...stateFieldData.current].map(o => <li key={o.id}>
|
||||
{o.name}
|
||||
<div className="appPageSection__iconActions">
|
||||
<Button icon="pi pi-times" rounded
|
||||
type="button"
|
||||
size="small"
|
||||
onClick={(e) => confirmDelete(e, o.id)}
|
||||
outlined severity="danger"
|
||||
aria-label={__('Cancella', 'gepafin')}/>
|
||||
</div>
|
||||
</li>)}
|
||||
{!isEmpty(stateFieldData.current)
|
||||
? [...stateFieldData.current].map(o => <li key={o.id}>
|
||||
{o.name}
|
||||
{isNil(attachFilesCallback)
|
||||
? <div className="appPageSection__iconActions">
|
||||
<Button icon="pi pi-times" rounded
|
||||
type="button"
|
||||
size="small"
|
||||
onClick={(e) => confirmDelete(e, o.id)}
|
||||
outlined severity="danger"
|
||||
aria-label={__('Cancella', 'gepafin')}/>
|
||||
</div> : null}
|
||||
</li>) : <li>{__('Nessun file selezionato', 'gepafin')}</li>}
|
||||
</ul>
|
||||
<Button
|
||||
severity="success"
|
||||
@@ -205,7 +220,7 @@ const FileSelect = ({
|
||||
</div>
|
||||
: null}
|
||||
{infoText ? <small>{infoText}</small> : null}
|
||||
<ConfirmPopup />
|
||||
<ConfirmPopup/>
|
||||
</>)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user