Remove non-existing fields with a warning (attempt to improve support for api-versioned use-case)

This commit is contained in:
2025-05-29 12:29:35 -05:00
parent 1da0f4f1de
commit 3da656c01f

View File

@ -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,
<Collapse in={Boolean(alertContent)}>
<Alert severity="error" sx={{mt: 1.5, mb: 0.5}} onClose={() => setAlertContent(null)}>{alertContent}</Alert>
</Collapse>
<Collapse in={Boolean(warning)}>
<Alert severity="warning" sx={{mt: 1.5, mb: 0.5}} onClose={() => setWarning(null)}>{warning}</Alert>
</Collapse>
<Box pt="0.5rem">
<Box display="flex" justifyContent="space-between" alignItems="center">
<h5>{label ?? "Query Filter"}</h5>