summaryrefslogtreecommitdiff
path: root/client/js/controllers/user_list_controller.js
diff options
context:
space:
mode:
authorrr- <rr-@sakuya.pl>2016-08-28 18:53:06 +0200
committerrr- <rr-@sakuya.pl>2016-08-28 23:40:28 +0200
commitcf1d15354df5e9062c4c8a24e24bd283214d06ca (patch)
treec47a9711ffe7954c711e257d4f6b808565b538ff /client/js/controllers/user_list_controller.js
parente83e1b06a1159ba66d2d8bf560d038ea3c7a07b3 (diff)
client/paging: avoid redrawing header navigation
Diffstat (limited to 'client/js/controllers/user_list_controller.js')
-rw-r--r--client/js/controllers/user_list_controller.js40
1 files changed, 30 insertions, 10 deletions
diff --git a/client/js/controllers/user_list_controller.js b/client/js/controllers/user_list_controller.js
index 9cdd0a1..6e44ce8 100644
--- a/client/js/controllers/user_list_controller.js
+++ b/client/js/controllers/user_list_controller.js
@@ -20,18 +20,42 @@ class UserListController {
topNavigation.activate('users');
topNavigation.setTitle('Listing users');
- this._pageController = new PageController({
+ this._ctx = ctx;
+ this._pageController = new PageController();
+
+ this._headerView = new UsersHeaderView({
+ hostNode: this._pageController.view.pageHeaderHolderNode,
parameters: ctx.parameters,
+ });
+ this._headerView.addEventListener(
+ 'navigate', e => this._evtNavigate(e));
+
+ this._syncPageController();
+ }
+
+ showSuccess(message) {
+ this._pageController.showSuccess(message);
+ }
+
+ _evtNavigate(e) {
+ history.pushState(
+ null,
+ window.title,
+ '/users/' + misc.formatUrlParameters(e.detail.parameters));
+ Object.assign(this._ctx.parameters, e.detail.parameters);
+ this._syncPageController();
+ }
+
+ _syncPageController() {
+ this._pageController.run({
+ parameters: this._ctx.parameters,
getClientUrlForPage: page => {
const parameters = Object.assign(
- {}, ctx.parameters, {page: page});
+ {}, this._ctx.parameters, {page: page});
return '/users/' + misc.formatUrlParameters(parameters);
},
requestPage: page => {
- return UserList.search(ctx.parameters.query, page);
- },
- headerRenderer: headerCtx => {
- return new UsersHeaderView(headerCtx);
+ return UserList.search(this._ctx.parameters.query, page);
},
pageRenderer: pageCtx => {
Object.assign(pageCtx, {
@@ -41,10 +65,6 @@ class UserListController {
},
});
}
-
- showSuccess(message) {
- this._pageController.showSuccess(message);
- }
}
module.exports = router => {