diff --git a/package-lock.json b/package-lock.json index 65852f7..cc0a599 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3277,6 +3277,14 @@ } } }, + "react-bootstrap-icons": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/react-bootstrap-icons/-/react-bootstrap-icons-1.6.1.tgz", + "integrity": "sha512-0xoFKK0soRBx7F0+R8lHmNp7THqaCMnAKm2SfySeTTmyk2HOG6SMXuoqlEI8SPZu2ez4u3dHlrXoo5/2IGWCeA==", + "requires": { + "prop-types": "^15.7.2" + } + }, "react-dom": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", diff --git a/package.json b/package.json index 02243ef..140001a 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "next": "11.1.2", "react": "17.0.2", "react-bootstrap": "^2.0.0", + "react-bootstrap-icons": "^1.6.1", "react-dom": "17.0.2", "swr": "^1.0.1" }, diff --git a/pages/index.js b/pages/index.js index 5a6b0e2..83fa9cf 100644 --- a/pages/index.js +++ b/pages/index.js @@ -6,6 +6,8 @@ import ToggleButtonGroup from 'react-bootstrap/ButtonGroup' import ToggleButton from 'react-bootstrap/Button' import useSWR from 'swr' import Table from 'react-bootstrap/Table' +import Spinner from 'react-bootstrap/Spinner' +import {CameraReelsFill} from 'react-bootstrap-icons' import 'bootstrap/dist/css/bootstrap.min.css'; @@ -44,6 +46,71 @@ function getLeaderboard(categoryID,variables) { } } +function getPlatform(platformID) { + const { data,error } = useSWR("https://www.speedrun.com/api/v1/platforms/"+platformID,fetcher) + + return { + platform: data?.data.name, + isLoading: !error && !data, + isError: error + } +} + +function getVersion(versionID) { + const { data,error } = useSWR("https://www.speedrun.com/api/v1/variables/p85me3lg",fetcher) + + return { + version: data?.data.values.values[versionID].label, + isLoading: !error && !data, + isError: error + } +} + +function getPlayer(playerID) { + const { data,error } = useSWR("https://www.speedrun.com/api/v1/users/"+playerID,fetcher) + return { + name: data?.data.names.international, + link: data?.data.weblink, + color1: data?.data["name-style"]["color-from"]?.dark, + color2: data?.data["name-style"]["color-to"]?.dark, + country_code: data?.data.location?.country.code, + country_name: data?.data.location?.country.names.international, + twitch: data?.data.twitch?.uri, + youtube: data?.data.youtube?.uri, + icon: data?.data.assets.icon.uri, + image: data?.data.assets.image.uri, + isLoading: !error && !data, + isError: error + } +} + +function Player(p) { + const {data}=p + const playerData=getPlayer(data.id) + return <> {data.rel==="guest"?data.name:playerData.name} +} + +function TimeDisplay(time) { + const hrs = Math.floor(time/3600)>0?Math.floor(time/3600):""; + const min = Math.floor(time/60)>0?Math.floor(time/60%60):"00"; + const sec = Math.floor(time%60)>0?Math.floor(time%60):"00"; + const millis = time%1>0?Math.round(time%1*1000):""; + + return <>{(hrs>0?hrs+":":"")+min.toLocaleString('en-US',{minimumIntegerDigits:2})+":"+sec.toLocaleString('en-US',{minimumIntegerDigits:2})}{millis>0&&{"."+millis.toLocaleString('en-US',{minimumIntegerDigits:3})+""}} +} + +function Platform(p) { + const {data} = p + const playerData=getPlatform(data) + return <>{playerData.platform??""} +} + +function Version(p) { + const {data} = p + const versionData=getVersion(data) + return <>{versionData.version??""} +} + function Leaderboard(p) { const {data} = p return @@ -60,15 +127,15 @@ function Leaderboard(p) { - {data?.data.runs.map((run)=> + {!data?:data?.data.runs.map((run)=>{/*#*/} - {/*Player*/} - {/*Time without loads*/} - {/*Time with loads*/} - {/*Platform*/} - {/*Version*/} + {/*Player*/} + {/*Time without loads*/} + {/*Time with loads*/} + {/*Platform*/} + {/*Version*/} {/*Date*/} - {/*Video*/} + {/*Video*/} )}
Buns are loading...
{run.place}{run.run.players[0].id??run.run.players[0]?.name}{run.run.times.realtime_noloads_t??""}{run.run.times.realtime_t}{run.run.system.platform}{run.run.values.p85me3lg}{run.run.times.realtime_noloads_t?TimeDisplay(run.run.times.realtime_noloads_t):""}{TimeDisplay(run.run.times.realtime_t)}{}{}{run.run.date}{run.run.videos?.links[0].uri}{run.run.videos?.links[0].uri&&}
diff --git a/styles/globals.css b/styles/globals.css index e5e2dcc..b9a6be7 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -14,3 +14,7 @@ a { * { box-sizing: border-box; } + +.scoreboard_icon{ + border: 0px; +}