diff options
| -rw-r--r-- | share/www/browse/index.html | 22 | ||||
| -rw-r--r-- | share/www/script/browse.js | 35 | 
2 files changed, 52 insertions, 5 deletions
diff --git a/share/www/browse/index.html b/share/www/browse/index.html index c2d1ae63..93f5a21a 100644 --- a/share/www/browse/index.html +++ b/share/www/browse/index.html @@ -28,7 +28,15 @@ specific language governing permissions and limitations under the License.      <script>        var page = new CouchIndexPage();        $(document).ready(function() { +        var dbsPerPage = $.cookies.get("perpage"); +        if (dbsPerPage) $("#perpage").val(dbsPerPage); +        $("#perpage").change(function() { +          page.updateDatabaseListing(); +          $.cookies.set("perpage", this.value); +        }); +          page.updateDatabaseListing(); +          $("#toolbar button.add").click(function() {            page.addDatabase();          }); @@ -57,7 +65,19 @@ specific language governing permissions and limitations under the License.          </tbody>          <tbody class="footer">            <tr> -            <td colspan="4"></td> +            <td colspan="4"> +              <div id="paging"> +                <a class="prev">← Previous Page</a> | +                <label>Rows per page: <select id="perpage"> +                  <option selected>10</option> +                  <option>25</option> +                  <option>50</option> +                  <option>100</option> +                </select></label> | +                <a class="next">Next Page →</a> +              </div> +              <span></span> +            </td>            </tr>          </tbody>        </table> diff --git a/share/www/script/browse.js b/share/www/script/browse.js index 8291d914..298b8cbf 100644 --- a/share/www/script/browse.js +++ b/share/www/script/browse.js @@ -36,15 +36,22 @@ function CouchIndexPage() {      return false;    } -  this.updateDatabaseListing = function() { +  this.updateDatabaseListing = function(offset) { +    offset |= 0;      $(document.body).addClass("loading"); +    var maxPerPage = parseInt($("#perpage").val(), 10); +      $.couch.allDbs({        success: function(dbs) { +        $("#paging a").unbind(); +        $("#databases tbody.content").empty(); +          if (dbs.length == 0) {            $(document.body).removeClass("loading");          } +        var dbsOnPage = dbs.slice(offset, offset + maxPerPage); -        $.each(dbs, function(idx, dbName) { +        $.each(dbsOnPage, function(idx, dbName) {            $("#databases tbody.content").append("<tr>" +               "<th><a href='database.html?" + encodeURIComponent(dbName) + "'>" +                dbName + "</a></th>" + @@ -56,14 +63,34 @@ function CouchIndexPage() {                  .find("td.size").text(prettyPrintSize(info.disk_size)).end()                  .find("td.count").text(info.doc_count).end()                  .find("td.seq").text(info.update_seq); -              if (idx == dbs.length - 1) { +              if (idx == dbsOnPage.length - 1) {                  $(document.body).removeClass("loading");                }              }            });          });          $("#databases tbody tr:odd").addClass("odd"); -        $("#databases tbody.footer tr td").text(dbs.length + " database(s)"); + +        if (offset > 0) { +          $("#paging a.prev").attr("href", "#" + (offset - maxPerPage)).click(function() { +            page.updateDatabaseListing(offset - maxPerPage); +          }); +        } else { +          $("#paging a.prev").removeAttr("href"); +        } +        if (offset + maxPerPage < dbs.length) { +          $("#paging a.next").attr("href", "#" + (offset + maxPerPage)).click(function() { +            page.updateDatabaseListing(offset + maxPerPage); +          }); +        } else { +          $("#paging a.next").removeAttr("href"); +        } + +        var firstNum = offset + 1; +        var lastNum = firstNum + dbsOnPage.length - 1; +        $("#databases tbody.footer tr td span").text( +          "Showing " + firstNum + "-" + lastNum + " of " + dbs.length + +          " databases");        }      });    }  | 
