Files
owl/web/static/src/ts/root.ts
T

53 lines
1.5 KiB
TypeScript
Raw Normal View History

2019-01-29 10:00:33 +01:00
import { Widget } from "./core/widget";
2019-01-31 10:55:41 +01:00
import { Env } from "./env";
2019-01-31 13:19:30 +01:00
import { ActionStack } from "./services/action_manager";
2019-02-02 16:27:49 +01:00
import { INotification } from "./core/notifications";
2019-01-31 10:55:41 +01:00
import { Action } from "./widgets/action";
import { HomeMenu } from "./widgets/home_menu";
import { Navbar } from "./widgets/navbar";
2019-01-29 15:19:02 +01:00
import { Notification } from "./widgets/notification";
2019-01-31 13:19:30 +01:00
//------------------------------------------------------------------------------
// Types
//------------------------------------------------------------------------------
2019-01-31 10:55:41 +01:00
interface State {
notifications: INotification[];
2019-01-31 13:19:30 +01:00
stack: ActionStack;
2019-01-31 10:55:41 +01:00
inMenu: boolean;
}
2019-01-31 13:19:30 +01:00
//------------------------------------------------------------------------------
// Root Widget
//------------------------------------------------------------------------------
2019-01-29 14:41:12 +01:00
export class Root extends Widget<Env, {}> {
template = "web_client";
2019-01-31 10:55:41 +01:00
widgets = { Navbar, Notification, HomeMenu, Action };
2019-01-31 10:55:41 +01:00
state: State = {
notifications: [],
2019-01-31 13:19:30 +01:00
stack: [],
2019-01-31 10:55:41 +01:00
inMenu: false
};
constructor(env: Env) {
super(env);
2019-01-31 13:19:30 +01:00
this.toggleHome = this.toggleHome.bind(this);
2019-01-31 10:55:41 +01:00
}
2019-01-29 15:19:02 +01:00
mounted() {
2019-01-31 13:19:30 +01:00
this.env.notifications.on("notifications_updated", this, notifs =>
this.updateState({ notifications: notifs })
);
this.env.actionManager.on("action_stack_updated", this, stack =>
this.updateState({ stack })
);
this.env.actionManager.activate();
2019-01-29 16:13:05 +01:00
}
2019-01-31 10:55:41 +01:00
2019-01-31 13:19:30 +01:00
toggleHome() {
2019-01-31 10:55:41 +01:00
this.updateState({ inMenu: !this.state.inMenu });
}
}