From 627cc1727ee895637a5da040b8859c42f9b9d83b Mon Sep 17 00:00:00 2001 From: JustinOros Date: Wed, 29 Oct 2025 09:02:25 -0700 Subject: [PATCH] Revised code to load levels from CSV. --- index.html | 166 ++++++++++++++++++++++++++++------------------------- 1 file changed, 89 insertions(+), 77 deletions(-) diff --git a/index.html b/index.html index 07fbd09..538bd5b 100644 --- a/index.html +++ b/index.html @@ -106,96 +106,108 @@ - + } + + document.getElementById('calculate-btn').addEventListener('click', () => { + if (xpThresholds.length === 0) { + alert('Level data not loaded yet. Please wait a moment and try again.'); + return; + } + + let xp = document.getElementById('xp-input').value.replace(/,/g, '').trim(); + if (!xp || isNaN(xp)) { + alert('Please enter a valid number for XP.'); + return; + } + + currentXp = parseInt(xp, 10); + currentLevel = calculateLevel(currentXp); + + let nextLevelXp = (currentLevel < xpThresholds.length) ? xpThresholds[currentLevel] : currentXp; + let currentLevelXp = xpThresholds[currentLevel - 1]; + let progress = (currentXp - currentLevelXp) / (nextLevelXp - currentLevelXp) * 100; + + document.getElementById('progress-bar').style.width = progress + '%'; + document.getElementById('level-text').textContent = `Level ${currentLevel}`; + document.getElementById('level-left').textContent = currentLevel; + document.getElementById('level-right').textContent = (currentLevel < xpThresholds.length) ? currentLevel + 1 : currentLevel; + + document.getElementById('result').classList.remove('hidden'); + updateExtraInfo(); + }); + + document.getElementById('xp-input').addEventListener('input', (e) => { + e.target.value = e.target.value.replace(/[^0-9,]/g, ''); + }); + + const themeToggle = document.getElementById('theme-toggle'); + themeToggle.addEventListener('click', () => { + document.body.classList.toggle('dark-mode'); + themeToggle.textContent = document.body.classList.contains('dark-mode') ? '🌙' : '☀️'; + }); + + window.addEventListener('DOMContentLoaded', loadXPThresholds); +