Merge branch 'main' into next
Some checks failed
Build Docker Image / build-and-push (push) Waiting to run
Build Pro Image / build-and-push (push) Waiting to run
E2E / Build (push) Waiting to run
E2E / Core and plugins (push) Blocked by required conditions
E2E / plugin-workflow (push) Blocked by required conditions
E2E / plugin-workflow-approval (push) Blocked by required conditions
E2E / plugin-data-source-main (push) Blocked by required conditions
E2E / Comment on PR (push) Blocked by required conditions
NocoBase FrontEnd Test / frontend-test (18) (push) Waiting to run
NocoBase Backend Test / sqlite-test (20, false) (push) Has been cancelled
NocoBase Backend Test / sqlite-test (20, true) (push) Has been cancelled
NocoBase Backend Test / postgres-test (public, 20, nocobase, false) (push) Has been cancelled
NocoBase Backend Test / postgres-test (public, 20, nocobase, true) (push) Has been cancelled
NocoBase Backend Test / postgres-test (public, 20, public, false) (push) Has been cancelled
NocoBase Backend Test / postgres-test (public, 20, public, true) (push) Has been cancelled
NocoBase Backend Test / postgres-test (user_schema, 20, nocobase, false) (push) Has been cancelled
NocoBase Backend Test / postgres-test (user_schema, 20, nocobase, true) (push) Has been cancelled
NocoBase Backend Test / postgres-test (user_schema, 20, public, false) (push) Has been cancelled
NocoBase Backend Test / postgres-test (user_schema, 20, public, true) (push) Has been cancelled
NocoBase Backend Test / mysql-test (20, false) (push) Has been cancelled
NocoBase Backend Test / mysql-test (20, true) (push) Has been cancelled
NocoBase Backend Test / mariadb-test (20, false) (push) Has been cancelled
NocoBase Backend Test / mariadb-test (20, true) (push) Has been cancelled
Test on Windows / build (push) Has been cancelled

This commit is contained in:
GitHub Actions Bot 2024-09-30 12:18:23 +00:00
commit 390a631f6d

View File

@ -16,8 +16,10 @@ import { useCallback, useEffect } from 'react';
import { useRecordIndex } from '../../../../../src/record-provider'; import { useRecordIndex } from '../../../../../src/record-provider';
import { useOperators } from '../../../../block-provider/CollectOperators'; import { useOperators } from '../../../../block-provider/CollectOperators';
import { useFormBlockContext } from '../../../../block-provider/FormBlockProvider'; import { useFormBlockContext } from '../../../../block-provider/FormBlockProvider';
import { useCollection_deprecated } from '../../../../collection-manager'; import { InheritanceCollectionMixin, useCollection_deprecated } from '../../../../collection-manager';
import { useCollectionRecord } from '../../../../data-source/collection-record/CollectionRecordProvider'; import { useCollectionRecord } from '../../../../data-source/collection-record/CollectionRecordProvider';
import { DataSourceManager } from '../../../../data-source/data-source/DataSourceManager';
import { useDataSourceManager } from '../../../../data-source/data-source/DataSourceManagerProvider';
import { useFlag } from '../../../../flag-provider'; import { useFlag } from '../../../../flag-provider';
import { DEBOUNCE_WAIT, useLocalVariables, useVariables } from '../../../../variables'; import { DEBOUNCE_WAIT, useLocalVariables, useVariables } from '../../../../variables';
import { getPath } from '../../../../variables/utils/getPath'; import { getPath } from '../../../../variables/utils/getPath';
@ -43,6 +45,7 @@ const useParseDefaultValue = () => {
const index = useRecordIndex(); const index = useRecordIndex();
const { type, form } = useFormBlockContext(); const { type, form } = useFormBlockContext();
const { getOperator } = useOperators(); const { getOperator } = useOperators();
const dm = useDataSourceManager();
/** /**
* name: $user * name: $user
@ -97,16 +100,25 @@ const useParseDefaultValue = () => {
} }
} }
const { value: parsedValue, collectionName: collectionNameOfVariable } = await variables.parseVariable( const {
fieldSchema.default, value: parsedValue,
localVariables, collectionName: collectionNameOfVariable,
{ dataSource = 'main',
} = await variables.parseVariable(fieldSchema.default, localVariables, {
fieldOperator: getOperator(fieldSchema.name), fieldOperator: getOperator(fieldSchema.name),
}, });
);
// fix https://tasks.aliyun.nocobase.com/admin/ugmnj2ycfgg/popups/1qlw5c38t3b/puid/dz42x7ffr7i/filterbytk/199 // fix https://tasks.aliyun.nocobase.com/admin/ugmnj2ycfgg/popups/1qlw5c38t3b/puid/dz42x7ffr7i/filterbytk/199
if (collectionField.target && collectionField.target !== collectionNameOfVariable) { if (
collectionField.target &&
collectionField.target !== collectionNameOfVariable &&
!isInherit({
collectionName: collectionField.target,
targetCollectionName: collectionNameOfVariable,
dm,
dataSource,
})
) {
field.loading = false; field.loading = false;
return; return;
} }
@ -179,7 +191,30 @@ const useParseDefaultValue = () => {
// 解决子表格(或子表单)中新增一行数据时,默认值不生效的问题 // 解决子表格(或子表单)中新增一行数据时,默认值不生效的问题
field.setValue(fieldSchema.default); field.setValue(fieldSchema.default);
} }
}, [fieldSchema.default, localVariables, type, getOperator]); }, [fieldSchema.default, localVariables, type, getOperator, dm]);
}; };
export default useParseDefaultValue; export default useParseDefaultValue;
/**
* Determine if there is an inheritance relationship between two data tables
* @param param0
* @returns
*/
const isInherit = ({
collectionName,
targetCollectionName,
dm,
dataSource,
}: {
collectionName: string;
targetCollectionName: string;
dm: DataSourceManager;
dataSource: string;
}) => {
const cm = dm?.getDataSource(dataSource)?.collectionManager;
return cm
?.getCollection<InheritanceCollectionMixin>(collectionName)
?.getAllCollectionsInheritChain()
?.includes(targetCollectionName);
};