Fix export CSV not using right columns (#15752)
Fixes https://github.com/twentyhq/twenty/issues/15575
This commit is contained in:
+65
@@ -0,0 +1,65 @@
|
||||
import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { type FieldMetadata } from '@/object-record/record-field/ui/types/FieldMetadata';
|
||||
import { type ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition';
|
||||
import { filterAvailableTableColumns } from '@/object-record/utils/filterAvailableTableColumns';
|
||||
|
||||
import { availableFieldMetadataItemsForFilterFamilySelector } from '@/object-metadata/states/availableFieldMetadataItemsForFilterFamilySelector';
|
||||
import { availableFieldMetadataItemsForSortFamilySelector } from '@/object-metadata/states/availableFieldMetadataItemsForSortFamilySelector';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { formatFieldMetadataItemAsColumnDefinition } from '../utils/formatFieldMetadataItemAsColumnDefinition';
|
||||
|
||||
export const useColumnDefinitionsFromObjectMetadata = (
|
||||
objectMetadataItem: ObjectMetadataItem,
|
||||
) => {
|
||||
const activeFieldMetadataItems = objectMetadataItem.readableFields.filter(
|
||||
({ isActive, isSystem }) => isActive && !isSystem,
|
||||
);
|
||||
|
||||
const filterableFieldMetadataItems = useRecoilValue(
|
||||
availableFieldMetadataItemsForFilterFamilySelector({
|
||||
objectMetadataItemId: objectMetadataItem.id,
|
||||
}),
|
||||
);
|
||||
|
||||
const sortableFieldMetadataItems = useRecoilValue(
|
||||
availableFieldMetadataItemsForSortFamilySelector({
|
||||
objectMetadataItemId: objectMetadataItem.id,
|
||||
}),
|
||||
);
|
||||
|
||||
const restrictedFieldMetadataIds: string[] = [];
|
||||
|
||||
const columnDefinitions: ColumnDefinition<FieldMetadata>[] =
|
||||
activeFieldMetadataItems
|
||||
.map((field, index) =>
|
||||
formatFieldMetadataItemAsColumnDefinition({
|
||||
position: index,
|
||||
field,
|
||||
objectMetadataItem,
|
||||
}),
|
||||
)
|
||||
.filter(filterAvailableTableColumns)
|
||||
.filter((column) => {
|
||||
return !restrictedFieldMetadataIds.includes(column.fieldMetadataId);
|
||||
})
|
||||
.map((column) => {
|
||||
const existsInFilterDefinitions = filterableFieldMetadataItems.some(
|
||||
(fieldMetadataItem) =>
|
||||
fieldMetadataItem.id === column.fieldMetadataId,
|
||||
);
|
||||
|
||||
const existsInSortDefinitions = sortableFieldMetadataItems.some(
|
||||
(fieldMetadataItem) =>
|
||||
fieldMetadataItem.id === column.fieldMetadataId,
|
||||
);
|
||||
return {
|
||||
...column,
|
||||
isFilterable: existsInFilterDefinitions,
|
||||
isSortable: existsInSortDefinitions,
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
columnDefinitions,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user