(WIP) Added spinner (#39)

This commit is contained in:
Marcin Kurczewski
2014-09-17 22:37:49 +02:00
parent a16a2d3235
commit eb7c507359
21 changed files with 310 additions and 221 deletions

View File

@ -1,36 +1,60 @@
var App = App || {};
App.PresenterManager = function(topNavigationPresenter) {
App.PresenterManager = function(jQuery, topNavigationPresenter) {
var lastContentPresenterName;
var lastContentPresenter;
var lastContentPresenter = null;
var $spinner;
var spinnerTimeout;
function init() {
initPresenter('topNavigationPresenter');
initPresenter(topNavigationPresenter, [], function() {});
$spinner = jQuery('body').find('#wait');
}
function initPresenter(presenterName, args) {
var presenter = App.DI.get(presenterName);
presenter.init.call(presenter, args);
function initPresenter(presenter, args, loaded) {
presenter.init.call(presenter, args, loaded);
}
function switchContentPresenter(presenterName, args) {
if (lastContentPresenterName !== presenterName) {
function switchContentPresenter(presenter, args) {
var contentPresenterLoaded = function() {
window.clearTimeout(spinnerTimeout);
$spinner.hide();
};
spinnerTimeout = window.setTimeout(function() {
$spinner.stop().fadeIn('slow');
}, 300);
if (lastContentPresenter === null || lastContentPresenter.name !== presenter.name) {
topNavigationPresenter.changeTitle(null);
var presenter = App.DI.get(presenterName);
presenter.init.call(presenter, args);
lastContentPresenterName = presenterName;
presenter.init.call(presenter, args, contentPresenterLoaded);
lastContentPresenter = presenter;
} else if (lastContentPresenter.reinit) {
lastContentPresenter.reinit.call(lastContentPresenter, args);
lastContentPresenter.reinit.call(lastContentPresenter, args, contentPresenterLoaded);
}
}
function initPresenters(options, loaded) {
var count = 0;
var subPresenterLoaded = function() {
count ++;
if (count === options.length) {
loaded();
}
};
for (var i = 0; i < options.length; i ++) {
initPresenter(options[i][0], options[i][1], subPresenterLoaded);
}
}
return {
init: init,
initPresenter: initPresenter,
initPresenters: initPresenters,
switchContentPresenter: switchContentPresenter,
};
};
App.DI.registerSingleton('presenterManager', ['topNavigationPresenter'], App.PresenterManager);
App.DI.registerSingleton('presenterManager', ['jQuery', 'topNavigationPresenter'], App.PresenterManager);