{"version":3,"sources":["App.js","index.js"],"names":["preparePoints","points","candidates","sort","a","b","slice","filter","el","concat","seasonNames","comparePlayers","PlayerLine","props","className","name","TotalLine","place","winner","sum","visits","rating","TotalTable","useState","showResults","setShowResults","title","total","entries","map","index","player","val","onClick","href","GameReport","label","date","Object","x","y","WinnerTable","data","idx","undefined","App","setData","window","season","useEffect","fetch","Date","getTime","then","res","blob","text","yamlAsString","allData","jsyaml","load","Map","forEach","game","has","set","get","push","key","reduce","length","style","clear","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.d258f430.chunk.js","sourcesContent":["import './App.css';\nimport jsyaml from \"js-yaml\";\nimport {useEffect, useState} from 'react';\n\nconst defaultSeason = 22;\n\nconst preparePoints = (points) => {\n const SKIP_DAYS = 15;\n points = points.sort((a, b) => b - a);\n const candidates = points.slice(SKIP_DAYS).filter((el) => el < 0);\n return points.slice(0, SKIP_DAYS).concat(candidates);\n}\n\nconst seasonNames = [\n \"Нулевой\", \"Первый\", \"Второй\", \"Третий\", \"Четвёртый\", \"Пятый\", \"Шестой\", \"Седьмой\", \"Восьмой\", \"Девятый\",\n \"Десятый\", \"Одиннадцатый\", \"Двенадцатый\", \"Тринадцатый\", \"Четырнадцатый\", \"Пятнадцатый\",\n \"Шестнадцатый\", \"Семнадцатый\", \"Восемнадцатый\", \"Девятнадцатый\", \"Двадцатый\", \"Двадцать первый\",\n \"Двадцать второй\", \"Двадцать третий\", \"Двадцать четвёртый\", \"Двадцать пятый\", \"Двадцать шестой\"\n]\n\nconst comparePlayers = (a, b) => {\n if (a[1]['rating'] === b[1]['rating']) {\n return a[1]['visits'] - b[1]['visits'];\n }\n return b[1]['rating'] - a[1]['rating'];\n}\n\nconst PlayerLine = (props) => {\n return
  • \n {props.name}\n {props.points !== 0 &&

    {props.points}

    }\n
  • ;\n}\n\nconst TotalLine = (props) => {\n return \n {props.name === props.winner ? '👑' : props.place}\n {props.name}\n {props.sum}\n {props.visits}\n {props.rating}\n ;\n}\n\nconst TotalTable = (props) => {\n const [showResults, setShowResults] = useState(false);\n const onClick = () => setShowResults(!showResults);\n return
    \n \n \n \n \n \n \n \n \n \n \n {[...props.total.entries()]\n .map(([player, val], index) =>\n (showResults || index < 12) &&\n )}\n \n
    \n ИгрокГолосаПосещенияРейтинг
    \n
    \n \n {showResults ? 'Двенадцать лучших' : 'Показать всех'}\n
    \n
    ;\n}\n\nconst GameReport = (props) => {\n return (\n );\n}\n\nfunction WinnerTable(props) {\n return
    \n

    Финальный стол

    \n \n \n \n \n \n \n \n \n {Object.entries(props.data)\n .sort((x, y) => y[1] - x[1])\n .map(([name, points], idx) =>\n \n \n \n )}\n \n
    ИгрокБаллы
    {name}{points}
    \n
    ;\n}\n\nconst App = () => {\n const [data, setData] = useState(false);\n const [season, setSeason] = useState(window.season || defaultSeason);\n useEffect(() => {\n if (!data) {\n fetch(`/data/${season}.yaml?timestamp=${new Date().getTime()}`)\n .then(res => res.blob())\n .then(blob => blob.text()).then((yamlAsString) => {\n const allData = jsyaml.load(yamlAsString);\n allData['total'] = new Map();\n allData['games'].forEach((game) => {\n Object.entries(game['result']).forEach(([name, points]) => {\n if (!(allData['total'].has(name))) {\n allData['total'].set(name, {'points': []});\n }\n allData['total'].get(name)['points'].push(points);\n });\n });\n allData['total'].forEach((val, key) => {\n val['sum'] = preparePoints(val['points']).reduce((a, b) => a + b, 0);\n val['visits'] = preparePoints(val['points']).length;\n val['rating'] = val['visits'] + val['sum'];\n });\n allData['total'] = new Map([...allData['total']].sort(comparePlayers));\n setData(allData);\n });\n }\n }, [data]);\n return (\n
    \n {data ?\n
    \n {data['final'] && }\n
    \n

    Рейтинг игроков. {seasonNames[season]} сезон

    \n Правила игры в «Мафию»\n
    \n {season > 1 && \n {seasonNames[season - 1]} сезон (архив)}\n \n
    \n
    \n {data['games'].map((game) => )}\n
    \n
    \n :
    Загрузка...
    \n }\n
    );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);"],"sourceRoot":""}