mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-03-05 01:37:17 +00:00
103 lines
2.8 KiB
TypeScript
103 lines
2.8 KiB
TypeScript
import { cloneDeep, find } from 'lodash';
|
|
|
|
import {
|
|
BaseManager,
|
|
connectGeneralManager,
|
|
connectGeneralManagerList,
|
|
IManagerController,
|
|
ISchemaController,
|
|
} from './base';
|
|
import VisualManager from './visualManager';
|
|
|
|
export default class SchemaManager extends BaseManager implements IManagerController, ISchemaController {
|
|
private schemaData: object = {};
|
|
private visualManagerList: VisualManager[] = [];
|
|
private schemaManagerList: SchemaManager[] = [];
|
|
|
|
getManager(): VisualManager {
|
|
return this.visualManagerList[0];
|
|
}
|
|
|
|
getManagerByName(name?: string): VisualManager[] {
|
|
return this.visualManagerList.filter((m) => m.getName() === name);
|
|
}
|
|
|
|
getManagerById(id?: string): VisualManager {
|
|
return find(this.visualManagerList, (m) => m.getId() === id) as VisualManager;
|
|
}
|
|
|
|
getManagerList(): VisualManager[] {
|
|
return this.visualManagerList;
|
|
}
|
|
|
|
getSchemaManager(): SchemaManager {
|
|
return this.schemaManagerList[0];
|
|
}
|
|
|
|
getSchemaManagerById(id?: string): SchemaManager {
|
|
return find(this.schemaManagerList, (m) => m.getId() === id) as SchemaManager;
|
|
}
|
|
|
|
getSchemaManagerByName(name?: string): SchemaManager[] {
|
|
return this.schemaManagerList.filter((m) => m.getName() === name);
|
|
}
|
|
|
|
getSchemaManagerList() {
|
|
return this.schemaManagerList;
|
|
}
|
|
|
|
connectManager(manager: any) {
|
|
connectGeneralManager.call(this, manager, this.visualManagerList as any);
|
|
return this;
|
|
}
|
|
|
|
connectSchemaManager(manager: SchemaManager): this {
|
|
connectGeneralManager.call(this, manager, this.schemaManagerList);
|
|
return this;
|
|
}
|
|
|
|
connectManagerList(managerList: VisualManager[]): this {
|
|
this.visualManagerList = connectGeneralManagerList.call(this, managerList as any, this.visualManagerList as any);
|
|
return this;
|
|
}
|
|
|
|
connectSchemaManagerList(managerList: SchemaManager[]): this {
|
|
this.schemaManagerList = connectGeneralManagerList.call(this, managerList, this.schemaManagerList);
|
|
return this;
|
|
}
|
|
|
|
notifyAllManagers(eventName: string | symbol, ...eventData: any[]): boolean {
|
|
return this.visualManagerList.map((m) => m.emit(eventName, eventData)).every((r) => r);
|
|
}
|
|
|
|
notifyAllSchemaManagers(eventName: string | symbol, ...eventData: any[]): boolean {
|
|
return this.schemaManagerList.map((m) => m.emit(eventName, eventData)).every((r) => r);
|
|
}
|
|
|
|
exportSchema(): string {
|
|
try {
|
|
return JSON.stringify(this.schemaData);
|
|
} catch (e) {
|
|
throw new Error(e.message);
|
|
}
|
|
}
|
|
|
|
exportSchemaObject(): object {
|
|
return cloneDeep(this.schemaData);
|
|
}
|
|
|
|
importSchema(schemaString: string): this {
|
|
try {
|
|
this.schemaData = JSON.parse(schemaString);
|
|
return this;
|
|
} catch (e) {
|
|
throw new Error(e.message);
|
|
}
|
|
}
|
|
|
|
importSchemaObject(schema: object): this {
|
|
this.schemaData = schema;
|
|
return this;
|
|
}
|
|
}
|