diff --git a/src/pages/ranklist.js b/src/pages/ranklist.js
index f5599b5..328e873 100644
--- a/src/pages/ranklist.js
+++ b/src/pages/ranklist.js
@@ -13,10 +13,49 @@ const selectOptions = {
count: { name: 'Megoldott tesztek' },
}
-async function getListFromServer() {
+const sinceOptions = {
+ all: {
+ name: 'All time',
+ },
+ monthly: { name: 'Havi' },
+ weekly: { name: 'Heti' },
+ daily: { name: 'Napi' },
+}
+
+function getTimeString(date) {
+ return (
+ date.getFullYear() +
+ '-' +
+ ('0' + (date.getMonth() + 1)).slice(-2) +
+ '-' +
+ ('0' + date.getDate()).slice(-2)
+ )
+}
+
+function getSinceDate(keyword) {
+ if (keyword === 'all') {
+ return null
+ }
+
+ const date = new Date()
+ if (keyword === 'daily') {
+ date.setDate(date.getDate() - 1)
+ } else if (keyword === 'weekly') {
+ date.setDate(date.getDate() - 7)
+ } else if (keyword === 'monthly') {
+ date.setDate(date.getDate() - 30)
+ }
+ return date
+}
+
+async function getListFromServer(since) {
return new Promise((resolve, reject) => {
console.info('Fetching data')
- fetch(`${constants.apiUrl}ranklist`, {
+ let query = ''
+ if (since && since !== 'all') {
+ query = `?since=${getTimeString(getSinceDate(since))}`
+ }
+ fetch(`${constants.apiUrl}ranklist${query}`, {
credentials: 'include',
Accept: 'application/json',
'Content-Type': 'application/json',
@@ -47,14 +86,18 @@ function sortDataBy(data, key) {
export default function RankList() {
const [ranklist, setRanklist] = useState(null)
- const [selfUserId, setSelfUserId] = useState(null)
+ const [selfUserId, setSelfUserId] = useState('...')
const [key, setKey] = useState('newQuestions')
+ const [since, setSince] = useState('all')
+ const [sum, setSum] = useState({})
const getList = () => {
+ setSum({})
setRanklist(null)
- getListFromServer(key)
+ getListFromServer(since)
.then((data) => {
setRanklist(data.list)
+ setSum(data.sum)
setSelfUserId(data.selfuserId)
})
.catch((error) => {
@@ -67,11 +110,15 @@ export default function RankList() {
getList()
}, [])
- if (!ranklist) {
- return