diff --git a/src/components/CategoryPieChart/index.jsx b/src/components/CategoryPieChart/index.jsx index 0f77f42..0e3b35c 100644 --- a/src/components/CategoryPieChart/index.jsx +++ b/src/components/CategoryPieChart/index.jsx @@ -7,16 +7,24 @@ import { getTheme } from '../../slices/themeSlice'; export default function CategoryPieChart() { const theme = useSelector(getTheme); + const values = [15, 25, 15, 10, 35]; + const colors = values.map((item) => ( + theme.primary + Math.round((item * 255) / 35).toString(16).toUpperCase() + )); + return ( ); diff --git a/src/components/ChallengeSolvePlot/index.jsx b/src/components/ChallengeSolvePlot/index.jsx index 0f36da2..7a5ba97 100644 --- a/src/components/ChallengeSolvePlot/index.jsx +++ b/src/components/ChallengeSolvePlot/index.jsx @@ -18,7 +18,6 @@ export default function ChallengeSolvePlot() { const colors = y.map((item) => ( theme.primary + Math.round((item * 255) / yMax).toString(16).toUpperCase() )); - console.log(colors); return ( ); } diff --git a/src/components/ScoreboardPlot/index.jsx b/src/components/ScoreboardPlot/index.jsx index dc5684c..2671ea1 100644 --- a/src/components/ScoreboardPlot/index.jsx +++ b/src/components/ScoreboardPlot/index.jsx @@ -1,5 +1,6 @@ import React from 'react'; import Plot from 'react-plotly.js'; + import { useSelector } from 'react-redux'; import propTypes from 'prop-types'; @@ -14,16 +15,17 @@ export default function ScoreboardPlot(props) { const { width, height } = props; const theme = useSelector(getTheme); - const scoreboard = useSelector(selectScoreboard) - .filter((_team, index) => index < 10); + const scoreboard = useSelector(selectScoreboard).slice(0, 50); const getDataForTeam = (team) => { - const x = team.submissions.map(({ timestamp }) => timestamp); + const x = []; const y = []; let sum = 0; - for (let i = 0; i < x.length; i += 1) { + for (let i = 0; i < team.submissions.length; i += 1) { sum += team.submissions[i].points; + const timestamp = new Date(team.submissions[i].timestamp); + x.push(timestamp); y.push(sum); } @@ -37,7 +39,44 @@ export default function ScoreboardPlot(props) { }; }; + const genVisibilityArray = (start, end) => { + const visibilityArray = new Array(scoreboard.length); + + for (let i = 0; i < visibilityArray.length; i += 1) { + visibilityArray[i] = false; + if (i >= start && i < end) { + visibilityArray[i] = true; + } + } + + return visibilityArray; + }; + const data = scoreboard.map((team) => getDataForTeam(team)); + const batchSize = 10; + + data.forEach((item, index) => { + if (index > batchSize) { + // eslint-disable-next-line no-param-reassign + item.visible = false; + } + }); + + const generateButtons = () => { + const buttons = []; + + for (let i = 0; i < scoreboard.length; i += batchSize) { + buttons.push({ + method: 'restyle', + label: `${i + 1}-${i + batchSize}`, + args: [{ + visible: genVisibilityArray(i, i + batchSize), + }], + }); + } + + return buttons; + }; return ( diff --git a/src/slices/scoreboardSlice.js b/src/slices/scoreboardSlice.js index 04164c9..0b7ffd4 100644 --- a/src/slices/scoreboardSlice.js +++ b/src/slices/scoreboardSlice.js @@ -1,214 +1,7 @@ import { createSlice } from '@reduxjs/toolkit'; +import dummyScoreboard from '../utils/dummyScoreboard.json'; -const initialState = [ - { - rank: 7, - team: 'csictf', - points: 1450, - country: 'India', - submissions: [ - { - qid: Math.random().toString(32), - timestamp: 1602787644107, - points: 300, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787649405, - points: 510, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787653405, - points: 640, - }, - ], - }, - { - rank: 3, - team: 'GreyFang', - points: 1620, - country: 'India', - submissions: [ - { - qid: Math.random().toString(32), - timestamp: 1602787648107, - points: 380, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787649905, - points: 550, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787652405, - points: 690, - }, - ], - }, - { - rank: 1, - team: 'bi0s', - points: 1674, - country: 'India', - submissions: [ - { - qid: Math.random().toString(32), - timestamp: 1602787643107, - points: 399, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787647005, - points: 587, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787652345, - points: 678, - }, - ], - }, - { - rank: 2, - team: '3k', - points: 1621, - country: 'Turkey', - submissions: [ - { - qid: Math.random().toString(32), - timestamp: 1602787644907, - points: 401, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787645405, - points: 523, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787651405, - points: 697, - }, - ], - }, - { - rank: 6, - team: 'Zh3r0', - points: 1516, - country: 'India', - submissions: [ - { - qid: Math.random().toString(32), - timestamp: 1602787641307, - points: 411, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787644605, - points: 514, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787653905, - points: 591, - }, - ], - }, - { - rank: 5, - team: 'irNoobs', - points: 1569, - country: 'Iran', - submissions: [ - { - qid: Math.random().toString(32), - timestamp: 1602787639417, - points: 313, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787643505, - points: 522, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787653135, - points: 633, - }, - ], - }, - { - rank: 4, - team: 'InfosecIITR', - points: 1588, - country: 'India', - submissions: [ - { - qid: Math.random().toString(32), - timestamp: 1602787641937, - points: 396, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787646415, - points: 521, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787652415, - points: 671, - }, - ], - }, - { - rank: 8, - team: 'warlock_rootx', - points: 1446, - country: 'India', - submissions: [ - { - qid: Math.random().toString(32), - timestamp: 1602787641437, - points: 391, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787646415, - points: 511, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787652995, - points: 544, - }, - ], - }, - { - rank: 9, - team: 'Shellphish', - points: 1433, - country: 'USA', - submissions: [ - { - qid: Math.random().toString(32), - timestamp: 1602787641207, - points: 301, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787646105, - points: 533, - }, - { - qid: Math.random().toString(32), - timestamp: 1602787650005, - points: 599, - }, - ], - }, -]; +const initialState = dummyScoreboard; const scoreboardSlice = createSlice({ name: 'scoreboard', diff --git a/src/utils/dummyScoreboard.json b/src/utils/dummyScoreboard.json new file mode 100644 index 0000000..c91b343 --- /dev/null +++ b/src/utils/dummyScoreboard.json @@ -0,0 +1,1652 @@ +[ + { + "rank": 1, + "points": 3443, + "team": "4hs4eh26nlgfoe4kmpurcn", + "country": "xi5a243fys051aly8t8jz2", + "submissions": [ + { + "qid": "jk5d82apzgexqzsiqjmykd", + "timestamp": 1602787646553, + "points": 0 + }, + { + "qid": "jb563hg2or9kvbxm90xz", + "timestamp": 1602787647516, + "points": 782 + }, + { + "qid": "brtatp5pvqk3nehzkkbik", + "timestamp": 1602787651699, + "points": 814 + }, + { + "qid": "v8gxo85vqx6q571r1eka", + "timestamp": 1602787653499, + "points": 882 + }, + { + "qid": "4dvm5tkcj1am1zsqlbdpwo", + "timestamp": 1602787653746, + "points": 965 + } + ] + }, + { + "rank": 2, + "points": 3186, + "team": "pdlg0qy8xnjr510x9ggx27", + "country": "xi5a243fys051aly8t8jz2", + "submissions": [ + { + "qid": "mw3cu2sa08jsx8z1mfuf0p", + "timestamp": 1602787647318, + "points": 0 + }, + { + "qid": "ghjz1bbmp6m63724cdi3gm", + "timestamp": 1602787649823, + "points": 508 + }, + { + "qid": "lmnfj5n9bcr4az4o0gwxde", + "timestamp": 1602787652692, + "points": 757 + }, + { + "qid": "aw49q8l5t9e5abrajx4p7", + "timestamp": 1602787653022, + "points": 942 + }, + { + "qid": "x44n3w1d36qo0jvrpgsr1", + "timestamp": 1602787653208, + "points": 979 + } + ] + }, + { + "rank": 3, + "points": 3033, + "team": "wx0f05fa3alia47fwnsoi8", + "country": "3e0omgf54xen4w1497qns", + "submissions": [ + { + "qid": "5lfj8ewi7mmve8b5elmdk", + "timestamp": 1602787639443, + "points": 0 + }, + { + "qid": "pazgo6khoa8xq0c3ctbb", + "timestamp": 1602787641388, + "points": 689 + }, + { + "qid": "dq8bm8efj374j9w5u7tpww", + "timestamp": 1602787646015, + "points": 736 + }, + { + "qid": "ii2wzbxirjrpig7jj7iru", + "timestamp": 1602787650346, + "points": 766 + }, + { + "qid": "yrmghh6hxyi6n2e4vwojcq", + "timestamp": 1602787651166, + "points": 842 + } + ] + }, + { + "rank": 4, + "points": 2983, + "team": "29g5kl3b564qjmi3t286x", + "country": "r6biyj91ottc4dhnajxyn", + "submissions": [ + { + "qid": "f1kexc4bkiuk9oindii0i", + "timestamp": 1602787641037, + "points": 0 + }, + { + "qid": "7fcu5w7o9fw0mim8mc5jwai", + "timestamp": 1602787643713, + "points": 404 + }, + { + "qid": "t3kl9imcpphjwrhkhlyve", + "timestamp": 1602787646067, + "points": 768 + }, + { + "qid": "7lr58uk12cx5nwxdspn2hq", + "timestamp": 1602787648316, + "points": 857 + }, + { + "qid": "45yb6yyexrylmyiylg6bji", + "timestamp": 1602787652931, + "points": 954 + } + ] + }, + { + "rank": 5, + "points": 2969, + "team": "6kcgv0lgdyt6sflmmkr03h", + "country": "xi5a243fys051aly8t8jz2", + "submissions": [ + { + "qid": "sxhd0h9v2jatw8s09wl03", + "timestamp": 1602787642744, + "points": 0 + }, + { + "qid": "zncv4cq515ehnrzj3wbn", + "timestamp": 1602787648886, + "points": 351 + }, + { + "qid": "08z8ugr4i4u83jds3k91l95", + "timestamp": 1602787649473, + "points": 733 + }, + { + "qid": "3xz84ymmpcc3x4opukaisf", + "timestamp": 1602787652619, + "points": 888 + }, + { + "qid": "gguy382mbivpcykvd2nub", + "timestamp": 1602787653137, + "points": 997 + } + ] + }, + { + "rank": 6, + "points": 2960, + "team": "e33llpljiaxewlhor1w2", + "country": "02ix5rjp3kdro8u9lv95foi", + "submissions": [ + { + "qid": "2zon4j0utu6gtx986dck6r", + "timestamp": 1602787639513, + "points": 0 + }, + { + "qid": "snyiz4zfnemuu1l1uje4", + "timestamp": 1602787642747, + "points": 359 + }, + { + "qid": "4c0qjwlxhoohhgw9h65w1t", + "timestamp": 1602787644812, + "points": 793 + }, + { + "qid": "5pe1vs2lth07r0e8i7oshp", + "timestamp": 1602787650585, + "points": 885 + }, + { + "qid": "wbg3sy1lb1bal8x1j46ww", + "timestamp": 1602787653580, + "points": 923 + } + ] + }, + { + "rank": 7, + "points": 2893, + "team": "w274kv6dl70q2ln75i3etn", + "country": "j1az05za1rigaqf1nsu9l", + "submissions": [ + { + "qid": "j1lqroa9d34sx3by8qtru", + "timestamp": 1602787643846, + "points": 0 + }, + { + "qid": "n0uqrj9hssnzuk2cdr7ajs", + "timestamp": 1602787645623, + "points": 549 + }, + { + "qid": "l707o01drxflfi2bd0xmw", + "timestamp": 1602787645693, + "points": 654 + }, + { + "qid": "q5h4msmu3xlrpqdfevk07k", + "timestamp": 1602787650728, + "points": 709 + }, + { + "qid": "wt4dsnrjcbawnemh52w2", + "timestamp": 1602787652630, + "points": 981 + } + ] + }, + { + "rank": 8, + "points": 2865, + "team": "gw8pf7rvoa4y8fitm2uhm", + "country": "9tix5igshhx4emdrm2v4b", + "submissions": [ + { + "qid": "7tk0xglvy7xy31996sw5c", + "timestamp": 1602787639820, + "points": 0 + }, + { + "qid": "fmy9m6juy33czqrm5bshv", + "timestamp": 1602787644313, + "points": 526 + }, + { + "qid": "9sfbsr10baryfij5wrr2lo", + "timestamp": 1602787644964, + "points": 623 + }, + { + "qid": "nuockk29ahy4jhbwuqden", + "timestamp": 1602787645485, + "points": 856 + }, + { + "qid": "3137biovjpjofv7xk393im", + "timestamp": 1602787645892, + "points": 860 + } + ] + }, + { + "rank": 9, + "points": 2787, + "team": "c38ves9zkk8fvwptrylh9b", + "country": "wt7r9qctcxp4kofofq72b", + "submissions": [ + { + "qid": "hhzpo90m3flneca0qf5c3", + "timestamp": 1602787644601, + "points": 0 + }, + { + "qid": "fqqsyvh4lpeumsm35q5v", + "timestamp": 1602787645137, + "points": 443 + }, + { + "qid": "vnn0f9a6fqh216c5wogrc", + "timestamp": 1602787649693, + "points": 672 + }, + { + "qid": "2reyfec5rgikrek3hp7mli", + "timestamp": 1602787649705, + "points": 761 + }, + { + "qid": "srh3ucvtm3eitcnovvxy", + "timestamp": 1602787653292, + "points": 911 + } + ] + }, + { + "rank": 10, + "points": 2681, + "team": "tbw0llm7fzb7lkzviexejc", + "country": "xi5a243fys051aly8t8jz2", + "submissions": [ + { + "qid": "ptcbqqqxle678vdpd4iq6", + "timestamp": 1602787644465, + "points": 0 + }, + { + "qid": "md0dpkmmulhj9rpy5iqia", + "timestamp": 1602787645638, + "points": 162 + }, + { + "qid": "d4qph8yz4p6zc8pwql1k1f", + "timestamp": 1602787650026, + "points": 800 + }, + { + "qid": "5em3z1gxerini5tycxgyi", + "timestamp": 1602787651079, + "points": 839 + }, + { + "qid": "22pcb4ish9o8heeq90uzgb", + "timestamp": 1602787651860, + "points": 880 + } + ] + }, + { + "rank": 11, + "points": 2637, + "team": "9h2aqycdyq7wgq88au01ef", + "country": "9tix5igshhx4emdrm2v4b", + "submissions": [ + { + "qid": "07ax67aqp8ru1eejekv193", + "timestamp": 1602787642342, + "points": 0 + }, + { + "qid": "ajv7wygamt9lxq5xokup8q", + "timestamp": 1602787644351, + "points": 185 + }, + { + "qid": "fetbc35osumtib9n6sbm1a", + "timestamp": 1602787647075, + "points": 707 + }, + { + "qid": "upii8ogl2ite20yn9bez", + "timestamp": 1602787648047, + "points": 852 + }, + { + "qid": "pfqvirp09bxr92a7nhnns", + "timestamp": 1602787648855, + "points": 893 + } + ] + }, + { + "rank": 12, + "points": 2628, + "team": "zikvl2nypzck54nz5u5ig", + "country": "w94g98p0t5eeydvgmlyys", + "submissions": [ + { + "qid": "4hg0ekuiid342i4bhdpt7x", + "timestamp": 1602787639513, + "points": 0 + }, + { + "qid": "hav5jxtcfcboxfpry1cfjr", + "timestamp": 1602787643198, + "points": 175 + }, + { + "qid": "bq1b8005l5n2rp5pz04lah", + "timestamp": 1602787649887, + "points": 745 + }, + { + "qid": "2g5awssuwk4vl9njy5gi9", + "timestamp": 1602787651387, + "points": 843 + }, + { + "qid": "uj0hah1evcn3x524w6ofrs", + "timestamp": 1602787653619, + "points": 865 + } + ] + }, + { + "rank": 13, + "points": 2596, + "team": "b1rp0v4srx45hwty076p52", + "country": "j1az05za1rigaqf1nsu9l", + "submissions": [ + { + "qid": "y78dvvdcvgwdz19ymyeug", + "timestamp": 1602787643140, + "points": 0 + }, + { + "qid": "49cxs0yr6z4kvvxc7llyu", + "timestamp": 1602787643538, + "points": 552 + }, + { + "qid": "fasqp3qcvdlpybj68ggzzh", + "timestamp": 1602787644104, + "points": 650 + }, + { + "qid": "81mhqkurbrfp52k0ameoqm", + "timestamp": 1602787651972, + "points": 686 + }, + { + "qid": "kexxwoi5i7g5qgver5ab5r", + "timestamp": 1602787653538, + "points": 708 + } + ] + }, + { + "rank": 14, + "points": 2528, + "team": "xfv08ls2v7c0s31td1qag3", + "country": "9tix5igshhx4emdrm2v4b", + "submissions": [ + { + "qid": "oyzvwl1kjh7r6w5sas59on", + "timestamp": 1602787639981, + "points": 0 + }, + { + "qid": "8oeawf3qh27i4xz5r9a9kk", + "timestamp": 1602787640938, + "points": 415 + }, + { + "qid": "fccs6ai11qkmuwgx5vbj5", + "timestamp": 1602787644299, + "points": 441 + }, + { + "qid": "q1z3cuze04856y446b87ny", + "timestamp": 1602787650437, + "points": 685 + }, + { + "qid": "az2zgw5trrv82f3s2u262", + "timestamp": 1602787650656, + "points": 987 + } + ] + }, + { + "rank": 15, + "points": 2510, + "team": "5kwq6zoxm5c7w4fh14jym7", + "country": "xi5a243fys051aly8t8jz2", + "submissions": [ + { + "qid": "ms7kcoy4drl4fqptq4k98t", + "timestamp": 1602787646165, + "points": 0 + }, + { + "qid": "dahf6vgkwdeumvbmys8sb", + "timestamp": 1602787647994, + "points": 202 + }, + { + "qid": "2ld8ph3k1pwdw0aw9f86u", + "timestamp": 1602787651609, + "points": 652 + }, + { + "qid": "yagryfw2lmj3ysvl6mhjl5", + "timestamp": 1602787653271, + "points": 776 + }, + { + "qid": "flbf817v7nitayh6smpn5l", + "timestamp": 1602787653873, + "points": 880 + } + ] + }, + { + "rank": 16, + "points": 2480, + "team": "gk4ypf2xvtqj0uwk9krkvn", + "country": "j1az05za1rigaqf1nsu9l", + "submissions": [ + { + "qid": "yfswe1526yk99rb5ad7feh", + "timestamp": 1602787640077, + "points": 0 + }, + { + "qid": "azjerm432g4r1t1lprx08", + "timestamp": 1602787640861, + "points": 106 + }, + { + "qid": "pay5lvnu0c8os3vkl8k1xk", + "timestamp": 1602787641306, + "points": 568 + }, + { + "qid": "wqim97a8ttm0c3t5zf7nlp9", + "timestamp": 1602787645436, + "points": 875 + }, + { + "qid": "gzszt2uwbw5mfac0i1tccc", + "timestamp": 1602787653395, + "points": 931 + } + ] + }, + { + "rank": 17, + "points": 2478, + "team": "x22mmqsiczlq7ilznwydx8", + "country": "02ix5rjp3kdro8u9lv95foi", + "submissions": [ + { + "qid": "xxzosvd02exqjenbq47", + "timestamp": 1602787641865, + "points": 0 + }, + { + "qid": "613lzdh2rur6trx1raxx", + "timestamp": 1602787645226, + "points": 466 + }, + { + "qid": "4trrumgaqiuqwj4nyde4wb", + "timestamp": 1602787649751, + "points": 568 + }, + { + "qid": "tm6mxmneck93d4cpzu34h", + "timestamp": 1602787649783, + "points": 655 + }, + { + "qid": "sunzx7x2aqnfy40zr7clgn", + "timestamp": 1602787652474, + "points": 789 + } + ] + }, + { + "rank": 18, + "points": 2463, + "team": "cmkddjueoxm45bb0rokvs9", + "country": "8702btcs0oqff9p77koosk", + "submissions": [ + { + "qid": "6dvjjr084ug7guir9864pt", + "timestamp": 1602787640500, + "points": 0 + }, + { + "qid": "bdf0por92bm43go524apn", + "timestamp": 1602787643738, + "points": 338 + }, + { + "qid": "qbofxwsrpku0im0fxi6bq", + "timestamp": 1602787644057, + "points": 558 + }, + { + "qid": "oggyrgj3g9q2fmgyr76xu3", + "timestamp": 1602787644425, + "points": 764 + }, + { + "qid": "bdpsa0xst1tl4ymos5pz0e", + "timestamp": 1602787648224, + "points": 803 + } + ] + }, + { + "rank": 19, + "points": 2451, + "team": "mmuy8asf9tiqdgxh7jyhy", + "country": "wt7r9qctcxp4kofofq72b", + "submissions": [ + { + "qid": "lyc5ilihqykpnt1kjsokn", + "timestamp": 1602787639535, + "points": 0 + }, + { + "qid": "2vf00k6987ctjeh3bzucae", + "timestamp": 1602787645295, + "points": 320 + }, + { + "qid": "8trbo6f8xtxqvaidt79fxr", + "timestamp": 1602787646258, + "points": 445 + }, + { + "qid": "4z2d9t7y69bxvukz1t7syl", + "timestamp": 1602787646907, + "points": 758 + }, + { + "qid": "2wsyy9anomz34dk94s1b3g", + "timestamp": 1602787652552, + "points": 928 + } + ] + }, + { + "rank": 20, + "points": 2437, + "team": "x2zbg9t7nw4j7g2rd6d0u", + "country": "3e0omgf54xen4w1497qns", + "submissions": [ + { + "qid": "lc9i090zhckrg8t9c7cfrd", + "timestamp": 1602787642866, + "points": 0 + }, + { + "qid": "1a7x8fxwo82dvkdd0equ3j", + "timestamp": 1602787647413, + "points": 337 + }, + { + "qid": "3opzhpshnshct9wab5ycw", + "timestamp": 1602787650365, + "points": 577 + }, + { + "qid": "cvagfbmjwolpqf5innq7kn", + "timestamp": 1602787650411, + "points": 730 + }, + { + "qid": "hs7kj0ucrxjcuqmwynl91", + "timestamp": 1602787650937, + "points": 793 + } + ] + }, + { + "rank": 21, + "points": 2427, + "team": "pycb5x3m7fjwnlcmhnpk", + "country": "3e0omgf54xen4w1497qns", + "submissions": [ + { + "qid": "19wmcl6c3u871g2sh0rprl", + "timestamp": 1602787643443, + "points": 0 + }, + { + "qid": "t99kklnnskojrr52s57ugq", + "timestamp": 1602787647246, + "points": 511 + }, + { + "qid": "52ppdepch1g2adjr81pt0b", + "timestamp": 1602787649808, + "points": 621 + }, + { + "qid": "jhv938axxnlt0jvpg5gm", + "timestamp": 1602787652411, + "points": 627 + }, + { + "qid": "h2ssr349zknst183jrntrr", + "timestamp": 1602787652995, + "points": 668 + } + ] + }, + { + "rank": 22, + "points": 2414, + "team": "ip9onxl89u97bpvahinulf", + "country": "j1az05za1rigaqf1nsu9l", + "submissions": [ + { + "qid": "acc4duqi44g4rt58ivf84t", + "timestamp": 1602787641614, + "points": 0 + }, + { + "qid": "oxmp27u51ga5g5fnthj6vd", + "timestamp": 1602787644582, + "points": 175 + }, + { + "qid": "r9oeevz2kwohlsaccvffc9", + "timestamp": 1602787650613, + "points": 383 + }, + { + "qid": "89srem01e4km49aommabbj", + "timestamp": 1602787651805, + "points": 880 + }, + { + "qid": "les7q5d9mrsq0co1gkhqs", + "timestamp": 1602787653396, + "points": 976 + } + ] + }, + { + "rank": 23, + "points": 2387, + "team": "irlx474ti6rvy52nxxqx3f", + "country": "xi5a243fys051aly8t8jz2", + "submissions": [ + { + "qid": "3eeau6buzy2pmfqcfp9rbo", + "timestamp": 1602787639916, + "points": 0 + }, + { + "qid": "2gx4iyocrv3uns2xai4ji", + "timestamp": 1602787640822, + "points": 151 + }, + { + "qid": "2zg315ga716mw48q06eqv", + "timestamp": 1602787641477, + "points": 414 + }, + { + "qid": "ayykx4tdevft9mmxe94zq", + "timestamp": 1602787644421, + "points": 899 + }, + { + "qid": "gfopccar2bq8ll3kqbpt24", + "timestamp": 1602787647405, + "points": 923 + } + ] + }, + { + "rank": 24, + "points": 2347, + "team": "3ue2abadg7fb50c5m04yj", + "country": "qeb1fud4kpxv3qyefa4g", + "submissions": [ + { + "qid": "mmajsai6l7kax9opfljye", + "timestamp": 1602787640024, + "points": 0 + }, + { + "qid": "nuoet35khefr0wjy78rkib", + "timestamp": 1602787641962, + "points": 130 + }, + { + "qid": "07w47u0x6stovilaagodv6", + "timestamp": 1602787643683, + "points": 568 + }, + { + "qid": "isuefvjw0h3kt0krpsw63", + "timestamp": 1602787644935, + "points": 692 + }, + { + "qid": "95qfyek3qqnnebwnnycwms", + "timestamp": 1602787649551, + "points": 957 + } + ] + }, + { + "rank": 25, + "points": 2333, + "team": "xdt3tbf01jp5nynryeed", + "country": "w94g98p0t5eeydvgmlyys", + "submissions": [ + { + "qid": "6trgqvmltdg23n6tglnwm7i", + "timestamp": 1602787639496, + "points": 0 + }, + { + "qid": "85fd46k6h3m0edo27czasvj", + "timestamp": 1602787643263, + "points": 108 + }, + { + "qid": "x7s22m89lhg6q8iiytlc6", + "timestamp": 1602787645254, + "points": 607 + }, + { + "qid": "rxtq43n1mpmmeh4vrmfq8", + "timestamp": 1602787650448, + "points": 749 + }, + { + "qid": "ty1mx45ouvm9bpdpto4da", + "timestamp": 1602787653501, + "points": 869 + } + ] + }, + { + "rank": 26, + "points": 2305, + "team": "u8zfg9irjkduzgd4etku4", + "country": "8702btcs0oqff9p77koosk", + "submissions": [ + { + "qid": "suxbnvvohzd8xammurm54", + "timestamp": 1602787639795, + "points": 0 + }, + { + "qid": "52gd1ic2ty960hiwp0i0ki", + "timestamp": 1602787639843, + "points": 131 + }, + { + "qid": "tdckqbf42yb85js1j5m24p", + "timestamp": 1602787641720, + "points": 538 + }, + { + "qid": "yehtrlkl2cav9zoian4u0q", + "timestamp": 1602787641864, + "points": 708 + }, + { + "qid": "siw3m0vzp9jd9fycmmsdo7", + "timestamp": 1602787650367, + "points": 928 + } + ] + }, + { + "rank": 27, + "points": 2220, + "team": "j1xfu26g0o0go331kuxxzg", + "country": "3e0omgf54xen4w1497qns", + "submissions": [ + { + "qid": "slz1mmw87b57zrdcys7d2", + "timestamp": 1602787641387, + "points": 0 + }, + { + "qid": "kp91upo1qon40pvvfl0ue", + "timestamp": 1602787645192, + "points": 154 + }, + { + "qid": "dz1lhz7cqmhtej70vxpec", + "timestamp": 1602787648203, + "points": 554 + }, + { + "qid": "sqo43rvonqca2m1q53ssj", + "timestamp": 1602787649906, + "points": 704 + }, + { + "qid": "f7cqh4fmk93xz35q5ydq6", + "timestamp": 1602787650422, + "points": 808 + } + ] + }, + { + "rank": 28, + "points": 2189, + "team": "684mx25aovp8o36cclmfhj", + "country": "qeb1fud4kpxv3qyefa4g", + "submissions": [ + { + "qid": "ppub2st30nftyi1i04bu1a", + "timestamp": 1602787646385, + "points": 0 + }, + { + "qid": "tvcwtq1yivfwq7q7nfwmvr", + "timestamp": 1602787647397, + "points": 480 + }, + { + "qid": "0ubhrh3hqltqjfa8gx0ht9", + "timestamp": 1602787647636, + "points": 521 + }, + { + "qid": "ldxwgzc70girro0m9b0j2b", + "timestamp": 1602787647662, + "points": 539 + }, + { + "qid": "gwpesi7jvxucj92lqdhu", + "timestamp": 1602787651815, + "points": 649 + } + ] + }, + { + "rank": 29, + "points": 2160, + "team": "1t8zeudxmgpb2uqchrnipt", + "country": "9tix5igshhx4emdrm2v4b", + "submissions": [ + { + "qid": "c1aete3hfdkil92eviijwn", + "timestamp": 1602787639578, + "points": 0 + }, + { + "qid": "tx1ucz9ebymt6yz5qrh4v", + "timestamp": 1602787641921, + "points": 250 + }, + { + "qid": "e6xvcu2hmne2q7x796bxu", + "timestamp": 1602787648690, + "points": 472 + }, + { + "qid": "xvugr4syebnttpqbvu2pqe", + "timestamp": 1602787650829, + "points": 493 + }, + { + "qid": "snp6unpuitwxtgxq5kkp", + "timestamp": 1602787652174, + "points": 945 + } + ] + }, + { + "rank": 30, + "points": 2134, + "team": "0732f8ne9dehkdnkz0ehxl", + "country": "8702btcs0oqff9p77koosk", + "submissions": [ + { + "qid": "xhomu8k4g9spfopbqkju3", + "timestamp": 1602787640568, + "points": 0 + }, + { + "qid": "8wfg9coo1z24mknmat3xjo", + "timestamp": 1602787643666, + "points": 209 + }, + { + "qid": "gsyrz7e1ezo851q8quaj47", + "timestamp": 1602787647199, + "points": 494 + }, + { + "qid": "hr9uhd845u7pcd1m6phaf7", + "timestamp": 1602787647921, + "points": 624 + }, + { + "qid": "8nhnb2x6pgrevc0ora0x2j", + "timestamp": 1602787651194, + "points": 807 + } + ] + }, + { + "rank": 31, + "points": 2084, + "team": "ptkkgqqa2emuymdy68dn", + "country": "wt7r9qctcxp4kofofq72b", + "submissions": [ + { + "qid": "97y29yki0wccgggtys1rrn", + "timestamp": 1602787639805, + "points": 0 + }, + { + "qid": "iizcgtgur8tc0xzcvvute6", + "timestamp": 1602787640453, + "points": 394 + }, + { + "qid": "0lvuycrsocls81xiiipfql", + "timestamp": 1602787641151, + "points": 424 + }, + { + "qid": "ymjwyusxjgct8d9xmowsu", + "timestamp": 1602787644944, + "points": 624 + }, + { + "qid": "h3l3zi9uy4enbibu8qmhn", + "timestamp": 1602787650092, + "points": 642 + } + ] + }, + { + "rank": 32, + "points": 2066, + "team": "8efp7no1c57j4ybjheh2c", + "country": "02ix5rjp3kdro8u9lv95foi", + "submissions": [ + { + "qid": "1kr91b9qrvyj1jtp2ezshzt", + "timestamp": 1602787641296, + "points": 0 + }, + { + "qid": "bi159kwxgkw1y98riomhxk", + "timestamp": 1602787643563, + "points": 109 + }, + { + "qid": "howytocbkjfia73alkko4p", + "timestamp": 1602787645100, + "points": 399 + }, + { + "qid": "gl7a1ztd3yokxr01zly04b", + "timestamp": 1602787645975, + "points": 765 + }, + { + "qid": "9v018u5gyjsu9ci4u9nvx8", + "timestamp": 1602787653667, + "points": 793 + } + ] + }, + { + "rank": 33, + "points": 2031, + "team": "9vczyf29n0mxgafm32w2", + "country": "wt7r9qctcxp4kofofq72b", + "submissions": [ + { + "qid": "46ms6z4qfi5itpzfs51jxq", + "timestamp": 1602787640011, + "points": 0 + }, + { + "qid": "r7cqf30whmhl5we9708r2", + "timestamp": 1602787642338, + "points": 266 + }, + { + "qid": "pc1yyc3jvsu54pyh56yh", + "timestamp": 1602787644343, + "points": 491 + }, + { + "qid": "ohiywup9sgt7ysfkpqb8s", + "timestamp": 1602787650267, + "points": 545 + }, + { + "qid": "5hpjgaz7idyyaywt7vivgl", + "timestamp": 1602787653531, + "points": 729 + } + ] + }, + { + "rank": 34, + "points": 2007, + "team": "ht13jk3iwb98oz5gb6uyn", + "country": "wt7r9qctcxp4kofofq72b", + "submissions": [ + { + "qid": "65wda9ap38xoz2ziponza", + "timestamp": 1602787643131, + "points": 0 + }, + { + "qid": "ydo785vxxgggp6gsugscet", + "timestamp": 1602787643603, + "points": 199 + }, + { + "qid": "3wa162wlq6lujwhwe50v1", + "timestamp": 1602787643618, + "points": 521 + }, + { + "qid": "uy8hc0u1eql7lugxg5iats", + "timestamp": 1602787649423, + "points": 617 + }, + { + "qid": "b6yg557p4opl59zkgixfe", + "timestamp": 1602787653531, + "points": 670 + } + ] + }, + { + "rank": 35, + "points": 2001, + "team": "teof89uxvoqeg3sm8pr7", + "country": "9tix5igshhx4emdrm2v4b", + "submissions": [ + { + "qid": "2kva1dp8nu5p7tlmpa1dl8", + "timestamp": 1602787640577, + "points": 0 + }, + { + "qid": "jh9chgr8mroy2yf1a0ravs", + "timestamp": 1602787640849, + "points": 170 + }, + { + "qid": "aja7g5j6t7e9r9zo553sst", + "timestamp": 1602787641532, + "points": 242 + }, + { + "qid": "fzfs8ebb446fv5ibnnmaxg", + "timestamp": 1602787644617, + "points": 626 + }, + { + "qid": "dll8x9xorio2v5fzcyb1kq", + "timestamp": 1602787651554, + "points": 963 + } + ] + }, + { + "rank": 36, + "points": 1907, + "team": "irn7kw0wh190f2tswmnv4", + "country": "w94g98p0t5eeydvgmlyys", + "submissions": [ + { + "qid": "u5d4z1m6b5ya7t1m3xewk", + "timestamp": 1602787641266, + "points": 0 + }, + { + "qid": "5lpig10p0mongz4tcerl7m", + "timestamp": 1602787648173, + "points": 142 + }, + { + "qid": "lb32hkin6gpo9wv5a5t44g", + "timestamp": 1602787649217, + "points": 400 + }, + { + "qid": "x52vx77hu5bckuum4zil4", + "timestamp": 1602787649738, + "points": 464 + }, + { + "qid": "312orv0ufrfao8l2ass2y", + "timestamp": 1602787653109, + "points": 901 + } + ] + }, + { + "rank": 37, + "points": 1890, + "team": "jtgzzjilnyif9n2hps7xmo", + "country": "9tix5igshhx4emdrm2v4b", + "submissions": [ + { + "qid": "mnvvhyltlsh4q9bxatn6s", + "timestamp": 1602787641041, + "points": 0 + }, + { + "qid": "so31ubxzpslesnrrxom17i", + "timestamp": 1602787645983, + "points": 231 + }, + { + "qid": "8826ogort600fahhurb1qv", + "timestamp": 1602787646495, + "points": 271 + }, + { + "qid": "yk3goya5fr7ik61axrep9", + "timestamp": 1602787649169, + "points": 461 + }, + { + "qid": "c2q1ypzbp95pi0x9roe9z", + "timestamp": 1602787651389, + "points": 927 + } + ] + }, + { + "rank": 38, + "points": 1889, + "team": "ys1vg6r2rqo7t76m3nyxyw", + "country": "w94g98p0t5eeydvgmlyys", + "submissions": [ + { + "qid": "4lokcbn001nj6tu6w5qko", + "timestamp": 1602787639984, + "points": 0 + }, + { + "qid": "txn64ah3svue9yo4m28x", + "timestamp": 1602787641379, + "points": 196 + }, + { + "qid": "xzybljyud5m3b39kgjb9", + "timestamp": 1602787647754, + "points": 350 + }, + { + "qid": "zfvkp5tadudo8s9j9sybor", + "timestamp": 1602787648553, + "points": 639 + }, + { + "qid": "niiiyu5n1l4wikg7ywmds", + "timestamp": 1602787653191, + "points": 704 + } + ] + }, + { + "rank": 39, + "points": 1870, + "team": "88zio9fbqsh0mzntzu9lv8i", + "country": "02ix5rjp3kdro8u9lv95foi", + "submissions": [ + { + "qid": "x4sk4xpw1lhp5fqljf7omc", + "timestamp": 1602787641013, + "points": 0 + }, + { + "qid": "37pcl8yxvfop7l429rqane", + "timestamp": 1602787643954, + "points": 216 + }, + { + "qid": "oan3amzpmmsov1tgh6hak9", + "timestamp": 1602787649522, + "points": 297 + }, + { + "qid": "hpue8c98idpl6knqwobqs", + "timestamp": 1602787651960, + "points": 453 + }, + { + "qid": "x0doafwg1w42cytbq509t", + "timestamp": 1602787652481, + "points": 904 + } + ] + }, + { + "rank": 40, + "points": 1846, + "team": "5jvhf458pttdr40frdf1c7", + "country": "w94g98p0t5eeydvgmlyys", + "submissions": [ + { + "qid": "7fxxubhscpvqt9jdhofso", + "timestamp": 1602787641911, + "points": 0 + }, + { + "qid": "s2zcn3zmqajzrf9yxqhqy", + "timestamp": 1602787645370, + "points": 297 + }, + { + "qid": "7weliweuxj50vvfqn97fr1", + "timestamp": 1602787646479, + "points": 376 + }, + { + "qid": "07apbdi7w8vys42f48yvue", + "timestamp": 1602787649751, + "points": 555 + }, + { + "qid": "ovd7obv7zdv83z9ydvopb", + "timestamp": 1602787651693, + "points": 618 + } + ] + }, + { + "rank": 41, + "points": 1833, + "team": "xkjds7dge43q3g2s32tle", + "country": "j1az05za1rigaqf1nsu9l", + "submissions": [ + { + "qid": "sqiwcxfyvw85pbqav2zapn", + "timestamp": 1602787640847, + "points": 0 + }, + { + "qid": "rwlgvgtfirdg8gcwg9g88", + "timestamp": 1602787648103, + "points": 217 + }, + { + "qid": "8tntnz6ih93mqki2rj965m", + "timestamp": 1602787651665, + "points": 324 + }, + { + "qid": "kedko5a9f0imymx8faarq9", + "timestamp": 1602787652083, + "points": 365 + }, + { + "qid": "f13e02htv4cmm7ifmwk8ob", + "timestamp": 1602787653689, + "points": 927 + } + ] + }, + { + "rank": 42, + "points": 1818, + "team": "t3ikpmz2nhg16cjg7fs2e4g", + "country": "r6biyj91ottc4dhnajxyn", + "submissions": [ + { + "qid": "xpjym3yjpssavru7lstgsh", + "timestamp": 1602787641332, + "points": 0 + }, + { + "qid": "uzgl76mxj11w0mqtydujw", + "timestamp": 1602787645692, + "points": 196 + }, + { + "qid": "xvdam2q14zbb1e3f2ycnh6", + "timestamp": 1602787647216, + "points": 258 + }, + { + "qid": "obgzpsoywps7l1xp5o11g4", + "timestamp": 1602787649198, + "points": 404 + }, + { + "qid": "2h027b42i9vhbyx5d8f8tg", + "timestamp": 1602787652357, + "points": 960 + } + ] + }, + { + "rank": 43, + "points": 1781, + "team": "5mfbg3kho13c5x52r1my0w", + "country": "8702btcs0oqff9p77koosk", + "submissions": [ + { + "qid": "yzv617ja1wksziolyn2ouh", + "timestamp": 1602787640739, + "points": 0 + }, + { + "qid": "w4ofwxr58rp9ptxug5psid", + "timestamp": 1602787646957, + "points": 227 + }, + { + "qid": "30yg08iddolcnbfk351mz", + "timestamp": 1602787648923, + "points": 242 + }, + { + "qid": "zeo45xgci8jz49l99mohe", + "timestamp": 1602787651447, + "points": 441 + }, + { + "qid": "c4y7xic11qipnv3q2r5jjj", + "timestamp": 1602787653373, + "points": 871 + } + ] + }, + { + "rank": 44, + "points": 1767, + "team": "szwg0rjct9j2buoyvm1cok", + "country": "02ix5rjp3kdro8u9lv95foi", + "submissions": [ + { + "qid": "dnmkid175uj8q84f2idb8", + "timestamp": 1602787639833, + "points": 0 + }, + { + "qid": "wbwfx09aun15fwgeb5ln6", + "timestamp": 1602787640845, + "points": 360 + }, + { + "qid": "bl7gld379vqu3ppt0698km", + "timestamp": 1602787650923, + "points": 387 + }, + { + "qid": "irdr0xgymnnf27zfatsckf", + "timestamp": 1602787651092, + "points": 424 + }, + { + "qid": "gi5h0d3iwj94kif4bi2ies", + "timestamp": 1602787652968, + "points": 596 + } + ] + }, + { + "rank": 45, + "points": 1763, + "team": "u9rrcs74ymq27cwi46prng", + "country": "9tix5igshhx4emdrm2v4b", + "submissions": [ + { + "qid": "rnm01nqlrtocvmf0brajfw", + "timestamp": 1602787643086, + "points": 0 + }, + { + "qid": "0amo9duvfwed8z2t9ppql4", + "timestamp": 1602787645338, + "points": 131 + }, + { + "qid": "z5al1n7nx5mhkof021fjz9", + "timestamp": 1602787646461, + "points": 389 + }, + { + "qid": "d48xye6nj37n1h6yn0qi", + "timestamp": 1602787648221, + "points": 459 + }, + { + "qid": "jlvhy4vnxs8cv7o1orlsad", + "timestamp": 1602787651776, + "points": 784 + } + ] + }, + { + "rank": 46, + "points": 1595, + "team": "he7yw3uyiupsj434xjnqm", + "country": "r6biyj91ottc4dhnajxyn", + "submissions": [ + { + "qid": "d7okeopkqjogzmf2r3hilh", + "timestamp": 1602787642246, + "points": 0 + }, + { + "qid": "1mwv5fqwfl9m67lydh8q2s", + "timestamp": 1602787643767, + "points": 357 + }, + { + "qid": "b79nfs7jh98m096itt0kk", + "timestamp": 1602787643791, + "points": 362 + }, + { + "qid": "fglryc1r3crl6cbtgc116o", + "timestamp": 1602787645674, + "points": 421 + }, + { + "qid": "jew02og6ormb9corwdn2f", + "timestamp": 1602787651072, + "points": 455 + } + ] + }, + { + "rank": 47, + "points": 1465, + "team": "8yqqjpf1au8q0icqhze6ui", + "country": "w94g98p0t5eeydvgmlyys", + "submissions": [ + { + "qid": "4yp4i9sg1aikumj5gxjfeg", + "timestamp": 1602787642631, + "points": 0 + }, + { + "qid": "n2lwxtd0gapwh1bumjw4", + "timestamp": 1602787649418, + "points": 111 + }, + { + "qid": "vlvu9x7iuyykt0i4fin7r", + "timestamp": 1602787649977, + "points": 385 + }, + { + "qid": "mimso0hf5fc0491vpp5dwj2", + "timestamp": 1602787651797, + "points": 437 + }, + { + "qid": "9q8nc307pwildflv7jfs2l", + "timestamp": 1602787652115, + "points": 532 + } + ] + }, + { + "rank": 48, + "points": 1358, + "team": "bnkmt267mp7lz24u9ku6u", + "country": "02ix5rjp3kdro8u9lv95foi", + "submissions": [ + { + "qid": "3fapqqbnwns927gf4lt1q", + "timestamp": 1602787644368, + "points": 0 + }, + { + "qid": "571winakxbj8rx01zxggu2", + "timestamp": 1602787646703, + "points": 141 + }, + { + "qid": "pz0892mr83cdw16ouxh1po", + "timestamp": 1602787648648, + "points": 252 + }, + { + "qid": "lkcz2wd5uf9vdcctkt67i", + "timestamp": 1602787649871, + "points": 301 + }, + { + "qid": "zbqz3lqjrq6nvfu6mtpvn", + "timestamp": 1602787653871, + "points": 664 + } + ] + }, + { + "rank": 49, + "points": 1347, + "team": "s4fzidbtg3pzf2j0w0csfg", + "country": "wt7r9qctcxp4kofofq72b", + "submissions": [ + { + "qid": "d8p8i9ilpbapusuf0s4pd", + "timestamp": 1602787639569, + "points": 0 + }, + { + "qid": "rvl6jf0khvfpo6s5qyx44", + "timestamp": 1602787639819, + "points": 125 + }, + { + "qid": "458ufxfi2e4nw50owmbse", + "timestamp": 1602787641716, + "points": 182 + }, + { + "qid": "mk933wxn5j88neam9rfyu3", + "timestamp": 1602787647786, + "points": 293 + }, + { + "qid": "3l06vh1e24d63ea3zdcn4v", + "timestamp": 1602787648726, + "points": 747 + } + ] + }, + { + "rank": 50, + "points": 1059, + "team": "bakh49q5hxhl2g8ffaofkc", + "country": "xi5a243fys051aly8t8jz2", + "submissions": [ + { + "qid": "7j6o8vef5vta0rnis9i2i", + "timestamp": 1602787640175, + "points": 0 + }, + { + "qid": "ds3hnuhxqsx7wtkkogfvi", + "timestamp": 1602787640686, + "points": 100 + }, + { + "qid": "y580ae15mosdiwc7mztji", + "timestamp": 1602787642974, + "points": 216 + }, + { + "qid": "jd98tkkzsizfgmzrspd3j", + "timestamp": 1602787645376, + "points": 243 + }, + { + "qid": "b9w8qhwukww4lvwzmqw0sp", + "timestamp": 1602787650383, + "points": 500 + } + ] + } +] \ No newline at end of file diff --git a/src/utils/genScoreboard.js b/src/utils/genScoreboard.js new file mode 100644 index 0000000..6ce6f5b --- /dev/null +++ b/src/utils/genScoreboard.js @@ -0,0 +1,71 @@ +function randString() { + return Math.random().toString(36).substring(2, 15) + + Math.random().toString(36).substring(2, 15); +} + +function genDummySubmissions(n) { + function genRandomN(min, max, num) { + const a = []; + for (let i = 0; i < num; i += 1) { + a.push(Math.round(Math.random() * (max - min) + min)); + } + + return a.sort((x, y) => x - y); + } + + const timestamps = genRandomN(1602787639417, 1602787653905, n); + const points = [0].concat(genRandomN(100, 1000, n - 1)); + + const submissions = []; + + for (let i = 0; i < n; i += 1) { + submissions.push({ + qid: randString(), + timestamp: timestamps[i], + points: points[i], + }); + } + + return submissions; +} + +function makeCountries() { + const countries = []; + + for (let i = 0; i < 10; i += 1) { + countries.push(randString()); + } + + return countries; +} + +function genTeamData(countries) { + const submissions = genDummySubmissions(5); + const points = submissions.map((submission) => submission.points).reduce((a, b) => a + b); + + return { + rank: 0, + points, + team: randString(), + country: countries[Math.floor(Math.random() * countries.length)], + submissions, + }; +} + +function genScoreboard(n) { + const countries = makeCountries(); + let scoreboard = []; + for (let i = 0; i < n; i += 1) { + scoreboard.push(genTeamData(countries)); + } + + scoreboard = scoreboard.sort((a, b) => b.points - a.points); + + // eslint-disable-next-line no-param-reassign + scoreboard.forEach((item, index) => { item.rank = index + 1; }); + return scoreboard; +} + +const fs = require('fs'); + +fs.writeFileSync('./dummyScoreboard.json', JSON.stringify(genScoreboard(50), null, 4));