From 4ca12c70aba77b2b657dae41b7119171be5e28bb Mon Sep 17 00:00:00 2001 From: Connor Turland Date: Fri, 30 Jan 2015 20:49:30 -0500 Subject: [PATCH] explore maps lists were rendering bajillions too many times causing everything to go slow. timeouts weren't canceling. very wow --- app/assets/javascripts/src/Metamaps.Backbone.js | 7 ++++++- app/assets/javascripts/src/Metamaps.Router.js | 3 ++- app/assets/javascripts/src/Metamaps.Views.js | 3 ++- app/assets/javascripts/src/Metamaps.js | 3 ++- public/famous/main.js | 5 ++++- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/src/Metamaps.Backbone.js b/app/assets/javascripts/src/Metamaps.Backbone.js index 2909f5d8..f5219653 100644 --- a/app/assets/javascripts/src/Metamaps.Backbone.js +++ b/app/assets/javascripts/src/Metamaps.Backbone.js @@ -176,14 +176,19 @@ Metamaps.Backbone.MapsCollection = Backbone.Collection.extend({ var self = this; + Metamaps.Loading.show(); + if (this.page != "loadedAll") { var numBefore = this.length; this.fetch({ remove: false, + silent: true, data: { page: this.page }, success: function (collection, response, options) { // you can pass additional options to the event you trigger here as well - if (collection.length - numBefore < 20) self.page = "loadedAll"; + if (collection.length - numBefore < 20) { + self.page = "loadedAll"; + } else self.page += 1; self.trigger('successOnFetch'); }, diff --git a/app/assets/javascripts/src/Metamaps.Router.js b/app/assets/javascripts/src/Metamaps.Router.js index 6d9e2012..65dddaa8 100644 --- a/app/assets/javascripts/src/Metamaps.Router.js +++ b/app/assets/javascripts/src/Metamaps.Router.js @@ -54,7 +54,8 @@ Metamaps.GlobalUI.Search.close(0, true); Metamaps.Famous.maps.hide(); - setTimeout(function(){ + clearTimeout(Metamaps.routerTimeoutId); + Metamaps.routerTimeoutId = setTimeout(function(){ Metamaps.Router.navigate(""); }, 500); } diff --git a/app/assets/javascripts/src/Metamaps.Views.js b/app/assets/javascripts/src/Metamaps.Views.js index 00f1b7f6..2a0bf406 100644 --- a/app/assets/javascripts/src/Metamaps.Views.js +++ b/app/assets/javascripts/src/Metamaps.Views.js @@ -91,8 +91,9 @@ Metamaps.Views.init = function () { } Metamaps.Loading.hide(); + Metamaps.Famous.maps.lock = false; - clearTimeout(Metamaps.routerTimeoutFunctionIds); + clearTimeout(Metamaps.routerTimeoutId); Metamaps.routerTimeoutId = setTimeout((function(localCurrentPage){ return function(){ var path = (Metamaps.currentSection == "") ? "" : "/explore/" + localCurrentPage; diff --git a/app/assets/javascripts/src/Metamaps.js b/app/assets/javascripts/src/Metamaps.js index ec5d89cb..60a80329 100644 --- a/app/assets/javascripts/src/Metamaps.js +++ b/app/assets/javascripts/src/Metamaps.js @@ -1716,7 +1716,8 @@ Metamaps.Visualize = { hold(); // update the url now that the map is ready - setTimeout(function(){ + clearTimeout(Metamaps.routerTimeoutId); + Metamaps.routerTimeoutId = setTimeout(function(){ var m = Metamaps.Active.Map; var t = Metamaps.Active.Topic; diff --git a/public/famous/main.js b/public/famous/main.js index 636f1b00..530ca0ed 100644 --- a/public/famous/main.js +++ b/public/famous/main.js @@ -206,12 +206,15 @@ Metamaps.Famous.build = function () { f.maps.mod.setTransform(Transform.translate(window.innerWidth, 94, 0)); }; var mapsScroll = new Scrollview(); + f.maps.lock = false; mapsScroll._scroller.on('edgeHit', function(data){ - if (data.position > 0 && + if (!f.maps.lock && + data.position > 0 && Metamaps.Views && Metamaps.Views.exploreMaps && Metamaps.Views.exploreMaps.collection && Metamaps.Views.exploreMaps.collection.page != "loadedAll") { + f.maps.lock = true; Metamaps.Views.exploreMaps.collection.getMaps(); } });