Feat/filter available field definition v2 (#2547)

* Added react-dev-inspector

* Add field relation type parsing and filter available fields for record table and show page

* Revert "Added react-dev-inspector"

This reverts commit 7a78964c2c3996ce2e27f6f8d0c0b5e1f3283e17.
This commit is contained in:
Lucas Bordeau
2023-11-16 17:09:50 +01:00
committed by GitHub
parent 0ae9373532
commit 7da18a13e8
8 changed files with 98 additions and 2 deletions

View File

@ -6,6 +6,7 @@ import { ActivityTargetableEntityType } from '@/activities/types/ActivityTargeta
import { useFavorites } from '@/favorites/hooks/useFavorites';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition';
import { filterAvailableFieldMetadataItem } from '@/object-record/utils/filterAvailableFieldMetadataItem';
import { IconBuildingSkyscraper } from '@/ui/display/icon';
import { useLazyLoadIcons } from '@/ui/input/hooks/useLazyLoadIcons';
import { PageBody } from '@/ui/layout/page/PageBody';
@ -156,6 +157,7 @@ export const RecordShowPage = () => {
.diff(DateTime.fromISO(b.createdAt))
.toMillis(),
)
.filter(filterAvailableFieldMetadataItem)
.map((metadataField, index) => {
return (
<FieldContext.Provider

View File

@ -1,6 +1,7 @@
import { useEffect } from 'react';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { filterAvailableTableColumns } from '@/object-record/utils/filterAvailableTableColumns';
import { useRecordTable } from '@/ui/object/record-table/hooks/useRecordTable';
import { useView } from '@/views/hooks/useView';
import { ViewType } from '@/views/types/ViewType';
@ -37,7 +38,11 @@ export const RecordTableEffect = () => {
setAvailableFilterDefinitions?.(filterDefinitions);
setAvailableFieldDefinitions?.(columnDefinitions);
setAvailableTableColumns(columnDefinitions);
const availableTableColumns = columnDefinitions.filter(
filterAvailableTableColumns,
);
setAvailableTableColumns(availableTableColumns);
}, [
setViewObjectMetadataId,
setViewType,

View File

@ -0,0 +1,21 @@
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
import { parseFieldRelationType } from '@/object-metadata/utils/parseFieldRelationType';
export const filterAvailableFieldMetadataItem = (
fieldMetadataItem: FieldMetadataItem,
): boolean => {
if (fieldMetadataItem.type === 'RELATION') {
const fieldMetadataItemRelationType =
parseFieldRelationType(fieldMetadataItem);
if (fieldMetadataItemRelationType !== 'TO_ONE_OBJECT') {
return false;
}
}
if (fieldMetadataItem.type === 'UUID') {
return false;
}
return true;
};

View File

@ -0,0 +1,19 @@
import { FieldMetadata } from '@/ui/object/field/types/FieldMetadata';
import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinition';
export const filterAvailableTableColumns = (
columnDefinition: ColumnDefinition<FieldMetadata>,
): boolean => {
if (
columnDefinition.type === 'RELATION' &&
columnDefinition.relationType !== 'TO_ONE_OBJECT'
) {
return false;
}
if (columnDefinition.type === 'UUID') {
return false;
}
return true;
};