rework registry

This commit is contained in:
Géry Debongnie
2019-02-02 16:51:24 +01:00
parent c9f2a6147c
commit e26cf25bd3
10 changed files with 57 additions and 63 deletions
+5 -6
View File
@@ -1,8 +1,7 @@
import { EventBus } from "../core/event_bus";
import { Widget } from "../core/widget";
import { Widget, Type } from "../core/widget";
import { Env } from "../env";
import { Registry } from "./registry";
import { Type } from "../types";
import { Registry } from "../core/registry";
import { IRouter, Query } from "../core/router";
//------------------------------------------------------------------------------
@@ -51,10 +50,10 @@ export interface IActionManager {
export class ActionManager extends EventBus implements IActionManager {
router: IRouter;
registry: Registry;
registry: Registry<Type<Widget<Env, any>>>;
stack: ActionStack;
constructor(router: IRouter, registry: Registry) {
constructor(router: IRouter, registry: Registry<Type<Widget<Env, any>>>) {
super();
this.router = router;
this.registry = registry;
@@ -71,7 +70,7 @@ export class ActionManager extends EventBus implements IActionManager {
// this is an action ID
let name = request === 1 ? "discuss" : "crm";
let title = request === 1 ? "Discuss" : "CRM";
let Widget = this.registry.getAction(name);
let Widget = this.registry.get(name);
this.stack = [
{
id: 1,
-35
View File
@@ -1,35 +0,0 @@
import { Widget } from "../core/widget";
import { Env } from "../env";
import { Type } from "../types";
//------------------------------------------------------------------------------
// Types
//------------------------------------------------------------------------------
type ActionWidget = Type<Widget<Env, {}>>;
//------------------------------------------------------------------------------
// Registry code
//------------------------------------------------------------------------------
export class Registry {
registries: { [key: string]: { [key: string]: any } } = {
action: {}
};
add(type: "action", name: string, action: ActionWidget): Registry {
if (name in this.registries[type]) {
throw new Error(`Key ${name} already exists!`);
}
this.registries[type][name] = action;
return this;
}
getAction(name: string): ActionWidget {
return this.registries.action[name];
}
}
//------------------------------------------------------------------------------
// Main registry instance
//------------------------------------------------------------------------------
export const registry = new Registry();