mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-03-22 15:45:04 -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
109 lines
3.9 KiB
JavaScript
109 lines
3.9 KiB
JavaScript
const adjustTableHeight = () => {
|
|
const tablesContainer = document.getElementById('tables-container');
|
|
const upperDistance = tablesContainer.getBoundingClientRect().top;
|
|
|
|
const containerHeight = window.innerHeight - upperDistance;
|
|
tablesContainer.style.maxHeight = `calc(${containerHeight}px - 1rem)`;
|
|
|
|
const tableWrappers = document.getElementsByClassName('table-wrapper');
|
|
for(let i=0; i < tableWrappers.length; i++){
|
|
const maxHeight = (window.innerHeight - upperDistance) / 2;
|
|
tableWrappers[i].style.maxHeight = `calc(${maxHeight}px - 1rem)`;
|
|
}
|
|
};
|
|
|
|
window.addEventListener('load', () => {
|
|
const tables = $(".table").DataTable({
|
|
paging: false,
|
|
info: false,
|
|
dom: "t",
|
|
columnDefs: [
|
|
{
|
|
targets: 'hours',
|
|
render: function (data, type, row) {
|
|
if (type === "sort" || type === 'type') {
|
|
if (data === "None")
|
|
return -1;
|
|
|
|
return parseInt(data);
|
|
}
|
|
if (data === "None")
|
|
return data;
|
|
|
|
let hours = Math.floor(data / 3600);
|
|
let minutes = Math.floor((data - (hours * 3600)) / 60);
|
|
|
|
if (minutes < 10) {minutes = "0"+minutes;}
|
|
return hours+':'+minutes;
|
|
}
|
|
},
|
|
{
|
|
targets: 'number',
|
|
render: function (data, type, row) {
|
|
if (type === "sort" || type === 'type') {
|
|
return parseFloat(data);
|
|
}
|
|
return data;
|
|
}
|
|
},
|
|
{
|
|
targets: 'fraction',
|
|
render: function (data, type, row) {
|
|
let splitted = data.split("/", 1);
|
|
let current = splitted[0]
|
|
if (type === "sort" || type === 'type') {
|
|
return parseInt(current);
|
|
}
|
|
return data;
|
|
}
|
|
},
|
|
],
|
|
|
|
// DO NOT use the scrollX or scrollY options. They cause DataTables to split the thead from
|
|
// the tbody and render two separate tables.
|
|
});
|
|
|
|
document.getElementById('search').addEventListener('keyup', (event) => {
|
|
tables.search(event.target.value);
|
|
console.info(tables.search());
|
|
tables.draw();
|
|
});
|
|
|
|
const update = () => {
|
|
const target = $("<div></div>");
|
|
const tracker = document.getElementById('tracker-wrapper').getAttribute('data-tracker');
|
|
target.load("/tracker/" + tracker, function (response, status) {
|
|
if (status === "success") {
|
|
target.find(".table").each(function (i, new_table) {
|
|
const new_trs = $(new_table).find("tbody>tr");
|
|
const old_table = tables.eq(i);
|
|
const topscroll = $(old_table.settings()[0].nScrollBody).scrollTop();
|
|
const leftscroll = $(old_table.settings()[0].nScrollBody).scrollLeft();
|
|
old_table.clear();
|
|
old_table.rows.add(new_trs).draw();
|
|
$(old_table.settings()[0].nScrollBody).scrollTop(topscroll);
|
|
$(old_table.settings()[0].nScrollBody).scrollLeft(leftscroll);
|
|
});
|
|
$("#multi-stream-link").replaceWith(target.find("#multi-stream-link"));
|
|
} else {
|
|
console.log("Failed to connect to Server, in order to update Table Data.");
|
|
console.log(response);
|
|
}
|
|
})
|
|
}
|
|
|
|
setInterval(update, 30000);
|
|
|
|
window.addEventListener('resize', () => {
|
|
adjustTableHeight();
|
|
tables.draw();
|
|
});
|
|
|
|
$(".table-wrapper").scrollsync({
|
|
y_sync: true,
|
|
x_sync: true
|
|
});
|
|
|
|
adjustTableHeight();
|
|
});
|