mirror of
https://github.com/nocobase/nocobase
synced 2024-11-15 08:26:21 +00:00
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) => {
|
||||
console.log(props);
|
||||
const { collection, association } = props;
|
||||
const resource = useResource(props);
|
||||
const params = { ...props.params };
|
||||
|
@ -240,28 +240,47 @@ export const AddFieldAction = (props) => {
|
||||
return optionArr;
|
||||
}, [getTemplate, record]);
|
||||
const items = useMemo<MenuProps['items']>(() => {
|
||||
return getFieldOptions().map((option) => {
|
||||
if (option.children.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
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,
|
||||
};
|
||||
}),
|
||||
};
|
||||
});
|
||||
return getFieldOptions()
|
||||
.map((option) => {
|
||||
if (option.children.length === 0) {
|
||||
return null;
|
||||
}
|
||||
if (record.template === 'view') {
|
||||
return {
|
||||
type: 'group',
|
||||
label: compile(option.label),
|
||||
title: compile(option.label),
|
||||
key: option.label,
|
||||
children: option.children
|
||||
.filter((child) => ['m2o'].includes(child.name))
|
||||
.map((child) => {
|
||||
return {
|
||||
label: compile(child.title),
|
||||
title: compile(child.title),
|
||||
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]);
|
||||
const menu = useMemo<MenuProps>(() => {
|
||||
return {
|
||||
@ -283,37 +302,35 @@ export const AddFieldAction = (props) => {
|
||||
};
|
||||
}, [getInterface, items, record]);
|
||||
return (
|
||||
record.template !== 'view' && (
|
||||
<RecordProvider record={record}>
|
||||
<ActionContextProvider value={{ visible, setVisible }}>
|
||||
<Dropdown getPopupContainer={getContainer} trigger={trigger} align={align} menu={menu}>
|
||||
{children || (
|
||||
<Button icon={<PlusOutlined />} type={'primary'}>
|
||||
{t('Add field')}
|
||||
</Button>
|
||||
)}
|
||||
</Dropdown>
|
||||
<SchemaComponent
|
||||
schema={schema}
|
||||
components={{ ...components, ArrayTable }}
|
||||
scope={{
|
||||
getContainer,
|
||||
useCancelAction,
|
||||
createOnly: true,
|
||||
isOverride: false,
|
||||
override: false,
|
||||
useCreateCollectionField,
|
||||
record,
|
||||
showReverseFieldConfig: true,
|
||||
targetScope,
|
||||
collections: currentCollections,
|
||||
isDialect,
|
||||
disabledJSONB: false,
|
||||
...scope,
|
||||
}}
|
||||
/>
|
||||
</ActionContextProvider>
|
||||
</RecordProvider>
|
||||
)
|
||||
<RecordProvider record={record}>
|
||||
<ActionContextProvider value={{ visible, setVisible }}>
|
||||
<Dropdown getPopupContainer={getContainer} trigger={trigger} align={align} menu={menu}>
|
||||
{children || (
|
||||
<Button icon={<PlusOutlined />} type={'primary'}>
|
||||
{t('Add field')}
|
||||
</Button>
|
||||
)}
|
||||
</Dropdown>
|
||||
<SchemaComponent
|
||||
schema={schema}
|
||||
components={{ ...components, ArrayTable }}
|
||||
scope={{
|
||||
getContainer,
|
||||
useCancelAction,
|
||||
createOnly: true,
|
||||
isOverride: false,
|
||||
override: false,
|
||||
useCreateCollectionField,
|
||||
record,
|
||||
showReverseFieldConfig: true,
|
||||
targetScope,
|
||||
collections: currentCollections,
|
||||
isDialect,
|
||||
disabledJSONB: false,
|
||||
...scope,
|
||||
}}
|
||||
/>
|
||||
</ActionContextProvider>
|
||||
</RecordProvider>
|
||||
);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user