From c3070be14afba40e3df4a49875e9df4d793aee75 Mon Sep 17 00:00:00 2001 From: espeon65536 Date: Fri, 24 Sep 2021 16:57:24 -0500 Subject: [PATCH] Update small and boss key counters during the normal update cycle --- WebHostLib/static/assets/ootTracker.js | 52 ++++++++++++++++++++++++++ WebHostLib/templates/ootTracker.html | 6 +-- 2 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 WebHostLib/static/assets/ootTracker.js diff --git a/WebHostLib/static/assets/ootTracker.js b/WebHostLib/static/assets/ootTracker.js new file mode 100644 index 00000000..3c4448a7 --- /dev/null +++ b/WebHostLib/static/assets/ootTracker.js @@ -0,0 +1,52 @@ +window.addEventListener('load', () => { + // Reload tracker every 15 seconds + const url = window.location; + setInterval(() => { + const ajax = new XMLHttpRequest(); + ajax.onreadystatechange = () => { + if (ajax.readyState !== 4) { return; } + + // Create a fake DOM using the returned HTML + const domParser = new DOMParser(); + const fakeDOM = domParser.parseFromString(ajax.responseText, 'text/html'); + + // Update item tracker + document.getElementById('inventory-table').innerHTML = fakeDOM.getElementById('inventory-table').innerHTML; + // Update only counters, small keys, and boss keys in the location-table + const types = ['counter', 'smallkeys', 'bosskeys']; + for (let j = 0; j < types.length; j++) { + let counters = document.getElementsByClassName(types[j]); + const fakeCounters = fakeDOM.getElementsByClassName(types[j]); + for (let i = 0; i < counters.length; i++) { + counters[i].innerHTML = fakeCounters[i].innerHTML; + } + } + }; + ajax.open('GET', url); + ajax.send(); + }, 15000) + + // Collapsible advancement sections + const categories = document.getElementsByClassName("location-category"); + for (let i = 0; i < categories.length; i++) { + let hide_id = categories[i].id.split('-')[0]; + if (hide_id == 'Total') { + continue; + } + categories[i].addEventListener('click', function() { + // Toggle the advancement list + document.getElementById(hide_id).classList.toggle("hide"); + // Change text of the header + const tab_header = document.getElementById(hide_id+'-header').children[0]; + const orig_text = tab_header.innerHTML; + let new_text; + if (orig_text.includes("▼")) { + new_text = orig_text.replace("▼", "▲"); + } + else { + new_text = orig_text.replace("▲", "▼"); + } + tab_header.innerHTML = new_text; + }); + } +}); diff --git a/WebHostLib/templates/ootTracker.html b/WebHostLib/templates/ootTracker.html index 64d61ae7..ea7a6d5a 100644 --- a/WebHostLib/templates/ootTracker.html +++ b/WebHostLib/templates/ootTracker.html @@ -3,7 +3,7 @@ {{ player_name }}'s Tracker - + @@ -159,8 +159,8 @@ {% for area in checks_done %} {{ area }} {{'▼' if area != 'Total'}} - {{ small_key_counts.get(area, '-') }} - {{ boss_key_counts.get(area, '-') }} + {{ small_key_counts.get(area, '-') }} + {{ boss_key_counts.get(area, '-') }} {{ checks_done[area] }} / {{ checks_in_area[area] }}