Finished renaming and scope (#2378)

* Finished renaming and scope

* Less objectNamePlural as props
This commit is contained in:
Lucas Bordeau
2023-11-06 19:42:46 +01:00
committed by GitHub
parent 3d483b5640
commit b3d460eb75
4 changed files with 59 additions and 82 deletions

View File

@ -1,58 +0,0 @@
import { useEffect } from 'react';
import { useSetRecoilState } from 'recoil';
import { availableTableColumnsScopedState } from '@/ui/object/record-table/states/availableTableColumnsScopedState';
import { useView } from '@/views/hooks/useView';
import { ViewType } from '@/views/types/ViewType';
import { useObjectMetadataItemInContext } from '../hooks/useObjectMetadataItemInContext';
export const ObjectTableEffect = () => {
const {
setAvailableSortDefinitions,
setAvailableFilterDefinitions,
setAvailableFieldDefinitions,
setViewType,
setViewObjectId,
} = useView();
const {
columnDefinitions,
filterDefinitions,
sortDefinitions,
foundObjectMetadataItem,
} = useObjectMetadataItemInContext();
const tableScopeId = foundObjectMetadataItem?.namePlural ?? '';
const setAvailableTableColumns = useSetRecoilState(
availableTableColumnsScopedState(tableScopeId),
);
useEffect(() => {
if (!foundObjectMetadataItem) {
return;
}
setViewObjectId?.(foundObjectMetadataItem.id);
setViewType?.(ViewType.Table);
setAvailableSortDefinitions?.(sortDefinitions);
setAvailableFilterDefinitions?.(filterDefinitions);
setAvailableFieldDefinitions?.(columnDefinitions);
setAvailableTableColumns(columnDefinitions);
}, [
setAvailableTableColumns,
setViewObjectId,
setViewType,
columnDefinitions,
setAvailableSortDefinitions,
setAvailableFilterDefinitions,
setAvailableFieldDefinitions,
foundObjectMetadataItem,
sortDefinitions,
filterDefinitions,
]);
return <></>;
};

View File

@ -18,10 +18,8 @@ import { mapViewSortsToSorts } from '@/views/utils/mapViewSortsToSorts';
import { useObjectMetadataItemInContext } from '../hooks/useObjectMetadataItemInContext';
import { useUpdateOneObject } from '../hooks/useUpdateOneObject';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
import { ObjectTableEffect } from './ObjectTableEffect';
import { ObjectRecordTableEffect } from './RecordTableEffect';
import { RecordTableEffect } from './RecordTableEffect';
const StyledContainer = styled.div`
display: flex;
@ -30,17 +28,14 @@ const StyledContainer = styled.div`
overflow: auto;
`;
export type ObjectTableProps = Pick<
ObjectMetadataItemIdentifier,
'objectNamePlural'
>;
export const RecordTableContainer = () => {
const { columnDefinitions, foundObjectMetadataItem, objectNamePlural } =
useObjectMetadataItemInContext();
export const ObjectTable = ({ objectNamePlural }: ObjectTableProps) => {
const { updateOneObject } = useUpdateOneObject({
objectNamePlural,
});
const { columnDefinitions, foundObjectMetadataItem } =
useObjectMetadataItemInContext();
const tableScopeId = foundObjectMetadataItem?.namePlural ?? '';
const viewScopeId = objectNamePlural ?? '';
@ -99,8 +94,7 @@ export const ObjectTable = ({ objectNamePlural }: ObjectTableProps) => {
optionsDropdownButton={<TableOptionsDropdown />}
optionsDropdownScopeId={TableOptionsDropdownId}
/>
<ObjectTableEffect />
<ObjectRecordTableEffect objectNamePlural={objectNamePlural} />
<RecordTableEffect />
<RecordTable updateEntityMutation={updateEntity} />
</TableContext.Provider>
</StyledContainer>

View File

@ -1,28 +1,38 @@
import { useEffect } from 'react';
import { useSetRecoilState } from 'recoil';
import { turnFiltersIntoWhereClauseV2 } from '@/ui/object/object-filter-dropdown/utils/turnFiltersIntoWhereClauseV2';
import { turnSortsIntoOrderByV2 } from '@/ui/object/object-sort-dropdown/utils/turnSortsIntoOrderByV2';
import { useSetRecordTableData } from '@/ui/object/record-table/hooks/useSetRecordTableData';
import { availableTableColumnsScopedState } from '@/ui/object/record-table/states/availableTableColumnsScopedState';
import { TableRecoilScopeContext } from '@/ui/object/record-table/states/recoil-scope-contexts/TableRecoilScopeContext';
import { tableFiltersScopedState } from '@/ui/object/record-table/states/tableFiltersScopedState';
import { tableSortsScopedState } from '@/ui/object/record-table/states/tableSortsScopedState';
import { useRecoilScopedValue } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedValue';
import { useView } from '@/views/hooks/useView';
import { ViewType } from '@/views/types/ViewType';
import { useFindManyObjects } from '../hooks/useFindManyObjects';
import { useObjectMetadataItemInContext } from '../hooks/useObjectMetadataItemInContext';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
export type ObjectRecordTableEffectProps = Pick<
ObjectMetadataItemIdentifier,
'objectNamePlural'
>;
export const RecordTableEffect = () => {
const {
columnDefinitions,
filterDefinitions,
sortDefinitions,
foundObjectMetadataItem,
objectNamePlural,
} = useObjectMetadataItemInContext();
const {
setAvailableSortDefinitions,
setAvailableFilterDefinitions,
setAvailableFieldDefinitions,
setViewType,
setViewObjectId,
} = useView();
// This should be migrated to RecordTable at some point
export const ObjectRecordTableEffect = ({
objectNamePlural,
}: ObjectRecordTableEffectProps) => {
const setRecordTableData = useSetRecordTableData();
const { foundObjectMetadataItem } = useObjectMetadataItemInContext();
const tableFilters = useRecoilScopedValue(
tableFiltersScopedState,
@ -54,5 +64,36 @@ export const ObjectRecordTableEffect = ({
}
}, [objects, setRecordTableData, loading]);
const tableScopeId = foundObjectMetadataItem?.namePlural ?? '';
const setAvailableTableColumns = useSetRecoilState(
availableTableColumnsScopedState(tableScopeId),
);
useEffect(() => {
if (!foundObjectMetadataItem) {
return;
}
setViewObjectId?.(foundObjectMetadataItem.id);
setViewType?.(ViewType.Table);
setAvailableSortDefinitions?.(sortDefinitions);
setAvailableFilterDefinitions?.(filterDefinitions);
setAvailableFieldDefinitions?.(columnDefinitions);
setAvailableTableColumns(columnDefinitions);
}, [
setAvailableTableColumns,
setViewObjectId,
setViewType,
columnDefinitions,
setAvailableSortDefinitions,
setAvailableFilterDefinitions,
setAvailableFieldDefinitions,
foundObjectMetadataItem,
sortDefinitions,
filterDefinitions,
]);
return <></>;
};

View File

@ -2,7 +2,7 @@ import { useEffect } from 'react';
import { useNavigate, useParams } from 'react-router-dom';
import styled from '@emotion/styled';
import { ObjectTable } from '@/metadata/components/RecordTable';
import { RecordTableContainer } from '@/metadata/components/RecordTableContainer';
import { ObjectMetadataItemIdentifier } from '@/metadata/types/ObjectMetadataItemIdentifier';
import { IconBuildingSkyscraper } from '@/ui/display/icon';
import { PageAddButton } from '@/ui/layout/page/PageAddButton';
@ -67,7 +67,7 @@ export const RecordTablePage = () => {
<ObjectMetadataItemScope
objectMetadataItemNamePlural={objectNamePlural}
>
<ObjectTable objectNamePlural={objectNamePlural} />
<RecordTableContainer />
</ObjectMetadataItemScope>
</StyledTableContainer>
<RecordTableActionBar />