mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-07-02 03:02:19 +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;
|
const collectionField = ctx.model.collection.getField(fieldPath) as CollectionField;
|
||||||
if (collectionField) {
|
if (collectionField) {
|
||||||
const FieldModels = collectionField.getMatchFieldModelsByBaseClass('EditableFieldModel');
|
const FieldModels = collectionField.getSubclassesOf('EditableFieldModel');
|
||||||
const use = [...FieldModels.keys()].shift() || 'EditableFieldModel';
|
const use = FieldModels.keys().next().value || 'EditableFieldModel';
|
||||||
ctx.model.addSubModel('fields', {
|
ctx.model.addSubModel('fields', {
|
||||||
use,
|
use,
|
||||||
stepParams: {
|
stepParams: {
|
||||||
|
@ -35,16 +35,16 @@ describe('FlowEngine', () => {
|
|||||||
expect(engine.getModelClass('NotExist')).toBeUndefined();
|
expect(engine.getModelClass('NotExist')).toBeUndefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('findModelsByBaseClass should return all subclasses', () => {
|
it('getSubclassesOf should return all subclasses', () => {
|
||||||
const result = engine.findModelsByBaseClass(BaseModel);
|
const result = engine.getSubclassesOf(BaseModel);
|
||||||
expect(result.has('BaseModel')).toBe(false);
|
expect(result.has('BaseModel')).toBe(false);
|
||||||
expect(result.has('SubModelA')).toBe(true);
|
expect(result.has('SubModelA')).toBe(true);
|
||||||
expect(result.has('SubModelB')).toBe(true);
|
expect(result.has('SubModelB')).toBe(true);
|
||||||
expect(result.has('SubModelC')).toBe(true);
|
expect(result.has('SubModelC')).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('findModelsByBaseClass should support filter', () => {
|
it('getSubclassesOf should support filter', () => {
|
||||||
const result = engine.findModelsByBaseClass(BaseModel, (ModelClass, name) => name.startsWith('SubModel'));
|
const result = engine.getSubclassesOf(BaseModel, (ModelClass, name) => name.startsWith('SubModel'));
|
||||||
expect(result.has('BaseModel')).toBe(false);
|
expect(result.has('BaseModel')).toBe(false);
|
||||||
expect(result.has('SubModelA')).toBe(true);
|
expect(result.has('SubModelA')).toBe(true);
|
||||||
expect(result.has('SubModelB')).toBe(true);
|
expect(result.has('SubModelB')).toBe(true);
|
||||||
|
@ -456,13 +456,9 @@ export class CollectionField {
|
|||||||
return app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(this.interface);
|
return app.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(this.interface);
|
||||||
}
|
}
|
||||||
|
|
||||||
getMatchFieldModelsByBaseClass(baseClass: string) {
|
getSubclassesOf(baseClass: string) {
|
||||||
return this.flowEngine.findModelsByBaseClass(baseClass, (M, name) => {
|
return this.flowEngine.getSubclassesOf(baseClass, (M, name) => {
|
||||||
console.log('getMatchFieldModelsByBaseClass', name, M['supportedFieldInterfaces'], this.interface);
|
return isFieldInterfaceMatch(M['supportedFieldInterfaces'], this.interface);
|
||||||
if (isFieldInterfaceMatch(M['supportedFieldInterfaces'], this.interface)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,7 @@ export class FlowEngine {
|
|||||||
* @param {(ModelClass: ModelConstructor, className: string) => boolean} [filter] 过滤函数
|
* @param {(ModelClass: ModelConstructor, className: string) => boolean} [filter] 过滤函数
|
||||||
* @returns {Map<string, ModelConstructor>} 继承自指定父类且通过过滤的模型类映射
|
* @returns {Map<string, ModelConstructor>} 继承自指定父类且通过过滤的模型类映射
|
||||||
*/
|
*/
|
||||||
public findModelsByBaseClass(
|
public getSubclassesOf(
|
||||||
baseClass: string | ModelConstructor,
|
baseClass: string | ModelConstructor,
|
||||||
filter?: (ModelClass: ModelConstructor, className: string) => boolean,
|
filter?: (ModelClass: ModelConstructor, className: string) => boolean,
|
||||||
): Map<string, ModelConstructor> {
|
): Map<string, ModelConstructor> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user