From aa9bd725aac557d137abfdcf4326e39ce493deae Mon Sep 17 00:00:00 2001 From: oOHiyoriOo Date: Sat, 13 Jun 2026 18:56:51 +0200 Subject: [PATCH] fix: guard against page-navigation race + deprecation warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - playerInfo refresh() now early-returns if DOM elements are gone (happens when navigating away while getPlayers RCON is in flight) - swiched donutLabelsOutside(false) → labelsOutside(false) to silence NVD3 deprecation warning Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- js/pages/playerInfo.js | 21 ++++++++++++++------- js/pages/serverInfo.js | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/js/pages/playerInfo.js b/js/pages/playerInfo.js index 87cd134..84f096b 100644 --- a/js/pages/playerInfo.js +++ b/js/pages/playerInfo.js @@ -40,19 +40,25 @@ function PlayerInfoPage(params, container) { function refresh() { Rcon.getPlayers(function (players) { + // Guard against navigation away while waiting for RCON response + var nf = document.getElementById('pi-notfound'); + var fields = document.getElementById('pi-fields'); + var actions = document.getElementById('pi-actions'); + if (!nf || !fields || !actions) return; + var info = null; for (var i = 0; i < players.length; i++) { if (String(players[i].SteamID) === userid) { info = players[i]; break; } } if (!info) { - document.getElementById('pi-notfound').style.display = 'block'; - document.getElementById('pi-fields').innerHTML = ''; - document.getElementById('pi-actions').style.display = 'none'; + nf.style.display = 'block'; + fields.innerHTML = ''; + actions.style.display = 'none'; return; } - document.getElementById('pi-notfound').style.display = 'none'; - document.getElementById('pi-actions').style.display = 'block'; + nf.style.display = 'none'; + actions.style.display = 'block'; // Fix known Rust RCON quirk: VoiationLevel → ViolationLevel if (info.VoiationLevel !== undefined) { @@ -64,7 +70,8 @@ function PlayerInfoPage(params, container) { delete info.CurrentLevel; delete info.UnspentXp; - document.getElementById('pi-username').textContent = info.DisplayName || userid; + var un = document.getElementById('pi-username'); + if (un) un.textContent = info.DisplayName || userid; var fieldsHtml = ''; for (var key in info) { @@ -79,7 +86,7 @@ function PlayerInfoPage(params, container) { fieldsHtml += '

' + key + ': ' + value + '

'; } } - document.getElementById('pi-fields').innerHTML = fieldsHtml; + fields.innerHTML = fieldsHtml; }); } diff --git a/js/pages/serverInfo.js b/js/pages/serverInfo.js index 9d9ffd4..8059f74 100644 --- a/js/pages/serverInfo.js +++ b/js/pages/serverInfo.js @@ -93,7 +93,7 @@ function ServerInfoPage(params, container) { .y(function (d) { return d.y; }) .showLabels(true) .donut(true) - .donutLabelsOutside(false) + .labelsOutside(false) .duration(500) .height(250) .color(['#a78bfa', '#7c3aed', '#e879f9', '#2d1f3d'])