Refactor ObjectDataTable to work with new views system (#2274)

Complete work
This commit is contained in:
Charles Bochet
2023-10-29 23:50:59 +01:00
committed by GitHub
parent 9bab28912d
commit d38497c46a
39 changed files with 578 additions and 373 deletions

View File

@ -1,30 +1,20 @@
import { ColumnDefinition } from '@/ui/data/data-table/types/ColumnDefinition';
import { FieldMetadata } from '@/ui/data/field/types/FieldMetadata';
import { FieldType } from '@/ui/data/field/types/FieldType';
import { IconBrandLinkedin } from '@/ui/display/icon';
import { MetadataObject } from '../types/MetadataObject';
const parseFieldType = (fieldType: string): FieldType => {
if (fieldType === 'url') {
return 'urlV2';
}
if (fieldType === 'money') {
return 'moneyAmountV2';
}
return fieldType as FieldType;
};
import { parseFieldType } from './parseFieldType';
export const formatMetadataFieldAsColumnDefinition = ({
position,
field,
metadataObject,
icons,
}: {
position: number;
field: MetadataObject['fields'][0];
metadataObject: Omit<MetadataObject, 'fields'>;
icons: Record<string, any>;
}): ColumnDefinition<FieldMetadata> => ({
position,
fieldId: field.id,
@ -35,7 +25,7 @@ export const formatMetadataFieldAsColumnDefinition = ({
fieldName: field.name,
placeHolder: field.label,
},
Icon: IconBrandLinkedin,
Icon: icons[field.icon ?? 'Icon123'],
isVisible: true,
basePathToShowPage: `/object/${metadataObject.nameSingular}/`,
});

View File

@ -0,0 +1,16 @@
import { FilterDefinition } from '@/ui/data/filter/types/FilterDefinition';
import { MetadataObject } from '../types/MetadataObject';
export const formatMetadataFieldAsFilterDefinition = ({
field,
icons,
}: {
field: MetadataObject['fields'][0];
icons: Record<string, any>;
}): FilterDefinition => ({
fieldId: field.id,
label: field.label,
Icon: icons[field.icon ?? 'Icon123'],
type: 'text',
});

View File

@ -0,0 +1,15 @@
import { SortDefinition } from '@/ui/data/sort/types/SortDefinition';
import { MetadataObject } from '../types/MetadataObject';
export const formatMetadataFieldAsSortDefinition = ({
field,
icons,
}: {
field: MetadataObject['fields'][0];
icons: Record<string, any>;
}): SortDefinition => ({
fieldId: field.id,
label: field.label,
Icon: icons[field.icon ?? 'Icon123'],
});

View File

@ -0,0 +1,13 @@
import { FieldType } from '@/ui/data/field/types/FieldType';
export const parseFieldType = (fieldType: string): FieldType => {
if (fieldType === 'url') {
return 'urlV2';
}
if (fieldType === 'money') {
return 'moneyAmountV2';
}
return fieldType as FieldType;
};