refactor: view collection support add m2o association field (#2422)
* refactor: view collection support add m2o association field * refactor: code improve
This commit is contained in:
parent
9f147085a5
commit
49b75b6ab6
@ -274,7 +274,6 @@ export const RenderChildrenWithAssociationFilter: React.FC<any> = (props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const BlockProvider = (props) => {
|
export const BlockProvider = (props) => {
|
||||||
console.log(props);
|
|
||||||
const { collection, association } = props;
|
const { collection, association } = props;
|
||||||
const resource = useResource(props);
|
const resource = useResource(props);
|
||||||
const params = { ...props.params };
|
const params = { ...props.params };
|
||||||
|
@ -240,28 +240,47 @@ export const AddFieldAction = (props) => {
|
|||||||
return optionArr;
|
return optionArr;
|
||||||
}, [getTemplate, record]);
|
}, [getTemplate, record]);
|
||||||
const items = useMemo<MenuProps['items']>(() => {
|
const items = useMemo<MenuProps['items']>(() => {
|
||||||
return getFieldOptions().map((option) => {
|
return getFieldOptions()
|
||||||
if (option.children.length === 0) {
|
.map((option) => {
|
||||||
return null;
|
if (option.children.length === 0) {
|
||||||
}
|
return null;
|
||||||
|
}
|
||||||
return {
|
if (record.template === 'view') {
|
||||||
type: 'group',
|
return {
|
||||||
label: compile(option.label),
|
type: 'group',
|
||||||
title: compile(option.label),
|
label: compile(option.label),
|
||||||
key: option.label,
|
title: compile(option.label),
|
||||||
children: option.children
|
key: option.label,
|
||||||
.filter((child) => !['o2o', 'subTable', 'linkTo'].includes(child.name))
|
children: option.children
|
||||||
.map((child) => {
|
.filter((child) => ['m2o'].includes(child.name))
|
||||||
return {
|
.map((child) => {
|
||||||
label: compile(child.title),
|
return {
|
||||||
title: compile(child.title),
|
label: compile(child.title),
|
||||||
key: child.name,
|
title: compile(child.title),
|
||||||
dataTargetScope: child.targetScope,
|
key: child.name,
|
||||||
};
|
dataTargetScope: child.targetScope,
|
||||||
}),
|
};
|
||||||
};
|
}),
|
||||||
});
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
type: 'group',
|
||||||
|
label: compile(option.label),
|
||||||
|
title: compile(option.label),
|
||||||
|
key: option.label,
|
||||||
|
children: option.children
|
||||||
|
.filter((child) => !['o2o', 'subTable', 'linkTo'].includes(child.name))
|
||||||
|
.map((child) => {
|
||||||
|
return {
|
||||||
|
label: compile(child.title),
|
||||||
|
title: compile(child.title),
|
||||||
|
key: child.name,
|
||||||
|
dataTargetScope: child.targetScope,
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
})
|
||||||
|
.filter((v) => v.children.length);
|
||||||
}, [getFieldOptions]);
|
}, [getFieldOptions]);
|
||||||
const menu = useMemo<MenuProps>(() => {
|
const menu = useMemo<MenuProps>(() => {
|
||||||
return {
|
return {
|
||||||
@ -283,37 +302,35 @@ export const AddFieldAction = (props) => {
|
|||||||
};
|
};
|
||||||
}, [getInterface, items, record]);
|
}, [getInterface, items, record]);
|
||||||
return (
|
return (
|
||||||
record.template !== 'view' && (
|
<RecordProvider record={record}>
|
||||||
<RecordProvider record={record}>
|
<ActionContextProvider value={{ visible, setVisible }}>
|
||||||
<ActionContextProvider value={{ visible, setVisible }}>
|
<Dropdown getPopupContainer={getContainer} trigger={trigger} align={align} menu={menu}>
|
||||||
<Dropdown getPopupContainer={getContainer} trigger={trigger} align={align} menu={menu}>
|
{children || (
|
||||||
{children || (
|
<Button icon={<PlusOutlined />} type={'primary'}>
|
||||||
<Button icon={<PlusOutlined />} type={'primary'}>
|
{t('Add field')}
|
||||||
{t('Add field')}
|
</Button>
|
||||||
</Button>
|
)}
|
||||||
)}
|
</Dropdown>
|
||||||
</Dropdown>
|
<SchemaComponent
|
||||||
<SchemaComponent
|
schema={schema}
|
||||||
schema={schema}
|
components={{ ...components, ArrayTable }}
|
||||||
components={{ ...components, ArrayTable }}
|
scope={{
|
||||||
scope={{
|
getContainer,
|
||||||
getContainer,
|
useCancelAction,
|
||||||
useCancelAction,
|
createOnly: true,
|
||||||
createOnly: true,
|
isOverride: false,
|
||||||
isOverride: false,
|
override: false,
|
||||||
override: false,
|
useCreateCollectionField,
|
||||||
useCreateCollectionField,
|
record,
|
||||||
record,
|
showReverseFieldConfig: true,
|
||||||
showReverseFieldConfig: true,
|
targetScope,
|
||||||
targetScope,
|
collections: currentCollections,
|
||||||
collections: currentCollections,
|
isDialect,
|
||||||
isDialect,
|
disabledJSONB: false,
|
||||||
disabledJSONB: false,
|
...scope,
|
||||||
...scope,
|
}}
|
||||||
}}
|
/>
|
||||||
/>
|
</ActionContextProvider>
|
||||||
</ActionContextProvider>
|
</RecordProvider>
|
||||||
</RecordProvider>
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user