2454 update filter definition to work with new backend (#2482)

* wip

* filters are working

* updated functions

* remove comment

* improve readability
This commit is contained in:
bosiraphael
2023-11-13 18:05:49 +01:00
committed by GitHub
parent 3de2fc72dc
commit 230459b23c
9 changed files with 133 additions and 50 deletions
@@ -1,16 +0,0 @@
import { FilterDefinition } from '@/ui/object/object-filter-dropdown/types/FilterDefinition';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
export const formatFieldMetadataItemAsFilterDefinition = ({
field,
icons,
}: {
field: ObjectMetadataItem['fields'][0];
icons: Record<string, any>;
}): FilterDefinition => ({
fieldMetadataId: field.id,
label: field.label,
Icon: icons[field.icon ?? 'Icon123'],
type: 'TEXT',
});
@@ -1,15 +0,0 @@
import { SortDefinition } from '@/ui/object/object-sort-dropdown/types/SortDefinition';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
export const formatFieldMetadataItemAsSortDefinition = ({
field,
icons,
}: {
field: ObjectMetadataItem['fields'][0];
icons: Record<string, any>;
}): SortDefinition => ({
fieldMetadataId: field.id,
label: field.label,
Icon: icons[field.icon ?? 'Icon123'],
});
@@ -0,0 +1,45 @@
import { FilterDefinition } from '@/ui/object/object-filter-dropdown/types/FilterDefinition';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
export const formatFieldMetadataItemsAsFilterDefinitions = ({
fields,
icons,
}: {
fields: Array<ObjectMetadataItem['fields'][0]>;
icons: Record<string, any>;
}): FilterDefinition[] =>
fields.reduce((acc, field) => {
if (
![
FieldMetadataType.Date,
FieldMetadataType.Number,
FieldMetadataType.Text,
].includes(field.type)
) {
return acc;
}
return [
...acc,
formatFieldMetadataItemAsFilterDefinition({ field, icons }),
];
}, [] as FilterDefinition[]);
const formatFieldMetadataItemAsFilterDefinition = ({
field,
icons,
}: {
field: ObjectMetadataItem['fields'][0];
icons: Record<string, any>;
}): FilterDefinition => ({
fieldMetadataId: field.id,
label: field.label,
Icon: icons[field.icon ?? 'Icon123'],
type:
field.type === FieldMetadataType.Date
? 'DATE'
: field.type === FieldMetadataType.Number
? 'NUMBER'
: 'TEXT',
});
@@ -0,0 +1,33 @@
import { SortDefinition } from '@/ui/object/object-sort-dropdown/types/SortDefinition';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
export const formatFieldMetadataItemsAsSortDefinitions = ({
fields,
icons,
}: {
fields: Array<ObjectMetadataItem['fields'][0]>;
icons: Record<string, any>;
}): SortDefinition[] =>
fields.reduce((acc, field) => {
if (
![
FieldMetadataType.Date,
FieldMetadataType.Number,
FieldMetadataType.Text,
FieldMetadataType.Boolean,
].includes(field.type)
) {
return acc;
}
return [
...acc,
{
fieldMetadataId: field.id,
label: field.label,
Icon: icons[field.icon ?? 'Icon123'],
},
];
}, [] as SortDefinition[]);