Updated Branches: refs/heads/1958-only-fetch-db-per-page [created] 25a57313f
Fixing database landing page so that it doesn't fetch the status of every database on load. Only fetches the # of databases showing per page. Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/25a57313 Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/25a57313 Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/25a57313 Branch: refs/heads/1958-only-fetch-db-per-page Commit: 25a57313fccaadcb212e7ffadb5190f513ce121d Parents: 6bb810f Author: suelockwood <[email protected]> Authored: Thu Dec 12 16:14:10 2013 -0500 Committer: suelockwood <[email protected]> Committed: Thu Dec 12 16:14:10 2013 -0500 ---------------------------------------------------------------------- src/fauxton/app/modules/databases/routes.js | 15 +-------------- src/fauxton/app/modules/databases/views.js | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb/blob/25a57313/src/fauxton/app/modules/databases/routes.js ---------------------------------------------------------------------- diff --git a/src/fauxton/app/modules/databases/routes.js b/src/fauxton/app/modules/databases/routes.js index ac50b4b..e63c3a7 100644 --- a/src/fauxton/app/modules/databases/routes.js +++ b/src/fauxton/app/modules/databases/routes.js @@ -59,20 +59,7 @@ function(app, FauxtonAPI, Databases, Views) { }, establish: function() { - var databases = this.databases; - var deferred = this.deferred; - - databases.fetch().done(function(resp) { - FauxtonAPI.when(databases.map(function(database) { - return database.status.fetch(); - })).always(function(resp) { - //make this always so that even if a user is not allowed access to a database - //they will still see a list of all databases - deferred.resolve(); - }); - }); - - return [deferred]; + return [this.databases.fetch()]; } }); http://git-wip-us.apache.org/repos/asf/couchdb/blob/25a57313/src/fauxton/app/modules/databases/views.js ---------------------------------------------------------------------- diff --git a/src/fauxton/app/modules/databases/views.js b/src/fauxton/app/modules/databases/views.js index 7d59ac4..aa2aa11 100644 --- a/src/fauxton/app/modules/databases/views.js +++ b/src/fauxton/app/modules/databases/views.js @@ -24,7 +24,9 @@ function(app, Components, FauxtonAPI, Databases) { Views.Item = FauxtonAPI.View.extend({ template: "templates/databases/item", tagName: "tr", - + establish: function(){ + return [this.model.fetch()]; + }, serialize: function() { return { encoded: encodeURIComponent(this.model.get("name")), @@ -36,7 +38,7 @@ function(app, Components, FauxtonAPI, Databases) { Views.List = FauxtonAPI.View.extend({ dbLimit: 20, - perPage: 20, + perPage: 10, template: "templates/databases/list", events: { "click button.all": "selectAll", @@ -54,7 +56,19 @@ function(app, Components, FauxtonAPI, Databases) { databases: this.collection }; }, - + establish: function(){ + var currentDBs = this.paginated(); + var deferred = FauxtonAPI.Deferred(); + + FauxtonAPI.when(currentDBs.map(function(database) { + return database.status.fetch(); + })).always(function(resp) { + //make this always so that even if a user is not allowed access to a database + //they will still see a list of all databases + deferred.resolve(); + }); + return [deferred]; + }, switchDatabase: function(event, selectedName) { event && event.preventDefault(); @@ -79,6 +93,7 @@ function(app, Components, FauxtonAPI, Databases) { return this.collection.slice(start, end); }, + beforeRender: function() { this.insertView("#newButton", new Views.NewDatabaseButton({ @@ -86,11 +101,13 @@ function(app, Components, FauxtonAPI, Databases) { })); _.each(this.paginated(), function(database) { + console.log(database); this.insertView("table.databases tbody", new Views.Item({ model: database })); }, this); + this.insertView("#database-pagination", new Components.Pagination({ page: this.page, perPage: this.perPage,
