mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-03-26 16:13:24 -07:00
* Player tracker: implement a stylized tracker (#447) * Move generic tracker to a WebWorld method * render both a generic tracker at generic_tracker and the specific tracker at /tracker * create a base template for generic specific tracker and instantiate some information before callng it * some baseline for the playerTracker.html. update information fed from tracker.py * playerTracker: finish implementing icons and generic locations rendering. hide any unacquired progression items when not using icons. Place the name of the progression item under its icon. * player tracker: starting work on regions table * player tracker: change method calls * Move generic tracker to a WebWorld method * render both a generic tracker at generic_tracker and the specific tracker at /tracker * create a base template for generic specific tracker and instantiate some information before callng it * some baseline for the playerTracker.html. update information fed from tracker.py * playerTracker: finish implementing icons and generic locations rendering. hide any unacquired progression items when not using icons. Place the name of the progression item under its icon. * player tracker: starting work on regions table * player tracker: change method calls * Move generic tracker to a WebWorld method * create a base template for generic specific tracker and instantiate some information before callng it * some baseline for the playerTracker.html. update information fed from tracker.py * playerTracker: finish implementing icons and generic locations rendering. hide any unacquired progression items when not using icons. Place the name of the progression item under its icon. * player tracker: starting work on regions table * player tracker: switch item, icon and location tables to flex views. Some styling based on theme * Player Tracker: Finish building html template for all blocks. Set groundwork for theme styling * Player Tracker: Implement tracker class. Document tracker usage. * Player Tracker: Add button to switch between trackers. Some styling for styled tracker. * Player Tracker: reword some text. Attempt to fix page refreshing. * Player Tracker: reremove the TODOs that got merged back in accidentally. * player tracker: move render_template import to webworld so it isn't required outside of webhost * Player Tracker: code cleanup, typing. Add inventory with names to PlayerTracker class in case custom trackers want to use it to change their prog_items attribute. * Player Tracker: delete a line I forgot about. Add typing to theme. * Player Tracker: Generate checks_done automatically so worlds don't have to do it * Player Tracker: Add typing to PlayerTracker class in webworld method. Update documentation * Player Tracker: code cleanup * Player Tracker: Sort of implement fetch (works but could be better). Make playerTracker.html more readable. * specific trackers: significant html cleanup. DOM Endpoint auto updating page every 30 seconds * Changes by Kono * specific trackers: cache and only load the data once every minute * specific tracker: allow for one icon placement to be used for multiple items. * Player tracker fixes/updates (#635) * Move generic tracker to a WebWorld method * render both a generic tracker at generic_tracker and the specific tracker at /tracker * create a base template for generic specific tracker and instantiate some information before callng it * some baseline for the playerTracker.html. update information fed from tracker.py * playerTracker: finish implementing icons and generic locations rendering. hide any unacquired progression items when not using icons. Place the name of the progression item under its icon. * player tracker: starting work on regions table * player tracker: change method calls * Move generic tracker to a WebWorld method * render both a generic tracker at generic_tracker and the specific tracker at /tracker * create a base template for generic specific tracker and instantiate some information before callng it * some baseline for the playerTracker.html. update information fed from tracker.py * playerTracker: finish implementing icons and generic locations rendering. hide any unacquired progression items when not using icons. Place the name of the progression item under its icon. * player tracker: starting work on regions table * player tracker: change method calls * Move generic tracker to a WebWorld method * create a base template for generic specific tracker and instantiate some information before callng it * some baseline for the playerTracker.html. update information fed from tracker.py * playerTracker: finish implementing icons and generic locations rendering. hide any unacquired progression items when not using icons. Place the name of the progression item under its icon. * player tracker: starting work on regions table * player tracker: switch item, icon and location tables to flex views. Some styling based on theme * Player Tracker: Finish building html template for all blocks. Set groundwork for theme styling * Player Tracker: Implement tracker class. Document tracker usage. * Player Tracker: Add button to switch between trackers. Some styling for styled tracker. * Player Tracker: reword some text. Attempt to fix page refreshing. * Player Tracker: reremove the TODOs that got merged back in accidentally. * player tracker: move render_template import to webworld so it isn't required outside of webhost * Player Tracker: code cleanup, typing. Add inventory with names to PlayerTracker class in case custom trackers want to use it to change their prog_items attribute. * Player Tracker: delete a line I forgot about. Add typing to theme. * Player Tracker: Generate checks_done automatically so worlds don't have to do it * Player Tracker: Add typing to PlayerTracker class in webworld method. Update documentation * Player Tracker: code cleanup * Player Tracker: Sort of implement fetch (works but could be better). Make playerTracker.html more readable. * specific trackers: significant html cleanup. DOM Endpoint auto updating page every 30 seconds * Changes by Kono * specific trackers: cache and only load the data once every minute * specific tracker: allow for one icon placement to be used for multiple items. * lttp: move tracker to new format. will need more modification to generic solution to handle region keys tracking. likely a new html template that inherits the current * lttp: fix broken icons rendering, add in progressive mail that i forgor. reorder some icons * tracker: fix non edited trackers being broken from changes. * tracker: move theme application before modify method so trackers can use a different theme than the world if desired. * tracker: starting work on key tracking. * tracker: styling and cleanup by Farrak * tracker: styling and cleanup by Farrak * tracker: styling and cleanup of playerTracker.html * Revert playerTracker.html * trackers: rename some files for clarity. move trackers into their own subdirectory * small tracker.py cleanup * move minecraft tracker to new system * add item link attributing from upstream * change getPlayerTracker to get_player_tracker. refactor broken linkings * refactor styling files to trackers folders * fix broken image in minecraft tracker. move oot tracker to new system * clean up my oot nightmare * rename lttpKeysTracker to zeldaKeysTracker. Move oot to keys tracker * implement zeldaKeysTracker.js. fix table locations hiding/showing
83 lines
3.3 KiB
JavaScript
83 lines
3.3 KiB
JavaScript
window.addEventListener('load', () => {
|
|
// Reload tracker
|
|
const update = () => {
|
|
const room = document.getElementById('tracker-wrapper').getAttribute('data-tracker');
|
|
|
|
const request = new Request('/api/tracker/' + room);
|
|
|
|
fetch(request)
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
// update locations blocks
|
|
for (const location of data.checked_locations) {
|
|
document.getElementById(location).classList.add('acquired');
|
|
}
|
|
// update totals checks done
|
|
let total_checks_ele = document.getElementById('total-checks');
|
|
const total_checks = document.getElementsByClassName('location').length;
|
|
let checks_done = data.checked_locations.length;
|
|
total_checks_ele.innerText = 'Total Checks Done: ' + checks_done + '/' + total_checks;
|
|
// update item and icons blocks
|
|
// update icons block
|
|
if (data.icons.length > 0) {
|
|
for (let item in data.icons) {
|
|
if (data.progressive_names.length > 0) {
|
|
for (let item_category in data.progressive_names) {
|
|
let i = 0;
|
|
for (let current_item in current_name) {
|
|
if (current_item === item) {
|
|
let doc_item = document.getElementById(item_category)
|
|
doc_item.children[0].src = data.icons[item];
|
|
if (item in data.items_received) {
|
|
doc_item.children[0].classList.add('acquired');
|
|
doc_item.children[1].innerText = item_category;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (item in data.items_received) {
|
|
let current_item = document.getElementById(item);
|
|
current_item.children[0].classList.add('acquired');
|
|
current_item.children[0].src = data.icons[item];
|
|
current_item.children[1].innerText = item;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
for (const item in data.items_received) {
|
|
if (document.getElementById(item)) {
|
|
let current_item = document.getElementById(item);
|
|
current_item.innerText = item + data.items_received[item];
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
update()
|
|
setInterval(update, 30000);
|
|
|
|
|
|
// Collapsible regions section
|
|
const regions = document.getElementsByClassName('regions-column');
|
|
for (let i = 0; i < regions.length; i++) {
|
|
let region_name = regions[i].id;
|
|
|
|
const tab_header = document.getElementById(region_name+'-header');
|
|
const locations = document.getElementById(region_name+'-locations');
|
|
// toggle locations display
|
|
regions[i].addEventListener('click', function(event) {
|
|
if (tab_header.innerHTML.includes("▼")) {
|
|
locations.classList.remove('hidden');
|
|
// change header text
|
|
tab_header.innerHTML = tab_header.innerHTML.replace('▼', '▲');
|
|
} else {
|
|
locations.classList.add('hidden');
|
|
// change header text
|
|
tab_header.innerHTML = tab_header.innerHTML.replace('▲', '▼');
|
|
}
|
|
});
|
|
}
|
|
});
|