Refactor ObjectDataTable to work with new views system (#2274)
Complete work
This commit is contained in:
@@ -2,9 +2,14 @@ import { gql } from '@apollo/client';
|
||||
|
||||
import { ColumnDefinition } from '@/ui/data/data-table/types/ColumnDefinition';
|
||||
import { FieldMetadata } from '@/ui/data/field/types/FieldMetadata';
|
||||
import { FilterDefinition } from '@/ui/data/filter/types/FilterDefinition';
|
||||
import { SortDefinition } from '@/ui/data/sort/types/SortDefinition';
|
||||
import { useLazyLoadIcons } from '@/ui/input/hooks/useLazyLoadIcons';
|
||||
|
||||
import { MetadataObjectIdentifier } from '../types/MetadataObjectIdentifier';
|
||||
import { formatMetadataFieldAsColumnDefinition } from '../utils/formatMetadataFieldAsColumnDefinition';
|
||||
import { formatMetadataFieldAsFilterDefinition } from '../utils/formatMetadataFieldAsFilterDefinition';
|
||||
import { formatMetadataFieldAsSortDefinition } from '../utils/formatMetadataFieldAsSortDefinition';
|
||||
import { generateCreateOneObjectMutation } from '../utils/generateCreateOneObjectMutation';
|
||||
import { generateDeleteOneObjectMutation } from '../utils/generateDeleteOneObjectMutation';
|
||||
import { generateFindManyCustomObjectsQuery } from '../utils/generateFindManyCustomObjectsQuery';
|
||||
@@ -25,6 +30,8 @@ export const useFindOneMetadataObject = ({
|
||||
object.nameSingular === objectNameSingular,
|
||||
);
|
||||
|
||||
const { icons } = useLazyLoadIcons();
|
||||
|
||||
const objectNotFoundInMetadata =
|
||||
metadataObjects.length === 0 ||
|
||||
(metadataObjects.length > 0 && !foundMetadataObject);
|
||||
@@ -35,6 +42,23 @@ export const useFindOneMetadataObject = ({
|
||||
position: index,
|
||||
field,
|
||||
metadataObject: foundMetadataObject,
|
||||
icons,
|
||||
}),
|
||||
) ?? [];
|
||||
|
||||
const filterDefinitions: FilterDefinition[] =
|
||||
foundMetadataObject?.fields.map((field) =>
|
||||
formatMetadataFieldAsFilterDefinition({
|
||||
field,
|
||||
icons,
|
||||
}),
|
||||
) ?? [];
|
||||
|
||||
const sortDefinitions: SortDefinition[] =
|
||||
foundMetadataObject?.fields.map((field) =>
|
||||
formatMetadataFieldAsSortDefinition({
|
||||
field,
|
||||
icons,
|
||||
}),
|
||||
) ?? [];
|
||||
|
||||
@@ -93,6 +117,8 @@ export const useFindOneMetadataObject = ({
|
||||
foundMetadataObject,
|
||||
objectNotFoundInMetadata,
|
||||
columnDefinitions,
|
||||
filterDefinitions,
|
||||
sortDefinitions,
|
||||
findManyQuery,
|
||||
findOneQuery,
|
||||
createOneMutation,
|
||||
|
||||
@@ -13,15 +13,22 @@ export const useMetadataObjectInContext = () => {
|
||||
);
|
||||
}
|
||||
|
||||
const { foundMetadataObject, loading, columnDefinitions } =
|
||||
useFindOneMetadataObject({
|
||||
objectNamePlural: context.objectNamePlural,
|
||||
});
|
||||
const {
|
||||
foundMetadataObject,
|
||||
loading,
|
||||
columnDefinitions,
|
||||
filterDefinitions,
|
||||
sortDefinitions,
|
||||
} = useFindOneMetadataObject({
|
||||
objectNamePlural: context.objectNamePlural,
|
||||
});
|
||||
|
||||
return {
|
||||
...context,
|
||||
foundMetadataObject,
|
||||
loading,
|
||||
columnDefinitions,
|
||||
filterDefinitions,
|
||||
sortDefinitions,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -3,16 +3,13 @@ import { useRecoilCallback } from 'recoil';
|
||||
import { useResetTableRowSelection } from '@/ui/data/data-table/hooks/useResetTableRowSelection';
|
||||
import { isFetchingDataTableDataState } from '@/ui/data/data-table/states/isFetchingDataTableDataState';
|
||||
import { numberOfTableRowsState } from '@/ui/data/data-table/states/numberOfTableRowsState';
|
||||
import { TableRecoilScopeContext } from '@/ui/data/data-table/states/recoil-scope-contexts/TableRecoilScopeContext';
|
||||
import { tableRowIdsState } from '@/ui/data/data-table/states/tableRowIdsState';
|
||||
import { entityFieldsFamilyState } from '@/ui/data/field/states/entityFieldsFamilyState';
|
||||
import { useRecoilScopeId } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopeId';
|
||||
import { availableSortDefinitionsScopedState } from '@/views/states/availableSortDefinitionsScopedState';
|
||||
import { useView } from '@/views/hooks/useView';
|
||||
|
||||
export const useSetObjectDataTableData = () => {
|
||||
const resetTableRowSelection = useResetTableRowSelection();
|
||||
|
||||
const tableContextScopeId = useRecoilScopeId(TableRecoilScopeContext);
|
||||
const { setEntityCountInCurrentView } = useView();
|
||||
|
||||
return useRecoilCallback(
|
||||
({ set, snapshot }) =>
|
||||
@@ -40,14 +37,10 @@ export const useSetObjectDataTableData = () => {
|
||||
resetTableRowSelection();
|
||||
|
||||
set(numberOfTableRowsState, entityIds.length);
|
||||
|
||||
set(
|
||||
availableSortDefinitionsScopedState({ scopeId: tableContextScopeId }),
|
||||
[],
|
||||
);
|
||||
setEntityCountInCurrentView(entityIds.length);
|
||||
|
||||
set(isFetchingDataTableDataState, false);
|
||||
},
|
||||
[resetTableRowSelection, tableContextScopeId],
|
||||
[resetTableRowSelection, setEntityCountInCurrentView],
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user