fix: should load association data in subform (#3020)
* fix: should load association data in subform * fix: make test passing * fix: avoid error
This commit is contained in:
parent
b11c22798a
commit
b92e9d1b69
@ -15,12 +15,12 @@ import {
|
|||||||
import { CollectionProvider, useCollection, useCollectionManager } from '../../../collection-manager';
|
import { CollectionProvider, useCollection, useCollectionManager } from '../../../collection-manager';
|
||||||
import { useCompile } from '../../hooks';
|
import { useCompile } from '../../hooks';
|
||||||
import { ActionContextProvider } from '../action';
|
import { ActionContextProvider } from '../action';
|
||||||
|
import { EllipsisWithTooltip } from '../input';
|
||||||
import { FileSelector, Preview } from '../preview';
|
import { FileSelector, Preview } from '../preview';
|
||||||
import { ReadPrettyInternalViewer } from './InternalViewer';
|
import { ReadPrettyInternalViewer } from './InternalViewer';
|
||||||
import { useFieldNames, useInsertSchema } from './hooks';
|
import { useFieldNames, useInsertSchema } from './hooks';
|
||||||
import schema from './schema';
|
import schema from './schema';
|
||||||
import { flatData, getLabelFormatValue, isShowFilePicker, useLabelUiSchema } from './util';
|
import { flatData, getLabelFormatValue, isShowFilePicker, useLabelUiSchema } from './util';
|
||||||
import { EllipsisWithTooltip } from '../input';
|
|
||||||
|
|
||||||
const useTableSelectorProps = () => {
|
const useTableSelectorProps = () => {
|
||||||
const field: any = useField();
|
const field: any = useField();
|
||||||
@ -88,7 +88,7 @@ const InternalFileManager = (props) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (value && Object.keys(value).length > 0) {
|
if (value && Object.keys(value).length > 0) {
|
||||||
const opts = (Array.isArray(value) ? value : value ? [value] : []).map((option) => {
|
const opts = (Array.isArray(value) ? value : value ? [value] : []).filter(Boolean).map((option) => {
|
||||||
const label = option[fieldNames.label];
|
const label = option[fieldNames.label];
|
||||||
return {
|
return {
|
||||||
...option,
|
...option,
|
||||||
|
@ -21,13 +21,21 @@ const useLazyLoadAssociationFieldOfForm = () => {
|
|||||||
const fieldSchema = useFieldSchema();
|
const fieldSchema = useFieldSchema();
|
||||||
const variables = useVariables();
|
const variables = useVariables();
|
||||||
const field = useField<Field>();
|
const field = useField<Field>();
|
||||||
const { isInAssignFieldValues } = useFlag() || {};
|
const { isInAssignFieldValues, isInSubForm, isInSubTable } = useFlag() || {};
|
||||||
const { type: formBlockType } = useFormBlockType();
|
const { type: formBlockType } = useFormBlockType();
|
||||||
|
|
||||||
const schemaName = fieldSchema.name.toString();
|
const schemaName = fieldSchema.name.toString();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isInAssignFieldValues || formBlockType === 'create') {
|
const cloneRecord = { ...record };
|
||||||
|
delete cloneRecord['__parent'];
|
||||||
|
delete cloneRecord['__collectionName'];
|
||||||
|
|
||||||
|
if (
|
||||||
|
isInAssignFieldValues ||
|
||||||
|
_.isEmpty(cloneRecord) ||
|
||||||
|
(formBlockType === 'create' && !isInSubForm && !isInSubTable)
|
||||||
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,11 +45,7 @@ const useLazyLoadAssociationFieldOfForm = () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const cloneRecord = { ...record };
|
if (!variables || record[schemaName] != null) {
|
||||||
delete cloneRecord['__parent'];
|
|
||||||
delete cloneRecord['__collectionName'];
|
|
||||||
|
|
||||||
if (_.isEmpty(cloneRecord) || !variables || record[schemaName] != null) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +74,7 @@ const useLazyLoadAssociationFieldOfForm = () => {
|
|||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
});
|
});
|
||||||
}, []);
|
}, [record]);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default useLazyLoadAssociationFieldOfForm;
|
export default useLazyLoadAssociationFieldOfForm;
|
||||||
|
@ -288,8 +288,8 @@ export default VariablesProvider;
|
|||||||
*/
|
*/
|
||||||
function shouldToRequest(value) {
|
function shouldToRequest(value) {
|
||||||
// fix https://nocobase.height.app/T-2502
|
// fix https://nocobase.height.app/T-2502
|
||||||
// 兼容对多子表单子表格字段的情况
|
// 兼容 `对多` 和 `对一` 子表单子表格字段的情况
|
||||||
if (JSON.stringify(value) === '[{}]') {
|
if (JSON.stringify(value) === '[{}]' || JSON.stringify(value) === '{}') {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user