From b3d460eb75f37a866bfdf726ae20c15b9503130b Mon Sep 17 00:00:00 2001 From: Lucas Bordeau Date: Mon, 6 Nov 2023 19:42:46 +0100 Subject: [PATCH] Finished renaming and scope (#2378) * Finished renaming and scope * Less objectNamePlural as props --- .../metadata/components/ObjectTableEffect.tsx | 58 ------------------ ...cordTable.tsx => RecordTableContainer.tsx} | 18 ++---- .../metadata/components/RecordTableEffect.tsx | 61 ++++++++++++++++--- .../metadata/components/RecordTablePage.tsx | 4 +- 4 files changed, 59 insertions(+), 82 deletions(-) delete mode 100644 front/src/modules/metadata/components/ObjectTableEffect.tsx rename front/src/modules/metadata/components/{RecordTable.tsx => RecordTableContainer.tsx} (86%) diff --git a/front/src/modules/metadata/components/ObjectTableEffect.tsx b/front/src/modules/metadata/components/ObjectTableEffect.tsx deleted file mode 100644 index bda841aba..000000000 --- a/front/src/modules/metadata/components/ObjectTableEffect.tsx +++ /dev/null @@ -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 <>; -}; diff --git a/front/src/modules/metadata/components/RecordTable.tsx b/front/src/modules/metadata/components/RecordTableContainer.tsx similarity index 86% rename from front/src/modules/metadata/components/RecordTable.tsx rename to front/src/modules/metadata/components/RecordTableContainer.tsx index 3cecf0972..1e21fba6c 100644 --- a/front/src/modules/metadata/components/RecordTable.tsx +++ b/front/src/modules/metadata/components/RecordTableContainer.tsx @@ -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={} optionsDropdownScopeId={TableOptionsDropdownId} /> - - + diff --git a/front/src/modules/metadata/components/RecordTableEffect.tsx b/front/src/modules/metadata/components/RecordTableEffect.tsx index 618740808..90ddde0e4 100644 --- a/front/src/modules/metadata/components/RecordTableEffect.tsx +++ b/front/src/modules/metadata/components/RecordTableEffect.tsx @@ -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 <>; }; diff --git a/front/src/modules/metadata/components/RecordTablePage.tsx b/front/src/modules/metadata/components/RecordTablePage.tsx index dacbac561..49ab9c675 100644 --- a/front/src/modules/metadata/components/RecordTablePage.tsx +++ b/front/src/modules/metadata/components/RecordTablePage.tsx @@ -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 = () => { - +