diff --git a/src/pages/BandoApplication/index.js b/src/pages/BandoApplication/index.js index 4e79367..2641399 100644 --- a/src/pages/BandoApplication/index.js +++ b/src/pages/BandoApplication/index.js @@ -574,12 +574,17 @@ const BandoApplication = () => { const formula = head(o.settings.filter(o => o.name === 'formula')); if (formula && !isEmpty(formula.value)) { - context = getTokens(formula.value) - .filter(v => !['false', 'null', 'true'].includes(v)) - .reduce((acc, cur) => { - acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); - return acc; - }, context); + try { + context = getTokens(formula.value) + .filter(v => !['false', 'null', 'true'].includes(v)) + .reduce((acc, cur) => { + acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); + return acc; + }, context); + } catch { + console.error('Error in formula', formula) + context = {} + } const mathFormula = renderWithDataVars(formula.value, context); try { diff --git a/src/pages/BandoApplicationPreview/index.js b/src/pages/BandoApplicationPreview/index.js index 3f1d420..cf0d3b7 100644 --- a/src/pages/BandoApplicationPreview/index.js +++ b/src/pages/BandoApplicationPreview/index.js @@ -288,12 +288,17 @@ const BandoApplicationPreview = () => { const formula = head(o.settings.filter(o => o.name === 'formula')); if (formula && !isEmpty(formula.value)) { - context = getTokens(formula.value) - .filter(v => !['false', 'null', 'true'].includes(v)) - .reduce((acc, cur) => { - acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); - return acc; - }, context); + try { + context = getTokens(formula.value) + .filter(v => !['false', 'null', 'true'].includes(v)) + .reduce((acc, cur) => { + acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); + return acc; + }, context); + } catch { + console.error('Error in formula', formula) + context = {} + } const mathFormula = renderWithDataVars(formula.value, context); try { updatedFormValues[o.id] = evaluate(mathFormula); diff --git a/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js b/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js index be87424..1acc98a 100644 --- a/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js +++ b/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js @@ -22,6 +22,7 @@ import ElementSettingTableColumnsForCsv from '../ElementSettingTableColumnsForCs import { mimeTypes } from '../../../../../../configData'; import ElementSettingReportHeader from '../ElementSettingReportHeader'; import ElementSettingReportEnable from '../ElementSettingReportEnable'; +import getTokens from '../../../../../../helpers/getTokens'; const ElementSetting = ({ setting, changeFn, updateDataFn, bandoStatus }) => { @@ -72,6 +73,15 @@ const ElementSetting = ({ setting, changeFn, updateDataFn, bandoStatus }) => { const header = renderHeader(); + const invalidFormula = (value) => { + try { + const context = getTokens(value) + return false; + } catch { + return __('Potrebbe essere un errore nella formula!') + } + } + const getProperField = (setting) => { if (setting.name === 'options') { return { name={setting.name} bandoStatus={bandoStatus} setDataFn={updateDataFn}/> + } else if (setting.name === 'formula') { + const isInvalid = invalidFormula(setting.value); + return <> + changeFn(e.target.value, setting.name)}/> +

{isInvalid}

+ } else { return { const formula = head(o.settings.filter(o => o.name === 'formula')); if (formula && !isEmpty(formula.value)) { - context = getTokens(formula.value) - .filter(v => !['false', 'null', 'true'].includes(v)) - .reduce((acc, cur) => { - acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); - return acc; - }, context); + try { + context = getTokens(formula.value) + .filter(v => !['false', 'null', 'true'].includes(v)) + .reduce((acc, cur) => { + acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); + return acc; + }, context); + } catch { + console.error('Error in formula', formula) + context = {} + } const mathFormula = renderWithDataVars(formula.value, context); try { updatedFormValues[o.id] = evaluate(mathFormula); diff --git a/src/pages/DashboardInstructorManager/components/LatestBandiTableInstructorManagerAsync/index.js b/src/pages/DashboardInstructorManager/components/LatestBandiTableInstructorManagerAsync/index.js index 1bd8030..1f6292d 100644 --- a/src/pages/DashboardInstructorManager/components/LatestBandiTableInstructorManagerAsync/index.js +++ b/src/pages/DashboardInstructorManager/components/LatestBandiTableInstructorManagerAsync/index.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState, useCallback, useMemo } from 'react'; +import React, { useEffect, useState, useCallback } from 'react'; import { __ } from '@wordpress/i18n'; import translationStrings from '../../../../translationStringsForComponents'; diff --git a/src/pages/DomandaEditInstructorManager/index.js b/src/pages/DomandaEditInstructorManager/index.js index 0a70d10..f1c63ba 100644 --- a/src/pages/DomandaEditInstructorManager/index.js +++ b/src/pages/DomandaEditInstructorManager/index.js @@ -940,13 +940,17 @@ const DomandaEditInstructorManager = () => { const formula = head(o.settings.filter(o => o.name === 'formula')); if (formula && !isEmpty(formula.value)) { - context = getTokens(formula.value) - .filter(v => !['false', 'null', 'true'].includes(v)) - .reduce((acc, cur) => { - acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); - return acc; - }, context); - + try { + context = getTokens(formula.value) + .filter(v => !['false', 'null', 'true'].includes(v)) + .reduce((acc, cur) => { + acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); + return acc; + }, context); + } catch { + console.error('Error in formula', formula) + context = {} + } const mathFormula = renderWithDataVars(formula.value, context); try { updatedFormValues[o.id] = evaluate(mathFormula); diff --git a/src/pages/DomandaEditPreInstructor/index.js b/src/pages/DomandaEditPreInstructor/index.js index 2d0604c..80be4b7 100644 --- a/src/pages/DomandaEditPreInstructor/index.js +++ b/src/pages/DomandaEditPreInstructor/index.js @@ -940,12 +940,17 @@ const DomandaEditPreInstructor = () => { const formula = head(o.settings.filter(o => o.name === 'formula')); if (formula && !isEmpty(formula.value)) { - context = getTokens(formula.value) - .filter(v => !['false', 'null', 'true'].includes(v)) - .reduce((acc, cur) => { - acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); - return acc; - }, context); + try { + context = getTokens(formula.value) + .filter(v => !['false', 'null', 'true'].includes(v)) + .reduce((acc, cur) => { + acc[cur] = isNil(context[cur]) ? 0 : parseCommaDecimal(context[cur]); + return acc; + }, context); + } catch { + console.error('Error in formula', formula) + context = {} + } const mathFormula = renderWithDataVars(formula.value, context); try {