diff options
author | Russell Branca <chewbranca@gmail.com> | 2013-04-04 16:18:47 -0700 |
---|---|---|
committer | Russell Branca <chewbranca@gmail.com> | 2013-04-04 17:15:26 -0700 |
commit | a60959321b3bafc50e6157cef8f1ca0012c25762 (patch) | |
tree | 0a2b55d24d468a4d0dac98903a4b835d0f2e7ae0 | |
parent | ea166c32cd9e99c1a156722a51b5508b590bd76d (diff) | |
download | couchdb-a60959321b3bafc50e6157cef8f1ca0012c25762.tar.gz |
Working database pagination
-rw-r--r-- | src/fauxton/app/modules/databases/resources.js | 2 | ||||
-rw-r--r-- | src/fauxton/app/modules/databases/routes.js | 2 | ||||
-rw-r--r-- | src/fauxton/app/modules/databases/views.js | 17 | ||||
-rw-r--r-- | src/fauxton/app/templates/databases/list.html | 17 |
4 files changed, 34 insertions, 4 deletions
diff --git a/src/fauxton/app/modules/databases/resources.js b/src/fauxton/app/modules/databases/resources.js index 59dd179ea..6927fd57e 100644 --- a/src/fauxton/app/modules/databases/resources.js +++ b/src/fauxton/app/modules/databases/resources.js @@ -135,7 +135,7 @@ function(app, FauxtonAPI, Documents) { parse: function(resp) { // TODO: pagination! - return _.map(_.first(resp, 10), function(database) { + return _.map(resp, function(database) { return { id: encodeURIComponent(database), name: database diff --git a/src/fauxton/app/modules/databases/routes.js b/src/fauxton/app/modules/databases/routes.js index 12edd0ea2..2ba59d789 100644 --- a/src/fauxton/app/modules/databases/routes.js +++ b/src/fauxton/app/modules/databases/routes.js @@ -63,7 +63,7 @@ function(app, FauxtonAPI, Databases) { Databases.Routes = { "": allDbsCallback, "index.html": allDbsCallback, - "_all_dbs": allDbsCallback + "_all_dbs(:params)": allDbsCallback }; return Databases; diff --git a/src/fauxton/app/modules/databases/views.js b/src/fauxton/app/modules/databases/views.js index 322cd5ad9..afaee071c 100644 --- a/src/fauxton/app/modules/databases/views.js +++ b/src/fauxton/app/modules/databases/views.js @@ -32,6 +32,7 @@ function(app, FauxtonAPI) { Views.List = FauxtonAPI.View.extend({ dbLimit: 10, + perPage: 10, template: "templates/databases/list", events: { "click button.all": "selectAll", @@ -39,12 +40,18 @@ function(app, FauxtonAPI) { }, initialize: function(options) { + var params = app.getParams(); this.collection.on("add", this.render, this); + this.page = params.page ? parseInt(params.page, 10) : 1; }, serialize: function() { return { - databases: this.collection + databases: this.collection, + page: this.page, + perPage: this.perPage, + totalDbs: this.collection.length, + totalPages: Math.ceil(this.collection.length / this.perPage) }; }, @@ -61,8 +68,14 @@ function(app, FauxtonAPI) { } }, + paginated: function() { + var start = (this.page - 1) * this.perPage; + var end = this.page * this.perPage - 1; + return this.collection.slice(start, end); + }, + beforeRender: function() { - this.collection.each(function(database) { + _.each(this.paginated(), function(database) { this.insertView("table.databases tbody", new Views.Item({ model: database })); diff --git a/src/fauxton/app/templates/databases/list.html b/src/fauxton/app/templates/databases/list.html index ba871b59e..a2e70f1bb 100644 --- a/src/fauxton/app/templates/databases/list.html +++ b/src/fauxton/app/templates/databases/list.html @@ -27,3 +27,20 @@ the License. <tbody> </tbody> </table> +<div class="pagination pagination-centered"> + <ul> + <% if (page > 1) { %> + <li><a href="#/_all_dbs?page=<%= page - 1 %>">«</a></li> + <% } else { %> + <li class="disabled"><a href="#/_all_dbs?page=<%= page %>">«</a></li> + <% } %> + <% _.each(_.range(1, totalPages+1), function(i) { %> + <li <% if (page == i) { %>class="active"<% } %>><a href="#/_all_dbs?page=<%= i %>"><%= i %></a></li> + <% }) %> + <% if (page < totalPages) { %> + <li><a href="#/_all_dbs?page=<%= page + 1 %>">»</a></li> + <% } else { %> + <li class="disabled"><a href="#/_all_dbs?page=<%= page %>">»</a></li> + <% } %> + </ul> +</div> |