Feat/metadata datatable types (#2175)

* Handled new url v2 type

* Fixed refetch queries

* wip

* Ok delete but views bug

* Fix lint

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Lucas Bordeau
2023-10-21 14:07:18 +02:00
committed by GitHub
parent 598fda8f45
commit f1670f0cf4
50 changed files with 1125 additions and 350 deletions

View File

@ -0,0 +1,34 @@
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';
}
return fieldType as FieldType;
};
export const formatMetadataFieldAsColumnDefinition = ({
index,
field,
}: {
index: number;
field: MetadataObject['fields'][0];
}): ColumnDefinition<FieldMetadata> => ({
index,
key: field.name,
name: field.label,
size: 100,
type: parseFieldType(field.type),
metadata: {
fieldName: field.name,
placeHolder: field.label,
},
Icon: IconBrandLinkedin,
isVisible: true,
});

View File

@ -0,0 +1,22 @@
import { gql } from '@apollo/client';
import { capitalize } from '~/utils/string/capitalize';
import { MetadataObject } from '../types/MetadataObject';
// TODO: implement
export const generateDeleteOneObjectMutation = ({
metadataObject,
}: {
metadataObject: MetadataObject;
}) => {
const capitalizedObjectName = capitalize(metadataObject.nameSingular);
return gql`
mutation DeleteOne${capitalizedObjectName}($input: ${capitalizedObjectName}DeleteInput!) {
createOne${capitalizedObjectName}(data: $input) {
id
}
}
`;
};

View File

@ -1,5 +1,7 @@
import { gql } from '@apollo/client';
import { FieldType } from '@/ui/data/field/types/FieldType';
import { MetadataObject } from '../types/MetadataObject';
export const generateFindManyCustomObjectsQuery = ({
@ -15,7 +17,24 @@ export const generateFindManyCustomObjectsQuery = ({
edges {
node {
id
${metadataObject.fields.map((field) => field.name).join('\n')}
${metadataObject.fields
.map((field) => {
// TODO: parse
const fieldType = field.type as FieldType;
if (fieldType === 'text') {
return field.name;
} else if (fieldType === 'url') {
return `
${field.name}
{
text
link
}
`;
}
})
.join('\n')}
}
cursor
}