feat: do not show disabled fields in table (#2319)

Closes #2309
This commit is contained in:
Thaïs
2023-11-03 15:05:04 +01:00
committed by GitHub
parent e053fba089
commit 60b1024efb
3 changed files with 60 additions and 55 deletions

View File

@ -18,6 +18,18 @@ import { generateUpdateOneObjectMutation } from '../utils/generateUpdateOneObjec
import { useFindManyObjectMetadataItems } from './useFindManyObjectMetadataItems'; import { useFindManyObjectMetadataItems } from './useFindManyObjectMetadataItems';
const EMPTY_QUERY = gql`
query EmptyQuery {
empty
}
`;
const EMPTY_MUTATION = gql`
mutation EmptyMutation {
empty
}
`;
export const useFindOneObjectMetadataItem = ({ export const useFindOneObjectMetadataItem = ({
objectNamePlural, objectNamePlural,
objectNameSingular, objectNameSingular,
@ -39,81 +51,64 @@ export const useFindOneObjectMetadataItem = ({
objectMetadataItems.length === 0 || objectMetadataItems.length === 0 ||
(objectMetadataItems.length > 0 && !foundObjectMetadataItem); (objectMetadataItems.length > 0 && !foundObjectMetadataItem);
const activeFields =
foundObjectMetadataItem?.fields.filter(({ isActive }) => isActive) ?? [];
const columnDefinitions: ColumnDefinition<FieldMetadata>[] = const columnDefinitions: ColumnDefinition<FieldMetadata>[] =
foundObjectMetadataItem?.fields.map((field, index) => foundObjectMetadataItem
formatMetadataFieldAsColumnDefinition({ ? activeFields.map((field, index) =>
position: index, formatMetadataFieldAsColumnDefinition({
field, position: index,
objectMetadataItem: foundObjectMetadataItem, field,
icons, objectMetadataItem: foundObjectMetadataItem,
}), icons,
) ?? []; }),
)
: [];
const filterDefinitions: FilterDefinition[] = const filterDefinitions: FilterDefinition[] = activeFields.map((field) =>
foundObjectMetadataItem?.fields.map((field) => formatMetadataFieldAsFilterDefinition({
formatMetadataFieldAsFilterDefinition({ field,
field, icons,
icons, }),
}), );
) ?? [];
const sortDefinitions: SortDefinition[] = const sortDefinitions: SortDefinition[] = activeFields.map((field) =>
foundObjectMetadataItem?.fields.map((field) => formatMetadataFieldAsSortDefinition({
formatMetadataFieldAsSortDefinition({ field,
field, icons,
icons, }),
}), );
) ?? [];
const findManyQuery = foundObjectMetadataItem const findManyQuery = foundObjectMetadataItem
? generateFindManyCustomObjectsQuery({ ? generateFindManyCustomObjectsQuery({
objectMetadataItem: foundObjectMetadataItem, objectMetadataItem: foundObjectMetadataItem,
}) })
: gql` : EMPTY_QUERY;
query EmptyQuery {
empty
}
`;
const findOneQuery = foundObjectMetadataItem const findOneQuery = foundObjectMetadataItem
? generateFindOneCustomObjectQuery({ ? generateFindOneCustomObjectQuery({
objectMetadataItem: foundObjectMetadataItem, objectMetadataItem: foundObjectMetadataItem,
}) })
: gql` : EMPTY_QUERY;
query EmptyQuery {
empty
}
`;
const createOneMutation = foundObjectMetadataItem const createOneMutation = foundObjectMetadataItem
? generateCreateOneObjectMutation({ ? generateCreateOneObjectMutation({
objectMetadataItem: foundObjectMetadataItem, objectMetadataItem: foundObjectMetadataItem,
}) })
: gql` : EMPTY_MUTATION;
mutation EmptyMutation {
empty
}
`;
const updateOneMutation = foundObjectMetadataItem const updateOneMutation = foundObjectMetadataItem
? generateUpdateOneObjectMutation({ ? generateUpdateOneObjectMutation({
objectMetadataItem: foundObjectMetadataItem, objectMetadataItem: foundObjectMetadataItem,
}) })
: gql` : EMPTY_MUTATION;
mutation EmptyMutation {
empty
}
`;
const deleteOneMutation = foundObjectMetadataItem const deleteOneMutation = foundObjectMetadataItem
? generateDeleteOneObjectMutation({ ? generateDeleteOneObjectMutation({
objectMetadataItem: foundObjectMetadataItem, objectMetadataItem: foundObjectMetadataItem,
}) })
: gql` : EMPTY_MUTATION;
mutation EmptyMutation {
empty
}
`;
return { return {
foundObjectMetadataItem, foundObjectMetadataItem,

View File

@ -1,5 +1,7 @@
import { IconComponent } from '@/ui/display/icon/types/IconComponent';
import { FieldMetadata } from '@/ui/object/field/types/FieldMetadata'; import { FieldMetadata } from '@/ui/object/field/types/FieldMetadata';
import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinition'; import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinition';
import { Field } from '~/generated-metadata/graphql';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem'; import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
@ -12,9 +14,9 @@ export const formatMetadataFieldAsColumnDefinition = ({
icons, icons,
}: { }: {
position: number; position: number;
field: ObjectMetadataItem['fields'][0]; field: Field;
objectMetadataItem: Omit<ObjectMetadataItem, 'fields'>; objectMetadataItem: Omit<ObjectMetadataItem, 'fields'>;
icons: Record<string, any>; icons: Record<string, IconComponent>;
}): ColumnDefinition<FieldMetadata> => ({ }): ColumnDefinition<FieldMetadata> => ({
position, position,
fieldId: field.id, fieldId: field.id,

View File

@ -1,15 +1,23 @@
import { selectorFamily } from 'recoil'; import { selectorFamily } from 'recoil';
import { availableTableColumnsScopedState } from '../availableTableColumnsScopedState';
import { tableColumnsScopedState } from '../tableColumnsScopedState'; import { tableColumnsScopedState } from '../tableColumnsScopedState';
export const visibleTableColumnsScopedSelector = selectorFamily({ export const visibleTableColumnsScopedSelector = selectorFamily({
key: 'visibleTableColumnsScopedSelector', key: 'visibleTableColumnsScopedSelector',
get: get:
(scopeId: string) => (scopeId: string) =>
({ get }) => ({ get }) => {
[ const columns = get(tableColumnsScopedState(scopeId));
...get(tableColumnsScopedState(scopeId)).filter( const availableColumnKeys = get(
(column) => column.isVisible, availableTableColumnsScopedState(scopeId),
), ).map(({ fieldId }) => fieldId);
].sort((a, b) => a.position - b.position),
return columns
.filter(
(column) =>
column.isVisible && availableColumnKeys.includes(column.fieldId),
)
.toSorted((a, b) => a.position - b.position);
},
}); });