refactor: restrict the use of tree table in data selectors (#2581)
* refactor: limitthe using of tree in recordPicker * refactor: limitthe using of tree in recordPicker
This commit is contained in:
parent
ee0d2175b8
commit
d9bda04aa2
@ -98,11 +98,7 @@ export const TableBlockProvider = (props) => {
|
|||||||
<SchemaComponentOptions scope={{ treeTable }}>
|
<SchemaComponentOptions scope={{ treeTable }}>
|
||||||
<FormContext.Provider value={form}>
|
<FormContext.Provider value={form}>
|
||||||
<BlockProvider {...props} params={params} runWhenParamsChanged>
|
<BlockProvider {...props} params={params} runWhenParamsChanged>
|
||||||
<InternalTableBlockProvider
|
<InternalTableBlockProvider {...props} childrenColumnName={childrenColumnName} params={params} />
|
||||||
{...props}
|
|
||||||
childrenColumnName={childrenColumnName}
|
|
||||||
params={params}
|
|
||||||
/>
|
|
||||||
</BlockProvider>
|
</BlockProvider>
|
||||||
</FormContext.Provider>
|
</FormContext.Provider>
|
||||||
</SchemaComponentOptions>
|
</SchemaComponentOptions>
|
||||||
|
@ -79,7 +79,7 @@ const useAssociationNames2 = (collection) => {
|
|||||||
return names;
|
return names;
|
||||||
};
|
};
|
||||||
|
|
||||||
const recursiveParent = (schema: Schema, component) => {
|
export const recursiveParent = (schema: Schema, component) => {
|
||||||
return schema['x-component'] === component
|
return schema['x-component'] === component
|
||||||
? schema
|
? schema
|
||||||
: schema.parent
|
: schema.parent
|
||||||
@ -149,7 +149,7 @@ export const TableSelectorProvider = (props: TableSelectorProviderProps) => {
|
|||||||
if (props.dragSort) {
|
if (props.dragSort) {
|
||||||
params['sort'] = ['sort'];
|
params['sort'] = ['sort'];
|
||||||
}
|
}
|
||||||
if (collection?.tree && treeTable !== false) {
|
if (collectionField?.target === collectionField?.collectionName && collection?.tree && treeTable !== false) {
|
||||||
params['tree'] = true;
|
params['tree'] = true;
|
||||||
if (collectionFieldSchema.name === 'parent') {
|
if (collectionFieldSchema.name === 'parent') {
|
||||||
params.filter = {
|
params.filter = {
|
||||||
|
@ -43,9 +43,8 @@ export const TableBlockDesigner = () => {
|
|||||||
const template = useSchemaTemplate();
|
const template = useSchemaTemplate();
|
||||||
const collection = useCollection();
|
const collection = useCollection();
|
||||||
const { dragSort, resource } = field.decoratorProps;
|
const { dragSort, resource } = field.decoratorProps;
|
||||||
const treeCollection = resource?.includes('.')
|
const collectionField = getCollectionField(resource);
|
||||||
? getCollection(getCollectionField(resource)?.target)?.tree
|
const treeCollection = resource?.includes('.') ? getCollection(collectionField?.target)?.tree : !!collection?.tree;
|
||||||
: !!collection?.tree;
|
|
||||||
const dataScopeSchema = useMemo(() => {
|
const dataScopeSchema = useMemo(() => {
|
||||||
return {
|
return {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
@ -84,11 +83,10 @@ export const TableBlockDesigner = () => {
|
|||||||
},
|
},
|
||||||
[field],
|
[field],
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<GeneralSchemaDesigner template={template} title={title || name}>
|
<GeneralSchemaDesigner template={template} title={title || name}>
|
||||||
<SchemaSettings.BlockTitleItem />
|
<SchemaSettings.BlockTitleItem />
|
||||||
{collection?.tree && (
|
{collection?.tree && collectionField?.collectionName === collectionField?.target && (
|
||||||
<SchemaSettings.SwitchItem
|
<SchemaSettings.SwitchItem
|
||||||
title={t('Tree table')}
|
title={t('Tree table')}
|
||||||
defaultChecked={true}
|
defaultChecked={true}
|
||||||
|
@ -4,16 +4,18 @@ import { cloneDeep } from 'lodash';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useTableSelectorContext } from '../../../block-provider';
|
import { useTableSelectorContext } from '../../../block-provider';
|
||||||
import { useCollection } from '../../../collection-manager';
|
import { useCollection, useCollectionManager } from '../../../collection-manager';
|
||||||
import { useCollectionFilterOptions, useSortFields } from '../../../collection-manager/action-hooks';
|
import { useCollectionFilterOptions, useSortFields } from '../../../collection-manager/action-hooks';
|
||||||
import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings';
|
import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings';
|
||||||
import { useSchemaTemplate } from '../../../schema-templates';
|
import { useSchemaTemplate } from '../../../schema-templates';
|
||||||
import { useDesignable } from '../../hooks';
|
import { useDesignable } from '../../hooks';
|
||||||
import { removeNullCondition } from '../filter';
|
import { removeNullCondition } from '../filter';
|
||||||
import { FilterDynamicComponent } from './FilterDynamicComponent';
|
import { FilterDynamicComponent } from './FilterDynamicComponent';
|
||||||
|
import { recursiveParent } from '../../../block-provider/TableSelectorProvider';
|
||||||
|
|
||||||
export const TableSelectorDesigner = () => {
|
export const TableSelectorDesigner = () => {
|
||||||
const { name, title } = useCollection();
|
const { name, title } = useCollection();
|
||||||
|
const { getCollectionJoinField } = useCollectionManager();
|
||||||
const field = useField();
|
const field = useField();
|
||||||
const fieldSchema = useFieldSchema();
|
const fieldSchema = useFieldSchema();
|
||||||
const dataSource = useCollectionFilterOptions(name);
|
const dataSource = useCollectionFilterOptions(name);
|
||||||
@ -23,6 +25,8 @@ export const TableSelectorDesigner = () => {
|
|||||||
const { dn } = useDesignable();
|
const { dn } = useDesignable();
|
||||||
const defaultFilter = fieldSchema?.['x-decorator-props']?.params?.filter || {};
|
const defaultFilter = fieldSchema?.['x-decorator-props']?.params?.filter || {};
|
||||||
const defaultSort = fieldSchema?.['x-decorator-props']?.params?.sort || [];
|
const defaultSort = fieldSchema?.['x-decorator-props']?.params?.sort || [];
|
||||||
|
const collectionFieldSchema = recursiveParent(fieldSchema, 'CollectionField');
|
||||||
|
const collectionField = getCollectionJoinField(collectionFieldSchema?.['x-collection-field']);
|
||||||
const sort = defaultSort?.map((item: string) => {
|
const sort = defaultSort?.map((item: string) => {
|
||||||
return item.startsWith('-')
|
return item.startsWith('-')
|
||||||
? {
|
? {
|
||||||
@ -83,7 +87,7 @@ export const TableSelectorDesigner = () => {
|
|||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{collection?.tree && (
|
{collection?.tree && collectionField?.target === collectionField?.collectionName && (
|
||||||
<SchemaSettings.SwitchItem
|
<SchemaSettings.SwitchItem
|
||||||
title={t('Tree table')}
|
title={t('Tree table')}
|
||||||
defaultChecked={true}
|
defaultChecked={true}
|
||||||
|
Loading…
Reference in New Issue
Block a user