filter in config and fixes

This commit is contained in:
2026-05-24 01:21:51 +05:30
parent 7ab5ce74b3
commit a3970d6a7b
5 changed files with 101 additions and 93 deletions

View File

@@ -16,7 +16,7 @@ interface ResourceViewProps {
import { GridPaginationModel } from '@mui/x-data-grid';
function getFilterDisplayFields(field: ResourceField): string[] {
if (!field.displayField) return ["name", "title", "label"];
if (!field.displayField) return [];
return (Array.isArray(field.displayField) ? field.displayField : [field.displayField]).filter(
(df): df is string => !!df
);
@@ -57,20 +57,32 @@ function applyClientFilters(
return true;
}
if (Array.isArray(filterValue)) {
if (itemValue && typeof itemValue === "object") {
const dispFields = getFilterDisplayFields(field);
const itemDisplay = dispFields.map((df) => itemValue[df]).filter((v) => v != null).join(" ");
return filterValue.includes(itemDisplay);
}
return filterValue.includes(String(itemValue));
}
if (!filterValue) return true;
if (field.type === "boolean") {
return String(itemValue) === filterValue;
}
if (field.type === "array" && Array.isArray(itemValue) && field.relation) {
const dispFields = getFilterDisplayFields(field);
return itemValue.some((el: any) =>
dispFields.some((df) => String(el[df]) === String(filterValue))
);
if (field.type === "array" && Array.isArray(itemValue)) {
return itemValue.some((el: any) => {
if (el != null && typeof el === "object") {
const dispFields = getFilterDisplayFields(field);
return dispFields.some((df) => String(el[df]) === String(filterValue));
}
return String(el) === String(filterValue);
});
}
if (field.relation && itemValue && typeof itemValue === "object") {
if (itemValue && typeof itemValue === "object") {
const dispFields = getFilterDisplayFields(field);
return dispFields.some((df) => String(itemValue[df]) === String(filterValue));
}