summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarren Smith <garren.smith@gmail.com>2014-02-11 10:12:21 +0200
committerGarren Smith <garren.smith@gmail.com>2014-02-11 10:12:21 +0200
commit46edca25a875096374097c6e01e746eaa0e5d31c (patch)
treea1e8ece08aa65b05f640335ec78a77788e0fed3f
parentd2a0c46e9475b14c85067e0139b3ecb166fa475a (diff)
downloadcouchdb-46edca25a875096374097c6e01e746eaa0e5d31c.tar.gz
Fauxton: Improve spinners
-rw-r--r--src/fauxton/app/addons/fauxton/components.js22
-rw-r--r--src/fauxton/app/core/routeObject.js1
2 files changed, 15 insertions, 8 deletions
diff --git a/src/fauxton/app/addons/fauxton/components.js b/src/fauxton/app/addons/fauxton/components.js
index 1f5e4ada7..8b21916a5 100644
--- a/src/fauxton/app/addons/fauxton/components.js
+++ b/src/fauxton/app/addons/fauxton/components.js
@@ -415,6 +415,8 @@ function(app, FauxtonAPI, ace, spin) {
shadow: false // Whether to render a shadow
};
+ if (routeObjectSpinner) { return; }
+
if (!$('.spinner').length) {
$('<div class="spinner"></div>')
.appendTo('#app-container');
@@ -428,18 +430,22 @@ function(app, FauxtonAPI, ace, spin) {
var removeRouteObjectSpinner = function () {
if (routeObjectSpinner) {
routeObjectSpinner.stop();
+ routeObjectSpinner = null;
$('.spinner').remove();
}
};
- var removeViewSpinner = function () {
+ var removeViewSpinner = function (selector) {
+ var viewSpinner = viewSpinners[selector];
+
if (viewSpinner){
viewSpinner.stop();
- $('.spinner').remove();
+ $(selector).find('.spinner').remove();
+ delete viewSpinners[selector];
}
};
- var viewSpinner;
+ var viewSpinners = {};
FauxtonAPI.RouteObject.on('beforeRender', function (routeObject, view, selector) {
removeRouteObjectSpinner();
@@ -455,19 +461,21 @@ function(app, FauxtonAPI, ace, spin) {
shadow: false // Whether to render a shadow
};
- viewSpinner = new Spinner(opts).spin();
+ var viewSpinner = new Spinner(opts).spin();
$('<div class="spinner"></div>')
.appendTo(selector)
.append(viewSpinner.el);
+
+ viewSpinners[selector] = viewSpinner;
}
});
FauxtonAPI.RouteObject.on('afterRender', function (routeObject, view, selector) {
- removeViewSpinner();
+ removeViewSpinner(selector);
});
- FauxtonAPI.RouteObject.on('viewHasRendered', function () {
- removeViewSpinner();
+ FauxtonAPI.RouteObject.on('viewHasRendered', function (view, selector) {
+ removeViewSpinner(selector);
removeRouteObjectSpinner();
});
diff --git a/src/fauxton/app/core/routeObject.js b/src/fauxton/app/core/routeObject.js
index 9f1067f60..f8a238ff1 100644
--- a/src/fauxton/app/core/routeObject.js
+++ b/src/fauxton/app/core/routeObject.js
@@ -231,7 +231,6 @@ function(FauxtonAPI, Backbone) {
if (_.isEmpty(promise)) { return; }
if (!_.isArray(promise)) {
- if (!promise.abort && !promise.reject) {
return this._promises.push(promise);
}