diff --git a/public/elotracker/chart-integration.js b/public/elotracker/chart-integration.js index 475961c..7197351 100644 --- a/public/elotracker/chart-integration.js +++ b/public/elotracker/chart-integration.js @@ -275,4 +275,53 @@ function toggle_leaderboard_chart() { } } document.querySelectorAll("button.open-general-graph").forEach(element => element.addEventListener("click", toggle_combined_chart)); -document.querySelectorAll("button.leaderboard-element").forEach(element => element.addEventListener("click", toggle_leaderboard_chart)); \ No newline at end of file +document.querySelectorAll("button.leaderboard-element").forEach(element => element.addEventListener("click", toggle_leaderboard_chart)); + +async function update_leaderboard() { + this.disabled = true; + this.classList.add("button-updating") + let eventSource = new EventSource("./update.php"); + eventSource.addEventListener("progress", e => { + this.style.setProperty("--button-loading-bar-width", `${e.data*100}%`); + }) + eventSource.addEventListener("forbidden", e => { + const currenttime = new Date(); + const updatetime = new Date(e.data); + let timediff = new Date(currenttime - updatetime); + let resttime = new Date(600000 - (currenttime - updatetime)); + window.alert(`Das letzte Update wurde vor ${format_time_minsec(timediff)} durchgeführt. Versuche es in ${format_time_minsec(resttime)} noch einmal`); + reset_button(this); + eventSource.close(); + }) + eventSource.onerror = e => { + window.alert(`Beim Update ist ein Fehler aufgetreten. Versuche es später noch einmal`) + reset_button(this); + eventSource.close(); + } + eventSource.addEventListener("done", e => { + reset_button(this); + eventSource.close(); + }) + function reset_button(button) { + button.disabled = false; + button.style.setProperty("--button-loading-bar-width", `0`); + button.classList.remove("button-updating"); + } +} + +document.querySelector("button.update-leaderboard").addEventListener("click", update_leaderboard); + +function format_time_minsec(date) { + let format, trenner = "", min = "", nullausgleich = ""; + if (date.getMinutes() === 0) { + format = " Sekunden"; + } else { + min = date.getMinutes(); + format = " Minuten"; + trenner = ":"; + if (date.getSeconds() < 10) { + nullausgleich = "0"; + } + } + return min + trenner + nullausgleich + date.getSeconds() + format; +} \ No newline at end of file diff --git a/public/elotracker/index.php b/public/elotracker/index.php index b587c63..cc364d7 100644 --- a/public/elotracker/index.php +++ b/public/elotracker/index.php @@ -18,6 +18,7 @@ $latest_patch = json_decode(file_get_contents("https://ddragon.leagueoflegends.c echo "

UEM LoL Elo-Challenge

"; echo "
"; echo "
"; +echo ""; echo "
diff --git a/public/elotracker/styles.css b/public/elotracker/styles.css index 5480c7c..0bdd4c5 100644 --- a/public/elotracker/styles.css +++ b/public/elotracker/styles.css @@ -20,12 +20,17 @@ h1 { button { background: none; color: inherit; - border: none; - padding: 0; + border: solid 2px #68a8cc; + border-radius: 12px; + padding: 16px 24px; font: inherit; cursor: pointer; outline: inherit; text-align: unset; + transition: background-color 200ms ease-out; +} +button:hover { + background-color: #1f2931; } button[disabled] { cursor: initial; @@ -44,14 +49,34 @@ img.uem-logo { height: 120px; } -button.open-general-graph { - border: solid 2px #68a8cc; - border-radius: 12px; - padding: 16px 24px; - transition: background-color 200ms ease-out; +button.update-leaderboard { + display: flex; + flex-direction: row; + gap: 4px; + align-items: center; + margin-bottom: 8px; } -button.open-general-graph:hover { - background-color: #1f2931; +button.progress-button { + position: relative; + overflow: hidden; + --button-loading-bar-width: 0; +} +button.progress-button::before { + content: ''; + position: absolute; + width: var(--button-loading-bar-width); + height: 100%; + left: 0; + background-color: #294c87; + border-radius: 10px; + transition: width 400ms ease-out; + z-index: -1; +} +button.button-updating svg { + animation: ease_rotating 2s infinite; +} +@keyframes ease_rotating { + to { transform: rotate(-360deg)} } .leaderboard { @@ -76,7 +101,7 @@ button.open-general-graph:hover { border: solid 4px #6a818f; border-radius: 20px; padding: 16px 16px 16px 36px; - transition: background-color 200ms ease-out; + transition: background-color 200ms ease; } .leaderboard-element:hover { background-color: #1f2931; diff --git a/public/img/material-symbols/sync_24dp_FILL1_wght300_GRAD0_opsz24.svg b/public/img/material-symbols/sync_24dp_FILL1_wght300_GRAD0_opsz24.svg new file mode 100644 index 0000000..ba8078c --- /dev/null +++ b/public/img/material-symbols/sync_24dp_FILL1_wght300_GRAD0_opsz24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/index.php b/public/index.php index 3e3a781..2cf3f64 100644 --- a/public/index.php +++ b/public/index.php @@ -4,25 +4,6 @@ University eSports Mainz - Zum Elo Tracker