fix advanced filter fields order with field groups (#10123)

* fix advanced filter fields order with field groups

* revert divider changes

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
This commit is contained in:
Azri Kahar
2021-12-11 04:04:17 +08:00
committed by GitHub
parent 00a838f020
commit a33f0a63c0

View File

@@ -45,16 +45,38 @@ export function useFieldTree(
const fields = fieldsStore
.getFieldsForCollection(collection!)
.concat(injectedFields || [])
.filter((field: Field) => !field.meta?.special?.includes('alias') && !field.meta?.special?.includes('no-data'))
.filter(
(field: Field) =>
field.meta?.special?.includes('group') ||
(!field.meta?.special?.includes('alias') && !field.meta?.special?.includes('no-data'))
);
const nonGroupFields = fields.filter((field: Field) => !field.meta?.group);
const sortGroupFields = (a: Field, b: Field) => {
if (!a.meta?.sort || !b.meta?.sort) return 0;
return a.meta.sort - b.meta.sort;
};
for (const [index, field] of nonGroupFields.entries()) {
const groupFields = fields.filter((groupField: Field) => groupField.meta?.group === field.field);
if (groupFields.length) {
nonGroupFields.splice(index + 1, 0, ...groupFields.sort(sortGroupFields));
}
}
const sortedFields = nonGroupFields
.filter((field) => !field.meta?.special?.includes('alias') && !field.meta?.special?.includes('no-data'))
.filter(filter)
.flatMap((field) => makeNode(field, parent));
return fields.length > 0 ? fields : undefined;
return sortedFields.length ? sortedFields : undefined;
}
function makeNode(field: Field, parent?: FieldNode): FieldNode | FieldNode[] {
const relatedCollections = getRelatedCollections(field);
const context = parent ? parent.key + '.' : '';
if (relatedCollections.length <= 1) {
return {
name: field.name,