- fixed issue setting dates i ndatepicker;
- fixed styles and filters in tables;
This commit is contained in:
@@ -8,10 +8,15 @@
|
|||||||
.p-badge {
|
.p-badge {
|
||||||
color: var(--menuitem-active-color);
|
color: var(--menuitem-active-color);
|
||||||
}
|
}
|
||||||
.p-button:not(.p-button-outlined, .p-button-secondary, .p-confirm-popup-reject, .p-button-link),
|
.p-button:not(.p-button-outlined, .p-button-secondary, .p-confirm-popup-reject, .p-button-link, .p-column-filter-add-button, .p-column-filter-remove-button),
|
||||||
.p-button:not(.p-button-outlined, .p-button-secondary, .p-confirm-popup-reject, .p-button-link) span {
|
.p-button:not(.p-button-outlined, .p-button-secondary, .p-confirm-popup-reject, .p-button-link, .p-column-filter-add-button, .p-column-filter-remove-button) span {
|
||||||
color: var(--menuitem-active-color);
|
color: var(--menuitem-active-color);
|
||||||
}
|
}
|
||||||
|
.p-column-filter-remove-button {
|
||||||
|
span {
|
||||||
|
margin: 0 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
.p-fileupload-row {
|
.p-fileupload-row {
|
||||||
.p-button-danger {
|
.p-button-danger {
|
||||||
background-color: #f44336;
|
background-color: #f44336;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { is, isNil } from 'ramda';
|
|||||||
|
|
||||||
// store
|
// store
|
||||||
import { storeGet } from '../../store';
|
import { storeGet } from '../../store';
|
||||||
|
import formatDateString from '../../helpers/formatDateString';
|
||||||
|
|
||||||
const UnsavedChangesDetector = ({ getValuesFn }) => {
|
const UnsavedChangesDetector = ({ getValuesFn }) => {
|
||||||
const warnIfUnsavedChanges = (event) => {
|
const warnIfUnsavedChanges = (event) => {
|
||||||
@@ -16,16 +17,15 @@ const UnsavedChangesDetector = ({ getValuesFn }) => {
|
|||||||
formData.dates = [];
|
formData.dates = [];
|
||||||
|
|
||||||
if (formData.startDate) {
|
if (formData.startDate) {
|
||||||
let starDate;
|
let startDate;
|
||||||
|
|
||||||
if (is(String, formData.startDate)) {
|
if (is(String, formData.startDate)) {
|
||||||
starDate = formData.startDate;
|
startDate = formData.startDate;
|
||||||
} else {
|
} else {
|
||||||
const tzAwareDate = new TZDate(formData.startDate, 'Europe/Berlin');
|
startDate = formatDateString(formData.startDate);
|
||||||
starDate = tzAwareDate.toISOString().substring(0, 19);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
formData = wrap(formData).insert(['dates'], starDate, 0).value();
|
formData = wrap(formData).insert(['dates'], startDate, 0).value();
|
||||||
delete formData.startDate;
|
delete formData.startDate;
|
||||||
}
|
}
|
||||||
if (formData.endDate) {
|
if (formData.endDate) {
|
||||||
@@ -34,8 +34,7 @@ const UnsavedChangesDetector = ({ getValuesFn }) => {
|
|||||||
if (is(String, formData.endDate)) {
|
if (is(String, formData.endDate)) {
|
||||||
endDate = formData.endDate;
|
endDate = formData.endDate;
|
||||||
} else {
|
} else {
|
||||||
const tzAwareDate = new TZDate(formData.endDate, 'Europe/Berlin');
|
endDate = formatDateString(formData.endDate);
|
||||||
endDate = tzAwareDate.toISOString().substring(0, 19);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
formData = wrap(formData).insert(['dates'], endDate, 1).value();
|
formData = wrap(formData).insert(['dates'], endDate, 1).value();
|
||||||
|
|||||||
18
src/helpers/createUTCDate.js
Normal file
18
src/helpers/createUTCDate.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param dateObj {Date}
|
||||||
|
* @return {Date}
|
||||||
|
*/
|
||||||
|
const createUTCDate = (dateObj) => {
|
||||||
|
const comps = {
|
||||||
|
year: dateObj.getFullYear(),
|
||||||
|
month: dateObj.getMonth(),
|
||||||
|
day: dateObj.getDate(),
|
||||||
|
hours: dateObj.getHours(),
|
||||||
|
minutes: dateObj.getMinutes(),
|
||||||
|
seconds: dateObj.getSeconds()
|
||||||
|
};
|
||||||
|
return new Date(Date.UTC(comps.year, comps.month, comps.day, 0, 0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
export default createUTCDate;
|
||||||
13
src/helpers/formatDateString.js
Normal file
13
src/helpers/formatDateString.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param date {Date}
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
const formatDateString = (date) => {
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||||
|
const day = String(date.getDate()).padStart(2, '0');
|
||||||
|
return `${year}-${month}-${day}T00:00:00`;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default formatDateString;
|
||||||
@@ -14,9 +14,6 @@ import BandoService from '../../../../service/bando-service';
|
|||||||
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
||||||
import { DataTable } from 'primereact/datatable';
|
import { DataTable } from 'primereact/datatable';
|
||||||
import { Column } from 'primereact/column';
|
import { Column } from 'primereact/column';
|
||||||
import { InputText } from 'primereact/inputtext';
|
|
||||||
import { IconField } from 'primereact/iconfield';
|
|
||||||
import { InputIcon } from 'primereact/inputicon';
|
|
||||||
import { Dropdown } from 'primereact/dropdown';
|
import { Dropdown } from 'primereact/dropdown';
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Calendar } from 'primereact/calendar';
|
import { Calendar } from 'primereact/calendar';
|
||||||
@@ -30,7 +27,6 @@ const AllBandiTable = () => {
|
|||||||
const [items, setItems] = useState(null);
|
const [items, setItems] = useState(null);
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [statuses, setStatuses] = useState([]);
|
const [statuses, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -62,16 +58,6 @@ const AllBandiTable = () => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
@@ -80,17 +66,12 @@ const AllBandiTable = () => {
|
|||||||
end_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] },
|
end_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] },
|
||||||
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
return (
|
return (
|
||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search" />
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange} placeholder={__('Cerca', 'gepafin')} />
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -134,13 +115,13 @@ const AllBandiTable = () => {
|
|||||||
return(
|
return(
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
<Column field="name" header={__('Nome Bando', 'gepafin')}
|
<Column field="name" header={__('Nome Bando', 'gepafin')}
|
||||||
filter filterPlaceholder={__('Cerca', 'gepafin')}
|
filter sortable
|
||||||
|
filterPlaceholder={__('Cerca', 'gepafin')}
|
||||||
style={{ minWidth: '8rem' }}/>
|
style={{ minWidth: '8rem' }}/>
|
||||||
<Column header={__('Data Pubblicazione', 'gepafin')} filterField="start_date" dataType="date"
|
<Column header={__('Data Pubblicazione', 'gepafin')} filterField="start_date" dataType="date"
|
||||||
style={{ minWidth: '8rem' }}
|
style={{ minWidth: '8rem' }}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { __, sprintf } from '@wordpress/i18n';
|
|||||||
import { useParams } from 'react-router-dom';
|
import { useParams } from 'react-router-dom';
|
||||||
import { head, is, pluck, isEmpty, pathOr } from 'ramda';
|
import { head, is, pluck, isEmpty, pathOr } from 'ramda';
|
||||||
import { useForm } from 'react-hook-form';
|
import { useForm } from 'react-hook-form';
|
||||||
import { TZDate } from '@date-fns/tz';
|
|
||||||
import 'quill/dist/quill.core.css';
|
import 'quill/dist/quill.core.css';
|
||||||
import { wrap } from 'object-path-immutable';
|
import { wrap } from 'object-path-immutable';
|
||||||
|
|
||||||
@@ -40,6 +39,7 @@ import { Dialog } from 'primereact/dialog';
|
|||||||
import FileuploadApplicationSignedPdf from '../../components/FileuploadApplicationSignedPdf';
|
import FileuploadApplicationSignedPdf from '../../components/FileuploadApplicationSignedPdf';
|
||||||
|
|
||||||
import { defaultMaxFileSize } from '../../configData';
|
import { defaultMaxFileSize } from '../../configData';
|
||||||
|
import formatDateString from '../../helpers/formatDateString';
|
||||||
|
|
||||||
const BandoApplication = () => {
|
const BandoApplication = () => {
|
||||||
const chosenCompanyId = useStore().main.chosenCompanyId();
|
const chosenCompanyId = useStore().main.chosenCompanyId();
|
||||||
@@ -192,8 +192,7 @@ const BandoApplication = () => {
|
|||||||
let fieldVal = formValues[cur];
|
let fieldVal = formValues[cur];
|
||||||
|
|
||||||
if (formValues[cur] && formValues[cur].toISOString) {
|
if (formValues[cur] && formValues[cur].toISOString) {
|
||||||
const tzAwareDate = new TZDate(formValues[cur], 'Europe/Berlin');
|
fieldVal = formatDateString(formValues[cur]);
|
||||||
fieldVal = tzAwareDate.toISOString().substring(0, 19);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldVal = isEmpty(fieldVal) ? null : fieldVal;
|
fieldVal = isEmpty(fieldVal) ? null : fieldVal;
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import { isEmail } from '../../../../helpers/validators';
|
|||||||
import { storeSet } from '../../../../store';
|
import { storeSet } from '../../../../store';
|
||||||
import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
|
import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
|
||||||
import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString';
|
import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString';
|
||||||
|
import formatDateString from '../../../../helpers/formatDateString';
|
||||||
|
|
||||||
const BandoEditFormStep1 = forwardRef(function ({ initialData, setInitialData, getFormErrors, status }, ref) {
|
const BandoEditFormStep1 = forwardRef(function ({ initialData, setInitialData, getFormErrors, status }, ref) {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@@ -62,8 +63,7 @@ const BandoEditFormStep1 = forwardRef(function ({ initialData, setInitialData, g
|
|||||||
if (is(String, formData.startDate)) {
|
if (is(String, formData.startDate)) {
|
||||||
starDate = formData.startDate;
|
starDate = formData.startDate;
|
||||||
} else {
|
} else {
|
||||||
const tzAwareDate = new TZDate(formData.startDate, 'Europe/Berlin');
|
starDate = formatDateString(formData.startDate);
|
||||||
starDate = tzAwareDate.toISOString().substring(0, 19);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
formData = wrap(formData).insert(['dates'], starDate, 0).value();
|
formData = wrap(formData).insert(['dates'], starDate, 0).value();
|
||||||
@@ -74,8 +74,7 @@ const BandoEditFormStep1 = forwardRef(function ({ initialData, setInitialData, g
|
|||||||
if (is(String, formData.endDate)) {
|
if (is(String, formData.endDate)) {
|
||||||
endDate = formData.endDate;
|
endDate = formData.endDate;
|
||||||
} else {
|
} else {
|
||||||
const tzAwareDate = new TZDate(formData.endDate, 'Europe/Berlin');
|
endDate = formatDateString(formData.endDate);
|
||||||
endDate = tzAwareDate.toISOString().substring(0, 19);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
formData = wrap(formData).insert(['dates'], endDate, 1).value();
|
formData = wrap(formData).insert(['dates'], endDate, 1).value();
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import { storeSet } from '../../../../store';
|
|||||||
import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString';
|
import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString';
|
||||||
import { mimeTypes } from '../../../../configData';
|
import { mimeTypes } from '../../../../configData';
|
||||||
import { wrap } from 'object-path-immutable';
|
import { wrap } from 'object-path-immutable';
|
||||||
|
import formatDateString from '../../../../helpers/formatDateString';
|
||||||
|
|
||||||
const BandoEditFormStep2 = forwardRef(function ({ initialData, setInitialData, getFormErrors, status }, ref) {
|
const BandoEditFormStep2 = forwardRef(function ({ initialData, setInitialData, getFormErrors, status }, ref) {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@@ -60,8 +61,7 @@ const BandoEditFormStep2 = forwardRef(function ({ initialData, setInitialData, g
|
|||||||
if (is(String, formData.startDate)) {
|
if (is(String, formData.startDate)) {
|
||||||
starDate = formData.startDate;
|
starDate = formData.startDate;
|
||||||
} else {
|
} else {
|
||||||
const tzAwareDate = new TZDate(formData.startDate, 'Europe/Berlin');
|
starDate = formatDateString(formData.starDate);
|
||||||
starDate = tzAwareDate.toISOString().substring(0, 19);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
formData = wrap(formData).insert(['dates'], starDate, 0).value();
|
formData = wrap(formData).insert(['dates'], starDate, 0).value();
|
||||||
@@ -72,8 +72,7 @@ const BandoEditFormStep2 = forwardRef(function ({ initialData, setInitialData, g
|
|||||||
if (is(String, formData.endDate)) {
|
if (is(String, formData.endDate)) {
|
||||||
endDate = formData.endDate;
|
endDate = formData.endDate;
|
||||||
} else {
|
} else {
|
||||||
const tzAwareDate = new TZDate(formData.endDate, 'Europe/Berlin');
|
endDate = formatDateString(formData.endDate);
|
||||||
endDate = tzAwareDate.toISOString().substring(0, 19);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
formData = wrap(formData).insert(['dates'], endDate, 1).value();
|
formData = wrap(formData).insert(['dates'], endDate, 1).value();
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ const DraftApplicationsTable = () => {
|
|||||||
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
||||||
const [items, setItems] = useState(null);
|
const [items, setItems] = useState(null);
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [statuses, setStatuses] = useState([]);
|
const [statuses, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -79,16 +78,6 @@ const DraftApplicationsTable = () => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
@@ -96,6 +85,10 @@ const DraftApplicationsTable = () => {
|
|||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
},
|
},
|
||||||
|
companyName: {
|
||||||
|
operator: FilterOperator.AND,
|
||||||
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
|
},
|
||||||
modifiedDate: {
|
modifiedDate: {
|
||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
@@ -106,7 +99,6 @@ const DraftApplicationsTable = () => {
|
|||||||
},
|
},
|
||||||
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
@@ -114,28 +106,10 @@ const DraftApplicationsTable = () => {
|
|||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
||||||
onClick={clearFilter}/>
|
onClick={clearFilter}/>
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search"/>
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange}
|
|
||||||
placeholder={__('Cerca', 'gepafin')}/>
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*const dateModifyBodyTemplate = (rowData) => {
|
|
||||||
return formatDate(rowData.modifiedDate);
|
|
||||||
};
|
|
||||||
|
|
||||||
const dateEndBodyTemplate = (rowData) => {
|
|
||||||
return formatDate(rowData.callEndDate);
|
|
||||||
};
|
|
||||||
|
|
||||||
const dateFilterTemplate = (options) => {
|
|
||||||
return <Calendar value={options.value} onChange={(e) => options.filterCallback(e.value, options.index)}
|
|
||||||
dateFormat="mm/dd/yy" placeholder="mm/dd/yyyy" mask="99/99/9999"/>;
|
|
||||||
};*/
|
|
||||||
|
|
||||||
const statusBodyTemplate = (rowData) => {
|
const statusBodyTemplate = (rowData) => {
|
||||||
return <ProperBandoLabel status={rowData.status}/>;
|
return <ProperBandoLabel status={rowData.status}/>;
|
||||||
};
|
};
|
||||||
@@ -167,8 +141,7 @@ const DraftApplicationsTable = () => {
|
|||||||
return (
|
return (
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
|
|||||||
@@ -9,9 +9,6 @@ import BandoService from '../../../../service/bando-service';
|
|||||||
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
||||||
import { DataTable } from 'primereact/datatable';
|
import { DataTable } from 'primereact/datatable';
|
||||||
import { Column } from 'primereact/column';
|
import { Column } from 'primereact/column';
|
||||||
import { InputText } from 'primereact/inputtext';
|
|
||||||
import { IconField } from 'primereact/iconfield';
|
|
||||||
import { InputIcon } from 'primereact/inputicon';
|
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Calendar } from 'primereact/calendar';
|
import { Calendar } from 'primereact/calendar';
|
||||||
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
||||||
@@ -23,7 +20,6 @@ const LatestBandiTable = () => {
|
|||||||
const [items, setItems] = useState(null);
|
const [items, setItems] = useState(null);
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [, setStatuses] = useState([]);
|
const [, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -66,16 +62,6 @@ const LatestBandiTable = () => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
@@ -84,17 +70,12 @@ const LatestBandiTable = () => {
|
|||||||
end_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] },
|
end_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] },
|
||||||
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }
|
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
return (
|
return (
|
||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search" />
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange} placeholder={__('Cerca', 'gepafin')} />
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -126,12 +107,13 @@ const LatestBandiTable = () => {
|
|||||||
return(
|
return(
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
<Column field="name" header={__('Nome Bando', 'gepafin')} filter filterPlaceholder={__('Cerca il nome', 'gepafin')}
|
<Column field="name" header={__('Nome Bando', 'gepafin')}
|
||||||
|
filter sortable
|
||||||
|
filterPlaceholder={__('Cerca il nome', 'gepafin')}
|
||||||
style={{ minWidth: '8rem' }}/>
|
style={{ minWidth: '8rem' }}/>
|
||||||
<Column header={__('Data Pubblicazione', 'gepafin')} filterField="start_date" dataType="date"
|
<Column header={__('Data Pubblicazione', 'gepafin')} filterField="start_date" dataType="date"
|
||||||
style={{ minWidth: '8rem' }}
|
style={{ minWidth: '8rem' }}
|
||||||
|
|||||||
@@ -17,9 +17,6 @@ import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse
|
|||||||
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
||||||
import { DataTable } from 'primereact/datatable';
|
import { DataTable } from 'primereact/datatable';
|
||||||
import { Column } from 'primereact/column';
|
import { Column } from 'primereact/column';
|
||||||
import { InputText } from 'primereact/inputtext';
|
|
||||||
import { IconField } from 'primereact/iconfield';
|
|
||||||
import { InputIcon } from 'primereact/inputicon';
|
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Calendar } from 'primereact/calendar';
|
import { Calendar } from 'primereact/calendar';
|
||||||
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
||||||
@@ -32,7 +29,6 @@ const LatestBandiTable = () => {
|
|||||||
const [items, setItems] = useState(null);
|
const [items, setItems] = useState(null);
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [, setStatuses] = useState([]);
|
const [, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -130,16 +126,6 @@ const LatestBandiTable = () => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
@@ -157,7 +143,6 @@ const LatestBandiTable = () => {
|
|||||||
},
|
},
|
||||||
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }
|
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
@@ -165,11 +150,6 @@ const LatestBandiTable = () => {
|
|||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
||||||
onClick={clearFilter}/>
|
onClick={clearFilter}/>
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search"/>
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange}
|
|
||||||
placeholder={__('Cerca', 'gepafin')}/>
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -210,12 +190,12 @@ const LatestBandiTable = () => {
|
|||||||
return (
|
return (
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={items} paginator showGridlines rows={10} loading={loading} dataKey="id"
|
<DataTable value={items} paginator showGridlines rows={10} loading={loading} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
<Column field="name" header={__('Nome Bando', 'gepafin')} filter
|
<Column field="name" header={__('Nome Bando', 'gepafin')}
|
||||||
|
filter sortable
|
||||||
filterPlaceholder={__('Cerca il nome', 'gepafin')}
|
filterPlaceholder={__('Cerca il nome', 'gepafin')}
|
||||||
style={{ minWidth: '8rem' }}/>
|
style={{ minWidth: '8rem' }}/>
|
||||||
<Column header={__('Data Pubblicazione', 'gepafin')} filterField="start_date" dataType="date"
|
<Column header={__('Data Pubblicazione', 'gepafin')} filterField="start_date" dataType="date"
|
||||||
|
|||||||
@@ -16,9 +16,6 @@ import ApplicationService from '../../../../service/application-service';
|
|||||||
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
||||||
import { DataTable } from 'primereact/datatable';
|
import { DataTable } from 'primereact/datatable';
|
||||||
import { Column } from 'primereact/column';
|
import { Column } from 'primereact/column';
|
||||||
import { InputText } from 'primereact/inputtext';
|
|
||||||
import { IconField } from 'primereact/iconfield';
|
|
||||||
import { InputIcon } from 'primereact/inputicon';
|
|
||||||
import { Dropdown } from 'primereact/dropdown';
|
import { Dropdown } from 'primereact/dropdown';
|
||||||
import { ProgressBar } from 'primereact/progressbar';
|
import { ProgressBar } from 'primereact/progressbar';
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
@@ -33,7 +30,6 @@ const MyLatestSubmissionsTable = () => {
|
|||||||
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
||||||
const [items, setItems] = useState(null);
|
const [items, setItems] = useState(null);
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [statuses, setStatuses] = useState([]);
|
const [statuses, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -82,16 +78,6 @@ const MyLatestSubmissionsTable = () => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
@@ -99,6 +85,10 @@ const MyLatestSubmissionsTable = () => {
|
|||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
},
|
},
|
||||||
|
companyName: {
|
||||||
|
operator: FilterOperator.AND,
|
||||||
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
|
},
|
||||||
modifiedDate: {
|
modifiedDate: {
|
||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
@@ -109,7 +99,6 @@ const MyLatestSubmissionsTable = () => {
|
|||||||
},
|
},
|
||||||
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
@@ -117,11 +106,6 @@ const MyLatestSubmissionsTable = () => {
|
|||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
||||||
onClick={clearFilter}/>
|
onClick={clearFilter}/>
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search"/>
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange}
|
|
||||||
placeholder={__('Cerca', 'gepafin')}/>
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -173,13 +157,12 @@ const MyLatestSubmissionsTable = () => {
|
|||||||
return (
|
return (
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
<Column field="callTitle" header={__('Bando', 'gepafin')}
|
<Column field="callTitle" header={__('Bando', 'gepafin')}
|
||||||
sortable
|
filter sortable
|
||||||
filterPlaceholder={__('Cerca il nome', 'gepafin')}
|
filterPlaceholder={__('Cerca il nome', 'gepafin')}
|
||||||
style={{ minWidth: '8rem' }}/>
|
style={{ minWidth: '8rem' }}/>
|
||||||
<Column field="companyName" header={__('Azienda', 'gepafin')}
|
<Column field="companyName" header={__('Azienda', 'gepafin')}
|
||||||
|
|||||||
@@ -17,9 +17,6 @@ import getBandoSeverity from '../../../../helpers/getBandoSeverity';
|
|||||||
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
||||||
import { DataTable } from 'primereact/datatable';
|
import { DataTable } from 'primereact/datatable';
|
||||||
import { Column } from 'primereact/column';
|
import { Column } from 'primereact/column';
|
||||||
import { InputText } from 'primereact/inputtext';
|
|
||||||
import { IconField } from 'primereact/iconfield';
|
|
||||||
import { InputIcon } from 'primereact/inputicon';
|
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Calendar } from 'primereact/calendar';
|
import { Calendar } from 'primereact/calendar';
|
||||||
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
||||||
@@ -33,7 +30,6 @@ const PreInstructorDomandeTable = () => {
|
|||||||
const [items, setItems] = useState(null);
|
const [items, setItems] = useState(null);
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [statuses, setStatuses] = useState([]);
|
const [statuses, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -76,16 +72,6 @@ const PreInstructorDomandeTable = () => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
@@ -93,6 +79,10 @@ const PreInstructorDomandeTable = () => {
|
|||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
},
|
},
|
||||||
|
companyName: {
|
||||||
|
operator: FilterOperator.AND,
|
||||||
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
|
},
|
||||||
submissionDate: {
|
submissionDate: {
|
||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
@@ -102,17 +92,12 @@ const PreInstructorDomandeTable = () => {
|
|||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
return (
|
return (
|
||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search" />
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange} placeholder={__('Cerca', 'gepafin')} />
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -152,8 +137,7 @@ const PreInstructorDomandeTable = () => {
|
|||||||
return(
|
return(
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
|
|||||||
@@ -677,7 +677,7 @@ const DomandaEditPreInstructor = () => {
|
|||||||
onClick={doCheckNDG}
|
onClick={doCheckNDG}
|
||||||
label={__('Controlla NDG', 'gepafin')}
|
label={__('Controlla NDG', 'gepafin')}
|
||||||
/> : null}
|
/> : null}
|
||||||
{APP_EVALUATION_FLOW_ID === '1' && ['EVALUATION'].includes(data.applicationStatus)
|
{APP_EVALUATION_FLOW_ID === '1' && ['EVALUATION'].includes(data.applicationStatus) && data.ndg
|
||||||
? <Button
|
? <Button
|
||||||
type="button"
|
type="button"
|
||||||
disabled={!data.id}
|
disabled={!data.id}
|
||||||
|
|||||||
@@ -3,9 +3,6 @@ import { __ } from '@wordpress/i18n';
|
|||||||
import { is, uniq } from 'ramda';
|
import { is, uniq } from 'ramda';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
// store
|
|
||||||
//import { storeSet, storeGet } from '../../../../store';
|
|
||||||
|
|
||||||
// api
|
// api
|
||||||
import ApplicationService from '../../../../service/application-service';
|
import ApplicationService from '../../../../service/application-service';
|
||||||
|
|
||||||
@@ -13,9 +10,6 @@ import ApplicationService from '../../../../service/application-service';
|
|||||||
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
||||||
import { DataTable } from 'primereact/datatable';
|
import { DataTable } from 'primereact/datatable';
|
||||||
import { Column } from 'primereact/column';
|
import { Column } from 'primereact/column';
|
||||||
import { InputText } from 'primereact/inputtext';
|
|
||||||
import { IconField } from 'primereact/iconfield';
|
|
||||||
import { InputIcon } from 'primereact/inputicon';
|
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Calendar } from 'primereact/calendar';
|
import { Calendar } from 'primereact/calendar';
|
||||||
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
||||||
@@ -26,7 +20,6 @@ const AllDomandeTable = ({ openDialogFn, updaterString = '' }) => {
|
|||||||
const [items, setItems] = useState(null);
|
const [items, setItems] = useState(null);
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [, setStatuses] = useState([]);
|
const [, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -70,16 +63,6 @@ const AllDomandeTable = ({ openDialogFn, updaterString = '' }) => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
@@ -87,6 +70,10 @@ const AllDomandeTable = ({ openDialogFn, updaterString = '' }) => {
|
|||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
},
|
},
|
||||||
|
companyName: {
|
||||||
|
operator: FilterOperator.AND,
|
||||||
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
|
},
|
||||||
submissionDate: {
|
submissionDate: {
|
||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
@@ -96,7 +83,6 @@ const AllDomandeTable = ({ openDialogFn, updaterString = '' }) => {
|
|||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
@@ -104,11 +90,6 @@ const AllDomandeTable = ({ openDialogFn, updaterString = '' }) => {
|
|||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
||||||
onClick={clearFilter}/>
|
onClick={clearFilter}/>
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search"/>
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange}
|
|
||||||
placeholder={__('Cerca', 'gepafin')}/>
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -152,8 +133,7 @@ const AllDomandeTable = ({ openDialogFn, updaterString = '' }) => {
|
|||||||
return (
|
return (
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
|
|||||||
@@ -17,9 +17,6 @@ import getBandoSeverity from '../../../../helpers/getBandoSeverity';
|
|||||||
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
||||||
import { DataTable } from 'primereact/datatable';
|
import { DataTable } from 'primereact/datatable';
|
||||||
import { Column } from 'primereact/column';
|
import { Column } from 'primereact/column';
|
||||||
import { InputText } from 'primereact/inputtext';
|
|
||||||
import { IconField } from 'primereact/iconfield';
|
|
||||||
import { InputIcon } from 'primereact/inputicon';
|
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Calendar } from 'primereact/calendar';
|
import { Calendar } from 'primereact/calendar';
|
||||||
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
||||||
@@ -33,7 +30,6 @@ const BeneficiarioDomandeTable = () => {
|
|||||||
const [items, setItems] = useState(null);
|
const [items, setItems] = useState(null);
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [statuses, setStatuses] = useState([]);
|
const [statuses, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -83,16 +79,6 @@ const BeneficiarioDomandeTable = () => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
@@ -100,6 +86,10 @@ const BeneficiarioDomandeTable = () => {
|
|||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
},
|
},
|
||||||
|
companyName: {
|
||||||
|
operator: FilterOperator.AND,
|
||||||
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
|
},
|
||||||
modifiedDate: {
|
modifiedDate: {
|
||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
@@ -109,7 +99,6 @@ const BeneficiarioDomandeTable = () => {
|
|||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
@@ -117,11 +106,6 @@ const BeneficiarioDomandeTable = () => {
|
|||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
||||||
onClick={clearFilter}/>
|
onClick={clearFilter}/>
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search"/>
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange}
|
|
||||||
placeholder={__('Cerca', 'gepafin')}/>
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -167,8 +151,7 @@ const BeneficiarioDomandeTable = () => {
|
|||||||
return (
|
return (
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
|
|||||||
@@ -17,9 +17,6 @@ import getBandoSeverity from '../../../../helpers/getBandoSeverity';
|
|||||||
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
||||||
import { DataTable } from 'primereact/datatable';
|
import { DataTable } from 'primereact/datatable';
|
||||||
import { Column } from 'primereact/column';
|
import { Column } from 'primereact/column';
|
||||||
import { InputText } from 'primereact/inputtext';
|
|
||||||
import { IconField } from 'primereact/iconfield';
|
|
||||||
import { InputIcon } from 'primereact/inputicon';
|
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Calendar } from 'primereact/calendar';
|
import { Calendar } from 'primereact/calendar';
|
||||||
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
||||||
@@ -33,7 +30,6 @@ const PreInstructorSoccorsiTable = ({ openDialogFn }) => {
|
|||||||
const [items, setItems] = useState(null);
|
const [items, setItems] = useState(null);
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
const [localAsyncRequest, setLocalAsyncRequest] = useState(false);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [statuses, setStatuses] = useState([]);
|
const [statuses, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -75,16 +71,6 @@ const PreInstructorSoccorsiTable = ({ openDialogFn }) => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
@@ -105,17 +91,12 @@ const PreInstructorSoccorsiTable = ({ openDialogFn }) => {
|
|||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
return (
|
return (
|
||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search" />
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange} placeholder={__('Cerca', 'gepafin')} />
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -125,7 +106,7 @@ const PreInstructorSoccorsiTable = ({ openDialogFn }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const dateExpirationBodyTemplate = (rowData) => {
|
const dateExpirationBodyTemplate = (rowData) => {
|
||||||
return formatDate(rowData.expirationDate);
|
return rowData.expirationDate ? formatDate(rowData.expirationDate) : '';
|
||||||
};
|
};
|
||||||
|
|
||||||
const dateFilterTemplate = (options) => {
|
const dateFilterTemplate = (options) => {
|
||||||
@@ -155,8 +136,7 @@ const PreInstructorSoccorsiTable = ({ openDialogFn }) => {
|
|||||||
return(
|
return(
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
<DataTable value={items} paginator showGridlines rows={10} loading={localAsyncRequest} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
|
|||||||
@@ -18,9 +18,6 @@ import UserService from '../../../../service/user-service';
|
|||||||
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
import { FilterMatchMode, FilterOperator } from 'primereact/api';
|
||||||
import { DataTable } from 'primereact/datatable';
|
import { DataTable } from 'primereact/datatable';
|
||||||
import { Column } from 'primereact/column';
|
import { Column } from 'primereact/column';
|
||||||
import { InputText } from 'primereact/inputtext';
|
|
||||||
import { IconField } from 'primereact/iconfield';
|
|
||||||
import { InputIcon } from 'primereact/inputicon';
|
|
||||||
import { Dropdown } from 'primereact/dropdown';
|
import { Dropdown } from 'primereact/dropdown';
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Calendar } from 'primereact/calendar';
|
import { Calendar } from 'primereact/calendar';
|
||||||
@@ -32,7 +29,6 @@ const AllUsersTable = () => {
|
|||||||
const users = useStore().main.users();
|
const users = useStore().main.users();
|
||||||
const [filters, setFilters] = useState(null);
|
const [filters, setFilters] = useState(null);
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [globalFilterValue, setGlobalFilterValue] = useState('');
|
|
||||||
const [statuses, setStatuses] = useState([]);
|
const [statuses, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -64,30 +60,18 @@ const AllUsersTable = () => {
|
|||||||
initFilters();
|
initFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onGlobalFilterChange = (e) => {
|
|
||||||
const value = e.target.value;
|
|
||||||
let _filters = { ...filters };
|
|
||||||
|
|
||||||
_filters['global'].value = value;
|
|
||||||
|
|
||||||
setFilters(_filters);
|
|
||||||
setGlobalFilterValue(value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const initFilters = () => {
|
const initFilters = () => {
|
||||||
setFilters({
|
setFilters({
|
||||||
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
global: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
name: {
|
email: {
|
||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
|
||||||
},
|
},
|
||||||
lastLogin: {
|
lastLogin: {
|
||||||
operator: FilterOperator.AND,
|
operator: FilterOperator.AND,
|
||||||
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
|
||||||
},
|
}
|
||||||
status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] },
|
|
||||||
});
|
});
|
||||||
setGlobalFilterValue('');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
@@ -95,11 +79,6 @@ const AllUsersTable = () => {
|
|||||||
<div className="appTableHeader">
|
<div className="appTableHeader">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
||||||
onClick={clearFilter}/>
|
onClick={clearFilter}/>
|
||||||
<IconField iconPosition="left">
|
|
||||||
<InputIcon className="pi pi-search"/>
|
|
||||||
<InputText value={globalFilterValue} onChange={onGlobalFilterChange}
|
|
||||||
placeholder={__('Cerca', 'gepafin')}/>
|
|
||||||
</IconField>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -158,24 +137,25 @@ const AllUsersTable = () => {
|
|||||||
return (
|
return (
|
||||||
<div className="appPageSection__table">
|
<div className="appPageSection__table">
|
||||||
<DataTable value={users} paginator showGridlines rows={10} loading={loading} dataKey="id"
|
<DataTable value={users} paginator showGridlines rows={10} loading={loading} dataKey="id"
|
||||||
filters={filters}
|
filters={filters} stripedRows removableSort
|
||||||
globalFilterFields={['name', 'status']}
|
|
||||||
header={header}
|
header={header}
|
||||||
emptyMessage={translationStrings.emptyMessage}
|
emptyMessage={translationStrings.emptyMessage}
|
||||||
onFilter={(e) => setFilters(e.filters)}>
|
onFilter={(e) => setFilters(e.filters)}>
|
||||||
<Column body={nameBodyTemplate}
|
<Column body={nameBodyTemplate}
|
||||||
header={__('Nome utente', 'gepafin')}
|
header={__('Nome utente', 'gepafin')}
|
||||||
filter filterPlaceholder={__('Cerca per nome', 'gepafin')}
|
filterPlaceholder={__('Cerca per nome', 'gepafin')}
|
||||||
style={{ minWidth: '12rem' }}/>
|
style={{ minWidth: '12rem' }}/>
|
||||||
<Column body={roleEmailTemplate} header={__('Email', 'gepafin')}
|
<Column body={roleEmailTemplate} header={__('Email', 'gepafin')}
|
||||||
filter filterPlaceholder={__('Cerca per email', 'gepafin')}
|
filter sortable
|
||||||
|
field="email"
|
||||||
|
filterPlaceholder={__('Cerca per email', 'gepafin')}
|
||||||
style={{ minWidth: '12rem' }}/>
|
style={{ minWidth: '12rem' }}/>
|
||||||
<Column body={roleBodyTemplate} header={__('Ruolo', 'gepafin')}
|
<Column body={roleBodyTemplate} header={__('Ruolo', 'gepafin')}
|
||||||
style={{ minWidth: '12rem' }}/>
|
style={{ minWidth: '12rem' }}/>
|
||||||
<Column field="status" header={__('Stato', 'gepafin')}
|
<Column field="status" header={__('Stato', 'gepafin')}
|
||||||
filterMenuStyle={{ width: '14rem' }}
|
filterMenuStyle={{ width: '14rem' }}
|
||||||
style={{ width: '120px' }} body={statusBodyTemplate}
|
style={{ width: '120px' }} body={statusBodyTemplate}
|
||||||
filter filterElement={statusFilterTemplate}/>
|
filterElement={statusFilterTemplate}/>
|
||||||
<Column header={__('Ultimo accesso', 'gepafin')}
|
<Column header={__('Ultimo accesso', 'gepafin')}
|
||||||
filterField="lastLogin" dataType="date"
|
filterField="lastLogin" dataType="date"
|
||||||
style={{ minWidth: '10rem' }}
|
style={{ minWidth: '10rem' }}
|
||||||
|
|||||||
Reference in New Issue
Block a user