2019-02-02 16:51:24 +01:00
|
|
|
import { Widget } from "../core/widget";
|
|
|
|
|
import { Env } from "../env";
|
|
|
|
|
import { ActionStack } from "../services/action_manager";
|
|
|
|
|
import { INotification } from "../core/notifications";
|
|
|
|
|
import { Action } from "./action";
|
|
|
|
|
import { HomeMenu } from "./home_menu";
|
|
|
|
|
import { Navbar } from "./navbar";
|
|
|
|
|
import { Notification } from "./notification";
|
2019-01-22 10:38:44 +01:00
|
|
|
|
2019-01-31 13:19:30 +01:00
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
// Types
|
|
|
|
|
//------------------------------------------------------------------------------
|
2019-01-22 10:38:44 +01:00
|
|
|
|
2019-01-31 10:55:41 +01:00
|
|
|
interface State {
|
|
|
|
|
notifications: INotification[];
|
2019-01-31 13:19:30 +01:00
|
|
|
stack: ActionStack;
|
2019-02-02 18:17:21 +01:00
|
|
|
inHome: boolean;
|
2019-01-31 10:55:41 +01:00
|
|
|
}
|
|
|
|
|
|
2019-01-31 13:19:30 +01:00
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
// Root Widget
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
|
2019-01-29 14:41:12 +01:00
|
|
|
export class Root extends Widget<Env, {}> {
|
2019-02-02 11:41:19 +01:00
|
|
|
template = "web_client";
|
2019-01-31 10:55:41 +01:00
|
|
|
widgets = { Navbar, Notification, HomeMenu, Action };
|
2019-01-22 10:38:44 +01:00
|
|
|
|
2019-01-31 10:55:41 +01:00
|
|
|
state: State = {
|
|
|
|
|
notifications: [],
|
2019-01-31 13:19:30 +01:00
|
|
|
stack: [],
|
2019-02-02 18:17:21 +01:00
|
|
|
inHome: false
|
2019-01-31 10:55:41 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
2019-01-22 10:38:44 +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-02-02 18:17:21 +01:00
|
|
|
this.updateState({ inHome: !this.state.inHome });
|
2019-01-31 10:55:41 +01:00
|
|
|
}
|
2019-01-22 10:38:44 +01:00
|
|
|
}
|