From b8870e43fbd5b1b9329e65625ef1ed98ecce1811 Mon Sep 17 00:00:00 2001 From: JustinOros Date: Tue, 30 Sep 2025 12:06:56 -0700 Subject: [PATCH] Added additional information which calculates how long until the next level. --- index.html | 64 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index b479db3..cb27213 100644 --- a/index.html +++ b/index.html @@ -29,6 +29,7 @@ opacity: 0.5; z-index: -1; } + .cursor-pointer { cursor: pointer; } @@ -58,6 +59,20 @@ + + +
▼
+ + + @@ -74,6 +89,10 @@ 806000000, 836000000, 866000000, 896000000, 926000000, 956000000, 986000000, 1016000000, 1046000000, 1076000000, // 71–80 ]; + let avgXpPerDay = 15000; + let currentXp = 0; + let currentLevel = 1; + function calculateLevel(xp) { let level = 1; for (let i = 0; i < xpThresholds.length; i++) { @@ -86,31 +105,60 @@ return level; } + function updateExtraInfo() { + let nextLevelXp = (currentLevel < xpThresholds.length) ? xpThresholds[currentLevel] : currentXp; + let xpToNext = Math.max(0, nextLevelXp - currentXp); + let xpTo80 = Math.max(0, xpThresholds[79] - currentXp); + + let daysNext = Math.ceil(xpToNext / avgXpPerDay); + let days80 = Math.ceil(xpTo80 / avgXpPerDay); + + document.getElementById('xp-per-day').textContent = avgXpPerDay.toLocaleString(); + document.getElementById('days-next').textContent = daysNext.toLocaleString(); + document.getElementById('days-80').textContent = days80.toLocaleString(); + } + document.getElementById('calculate-btn').addEventListener('click', () => { let xp = document.getElementById('xp-input').value.replace(/,/g,'').trim(); if (!xp || isNaN(xp)) { alert('Please enter a valid number for XP.'); return; } - xp = parseInt(xp, 10); + currentXp = parseInt(xp, 10); - let level = calculateLevel(xp); - let nextLevelXp = (level < xpThresholds.length) ? xpThresholds[level] : xp; - let currentLevelXp = xpThresholds[level - 1]; - let progress = (xp - currentLevelXp) / (nextLevelXp - currentLevelXp) * 100; + currentLevel = calculateLevel(currentXp); + let nextLevelXp = (currentLevel < xpThresholds.length) ? xpThresholds[currentLevel] : currentXp; + let currentLevelXp = xpThresholds[currentLevel - 1]; + let progress = (currentXp - currentLevelXp) / (nextLevelXp - currentLevelXp) * 100; // Update UI document.getElementById('progress-bar').style.width = progress + '%'; - document.getElementById('level-text').textContent = `Level ${level}`; - document.getElementById('level-left').textContent = level; - document.getElementById('level-right').textContent = (level < xpThresholds.length) ? level + 1 : level; + 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,''); }); + + // Toggle extra info + document.getElementById('toggle-extra').addEventListener('click', () => { + document.getElementById('extra-info').classList.toggle('hidden'); + }); + + // Edit XP/day + document.getElementById('edit-xp').addEventListener('click', () => { + let newVal = prompt("Enter your average XP per day:", avgXpPerDay); + if (newVal && !isNaN(newVal) && parseInt(newVal) > 0) { + avgXpPerDay = parseInt(newVal, 10); + updateExtraInfo(); + } + });