import React, { useState, useEffect } from 'react' import fetch from 'unfetch' import LoadingIndicator from '../components/LoadingIndicator' import Sleep from '../components/sleep' import styles from './ranklist.module.css' import constants from '../constants.json' const selectOptions = { newQuestions: { name: 'Beküldött új kérdések' }, allQuestions: { name: 'Megoldott kérdések' }, count: { name: 'Megoldott tesztek' }, } async function getListFromServer() { return new Promise((resolve, reject) => { console.info('Fetching data') fetch(`${constants.apiUrl}ranklist`, { credentials: 'include', Accept: 'application/json', 'Content-Type': 'application/json', }) .then((resp) => { return resp.json() }) .then((data) => { resolve(data) }) .catch((error) => { reject(error) }) }) } function sortDataBy(data, key) { return data.sort((a, b) => { if (a[key] < b[key]) { return 1 } else if (a[key] > b[key]) { return -1 } else { return 0 } }) } export default function RankList() { const [ranklist, setRanklist] = useState(null) const [selfUserId, setSelfUserId] = useState(null) const [key, setKey] = useState('newQuestions') const getList = () => { setRanklist(null) getListFromServer(key) .then((data) => { setRanklist(data.list) setSelfUserId(data.selfUserId) }) .catch((error) => { console.error(error) setRanklist(null) }) } useEffect(() => { getList() }, []) if (!ranklist) { return } const list = sortDataBy(ranklist, key) return (
{`A felhasználó ID-d: #${selfUserId}`}
{'Rank'}
{'Felhasználó ID'}
{Object.keys(selectOptions).map((listKey) => { const val = selectOptions[listKey] return (
{ setKey(listKey) }} > {val.name}
) })}
{list.map((listItem, i) => { return (
{i + 1}
{'#' + listItem.userId}
{Object.keys(selectOptions).map((listKey) => { const val = listItem[listKey] return
{val}
})}
) })}
) }