forked from spacebar/SplatNet
Ranking: dont display content until finished loading
This commit is contained in:
parent
e97fa54a64
commit
7b586bbd5e
2 changed files with 33 additions and 22 deletions
|
|
@ -34,7 +34,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mode-selection">
|
<div class="mode-selection" style="display: none;">
|
||||||
<a href="?mode=regular" class="mode-button" id="link-regular">
|
<a href="?mode=regular" class="mode-button" id="link-regular">
|
||||||
<img id="img-regular" src="../assets/en/svg/ui/btn_tab_regular-40682de5f47922c608c0ddf6eddd44efcf4b0516092041cdb48977f777030487.svg" alt="Turf War">
|
<img id="img-regular" src="../assets/en/svg/ui/btn_tab_regular-40682de5f47922c608c0ddf6eddd44efcf4b0516092041cdb48977f777030487.svg" alt="Turf War">
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="rank-glass-panel">
|
<div class="rank-glass-panel" style="display: none;">
|
||||||
<div class="rank-header-area">
|
<div class="rank-header-area">
|
||||||
<img id="rank-mode-title" src="/assets/en/svg/text/scene/rank/tx_splatfest-7a0ef00ee7f4877df0c7b32998f6bad81fd3f8c28e287168dfffe7d6efb09f77.svg" class="splatfest-title-svg">
|
<img id="rank-mode-title" src="/assets/en/svg/text/scene/rank/tx_splatfest-7a0ef00ee7f4877df0c7b32998f6bad81fd3f8c28e287168dfffe7d6efb09f77.svg" class="splatfest-title-svg">
|
||||||
<div class="splatfest-subtitle">Rice VS Bread</div>
|
<div class="splatfest-subtitle">Rice VS Bread</div>
|
||||||
|
|
|
||||||
|
|
@ -203,6 +203,12 @@ window.loadHeader(async function(headerContainer) {
|
||||||
const modeTitleImg = document.getElementById('rank-mode-title');
|
const modeTitleImg = document.getElementById('rank-mode-title');
|
||||||
const splatfestSubtitle = document.querySelector('.splatfest-subtitle');
|
const splatfestSubtitle = document.querySelector('.splatfest-subtitle');
|
||||||
|
|
||||||
|
const modeSelection = document.querySelector('.mode-selection');
|
||||||
|
const glassPanel = document.querySelector('.rank-glass-panel');
|
||||||
|
|
||||||
|
if (modeSelection) modeSelection.style.display = 'flex';
|
||||||
|
if (glassPanel) glassPanel.style.display = 'block';
|
||||||
|
|
||||||
const images = {
|
const images = {
|
||||||
regular: "../assets/en/svg/ui/btn_tab_regular_selected-b636e3d21ace9434120061a32658b21a34feb6468553b6d6da30ce890b85ec1f.svg",
|
regular: "../assets/en/svg/ui/btn_tab_regular_selected-b636e3d21ace9434120061a32658b21a34feb6468553b6d6da30ce890b85ec1f.svg",
|
||||||
gachi: "../assets/en/svg/ui/btn_tab_gachi_selected-4796f167399dca12cb274dcb0348cdf709a1f722ddd241210e55a3e04fdb6ff4.svg",
|
gachi: "../assets/en/svg/ui/btn_tab_gachi_selected-4796f167399dca12cb274dcb0348cdf709a1f722ddd241210e55a3e04fdb6ff4.svg",
|
||||||
|
|
@ -230,30 +236,35 @@ window.loadHeader(async function(headerContainer) {
|
||||||
renderRankings(mode);
|
renderRankings(mode);
|
||||||
};
|
};
|
||||||
|
|
||||||
const init = () => {
|
const init = async () => {
|
||||||
const cachedUser = sessionStorage.getItem('user_cache');
|
const cachedUser = sessionStorage.getItem('user_cache');
|
||||||
if (cachedUser) renderData(JSON.parse(cachedUser));
|
if (cachedUser) renderData(JSON.parse(cachedUser));
|
||||||
|
|
||||||
fetch("/api/v1/me", { credentials: 'include' })
|
try {
|
||||||
.then(res => res.ok ? res.json() : Promise.reject(res))
|
await Promise.all([
|
||||||
.then(data => {
|
fetch("/api/v1/me", { credentials: 'include' })
|
||||||
if (!data) return;
|
.then(res => res.ok ? res.json() : Promise.reject(res))
|
||||||
sessionStorage.setItem('user_cache', JSON.stringify(data));
|
.then(data => {
|
||||||
renderData(data);
|
if (!data) return;
|
||||||
}).catch(() => {});
|
sessionStorage.setItem('user_cache', JSON.stringify(data));
|
||||||
|
renderData(data);
|
||||||
|
}).catch(() => {}),
|
||||||
|
|
||||||
fetch("/api/v1/leaderboard")
|
fetch("/api/v1/leaderboard")
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
cachedLeaderboardData = data;
|
cachedLeaderboardData = data;
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
const mode = urlParams.get('mode') || 'regular';
|
const mode = urlParams.get('mode') || 'regular';
|
||||||
updateTabUI(mode);
|
updateTabUI(mode);
|
||||||
|
})
|
||||||
const loadingOverlay = document.getElementById("loading-overlay");
|
]);
|
||||||
if (loadingOverlay) loadingOverlay.style.display = "none";
|
} catch (err) {
|
||||||
})
|
console.error("Initialization failed:", err);
|
||||||
.catch(err => console.error("Leaderboard preload failed:", err));
|
} finally {
|
||||||
|
const loadingOverlay = document.getElementById("loading-overlay");
|
||||||
|
if (loadingOverlay) loadingOverlay.style.display = "none";
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
document.querySelectorAll('.mode-selection a').forEach(link => {
|
document.querySelectorAll('.mode-selection a').forEach(link => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue