[diffoscope] 01/01: Some more JS sophistication to track how many pieces are left to load

Ximin Luo infinity0 at debian.org
Wed Aug 24 21:56:49 CEST 2016


This is an automated email from the git hooks/post-receive script.

infinity0 pushed a commit to branch better-lazy-loading
in repository diffoscope.

commit 47b9c4603869f8565d52b08defb2a6abffcde5f4
Author: Ximin Luo <infinity0 at debian.org>
Date:   Wed Aug 24 21:53:52 2016 +0200

    Some more JS sophistication to track how many pieces are left to load
---
 diffoscope/presenters/html.py | 46 +++++++++++++++++++++----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/diffoscope/presenters/html.py b/diffoscope/presenters/html.py
index 40d7b7f..e4c7442 100644
--- a/diffoscope/presenters/html.py
+++ b/diffoscope/presenters/html.py
@@ -168,29 +168,29 @@ SCRIPTS = """
 <script src="%(jquery_url)s"></script>
 <script type="text/javascript">
 $(function() {
-  var cont_click = function() {
-    var filename = $(this).attr('href');
-    var div = $(this).parent();
-    div.text('... loading ...');
-    div.parent().load(filename + " tr", function() {
-        // http://stackoverflow.com/a/8452751/946226
-        $(this).children(':first').unwrap();
-        $(".ondemand-cont a").on('click', cont_click);
-    });
-    return false;
+  var load_cont;
+  var create_loader = function(tag, findContainer) {
+    return function() {
+        var a = $(this);
+        var filename = a.attr('href');
+        var numleft = Number.parseInt(/\((\d+) pieces?\)/.exec(a.text())[1]) - 1
+        var parent = a.parent();
+        parent.text('... loading ...');
+        findContainer(parent).load(filename + " " + tag, function() {
+            // http://stackoverflow.com/a/8452751/946226
+            var elems = $(this).children(':first').unwrap();
+            // set this behaviour for the next link too
+            var a = findContainer(elems).find(".ondemand-cont a");
+            var noun = numleft > 1 ? "pieces" : "piece" // be sure the regex matches either
+            a.text(a.text() + " (" + numleft + " " + noun + ")");
+            a.on('click', load_cont);
+        });
+        return false;
+    };
   };
-  $(".ondemand a").on('click', function (){
-    var filename = $(this).attr('href');
-    var div = $(this).parent();
-    div.text('... loading ...');
-    div.load(filename + " table", function() {
-        // http://stackoverflow.com/a/8452751/946226
-        $(this).children(':first').unwrap();
-        $(".ondemand-cont a").on('click', cont_click);
-    });
-    return false;
-  });
-  $(".ondemand-cont a").on('click', cont_click);
+  load_cont = create_loader("tr", function(x) { return x.parent(); });
+  $(".ondemand-cont a").on('click', load_cont);
+  $(".ondemand a").on('click', create_loader("table", function(x) { return x; }));
 });
 </script>
 """
@@ -585,7 +585,7 @@ def output_unified_diff(print_func, css_url, directory, unified_diff):
             row_print_exit_else()
 
         print_func("<div class='ondemand'>\n")
-        print_func("... <a href='%s'>load diff (%s pieces) </a> ...\n" % (escape(filename), num_pages))
+        print_func("... <a href='%s'>load diff (%s pieces)</a> ...\n" % (escape(filename), num_pages))
         print_func("</div>\n")
 
     else:

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/diffoscope.git


More information about the diffoscope mailing list