diff --git a/packages/core/client/src/flow/models/data-blocks/form/QuickEditForm.tsx b/packages/core/client/src/flow/models/data-blocks/form/QuickEditForm.tsx index c2650025f2..f3c5ba64ab 100644 --- a/packages/core/client/src/flow/models/data-blocks/form/QuickEditForm.tsx +++ b/packages/core/client/src/flow/models/data-blocks/form/QuickEditForm.tsx @@ -162,8 +162,8 @@ QuickEditForm.registerFlow({ } const collectionField = ctx.model.collection.getField(fieldPath) as CollectionField; if (collectionField) { - const FieldModels = collectionField.getMatchFieldModelsByBaseClass('EditableFieldModel'); - const use = [...FieldModels.keys()].shift() || 'EditableFieldModel'; + const FieldModels = collectionField.getSubclassesOf('EditableFieldModel'); + const use = FieldModels.keys().next().value || 'EditableFieldModel'; ctx.model.addSubModel('fields', { use, stepParams: { diff --git a/packages/core/flow-engine/src/__tests__/flow-engine.test.ts b/packages/core/flow-engine/src/__tests__/flow-engine.test.ts index 6b37b2d5f0..f14b0a0a0b 100644 --- a/packages/core/flow-engine/src/__tests__/flow-engine.test.ts +++ b/packages/core/flow-engine/src/__tests__/flow-engine.test.ts @@ -35,16 +35,16 @@ describe('FlowEngine', () => { expect(engine.getModelClass('NotExist')).toBeUndefined(); }); - it('findModelsByBaseClass should return all subclasses', () => { - const result = engine.findModelsByBaseClass(BaseModel); + it('getSubclassesOf should return all subclasses', () => { + const result = engine.getSubclassesOf(BaseModel); expect(result.has('BaseModel')).toBe(false); expect(result.has('SubModelA')).toBe(true); expect(result.has('SubModelB')).toBe(true); expect(result.has('SubModelC')).toBe(true); }); - it('findModelsByBaseClass should support filter', () => { - const result = engine.findModelsByBaseClass(BaseModel, (ModelClass, name) => name.startsWith('SubModel')); + it('getSubclassesOf should support filter', () => { + const result = engine.getSubclassesOf(BaseModel, (ModelClass, name) => name.startsWith('SubModel')); expect(result.has('BaseModel')).toBe(false); expect(result.has('SubModelA')).toBe(true); expect(result.has('SubModelB')).toBe(true); diff --git a/packages/core/flow-engine/src/data-source/index.ts b/packages/core/flow-engine/src/data-source/index.ts index 25fe5d14ac..951e3ef360 100644 --- a/packages/core/flow-engine/src/data-source/index.ts +++ b/packages/core/flow-engine/src/data-source/index.ts @@ -456,13 +456,9 @@ export class CollectionField { return app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(this.interface); } - getMatchFieldModelsByBaseClass(baseClass: string) { - return this.flowEngine.findModelsByBaseClass(baseClass, (M, name) => { - console.log('getMatchFieldModelsByBaseClass', name, M['supportedFieldInterfaces'], this.interface); - if (isFieldInterfaceMatch(M['supportedFieldInterfaces'], this.interface)) { - return true; - } - return false; + getSubclassesOf(baseClass: string) { + return this.flowEngine.getSubclassesOf(baseClass, (M, name) => { + return isFieldInterfaceMatch(M['supportedFieldInterfaces'], this.interface); }); } } diff --git a/packages/core/flow-engine/src/flowEngine.ts b/packages/core/flow-engine/src/flowEngine.ts index 0e928b03b8..760dec6861 100644 --- a/packages/core/flow-engine/src/flowEngine.ts +++ b/packages/core/flow-engine/src/flowEngine.ts @@ -219,7 +219,7 @@ export class FlowEngine { * @param {(ModelClass: ModelConstructor, className: string) => boolean} [filter] 过滤函数 * @returns {Map} 继承自指定父类且通过过滤的模型类映射 */ - public findModelsByBaseClass( + public getSubclassesOf( baseClass: string | ModelConstructor, filter?: (ModelClass: ModelConstructor, className: string) => boolean, ): Map {