File

projects/wms-framework/src/lib/regionsframework/ModuleCatalog.ts

Description

Module catalog to store the collection of modules to be initialized

Extends

Object

Implements

IModuleCatalog

Index

Properties
Methods
Accessors

Properties

Private items
Type : SimpleList<ModuleInfo>
Default value : new SimpleList<ModuleInfo>()

Methods

AddModule
AddModule(moduleInfo: ModuleInfo)

Adds a module to the catalog

Parameters :
Name Type Optional
moduleInfo ModuleInfo No
Returns : any
AddModule
AddModule(runtimeTypeInfo: RuntimeTypeInfo, ...parameters: string[])
Parameters :
Name Type Optional
runtimeTypeInfo RuntimeTypeInfo No
parameters string[] No
Returns : any
AddModule
AddModule(runtimeTypeInfo: RuntimeTypeInfo, initializationMode: ModuleInitializationMode, ...parameters: string[])
Parameters :
Name Type Optional
runtimeTypeInfo RuntimeTypeInfo No
initializationMode ModuleInitializationMode No
parameters string[] No
Returns : any
AddModule
AddModule(...parameters: any[])
Parameters :
Name Type Optional
parameters any[] No
Returns : any
AddModuleToCatalog
AddModuleToCatalog(module: ModuleInfo)

Adds module to catalog

Parameters :
Name Type Optional
module ModuleInfo No
Returns : any

Accessors

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);
  }
}

result-matching ""

    No results matching ""