Kenneth Love avatar Kenneth Love committed c25bbb4

incremental or all-the-way loading

Comments (0)

Files changed (3)

     return render_template('index.html')
 
 @app.route('/keys')
-@app.route('/keys/<amount>')
-def keys(amount=None):
+@app.route('/keys/<int:amount>')
+def keys(amount=500):
     """ Get available keys. """
     if not session.has_key('redis_db'):
         set_session_defaults(session)
         return redirect(url_for('setup'))
 
     total_keys = len(r.keys())
-    if not amount:
-        initial_keys = r.keys()[:500]
-    else:
-        initial_keys = r.keys()
+    initial_keys = r.keys()[:amount]
     return jsonify(total_keys=total_keys, initial_keys=initial_keys)
 
 @app.route('/key/<key>')

static/css/style.css

         word-break:break-all;
       }
     #keylist li.paginator {
-      cursor:pointer;
       font-style:italic;
       text-align:center;
     }
+      #keylist li.paginator a {
+        display:inline;
+      }
 
 #cancel {
   background:url('../img/cancel.png') center center no-repeat;

static/js/redbeard.js

     $(window).hashchange();
 }
 
-function load_keys(all) {
+function load_keys(amount) {
     var keys_url = '/keys';
 
-    if (all) {
-        keys_url += '/all';
+    if (amount) {
+        keys_url += '/' + amount;
     }
 
     var jqxhr = $.getJSON(keys_url)
         .success(function(data) {
-            var items = [];
+            var items = [],
+                count = data['initial_keys'].length,
+                total = data['total_keys'];
+
             $.each(data['initial_keys'], function(key, value) {
                 items.push('<li><a href="/key/' + value + '">' + value + '</a></li>');
             });
+
             $("#keylist").empty().html(items.join(''));
-            if (data['initial_keys'].length != data['total_keys']) {
+
+            if (count != total) {
                 $("#keylist")
-                    .append('<li class="paginator">' + data['initial_keys'].length + ' of ' + data['total_keys'] + '. Click to load the rest.</li>')
-                    .click(function() { load_keys(all=true); });
+                    .append('<li class="paginator">Loaded ' + count + ' of ' + total + '. <a href="' + (count + 500) + '">Load 500 more</a> | <a href="' + total + '">Load all keys</a></li>');
+                $("#keylist .paginator a").live('click', function(e) {
+                    e.preventDefault();
+                    load_keys($(this).attr('href'));
+                });
             }
         })
         .error(function() {
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.