mirror of
https://github.com/rr-/szurubooru.git
synced 2025-07-17 08:26:24 +00:00
(WIP) Added spinner (#39)
This commit is contained in:
@ -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);
|
||||
|
Reference in New Issue
Block a user