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