From 3da656c01ffb612ad60e0735e881adf3e18604f1 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Thu, 29 May 2025 12:29:35 -0500 Subject: [PATCH] Remove non-existing fields with a warning (attempt to improve support for api-versioned use-case) --- .../misc/FilterAndColumnsSetupWidget.tsx | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/qqq/components/widgets/misc/FilterAndColumnsSetupWidget.tsx b/src/qqq/components/widgets/misc/FilterAndColumnsSetupWidget.tsx index 79194bd..4a22fe9 100644 --- a/src/qqq/components/widgets/misc/FilterAndColumnsSetupWidget.tsx +++ b/src/qqq/components/widgets/misc/FilterAndColumnsSetupWidget.tsx @@ -43,6 +43,7 @@ import QQueryColumns, {Column} from "qqq/models/query/QQueryColumns"; import RecordQuery from "qqq/pages/records/query/RecordQuery"; import Client from "qqq/utils/qqq/Client"; import FilterUtils from "qqq/utils/qqq/FilterUtils"; +import TableUtils from "qqq/utils/qqq/TableUtils"; import React, {useContext, useEffect, useRef, useState} from "react"; interface FilterAndColumnsSetupWidgetProps @@ -102,6 +103,7 @@ export default function FilterAndColumnsSetupWidget({isEditable: isEditableProp, const [columnsFieldName] = useState(widgetData?.columnsFieldName ?? "columnsJson"); const [alertContent, setAlertContent] = useState(null as string); + const [warning, setWarning] = useState(null as string); const [widgetFailureAlertContent, setWidgetFailureAlertContent] = useState(null as string); ////////////////////////////////////////////////////////////////////////////////////////////////// @@ -217,11 +219,28 @@ export default function FilterAndColumnsSetupWidget({isEditable: isEditableProp, setTableMetaData(tableMetaData); const queryFilterForFrontend = Object.assign({}, queryFilter); + + let warnings: string[] = []; + for (let i = 0; i < queryFilterForFrontend?.criteria?.length; i++) + { + const criteria = queryFilter.criteria[i]; + let [field, fieldTable] = TableUtils.getFieldAndTable(tableMetaData, criteria.fieldName); + if(!field) + { + warnings.push("Removing non-existing filter field: " + criteria.fieldName); + queryFilterForFrontend.criteria.splice(i, 1); + i--; + } + } + await FilterUtils.cleanupValuesInFilerFromQueryString(qController, tableMetaData, queryFilterForFrontend); setFrontendQueryFilter(queryFilterForFrontend); + + setWarning(warnings.join("; ")); } catch (e) { + console.log(e); //@ts-ignore e.message setWidgetFailureAlertContent("Error preparing filter widget: " + (e.message ?? "Details not available.")); } @@ -417,6 +436,9 @@ export default function FilterAndColumnsSetupWidget({isEditable: isEditableProp, setAlertContent(null)}>{alertContent} + + setWarning(null)}>{warning} +
{label ?? "Query Filter"}