Finished renaming and scope (#2378)
* Finished renaming and scope * Less objectNamePlural as props
This commit is contained in:
@ -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 <></>;
|
|
||||||
};
|
|
||||||
@ -18,10 +18,8 @@ import { mapViewSortsToSorts } from '@/views/utils/mapViewSortsToSorts';
|
|||||||
|
|
||||||
import { useObjectMetadataItemInContext } from '../hooks/useObjectMetadataItemInContext';
|
import { useObjectMetadataItemInContext } from '../hooks/useObjectMetadataItemInContext';
|
||||||
import { useUpdateOneObject } from '../hooks/useUpdateOneObject';
|
import { useUpdateOneObject } from '../hooks/useUpdateOneObject';
|
||||||
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
|
|
||||||
|
|
||||||
import { ObjectTableEffect } from './ObjectTableEffect';
|
import { RecordTableEffect } from './RecordTableEffect';
|
||||||
import { ObjectRecordTableEffect } from './RecordTableEffect';
|
|
||||||
|
|
||||||
const StyledContainer = styled.div`
|
const StyledContainer = styled.div`
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -30,17 +28,14 @@ const StyledContainer = styled.div`
|
|||||||
overflow: auto;
|
overflow: auto;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export type ObjectTableProps = Pick<
|
export const RecordTableContainer = () => {
|
||||||
ObjectMetadataItemIdentifier,
|
const { columnDefinitions, foundObjectMetadataItem, objectNamePlural } =
|
||||||
'objectNamePlural'
|
useObjectMetadataItemInContext();
|
||||||
>;
|
|
||||||
|
|
||||||
export const ObjectTable = ({ objectNamePlural }: ObjectTableProps) => {
|
|
||||||
const { updateOneObject } = useUpdateOneObject({
|
const { updateOneObject } = useUpdateOneObject({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
const { columnDefinitions, foundObjectMetadataItem } =
|
|
||||||
useObjectMetadataItemInContext();
|
|
||||||
const tableScopeId = foundObjectMetadataItem?.namePlural ?? '';
|
const tableScopeId = foundObjectMetadataItem?.namePlural ?? '';
|
||||||
const viewScopeId = objectNamePlural ?? '';
|
const viewScopeId = objectNamePlural ?? '';
|
||||||
|
|
||||||
@ -99,8 +94,7 @@ export const ObjectTable = ({ objectNamePlural }: ObjectTableProps) => {
|
|||||||
optionsDropdownButton={<TableOptionsDropdown />}
|
optionsDropdownButton={<TableOptionsDropdown />}
|
||||||
optionsDropdownScopeId={TableOptionsDropdownId}
|
optionsDropdownScopeId={TableOptionsDropdownId}
|
||||||
/>
|
/>
|
||||||
<ObjectTableEffect />
|
<RecordTableEffect />
|
||||||
<ObjectRecordTableEffect objectNamePlural={objectNamePlural} />
|
|
||||||
<RecordTable updateEntityMutation={updateEntity} />
|
<RecordTable updateEntityMutation={updateEntity} />
|
||||||
</TableContext.Provider>
|
</TableContext.Provider>
|
||||||
</StyledContainer>
|
</StyledContainer>
|
||||||
@ -1,28 +1,38 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
import { useSetRecoilState } from 'recoil';
|
||||||
|
|
||||||
import { turnFiltersIntoWhereClauseV2 } from '@/ui/object/object-filter-dropdown/utils/turnFiltersIntoWhereClauseV2';
|
import { turnFiltersIntoWhereClauseV2 } from '@/ui/object/object-filter-dropdown/utils/turnFiltersIntoWhereClauseV2';
|
||||||
import { turnSortsIntoOrderByV2 } from '@/ui/object/object-sort-dropdown/utils/turnSortsIntoOrderByV2';
|
import { turnSortsIntoOrderByV2 } from '@/ui/object/object-sort-dropdown/utils/turnSortsIntoOrderByV2';
|
||||||
import { useSetRecordTableData } from '@/ui/object/record-table/hooks/useSetRecordTableData';
|
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 { TableRecoilScopeContext } from '@/ui/object/record-table/states/recoil-scope-contexts/TableRecoilScopeContext';
|
||||||
import { tableFiltersScopedState } from '@/ui/object/record-table/states/tableFiltersScopedState';
|
import { tableFiltersScopedState } from '@/ui/object/record-table/states/tableFiltersScopedState';
|
||||||
import { tableSortsScopedState } from '@/ui/object/record-table/states/tableSortsScopedState';
|
import { tableSortsScopedState } from '@/ui/object/record-table/states/tableSortsScopedState';
|
||||||
import { useRecoilScopedValue } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedValue';
|
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 { useFindManyObjects } from '../hooks/useFindManyObjects';
|
||||||
import { useObjectMetadataItemInContext } from '../hooks/useObjectMetadataItemInContext';
|
import { useObjectMetadataItemInContext } from '../hooks/useObjectMetadataItemInContext';
|
||||||
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
|
|
||||||
|
|
||||||
export type ObjectRecordTableEffectProps = Pick<
|
export const RecordTableEffect = () => {
|
||||||
ObjectMetadataItemIdentifier,
|
const {
|
||||||
'objectNamePlural'
|
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 setRecordTableData = useSetRecordTableData();
|
||||||
const { foundObjectMetadataItem } = useObjectMetadataItemInContext();
|
|
||||||
|
|
||||||
const tableFilters = useRecoilScopedValue(
|
const tableFilters = useRecoilScopedValue(
|
||||||
tableFiltersScopedState,
|
tableFiltersScopedState,
|
||||||
@ -54,5 +64,36 @@ export const ObjectRecordTableEffect = ({
|
|||||||
}
|
}
|
||||||
}, [objects, setRecordTableData, loading]);
|
}, [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 <></>;
|
return <></>;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useEffect } from 'react';
|
|||||||
import { useNavigate, useParams } from 'react-router-dom';
|
import { useNavigate, useParams } from 'react-router-dom';
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
|
|
||||||
import { ObjectTable } from '@/metadata/components/RecordTable';
|
import { RecordTableContainer } from '@/metadata/components/RecordTableContainer';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { IconBuildingSkyscraper } from '@/ui/display/icon';
|
import { IconBuildingSkyscraper } from '@/ui/display/icon';
|
||||||
import { PageAddButton } from '@/ui/layout/page/PageAddButton';
|
import { PageAddButton } from '@/ui/layout/page/PageAddButton';
|
||||||
@ -67,7 +67,7 @@ export const RecordTablePage = () => {
|
|||||||
<ObjectMetadataItemScope
|
<ObjectMetadataItemScope
|
||||||
objectMetadataItemNamePlural={objectNamePlural}
|
objectMetadataItemNamePlural={objectNamePlural}
|
||||||
>
|
>
|
||||||
<ObjectTable objectNamePlural={objectNamePlural} />
|
<RecordTableContainer />
|
||||||
</ObjectMetadataItemScope>
|
</ObjectMetadataItemScope>
|
||||||
</StyledTableContainer>
|
</StyledTableContainer>
|
||||||
<RecordTableActionBar />
|
<RecordTableActionBar />
|
||||||
|
|||||||
Reference in New Issue
Block a user