diff --git a/functions/index.js b/functions/index.js index 5419db365..5252429fb 100644 --- a/functions/index.js +++ b/functions/index.js @@ -959,6 +959,13 @@ exports.getLeaderboard = functions.https.onCall((request, response) => { }); } // console.log(lbdata); + if (request.type === "daily") { + let resetTime = new Date(); + resetTime.setHours(0, 0, 0, 0); + resetTime.setDate(resetTime.getDate() + 1); + resetTime = resetTime.valueOf(); + lbdata.resetTime = resetTime; + } return lbdata; } else { diff --git a/public/css/style.scss b/public/css/style.scss index 41fac2472..8c7a13361 100644 --- a/public/css/style.scss +++ b/public/css/style.scss @@ -210,11 +210,27 @@ a:hover { margin-bottom: 2rem; font-size: .8rem; + .titleAndTable { + display: grid; + + .title { + grid-area: 1/1; + } + + .subtitle { + grid-area: 1/1; + align-self: center; + justify-self: right; + color: var(--sub-color); + } + } + .globalTableWrapper, .dailyTableWrapper { height: calc(100vh - 22rem); @extend .ffscroll; overflow-y: scroll; + overflow-x: hidden; } table { diff --git a/public/index.html b/public/index.html index 1118abc14..8bb14520e 100644 --- a/public/index.html +++ b/public/index.html @@ -278,6 +278,9 @@
Daily
+
+ - +
diff --git a/public/js/leaderboards.js b/public/js/leaderboards.js index 7084e5200..b23d2b93b 100644 --- a/public/js/leaderboards.js +++ b/public/js/leaderboards.js @@ -88,17 +88,42 @@ function updateLeaderboards() { type: "global", uid: uid, }), - ]).then((lbdata) => { - hideBackgroundLoader(); - let dailyData = lbdata[0].data; - let globalData = lbdata[1].data; + ]) + .then((lbdata) => { + hideBackgroundLoader(); + let dailyData = lbdata[0].data; + let globalData = lbdata[1].data; - $("#leaderboardsWrapper table.daily tbody").empty(); - if (dailyData.board !== undefined) { - dailyData.board.forEach((entry, index) => { - let meClassString = ""; - if (entry.currentUser) meClassString = ' class="me"'; - $("#leaderboardsWrapper table.daily tbody").append(` + //daily + let diffAsDate = new Date(dailyData.resetTime - Date.now()); + + let diffHours = diffAsDate.getHours(); + let diffMinutes = diffAsDate.getMinutes(); + let diffSeconds = diffAsDate.getSeconds(); + + let resetString = ""; + if (diffHours > 0) { + resetString = `resets in ${diffHours} ${ + diffHours == 1 ? "hour" : "hours" + }`; + } else if (diffMinutes > 0) { + resetString = `resets in ${diffMinutes} ${ + diffMinutes == 1 ? "minute" : "minutes" + }`; + } else if (diffSeconds > 0) { + resetString = `resets in ${diffSeconds} ${ + diffSeconds == 1 ? "second" : "seconds" + }`; + } + + $("#leaderboardsWrapper .subtitle").text(resetString); + + $("#leaderboardsWrapper table.daily tbody").empty(); + if (dailyData.board !== undefined) { + dailyData.board.forEach((entry, index) => { + let meClassString = ""; + if (entry.currentUser) meClassString = ' class="me"'; + $("#leaderboardsWrapper table.daily tbody").append(` @@ -109,13 +134,13 @@ function updateLeaderboards() { `); - }); - } - let lenDaily = 0; - if (dailyData.board !== undefined) lenDaily = dailyData.board.length; - if (dailyData.length === 0 || lenDaily !== dailyData.size) { - for (let i = lenDaily; i < dailyData.size; i++) { - $("#leaderboardsWrapper table.daily tbody").append(` + }); + } + let lenDaily = 0; + if (dailyData.board !== undefined) lenDaily = dailyData.board.length; + if (dailyData.length === 0 || lenDaily !== dailyData.size) { + for (let i = lenDaily; i < dailyData.size; i++) { + $("#leaderboardsWrapper table.daily tbody").append(` @@ -126,15 +151,16 @@ function updateLeaderboards() { `); + } } - } - $("#leaderboardsWrapper table.global tbody").empty(); - if (globalData.board !== undefined) { - globalData.board.forEach((entry, index) => { - let meClassString = ""; - if (entry.currentUser) meClassString = ' class="me"'; - $("#leaderboardsWrapper table.global tbody").append(` + //global + $("#leaderboardsWrapper table.global tbody").empty(); + if (globalData.board !== undefined) { + globalData.board.forEach((entry, index) => { + let meClassString = ""; + if (entry.currentUser) meClassString = ' class="me"'; + $("#leaderboardsWrapper table.global tbody").append(` @@ -145,13 +171,13 @@ function updateLeaderboards() { `); - }); - } - let lenGlobal = 0; - if (globalData.board !== undefined) lenGlobal = globalData.board.length; - if (globalData.length === 0 || lenGlobal !== globalData.size) { - for (let i = lenGlobal; i < globalData.size; i++) { - $("#leaderboardsWrapper table.global tbody").append(` + }); + } + let lenGlobal = 0; + if (globalData.board !== undefined) lenGlobal = globalData.board.length; + if (globalData.length === 0 || lenGlobal !== globalData.size) { + for (let i = lenGlobal; i < globalData.size; i++) { + $("#leaderboardsWrapper table.global tbody").append(` @@ -162,9 +188,12 @@ function updateLeaderboards() { `); + } } - } - }); + }) + .catch((e) => { + showNotification("Something went wrong", 3000); + }); } $("#leaderboardsWrapper").click((e) => {
${index + 1} ${entry.name}${moment(entry.timestamp).format("DD MMM YYYY
HH:mm")}
${i + 1} --
-
${index + 1} ${entry.name}${moment(entry.timestamp).format("DD MMM YYYY
HH:mm")}
${i + 1} --
-