mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-07-01 18:52:20 +08:00
fix: getSubclassesOf
This commit is contained in:
parent
58b58e302c
commit
75dc5f26ad
@ -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: {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ export class FlowEngine {
|
||||
* @param {(ModelClass: ModelConstructor, className: string) => boolean} [filter] 过滤函数
|
||||
* @returns {Map<string, ModelConstructor>} 继承自指定父类且通过过滤的模型类映射
|
||||
*/
|
||||
public findModelsByBaseClass(
|
||||
public getSubclassesOf(
|
||||
baseClass: string | ModelConstructor,
|
||||
filter?: (ModelClass: ModelConstructor, className: string) => boolean,
|
||||
): Map<string, ModelConstructor> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user