67 lines
2.1 KiB
JavaScript
67 lines
2.1 KiB
JavaScript
|
(function() {
|
||
|
this.Diff = (function() {
|
||
|
var UNFOLD_COUNT;
|
||
|
|
||
|
UNFOLD_COUNT = 20;
|
||
|
|
||
|
function Diff() {
|
||
|
$('.files .diff-file').singleFileDiff();
|
||
|
this.filesCommentButton = $('.files .diff-file').filesCommentButton();
|
||
|
$(document).off('click', '.js-unfold');
|
||
|
$(document).on('click', '.js-unfold', (function(_this) {
|
||
|
return function(event) {
|
||
|
var line_number, link, file, offset, old_line, params, prev_new_line, prev_old_line, ref, ref1, since, target, to, unfold, unfoldBottom;
|
||
|
target = $(event.target);
|
||
|
unfoldBottom = target.hasClass('js-unfold-bottom');
|
||
|
unfold = true;
|
||
|
ref = _this.lineNumbers(target.parent()), old_line = ref[0], line_number = ref[1];
|
||
|
offset = line_number - old_line;
|
||
|
if (unfoldBottom) {
|
||
|
line_number += 1;
|
||
|
since = line_number;
|
||
|
to = line_number + UNFOLD_COUNT;
|
||
|
} else {
|
||
|
ref1 = _this.lineNumbers(target.parent().prev()), prev_old_line = ref1[0], prev_new_line = ref1[1];
|
||
|
line_number -= 1;
|
||
|
to = line_number;
|
||
|
if (line_number - UNFOLD_COUNT > prev_new_line + 1) {
|
||
|
since = line_number - UNFOLD_COUNT;
|
||
|
} else {
|
||
|
since = prev_new_line + 1;
|
||
|
unfold = false;
|
||
|
}
|
||
|
}
|
||
|
file = target.parents('.diff-file');
|
||
|
link = file.data('blob-diff-path');
|
||
|
params = {
|
||
|
since: since,
|
||
|
to: to,
|
||
|
bottom: unfoldBottom,
|
||
|
offset: offset,
|
||
|
unfold: unfold,
|
||
|
indent: 1,
|
||
|
view: file.data('view')
|
||
|
};
|
||
|
return $.get(link, params, function(response) {
|
||
|
return target.parent().replaceWith(response);
|
||
|
});
|
||
|
};
|
||
|
})(this));
|
||
|
}
|
||
|
|
||
|
Diff.prototype.lineNumbers = function(line) {
|
||
|
if (!line.children().length) {
|
||
|
return [0, 0];
|
||
|
}
|
||
|
|
||
|
return line.find('.diff-line-num').map(function() {
|
||
|
return parseInt($(this).data('linenumber'));
|
||
|
});
|
||
|
};
|
||
|
|
||
|
return Diff;
|
||
|
|
||
|
})();
|
||
|
|
||
|
}).call(this);
|