- saving progress;

This commit is contained in:
Vitalii Kiiko
2025-01-31 17:24:39 +01:00
parent 99dabb607f
commit eff571f054
8 changed files with 40 additions and 16 deletions

View File

@@ -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;

View File

@@ -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,

View File

@@ -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}

View 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;

View File

@@ -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')}

View File

@@ -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}>

View File

@@ -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

View File

@@ -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