{{ 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 }}