add comments, add debug flag to environment

This commit is contained in:
Géry Debongnie
2019-01-26 23:41:03 +01:00
parent 19ce38f29d
commit d68198ad34
3 changed files with 46 additions and 13 deletions
+16 -4
View File
@@ -1,13 +1,25 @@
/**
* We define here a simple event bus: it can
* - emit events
* - add/remove listeners.
*
* This is a useful pattern of communication in some cases.
*/
//------------------------------------------------------------------------------
// Types
//------------------------------------------------------------------------------
export type Callback = (...args: any[]) => void;
interface Subscription {
export interface Subscription {
owner: any;
callback: Callback;
}
/**
* Simple event bus: it can emit events, and add/remove listeners.
*/
//------------------------------------------------------------------------------
// EventBus
//------------------------------------------------------------------------------
export class EventBus {
private subscriptions: { [eventType: string]: Subscription[] } = {};
+17 -4
View File
@@ -3,7 +3,11 @@ import { idGenerator } from "./core/utils";
import { WEnv } from "./core/widget";
import { ActionManager, IActionManager } from "./services/action_manager";
import { Ajax, IAjax } from "./services/ajax";
import { Router, IRouter } from "./services/router";
import { IRouter, Router } from "./services/router";
//------------------------------------------------------------------------------
// Types
//------------------------------------------------------------------------------
export interface Menu {
title: string;
@@ -11,13 +15,23 @@ export interface Menu {
}
export interface Env extends WEnv {
// services
actionManager: IActionManager;
ajax: IAjax;
router: IRouter;
menus: Menu[];
// helpers
rpc: IAjax["rpc"];
// configuration
debug: boolean;
}
//------------------------------------------------------------------------------
// Code
//------------------------------------------------------------------------------
export function makeEnvironment(): Env {
const qweb = new QWeb();
const router = new Router();
@@ -33,13 +47,12 @@ export function makeEnvironment(): Env {
qweb,
getID: idGenerator(),
// services
ajax,
router,
actionManager,
menus,
// helpers
rpc: ajax.rpc
rpc: ajax.rpc,
debug: false
};
}
+13 -5
View File
@@ -5,25 +5,29 @@ import { CRM } from "../widgets/crm";
import { Discuss } from "../widgets/discuss";
import { Query, IRouter } from "./router";
//------------------------------------------------------------------------------
// Types
//------------------------------------------------------------------------------
interface Type<T> extends Function {
new (...args: any[]): T;
}
interface ClientAction {
export interface ClientAction {
type: "client";
name: string;
}
interface ActWindowAction {
export interface ActWindowAction {
type: "act_window";
views: string[];
}
type ActionEvent = "action_ready";
export type ActionEvent = "action_ready";
export interface IActionManager {
doAction(actionID: number);
on(event: ActionEvent, owner: any, callback: Callback);
doAction(actionID: number): void;
on(event: ActionEvent, owner: any, callback: Callback): void;
getCurrentAction(): ActionWidget | null;
}
@@ -40,6 +44,10 @@ const actions: any[] = [
{ id: 2, title: "CRM", Widget: CRM }
];
//------------------------------------------------------------------------------
// Action Manager
//------------------------------------------------------------------------------
export class ActionManager extends EventBus implements IActionManager {
router: IRouter;
currentAction: ActionWidget | null = null;