websetup/ts/websetup.classes.websetup.ts

50 lines
1.3 KiB
TypeScript
Raw Normal View History

2020-11-04 18:01:04 +00:00
import * as plugins from './websetup.plugins';
import * as interfaces from './interfaces';
import { TagManager } from './websetup.classes.tagmanager';
import { TagLevel } from './websetup.classes.taglevel';
export interface IWebSetupConstructorOptions {
metaObject: interfaces.IMetaObject;
}
/**
* the main WebSetup class
*/
export class WebSetup {
public tagManager: TagManager = new TagManager();
public options: IWebSetupConstructorOptions;
private readyDeferred = plugins.smartpromise.defer();
public readyPromise = this.readyDeferred.promise;
constructor(optionsArg: IWebSetupConstructorOptions) {
this.options = optionsArg;
2020-11-04 18:09:07 +00:00
this.setup().then(() => {
this.readyDeferred.resolve();
});
2020-11-04 18:01:04 +00:00
}
/**
* an async setup called by the constructor
*/
2020-11-05 17:56:35 +00:00
public async setup(optionsArg?: IWebSetupConstructorOptions) {
if (optionsArg) {
this.options = optionsArg;
}
2020-11-04 18:01:04 +00:00
await this.tagManager.setup(this.options.metaObject);
}
/**
* reverts the active level and returns to the base level
*/
public revertToBaseLevel() {
this.tagManager.revertToBaseLevel();
}
/**
* sets a subpage
2020-11-05 15:35:31 +00:00
* @param metaObjectArg
2020-11-04 18:01:04 +00:00
*/
2020-11-05 15:35:31 +00:00
public setSubLevel(metaObjectArg: interfaces.IMetaObject) {
return this.tagManager.setSubPageLevel(metaObjectArg);
}
2020-11-04 18:01:04 +00:00
}