blob: 563364056caf0cec033dd4ec7f0d0a74eec22d98 [file] [log] [blame]
{{ define "scripts" }}
currentId = '';
currentType = '';
currentChunk = '';
function switchSign(element) {
if (!element) return false;
if (element.tagName !== "A") return false;
if (!element.hasAttribute('href')) return false;
if (element.innerHTML[0] == '+') {
element.innerHTML = '-' + element.innerHTML.substring(1);
return true;
} else {
element.innerHTML = '+' + element.innerHTML.substring(1);
return true;
}
}
function recurse(id) {
var children = document.getElementsByClassName(id);
for (let i = 0; i < children.length; i++) {
children[i].classList.toggle("open");
if (switchSign(children[i])) {
recursive(children[i].getAttribute('href').substring(1));
}
}
}
document.getElementById("comparison").addEventListener("click", function (e) {
if (!e) return;
e.preventDefault();
if (switchSign(e.target)) {
recurse(e.target.getAttribute('href').substring(1));
}
});
function hideDiff() {
if (currentId == '') {
return;
}
let spans = document.querySelectorAll(`#id_${currentId} > td > div > span.${currentType}`);
[].forEach.call(spans, function(span) { span.classList.remove(`span_${currentType}`); });
let inactives = document.querySelectorAll(`#${currentType}_${currentChunk}${currentId}`);
[].forEach.call(inactives, function(inactive) { inactive.classList.add('inactive'); });
let invisibles = document.querySelectorAll(`#id_${currentId} > td > div.${currentType}`);
[].forEach.call(invisibles, function(invisible) { invisible.classList.add('invisible'); });
currentId = '';
currentType = '';
currentChunk = '';
}
function showDiff(id, type, chunkType) {
hideDiff();
let spans = document.querySelectorAll(`#id_${id} > td > div > span.${type}`);
[].forEach.call(spans, function(span) { span.classList.add(`span_${type}`); });
let inactives = document.querySelectorAll(`#${type}_${chunkType}${id}`);
[].forEach.call(inactives, function(inactive) { inactive.classList.remove('inactive'); });
let invisibles = document.querySelectorAll(`#id_${id} > td > div.${type}`);
[].forEach.call(invisibles, function(invisible) { invisible.classList.remove('invisible'); });
currentId = id;
currentType = type;
currentChunk = chunkType;
}
{{ end }}