Optimized sub routing in presenters
This commit is contained in:
parent
73214396ce
commit
bfee96c59e
4 changed files with 40 additions and 28 deletions
|
@ -2,7 +2,7 @@ var App = App || {};
|
||||||
|
|
||||||
App.Bootstrap = function(auth, router, util, promise) {
|
App.Bootstrap = function(auth, router, util, promise) {
|
||||||
|
|
||||||
util.initPresenter(function() { return App.DI.get('topNavigationPresenter'); });
|
util.initPresenter('topNavigationPresenter');
|
||||||
|
|
||||||
promise.wait(auth.tryLoginFromCookie())
|
promise.wait(auth.tryLoginFromCookie())
|
||||||
.then(startRouting)
|
.then(startRouting)
|
||||||
|
|
|
@ -18,11 +18,15 @@ App.Presenters.UserListPresenter = function(
|
||||||
|
|
||||||
function init(args) {
|
function init(args) {
|
||||||
topNavigationPresenter.select('users');
|
topNavigationPresenter.select('users');
|
||||||
activeSearchOrder = util.parseComplexRouteArgs(args.searchArgs).order;
|
|
||||||
|
|
||||||
promise.wait(util.promiseTemplate('user-list')).then(function(html) {
|
promise.wait(util.promiseTemplate('user-list')).then(function(html) {
|
||||||
template = _.template(html);
|
template = _.template(html);
|
||||||
|
initPaginator(args);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initPaginator(args) {
|
||||||
|
activeSearchOrder = util.parseComplexRouteArgs(args.searchArgs).order;
|
||||||
pagedCollectionPresenter.init({
|
pagedCollectionPresenter.init({
|
||||||
searchArgs: args.searchArgs,
|
searchArgs: args.searchArgs,
|
||||||
baseUri: '#/users',
|
baseUri: '#/users',
|
||||||
|
@ -35,7 +39,6 @@ App.Presenters.UserListPresenter = function(
|
||||||
$el.empty();
|
$el.empty();
|
||||||
messagePresenter.showError($el, response.json && response.json.error || response);
|
messagePresenter.showError($el, response.json && response.json.error || response);
|
||||||
}});
|
}});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
|
@ -59,6 +62,7 @@ App.Presenters.UserListPresenter = function(
|
||||||
|
|
||||||
return {
|
return {
|
||||||
init: init,
|
init: init,
|
||||||
|
reinit: initPaginator,
|
||||||
render: render
|
render: render
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -19,12 +19,12 @@ App.Router = function(jQuery, util, appState) {
|
||||||
};
|
};
|
||||||
|
|
||||||
function injectRoutes() {
|
function injectRoutes() {
|
||||||
inject('#/login', function() { return App.DI.get('loginPresenter'); });
|
inject('#/login', 'loginPresenter');
|
||||||
inject('#/logout', function() { return App.DI.get('logoutPresenter'); });
|
inject('#/logout', 'logoutPresenter');
|
||||||
inject('#/register', function() { return App.DI.get('registrationPresenter'); });
|
inject('#/register', 'registrationPresenter');
|
||||||
inject('#/users', function() { return App.DI.get('userListPresenter'); });
|
inject('#/users', 'userListPresenter');
|
||||||
inject('#/users/:searchArgs', function() { return App.DI.get('userListPresenter'); });
|
inject('#/users/:searchArgs', 'userListPresenter');
|
||||||
inject('#/user/:userName', function() { return App.DI.get('userPresenter'); });
|
inject('#/user/:userName', 'userPresenter');
|
||||||
setRoot('#/users');
|
setRoot('#/users');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -33,9 +33,9 @@ App.Router = function(jQuery, util, appState) {
|
||||||
Path.root(newRoot);
|
Path.root(newRoot);
|
||||||
};
|
};
|
||||||
|
|
||||||
function inject(path, presenterGetter) {
|
function inject(path, presenterName) {
|
||||||
Path.map(path).to(function() {
|
Path.map(path).to(function() {
|
||||||
util.initContentPresenter(presenterGetter, this.params);
|
util.initContentPresenter(presenterName, this.params);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@ var App = App || {};
|
||||||
App.Util = (function(jQuery, promise) {
|
App.Util = (function(jQuery, promise) {
|
||||||
|
|
||||||
var templateCache = {};
|
var templateCache = {};
|
||||||
|
var lastContentPresenterName;
|
||||||
|
var lastContentPresenter;
|
||||||
|
|
||||||
function parseComplexRouteArgs(args) {
|
function parseComplexRouteArgs(args) {
|
||||||
var result = {};
|
var result = {};
|
||||||
|
@ -28,14 +30,20 @@ App.Util = (function(jQuery, promise) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function initPresenter(presenterGetter, args) {
|
function initPresenter(presenterName, args) {
|
||||||
var presenter = presenterGetter();
|
var presenter = App.DI.get(presenterName);
|
||||||
presenter.init.call(presenter, args);
|
presenter.init.call(presenter, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
function initContentPresenter(presenterGetter, args) {
|
function initContentPresenter(presenterName, args) {
|
||||||
//jQuery('#content').empty();
|
if (lastContentPresenterName != presenterName) {
|
||||||
initPresenter(presenterGetter, args);
|
var presenter = App.DI.get(presenterName);
|
||||||
|
var initResult = presenter.init.call(presenter, args);
|
||||||
|
lastContentPresenterName = presenterName;
|
||||||
|
lastContentPresenter = presenter;
|
||||||
|
} else {
|
||||||
|
lastContentPresenter.reinit.call(presenter, args);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function promiseTemplate(templateName) {
|
function promiseTemplate(templateName) {
|
||||||
|
|
Loading…
Reference in a new issue