- saving progress;
This commit is contained in:
@@ -241,9 +241,13 @@
|
|||||||
|
|
||||||
.formElementSettings__repeaterItem {
|
.formElementSettings__repeaterItem {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 4.5fr 2.4fr 1fr 1.4fr 0.7fr;
|
grid-template-columns: 1fr;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
|
||||||
|
&.tableRow {
|
||||||
|
grid-template-columns: 4.5fr 2.4fr 1fr 1.4fr 0.7fr;
|
||||||
|
}
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { isEmpty } from 'ramda';
|
|||||||
import DefaultCell from './components/DefaultCell';
|
import DefaultCell from './components/DefaultCell';
|
||||||
import LastRowCell from './components/LastRowCell';
|
import LastRowCell from './components/LastRowCell';
|
||||||
|
|
||||||
const RenderTable = ({ rowsData, columnsCfg, lastRowCfg, setRowsFn, disabled }) => {
|
const RenderTable = ({ rowsData = [], columnsCfg, lastRowCfg, setRowsFn, disabled }) => {
|
||||||
const table = useReactTable({
|
const table = useReactTable({
|
||||||
data: rowsData,
|
data: rowsData,
|
||||||
columns: columnsCfg,
|
columns: columnsCfg,
|
||||||
|
|||||||
@@ -122,13 +122,13 @@ const Table = ({
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const stateFieldData = pathOr([], ['stateFieldData'], tableColumns);
|
const stateFieldData = pathOr([], ['stateFieldData'], tableColumns);
|
||||||
const obj = stateFieldData
|
/*const obj = stateFieldData
|
||||||
.reduce((acc, cur) => {
|
.reduce((acc, cur) => {
|
||||||
acc[cur.name] = ''
|
acc[cur.name] = ''
|
||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});*/
|
||||||
let rowsData = pathOr([obj], ['rowsData'], tableColumns);
|
let rowsData = pathOr([], ['rowsData'], tableColumns);
|
||||||
rowsData = isEmpty(rowsData) ? [obj] : rowsData;
|
//rowsData = isEmpty(rowsData) ? [obj] : rowsData;
|
||||||
setColumnsCfg(stateFieldData);
|
setColumnsCfg(stateFieldData);
|
||||||
setRowsCfg(rowsData);
|
setRowsCfg(rowsData);
|
||||||
|
|
||||||
@@ -169,7 +169,8 @@ const Table = ({
|
|||||||
{label}{config.required || config.isRequired || (config.validate && config.validate.nonEmptyTables)
|
{label}{config.required || config.isRequired || (config.validate && config.validate.nonEmptyTables)
|
||||||
? <span className="appForm__field--required">*</span> : null}
|
? <span className="appForm__field--required">*</span> : null}
|
||||||
</label>
|
</label>
|
||||||
{rows ? <RenderTable
|
{rows
|
||||||
|
? <RenderTable
|
||||||
columnsCfg={columns}
|
columnsCfg={columns}
|
||||||
rowsData={rows}
|
rowsData={rows}
|
||||||
lastRowCfg={lastRow}
|
lastRowCfg={lastRow}
|
||||||
|
|||||||
10
src/helpers/isDateTimeInFuture.js
Normal file
10
src/helpers/isDateTimeInFuture.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
const isDateTimeInFuture = (dateStr, timeStr) => {
|
||||||
|
const [hours, minutes, seconds = 0] = timeStr.split(':').map(Number);
|
||||||
|
const dateTime = new Date(dateStr);
|
||||||
|
dateTime.setHours(hours, minutes, seconds);
|
||||||
|
const now = new Date();
|
||||||
|
|
||||||
|
return dateTime > now;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default isDateTimeInFuture;
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import React, { useState, useEffect} from 'react';
|
import React, { useState, useEffect} from 'react';
|
||||||
import { __ } from '@wordpress/i18n';
|
import { __, sprintf } from '@wordpress/i18n';
|
||||||
import { is, uniq, isNil, isEmpty } from 'ramda';
|
import { is, uniq, isNil, isEmpty } from 'ramda';
|
||||||
import { wrap } from 'object-path-immutable';
|
import { wrap } from 'object-path-immutable';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
@@ -30,6 +30,8 @@ import { Button } from 'primereact/button';
|
|||||||
// i18n
|
// i18n
|
||||||
import translationStrings from '../../../../translationStringsForComponents';
|
import translationStrings from '../../../../translationStringsForComponents';
|
||||||
import isDateTimeInPast from '../../../../helpers/isDateTimeInPast';
|
import isDateTimeInPast from '../../../../helpers/isDateTimeInPast';
|
||||||
|
import isDateTimeInFuture from '../../../../helpers/isDateTimeInFuture';
|
||||||
|
import { Badge } from 'primereact/badge';
|
||||||
|
|
||||||
const REACT_APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
const REACT_APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
||||||
|
|
||||||
@@ -182,18 +184,22 @@ const AllBandiAccordion = ({ showOnlyPreferred = false }) => {
|
|||||||
|
|
||||||
const rowExpansionTemplate = (data) => {
|
const rowExpansionTemplate = (data) => {
|
||||||
const isCallExpired = isDateTimeInPast(data.dates[1], data.endTime);
|
const isCallExpired = isDateTimeInPast(data.dates[1], data.endTime);
|
||||||
|
const isCallScheduled = isDateTimeInFuture(data.dates[0], data.startTime);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="p-3">
|
<div className="p-3">
|
||||||
{renderHtmlContent(data.descriptionShort)}
|
{renderHtmlContent(data.descriptionShort)}
|
||||||
<p>{__('Scadenza', 'gepafin')}: {getDateFromISOstring(data.dates[1])}</p>
|
<p>{__('Scadenza', 'gepafin')}: {getDateFromISOstring(data.dates[1])}</p>
|
||||||
{!isCallExpired && !isEmpty(chosenCompanyId) && chosenCompanyId !== 0 && (!data.confidi
|
{!isCallExpired && !isCallScheduled && !isEmpty(chosenCompanyId) && chosenCompanyId !== 0 && (!data.confidi
|
||||||
|| (data.confidi && data.id === 6 && REACT_APP_HUB_ID === 'p4lk3bcx1RStqTaIVVbXs'))
|
|| (data.confidi && data.id === 6 && REACT_APP_HUB_ID === 'p4lk3bcx1RStqTaIVVbXs'))
|
||||||
? <Button onClick={() => goToBandoPage(data.id)} severity="info">
|
? <Button onClick={() => goToBandoPage(data.id)} severity="info">
|
||||||
{__('Partecipa', 'gepafin')}
|
{__('Partecipa', 'gepafin')}
|
||||||
</Button> : null}
|
</Button> : null}
|
||||||
{isCallExpired
|
{isCallExpired
|
||||||
? <p>{__('È scaduto', 'gepafin')}</p> : null}
|
? <p><Badge value={__('È scaduto', 'gepafin')} severity="danger"></Badge></p> : null}
|
||||||
{isCallExpired || (!isEmpty(chosenCompanyId) && chosenCompanyId !== 0 && data.confidi
|
{isCallScheduled
|
||||||
|
? <p><Badge value={sprintf(__('È programmato. Inizia: %s %s', 'gepafin'), getDateFromISOstring(data.dates[0]), data.startTime)}></Badge></p> : null}
|
||||||
|
{isCallExpired || isCallScheduled || (!isEmpty(chosenCompanyId) && chosenCompanyId !== 0 && data.confidi
|
||||||
&& (data.id !== 6 || (data.id === 6 && REACT_APP_HUB_ID !== 'p4lk3bcx1RStqTaIVVbXs')))
|
&& (data.id !== 6 || (data.id === 6 && REACT_APP_HUB_ID !== 'p4lk3bcx1RStqTaIVVbXs')))
|
||||||
? <Button onClick={() => goToBandoPage(data.id)} severity="info">
|
? <Button onClick={() => goToBandoPage(data.id)} severity="info">
|
||||||
{__('Mostra', 'gepafin')}
|
{__('Mostra', 'gepafin')}
|
||||||
|
|||||||
@@ -685,7 +685,10 @@ const BandoApplication = () => {
|
|||||||
|
|
||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});
|
||||||
//console.log('validations', validations, o.name)
|
|
||||||
|
/*if (o.name === 'table') {
|
||||||
|
console.log('value:', values[o.id] ? values[o.id] : '')
|
||||||
|
}*/
|
||||||
|
|
||||||
return ['paragraph'].includes(o.name) && text
|
return ['paragraph'].includes(o.name) && text
|
||||||
? <div key={o.id}>
|
? <div key={o.id}>
|
||||||
|
|||||||
@@ -277,14 +277,14 @@ const ElementSettingCriteriaTableColumns = ({
|
|||||||
<>
|
<>
|
||||||
<div className="formElementSettings__repeater">
|
<div className="formElementSettings__repeater">
|
||||||
{stateFieldData.length > 0
|
{stateFieldData.length > 0
|
||||||
? <div className="formElementSettings__repeaterItem">
|
? <div className="formElementSettings__repeaterItem tableRow">
|
||||||
<div>{__('Colonne', 'gepafin')}</div>
|
<div>{__('Colonne', 'gepafin')}</div>
|
||||||
<div>{__('Tipo', 'gepafin')}</div>
|
<div>{__('Tipo', 'gepafin')}</div>
|
||||||
<div>{__('Calcola', 'gepafin')}</div>
|
<div>{__('Calcola', 'gepafin')}</div>
|
||||||
<div>{__('Predefinito?', 'gepafin')}</div>
|
<div>{__('Predefinito?', 'gepafin')}</div>
|
||||||
<div></div>
|
<div></div>
|
||||||
</div> : null}
|
</div> : null}
|
||||||
{stateFieldData.map((o, i) => <div key={i} className="formElementSettings__repeaterItem">
|
{stateFieldData.map((o, i) => <div key={i} className="formElementSettings__repeaterItem tableRow">
|
||||||
{properFields(o, i)}
|
{properFields(o, i)}
|
||||||
</div>)}
|
</div>)}
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -268,14 +268,14 @@ const ElementSettingTableColumns = ({
|
|||||||
<>
|
<>
|
||||||
<div className="formElementSettings__repeater">
|
<div className="formElementSettings__repeater">
|
||||||
{stateFieldData.length > 0
|
{stateFieldData.length > 0
|
||||||
? <div className="formElementSettings__repeaterItem">
|
? <div className="formElementSettings__repeaterItem tableRow">
|
||||||
<div>{__('Colonne', 'gepafin')}</div>
|
<div>{__('Colonne', 'gepafin')}</div>
|
||||||
<div>{__('Tipo', 'gepafin')}</div>
|
<div>{__('Tipo', 'gepafin')}</div>
|
||||||
<div>{__('Calcola', 'gepafin')}</div>
|
<div>{__('Calcola', 'gepafin')}</div>
|
||||||
<div>{__('Predefinito?', 'gepafin')}</div>
|
<div>{__('Predefinito?', 'gepafin')}</div>
|
||||||
<div></div>
|
<div></div>
|
||||||
</div> : null}
|
</div> : null}
|
||||||
{stateFieldData.map((o, i) => <div key={i} className="formElementSettings__repeaterItem">
|
{stateFieldData.map((o, i) => <div key={i} className="formElementSettings__repeaterItem tableRow">
|
||||||
{properFields(o, i)}
|
{properFields(o, i)}
|
||||||
</div>)}
|
</div>)}
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
Reference in New Issue
Block a user