summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarren Smith <garren.smith@gmail.com>2013-12-04 12:05:06 +0200
committerGarren Smith <garren.smith@gmail.com>2013-12-04 16:31:27 +0200
commitf5a5862a72214d292ccf5b61159bd10dedf5faff (patch)
tree5a04aa3671c61fb36fbf36efb5b82523b0a3885b
parent844ddfa3c4ae1695327de17f9816b28d19fdceb7 (diff)
downloadcouchdb-f5a5862a72214d292ccf5b61159bd10dedf5faff.tar.gz
Fauxton: Add viewHasRendered route event
This is used to clean up any left over spinners if a view has previously been rendered
-rw-r--r--src/fauxton/app/api.js39
1 files changed, 24 insertions, 15 deletions
diff --git a/src/fauxton/app/api.js b/src/fauxton/app/api.js
index 9d6ba08a8..a71c5f88c 100644
--- a/src/fauxton/app/api.js
+++ b/src/fauxton/app/api.js
@@ -314,7 +314,10 @@ function(app, Fauxton) {
FauxtonAPI.when(this.establish()).then(function(resp) {
triggerBroadcast('afterEstablish');
_.each(routeObject.getViews(), function(view, selector) {
- if(view.hasRendered) { return; }
+ if(view.hasRendered) {
+ triggerBroadcast('viewHasRendered', view, selector);
+ return;
+ }
triggerBroadcast('beforeRender', view, selector);
FauxtonAPI.when(view.establish()).then(function(resp) {
@@ -339,14 +342,6 @@ function(app, Fauxton) {
masterLayout.renderView(selector);
});
- /*var hooks = masterLayout.hooks[selector];
- var boundRoute = route;
-
- _.each(hooks, function(hook){
- if (_.any(hook.routes, function(route){return route == boundRoute;})){
- hook.callback(view);
- }
- });*/
});
}.bind(this), function (resp) {
if (!resp) { return; }
@@ -479,12 +474,23 @@ function(app, Fauxton) {
}
});
- var viewSpinner;
- FauxtonAPI.RouteObject.on('beforeRender', function (routeObject, view, selector) {
- if (!routeObject.disableLoader) {
+ var removeRouteObjectSpinner = function () {
+ if (routeObjectSpinner) {
routeObjectSpinner.stop();
$('.spinner').remove();
}
+ };
+
+ var removeViewSpinner = function () {
+ if (viewSpinner){
+ viewSpinner.stop();
+ $('.spinner').remove();
+ }
+ };
+
+ var viewSpinner;
+ FauxtonAPI.RouteObject.on('beforeRender', function (routeObject, view, selector) {
+ removeRouteObjectSpinner();
if (!view.disableLoader){
var opts = {
@@ -506,9 +512,12 @@ function(app, Fauxton) {
});
FauxtonAPI.RouteObject.on('afterRender', function (routeObject, view, selector) {
- if (!view.disableLoader){
- viewSpinner.stop();
- }
+ removeViewSpinner();
+ });
+
+ FauxtonAPI.RouteObject.on('viewHasRendered', function () {
+ removeViewSpinner();
+ removeRouteObjectSpinner();
});
var extensions = _.extend({}, Backbone.Events);