Merge lp:~twom/loggerhead/side-by-side-js-fix into lp:loggerhead

Proposed by Tom Wardill
Status: Merged
Approved by: Tom Wardill
Approved revision: 508
Merged at revision: 511
Proposed branch: lp:~twom/loggerhead/side-by-side-js-fix
Merge into: lp:loggerhead
Prerequisite: lp:~twom/loggerhead/animation-binding
Diff against target: 129 lines (+21/-19)
1 file modified
loggerhead/static/javascript/diff.js (+21/-19)
To merge this branch: bzr merge lp:~twom/loggerhead/side-by-side-js-fix
Reviewer Review Type Date Requested Status
Colin Watson (community) Approve
Review via email: mp+390569@code.launchpad.net

Commit message

Fix side-by-side diffs

Description of the change

The diff JS wasn't transliterated to jQuery completely, fix showing side-by-side and unified diffs by using the correct methods.

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'loggerhead/static/javascript/diff.js'
--- loggerhead/static/javascript/diff.js 2020-09-10 16:51:28 +0000
+++ loggerhead/static/javascript/diff.js 2020-09-10 16:51:28 +0000
@@ -1,6 +1,6 @@
1var unified = true;1var unified = true;
22
3function make_unified(chunk) {3function make_unified(index) {
4 var pending_added = [];4 var pending_added = [];
5 function flush_adds(before) {5 function flush_adds(before) {
6 for (var i = 0; i < pending_added.length; i++) {6 for (var i = 0; i < pending_added.length; i++) {
@@ -8,24 +8,25 @@
8 }8 }
9 pending_added.length = 0;9 pending_added.length = 0;
10 }10 }
11 chunk.get('children').filter(".pseudorow").each(11 $(this).children().filter(".pseudorow").each(
12 function (i, line) {12 function (i, line) {
13 line = $(line);
13 if (line.hasClass("context-row")) {14 if (line.hasClass("context-row")) {
14 flush_adds(line);15 flush_adds(line);
15 line.removeChild($(line).find('.code'));16 line.find('.code')[0].remove();
16 }17 }
17 else if (line.hasClass("both-row")) {18 else if (line.hasClass("both-row")) {
18 var added_line = line.create('<div class="pseudorow insert-row"><div class="lineNumber first">&nbsp;</div><div class="clear">&nbsp;</div></div>');19 var added_line = $('<div class="pseudorow insert-row"><div class="lineNumber first">&nbsp;</div><div class="clear">&nbsp;</div></div>');
19 var clear = $(added_line).find('.clear');20 var clear = $(added_line).find('.clear');
20 $(line).find('.lineNumber.second').insertBefore(clear);21 $(line).find('.lineNumber.second').insertBefore(clear);
21 $(line).find('.code.insert').insertBefore(clear);22 $(line).find('.code.insert').insertBefore(clear);
22 pending_added[pending_added.length] = added_line;23 pending_added[pending_added.length] = added_line;
23 $('<div class="lineNumber second">&nbsp;</div>').insertBefore($(line).find('.code.delete'));24 $('<div class="lineNumber second">&nbsp;</div>').insertBefore($(line).find('.code.delete'));
24 line.replaceClass("both-row", "delete-row");25 line.addClass('delete-row').removeClass('both-row');
25 }26 }
26 else if (line.hasClass("insert-row")) {27 else if (line.hasClass("insert-row")) {
27 flush_adds(line);28 flush_adds(line);
28 line.removeChild($(line).find('.blank'));29 line.find('.blank').remove();
29 }30 }
30 else if (line.hasClass("delete-row")) {31 else if (line.hasClass("delete-row")) {
31 $(line).find('.blank').remove();32 $(line).find('.blank').remove();
@@ -33,10 +34,10 @@
33 }34 }
34 });35 });
35 flush_adds(null);36 flush_adds(null);
36 chunk.replaceClass('sbs', 'unified');37 $(this).addClass('unified').removeClass('sbs');
37}38}
3839
39function make_sbs(chunk) {40function make_sbs(index) {
40 var added = [];41 var added = [];
41 var removed = [];42 var removed = [];
42 function clear_bufs(before) {43 function clear_bufs(before) {
@@ -45,33 +46,34 @@
45 for (var i = 0; i < common; i++) {46 for (var i = 0; i < common; i++) {
46 var a = added[i];47 var a = added[i];
47 var r = removed[i];48 var r = removed[i];
48 a.ancestor().removeChild(a);49 a.remove();
49 r.removeChild($(r).find('.lineNumber.second'));50 r.find('.lineNumber.second').remove();
50 $(a).find('.lineNumber.second').insertBefore($(r).find('.clear'));51 $(a).find('.lineNumber.second').insertBefore($(r).find('.clear'));
51 $(a).find('.code.insert').insertBefore($(r).find('.clear'));52 $(a).find('.code.insert').insertBefore($(r).find('.clear'));
52 r.replaceClass('removed-row', 'both-row');53 r.addClass('both-row').removeClass('removed-row');
53 }54 }
54 if (added.length > removed.length) {55 if (added.length > removed.length) {
55 for (var j = common; j < added.length; j++) {56 for (var j = common; j < added.length; j++) {
56 a = $(added[j]);57 a = $(added[j]);
57 $('<div class="code blank">&nbsp;</div>').insertBefore(a.find('.lineNumber.second'));58 a.find('.lineNumber.second').before('<div class="code blank">&nbsp;</div>');
58 }59 }
59 }60 }
60 else if (added.length < removed.length) {61 else if (added.length < removed.length) {
61 for (var j = common; j < removed.length; j++) {62 for (var j = common; j < removed.length; j++) {
62 r = $(removed[j]);63 r = $(removed[j]);
63 r.find('.code.delete').insertBefore(r.find('.lineNumber.second'));64 r.find('.code.delete').insertBefore(r.find('.lineNumber.second'));
64 r.create('<div class="code blank">&nbsp;</div>').insertBefore(r.find('.clear'));65 r.find('.clear').before('<div class="code blank">&nbsp;</div>')
65 }66 }
66 }67 }
67 added.length = 0;68 added.length = 0;
68 removed.length = 0;69 removed.length = 0;
69 }70 }
70 chunk.get('children').filter(".pseudorow").each(71 $(this).children().filter(".pseudorow").each(
71 function (i, line) {72 function (i, line) {
73 line = $(line);
72 if (line.hasClass("context-row")) {74 if (line.hasClass("context-row")) {
73 clear_bufs(line);75 clear_bufs(line);
74 $(line).find('.code').cloneNode(true).insertBefore($(line).find(".second"));76 $(line).find(".second").before($(line).find('.code').clone());
75 }77 }
76 else if (line.hasClass("insert-row")) {78 else if (line.hasClass("insert-row")) {
77 added[added.length] = line;79 added[added.length] = line;
@@ -81,7 +83,7 @@
81 }83 }
82 });84 });
83 clear_bufs(null);85 clear_bufs(null);
84 chunk.replaceClass('unified', 'sbs');86 $(this).addClass('sbs').removeClass('unified');
8587
86}88}
8789
@@ -91,12 +93,12 @@
91 if (unified) {93 if (unified) {
92 pts && pts.each(make_sbs);94 pts && pts.each(make_sbs);
93 unified = false;95 unified = false;
94 $("#toggle_unified_sbs").set('innerHTML', "Show unified diffs");96 $("#toggle_unified_sbs").html("Show unified diffs");
95 }97 }
96 else {98 else {
97 pts && pts.each(make_unified);99 pts && pts.each(make_unified);
98 unified = true;100 unified = true;
99 $("#toggle_unified_sbs").set('innerHTML', "Show diffs side-by-side");101 $("#toggle_unified_sbs").html("Show diffs side-by-side");
100 }102 }
101}103}
102104
@@ -149,7 +151,7 @@
149151
150function node_process(node) {152function node_process(node) {
151 if (!unified) {153 if (!unified) {
152 node.get('children').filter('.pseudotable').each(make_sbs);154 node.children().filter('.pseudotable').each(make_sbs);
153 }155 }
154}156}
155157

Subscribers

People subscribed via source and target branches