lazy loading for everybody!
parent
a10761b889
commit
68580dad72
|
@ -16,6 +16,17 @@
|
|||
******************************************************************************/
|
||||
|
||||
Backbone.Model.prototype.fetchIfNeeded = function(options) {
|
||||
var _self = this;
|
||||
if (!options) {
|
||||
options = {};
|
||||
}
|
||||
var success = options.success;
|
||||
options.success = function(c, r) {
|
||||
_self.isFetched = true;
|
||||
if (success) {
|
||||
success(c, r);
|
||||
}
|
||||
};
|
||||
if (!this.isFetched) {
|
||||
return this.fetch(options);
|
||||
} else {
|
||||
|
@ -23,6 +34,17 @@ Backbone.Model.prototype.fetchIfNeeded = function(options) {
|
|||
}
|
||||
};
|
||||
Backbone.Collection.prototype.fetchIfNeeded = function(options) {
|
||||
var _self = this;
|
||||
if (!options) {
|
||||
options = {};
|
||||
}
|
||||
var success = options.success;
|
||||
options.success = function(c, r) {
|
||||
_self.isFetched = true;
|
||||
if (success) {
|
||||
success(c, r);
|
||||
}
|
||||
};
|
||||
if (!this.isFetched) {
|
||||
return this.fetch(options);
|
||||
} else {
|
||||
|
@ -243,6 +265,16 @@ var BlackListListView = Backbone.View.extend({
|
|||
this.template = _.template($('#tmpl-blacklist-form').html());
|
||||
}
|
||||
},
|
||||
|
||||
load:function(callback) {
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('blacklist');
|
||||
|
||||
$.when(this.model.fetchIfNeeded()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
callback();
|
||||
});
|
||||
},
|
||||
|
||||
events: {
|
||||
"click .refresh-table":"refreshTable"
|
||||
|
@ -250,11 +282,13 @@ var BlackListListView = Backbone.View.extend({
|
|||
|
||||
refreshTable:function() {
|
||||
var _self = this;
|
||||
this.model.fetch({
|
||||
success: function() {
|
||||
_self.render();
|
||||
}
|
||||
});
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('blacklist');
|
||||
|
||||
$.when(this.model.fetchIfNeeded()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
_self.render();
|
||||
});
|
||||
},
|
||||
|
||||
render:function (eventName) {
|
||||
|
@ -581,9 +615,16 @@ var AppRouter = Backbone.Router.extend({
|
|||
{text:"Manage Whitelisted Sites", href:"manage/#admin/whitelists"}
|
||||
]);
|
||||
|
||||
$('#content').html(this.whiteListListView.render().el);
|
||||
this.whiteListListView.delegateEvents();
|
||||
setPageTitle("Manage Whitelists");
|
||||
var view = this.whiteListListView;
|
||||
|
||||
view.load(
|
||||
function() {
|
||||
$('#content').html(view.render().el);
|
||||
view.delegateEvents();
|
||||
setPageTitle("Manage Whitelists");
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
},
|
||||
|
||||
|
@ -663,12 +704,12 @@ var AppRouter = Backbone.Router.extend({
|
|||
|
||||
var view = this.approvedSiteListView;
|
||||
|
||||
this.approvedSiteList.fetch({success:
|
||||
this.approvedSiteListView.load(
|
||||
function(collection, response, options) {
|
||||
$('#content').html(view.render().el);
|
||||
setPageTitle("Manage Approved Sites");
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
},
|
||||
|
||||
|
@ -681,16 +722,13 @@ var AppRouter = Backbone.Router.extend({
|
|||
|
||||
var view = this.tokensListView;
|
||||
|
||||
app.accessTokensList.fetch({
|
||||
success:function(collection, response, options) {
|
||||
app.refreshTokensList.fetch({
|
||||
success:function(collection, response, options) {
|
||||
$('#content').html(view.render().el);
|
||||
setPageTitle("Manage Active Tokens");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
view.load(
|
||||
function(collection, response, options) {
|
||||
$('#content').html(view.render().el);
|
||||
setPageTitle("Manage Active Tokens");
|
||||
}
|
||||
);
|
||||
|
||||
},
|
||||
|
||||
notImplemented:function(){
|
||||
|
@ -716,13 +754,12 @@ var AppRouter = Backbone.Router.extend({
|
|||
|
||||
var view = this.blackListListView;
|
||||
|
||||
this.blackListList.fetch({success:
|
||||
view.load(
|
||||
function(collection, response, options) {
|
||||
$('#content').html(view.render().el);
|
||||
setPageTitle("Manage Blacklist");
|
||||
|
||||
}
|
||||
});
|
||||
);
|
||||
},
|
||||
|
||||
siteScope:function() {
|
||||
|
@ -738,9 +775,13 @@ var AppRouter = Backbone.Router.extend({
|
|||
{text:"Manage System Scopes", href:"manage/#admin/scope"}
|
||||
]);
|
||||
|
||||
$('#content').html(this.systemScopeListView.render().el);
|
||||
this.systemScopeListView.delegateEvents();
|
||||
setPageTitle("Manage System Scopes");
|
||||
var view = this.systemScopeListView;
|
||||
|
||||
view.load(function() {
|
||||
$('#content').html(view.render().el);
|
||||
view.delegateEvents();
|
||||
setPageTitle("Manage System Scopes");
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
|
|
|
@ -236,20 +236,16 @@ var ClientListView = Backbone.View.extend({
|
|||
},
|
||||
|
||||
load:function(callback) {
|
||||
var cleanup = function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
callback();
|
||||
}
|
||||
|
||||
$('#loadingbox').show('slow');
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('clients');
|
||||
|
||||
$.when(this.model.fetchIfNeeded(),
|
||||
this.options.whiteListList.fetchIfNeeded(),
|
||||
this.options.stats.fetchIfNeeded(),
|
||||
this.options.systemScopeList.fetchIfNeeded()).done(cleanup);
|
||||
|
||||
//this.model.fetchIfNeeded({success:cleanup});
|
||||
this.options.systemScopeList.fetchIfNeeded()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
callback();
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
|
@ -297,15 +293,12 @@ var ClientListView = Backbone.View.extend({
|
|||
|
||||
refreshTable:function() {
|
||||
var _self = this;
|
||||
_self.model.fetch({
|
||||
success: function() {
|
||||
_self.options.stats.fetch({
|
||||
success: function () {
|
||||
_self.render();
|
||||
}
|
||||
$.when(this.model.fetchIfNeeded(),
|
||||
this.options.whiteListList.fetchIfNeeded(),
|
||||
this.options.stats.fetchIfNeeded(),
|
||||
this.options.systemScopeList.fetchIfNeeded()).done(function() {
|
||||
_self.render();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -35,6 +35,18 @@ var ApprovedSiteListView = Backbone.View.extend({
|
|||
tagName: 'span',
|
||||
|
||||
initialize:function() { },
|
||||
|
||||
load:function(callback) {
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('approved sites');
|
||||
|
||||
$.when(this.model.fetchIfNeeded(),
|
||||
this.options.clientList.fetchIfNeeded(),
|
||||
this.options.systemScopeList.fetchIfNeeded()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
callback();
|
||||
});
|
||||
},
|
||||
|
||||
events: {
|
||||
"click .refresh-table":"refreshTable"
|
||||
|
@ -94,11 +106,15 @@ var ApprovedSiteListView = Backbone.View.extend({
|
|||
|
||||
refreshTable:function() {
|
||||
var _self = this;
|
||||
this.model.fetch({
|
||||
success: function() {
|
||||
_self.render();
|
||||
}
|
||||
});
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('approved sites');
|
||||
|
||||
$.when(this.model.fetch(),
|
||||
this.options.clientList.fetch(),
|
||||
this.options.systemScopeList.fetch()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
_self.render();
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -120,7 +136,7 @@ var ApprovedSiteView = Backbone.View.extend({
|
|||
|
||||
},
|
||||
|
||||
render: function() {
|
||||
render: function() {
|
||||
|
||||
var creationDate = this.model.get("creationDate");
|
||||
var accessDate = this.model.get("accessDate");
|
||||
|
|
|
@ -134,7 +134,17 @@ var SystemScopeView = Backbone.View.extend({
|
|||
var SystemScopeListView = Backbone.View.extend({
|
||||
tagName: 'span',
|
||||
|
||||
events:{
|
||||
load:function(callback) {
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('approved sites');
|
||||
|
||||
$.when(this.model.fetchIfNeeded()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
callback();
|
||||
});
|
||||
},
|
||||
|
||||
events:{
|
||||
"click .new-scope":"newScope",
|
||||
"click .refresh-table":"refreshTable"
|
||||
},
|
||||
|
@ -146,11 +156,13 @@ var SystemScopeListView = Backbone.View.extend({
|
|||
|
||||
refreshTable:function() {
|
||||
var _self = this;
|
||||
this.model.fetch({
|
||||
success: function() {
|
||||
_self.render();
|
||||
}
|
||||
});
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('approved sites');
|
||||
|
||||
$.when(this.model.fetch()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
_self.render();
|
||||
});
|
||||
},
|
||||
|
||||
togglePlaceholder:function() {
|
||||
|
|
|
@ -311,17 +311,31 @@ var TokenListView = Backbone.View.extend({
|
|||
"click .refresh-table":"refreshTable"
|
||||
},
|
||||
|
||||
refreshTable:function() {
|
||||
var _self = this;
|
||||
_self.model.access.fetch({
|
||||
success: function() {
|
||||
_self.model.refresh.fetch({
|
||||
success:function() {
|
||||
_self.render();
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
load:function(callback) {
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('tokens');
|
||||
|
||||
$.when(this.model.access.fetchIfNeeded(),
|
||||
this.model.refresh.fetchIfNeeded(),
|
||||
this.options.clientList.fetchIfNeeded(),
|
||||
this.options.systemScopeList.fetchIfNeeded()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
callback();
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
refreshTable:function() {
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('tokens');
|
||||
var _self = this;
|
||||
$.when(this.model.access.fetch(),
|
||||
this.model.refresh.fetch(),
|
||||
this.options.clientList.fetch(),
|
||||
this.options.systemScopeList.fetch()).done(function(){
|
||||
_self.render();
|
||||
$('#loadingbox').hide('slow');
|
||||
});
|
||||
},
|
||||
|
||||
togglePlaceholder:function() {
|
||||
|
|
|
@ -50,7 +50,19 @@ var WhiteListListView = Backbone.View.extend({
|
|||
//this.model.bind("reset", this.render, this);
|
||||
},
|
||||
|
||||
events:{
|
||||
load:function(callback) {
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('whitelist');
|
||||
|
||||
$.when(this.model.fetchIfNeeded(),
|
||||
this.options.clientList.fetchIfNeeded(),
|
||||
this.options.systemScopeList.fetchIfNeeded()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
callback();
|
||||
});
|
||||
},
|
||||
|
||||
events:{
|
||||
"click .refresh-table":"refreshTable"
|
||||
},
|
||||
|
||||
|
@ -86,11 +98,15 @@ var WhiteListListView = Backbone.View.extend({
|
|||
|
||||
refreshTable:function() {
|
||||
var _self = this;
|
||||
this.model.fetch({
|
||||
success: function() {
|
||||
_self.render();
|
||||
}
|
||||
});
|
||||
$('#loadingbox').show();
|
||||
$('#loading').html('whitelist');
|
||||
|
||||
$.when(this.model.fetchIfNeeded(),
|
||||
this.options.clientList.fetchIfNeeded(),
|
||||
this.options.systemScopeList.fetchIfNeeded()).done(function() {
|
||||
$('#loadingbox').hide('slow');
|
||||
_self.render();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue