projects/wms-framework/src/lib/regionsframework/ModuleCatalog.ts
Module catalog to store the collection of modules to be initialized
Properties |
|
Methods |
Accessors |
Private items |
Type : SimpleList<ModuleInfo>
|
Default value : new SimpleList<ModuleInfo>()
|
AddModule | ||||||
AddModule(moduleInfo: ModuleInfo)
|
||||||
Adds a module to the catalog
Parameters :
Returns :
any
|
AddModule | |||||||||
AddModule(runtimeTypeInfo: RuntimeTypeInfo, ...parameters: string[])
|
|||||||||
Parameters :
Returns :
any
|
AddModule | ||||||||||||
AddModule(runtimeTypeInfo: RuntimeTypeInfo, initializationMode: ModuleInitializationMode, ...parameters: string[])
|
||||||||||||
Parameters :
Returns :
any
|
AddModule | ||||||
AddModule(...parameters: any[])
|
||||||
Parameters :
Returns :
any
|
AddModuleToCatalog | ||||||
AddModuleToCatalog(module: ModuleInfo)
|
||||||
Adds module to catalog
Parameters :
Returns :
any
|
Modules |
getModules()
|
Returns the module information list
Returns :
SimpleList<ModuleInfo>
|
import { injectable } from 'tsyringe';
import { RuntimeTypeInfo } from '../baseframework';
import { SimpleList } from '../baseframework/collections';
import { IModuleCatalog } from './IModuleCatalog';
import { ModuleInitializationMode } from './InitializationMode';
import { ModuleInfo } from './ModuleInfo';
/**
* Module catalog to store the collection of modules to be initialized
*
* @export
* @class ModuleCatalog
* @extends {Object}
* @implements {IModuleCatalog}
* @wType Microsoft.Practices.Prism.Modularity.ModuleCatalog
*/
@injectable()
export class ModuleCatalog extends Object implements IModuleCatalog {
private items: SimpleList<ModuleInfo> = new SimpleList<ModuleInfo>();
/**
* Returns the module information list
*
* @readonly
* @type {SimpleList<ModuleInfo>}
* @memberof ModuleCatalog
*/
get Modules(): SimpleList<ModuleInfo> {
return this.items;
}
/**
* Adds a module to the catalog
*
* @param {ModuleInfo} moduleInfo
* @memberof ModuleCatalog
*/
AddModule(moduleInfo: ModuleInfo);
AddModule(runtimeTypeInfo: RuntimeTypeInfo, ...parameters: string[]);
AddModule(
runtimeTypeInfo: RuntimeTypeInfo,
initializationMode: ModuleInitializationMode,
...parameters: string[]
);
AddModule(...parameters: any[]): any {
if (parameters.length === 1 && parameters[0] instanceof ModuleInfo) {
this.AddModuleToCatalog(parameters[0]);
} else if (parameters.length && parameters[0] instanceof RuntimeTypeInfo) {
const moduleInfo = new ModuleInfo();
moduleInfo.ModuleName = parameters[0].Name;
moduleInfo.ModuleType = parameters[0].FullName;
moduleInfo.RuntimeTypeInfo = parameters[0];
moduleInfo.DependsOn = new SimpleList<string>();
if (parameters.length > 1) {
let dependsPosition = 1;
if (typeof parameters[1] === 'number') {
dependsPosition = 2;
}
for (let i = dependsPosition; i < parameters.length; i++) {
if (typeof parameters[i] === 'string') {
moduleInfo.DependsOn.add(parameters[i]);
}
}
}
this.AddModuleToCatalog(moduleInfo);
} else {
throw new Error('Unsupported overload for AddModule');
}
}
/**
* Adds module to catalog
*
* @param {ModuleInfo} module
* @returns {*}
* @memberof ModuleCatalog
* @wIgnore
*/
AddModuleToCatalog(module: ModuleInfo): any {
this.items.add(module);
}
}