diff options
author | Garren Smith <garren.smith@gmail.com> | 2014-02-11 10:12:21 +0200 |
---|---|---|
committer | Garren Smith <garren.smith@gmail.com> | 2014-02-11 10:12:21 +0200 |
commit | 46edca25a875096374097c6e01e746eaa0e5d31c (patch) | |
tree | a1e8ece08aa65b05f640335ec78a77788e0fed3f | |
parent | d2a0c46e9475b14c85067e0139b3ecb166fa475a (diff) | |
download | couchdb-46edca25a875096374097c6e01e746eaa0e5d31c.tar.gz |
Fauxton: Improve spinners
-rw-r--r-- | src/fauxton/app/addons/fauxton/components.js | 22 | ||||
-rw-r--r-- | src/fauxton/app/core/routeObject.js | 1 |
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); } |