mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-30 07:12:36 -05:00
C:/Program Files/Git/comps prototype
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"files": {
|
||||
"main.js": "/static/js/main.e111f627.chunk.js",
|
||||
"main.js.map": "/static/js/main.e111f627.chunk.js.map",
|
||||
"main.js": "/static/js/main.eb014c95.chunk.js",
|
||||
"main.js.map": "/static/js/main.eb014c95.chunk.js.map",
|
||||
"runtime~main.js": "/static/js/runtime~main.a8a9905a.js",
|
||||
"runtime~main.js.map": "/static/js/runtime~main.a8a9905a.js.map",
|
||||
"static/js/2.ace76939.chunk.js": "/static/js/2.ace76939.chunk.js",
|
||||
"static/js/2.ace76939.chunk.js.map": "/static/js/2.ace76939.chunk.js.map",
|
||||
"static/js/2.a7de98cc.chunk.js": "/static/js/2.a7de98cc.chunk.js",
|
||||
"static/js/2.a7de98cc.chunk.js.map": "/static/js/2.a7de98cc.chunk.js.map",
|
||||
"index.html": "/index.html",
|
||||
"precache-manifest.0161e36c969a3834202b3e08cd8cf003.js": "/precache-manifest.0161e36c969a3834202b3e08cd8cf003.js",
|
||||
"precache-manifest.ad8fc015b12763aadaa2cd89efe23a40.js": "/precache-manifest.ad8fc015b12763aadaa2cd89efe23a40.js",
|
||||
"service-worker.js": "/service-worker.js",
|
||||
"static/media/ancho-v_games.png": "/static/media/ancho-v_games.07d5d0f6.png",
|
||||
"static/media/arowana_mall.png": "/static/media/arowana_mall.26cf0823.png",
|
||||
|
||||
@@ -1 +1 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><link rel="stylesheet" href="//cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.css"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>sendou.ink</title></head><body style="background-color:#f2f7fd"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(l){function e(e){for(var r,t,n=e[0],o=e[1],u=e[2],f=0,i=[];f<n.length;f++)t=n[f],p[t]&&i.push(p[t][0]),p[t]=0;for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(l[r]=o[r]);for(s&&s(e);i.length;)i.shift()();return c.push.apply(c,u||[]),a()}function a(){for(var e,r=0;r<c.length;r++){for(var t=c[r],n=!0,o=1;o<t.length;o++){var u=t[o];0!==p[u]&&(n=!1)}n&&(c.splice(r--,1),e=f(f.s=t[0]))}return e}var t={},p={1:0},c=[];function f(e){if(t[e])return t[e].exports;var r=t[e]={i:e,l:!1,exports:{}};return l[e].call(r.exports,r,r.exports,f),r.l=!0,r.exports}f.m=l,f.c=t,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(r,e){if(1&e&&(r=f(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var n in r)f.d(t,n,function(e){return r[e]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var r=window.webpackJsonp=window.webpackJsonp||[],n=r.push.bind(r);r.push=e,r=r.slice();for(var o=0;o<r.length;o++)e(r[o]);var s=n;a()}([])</script><script src="/static/js/2.ace76939.chunk.js"></script><script src="/static/js/main.e111f627.chunk.js"></script></body></html>
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><link rel="stylesheet" href="//cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.css"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>sendou.ink</title></head><body style="background-color:#f2f7fd"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(l){function e(e){for(var r,t,n=e[0],o=e[1],u=e[2],f=0,i=[];f<n.length;f++)t=n[f],p[t]&&i.push(p[t][0]),p[t]=0;for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(l[r]=o[r]);for(s&&s(e);i.length;)i.shift()();return c.push.apply(c,u||[]),a()}function a(){for(var e,r=0;r<c.length;r++){for(var t=c[r],n=!0,o=1;o<t.length;o++){var u=t[o];0!==p[u]&&(n=!1)}n&&(c.splice(r--,1),e=f(f.s=t[0]))}return e}var t={},p={1:0},c=[];function f(e){if(t[e])return t[e].exports;var r=t[e]={i:e,l:!1,exports:{}};return l[e].call(r.exports,r,r.exports,f),r.l=!0,r.exports}f.m=l,f.c=t,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(r,e){if(1&e&&(r=f(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var n in r)f.d(t,n,function(e){return r[e]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var r=window.webpackJsonp=window.webpackJsonp||[],n=r.push.bind(r);r.push=e,r=r.slice();for(var o=0;o<r.length;o++)e(r[o]);var s=n;a()}([])</script><script src="/static/js/2.a7de98cc.chunk.js"></script><script src="/static/js/main.eb014c95.chunk.js"></script></body></html>
|
||||
@@ -1,15 +1,15 @@
|
||||
self.__precacheManifest = (self.__precacheManifest || []).concat([
|
||||
{
|
||||
"revision": "6595feb073d3839b3c1be7a29d934a11",
|
||||
"revision": "b02dbec10549aec4923860508f5ae3c5",
|
||||
"url": "/index.html"
|
||||
},
|
||||
{
|
||||
"revision": "d3d8fb1020ceb7a60a04",
|
||||
"url": "/static/js/2.ace76939.chunk.js"
|
||||
"revision": "c72953cc3f325e5db147",
|
||||
"url": "/static/js/2.a7de98cc.chunk.js"
|
||||
},
|
||||
{
|
||||
"revision": "5f06895ec54c1b0b7536",
|
||||
"url": "/static/js/main.e111f627.chunk.js"
|
||||
"revision": "5b4eda6dad15ada9c9a3",
|
||||
"url": "/static/js/main.eb014c95.chunk.js"
|
||||
},
|
||||
{
|
||||
"revision": "42ac5946195a7306e2a5",
|
||||
@@ -14,7 +14,7 @@
|
||||
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.0/workbox-sw.js");
|
||||
|
||||
importScripts(
|
||||
"/precache-manifest.0161e36c969a3834202b3e08cd8cf003.js"
|
||||
"/precache-manifest.ad8fc015b12763aadaa2cd89efe23a40.js"
|
||||
);
|
||||
|
||||
self.addEventListener('message', (event) => {
|
||||
|
||||
File diff suppressed because one or more lines are too long
1
build/static/js/2.a7de98cc.chunk.js.map
Normal file
1
build/static/js/2.a7de98cc.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
build/static/js/main.eb014c95.chunk.js
Normal file
2
build/static/js/main.eb014c95.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
build/static/js/main.eb014c95.chunk.js.map
Normal file
1
build/static/js/main.eb014c95.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
4
react-ui/src/App.js
vendored
4
react-ui/src/App.js
vendored
@@ -12,6 +12,7 @@ import InfoWeapon from './components/XSearch/InfoWeapon'
|
||||
import ScrollToTop from './utils/ScrollToTop'
|
||||
import MapListGenerator from './components/Tools/MapListGenerator'
|
||||
import Rotations from './components/Tools/Rotations'
|
||||
import Comps from './components/Tools/Comps'
|
||||
import Links from './components/Misc/Links'
|
||||
import UserPage from './components/SoloLadder/UserPage'
|
||||
import HomePage from './components/Misc/HomePage'
|
||||
@@ -58,6 +59,9 @@ const App = () => {
|
||||
weaponFromUrl={match.params.weapon.replace(/_/g, ' ')}
|
||||
/>
|
||||
} />
|
||||
<Route exact path="/comps" render={() =>
|
||||
<Comps />
|
||||
} />
|
||||
<Route path="/404" render={() => <NotFound />} />
|
||||
<Route path="/admin" render={() => <Admin />} />
|
||||
<Route path="*" render={() => <NotFound />} />
|
||||
|
||||
69
react-ui/src/components/Tools/Comps.js
vendored
Normal file
69
react-ui/src/components/Tools/Comps.js
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
import React from 'react'
|
||||
import Tournament from './Tournament'
|
||||
|
||||
const Comps = () => {
|
||||
const mockData = [{
|
||||
id: 'a',
|
||||
name: "In The Zone X",
|
||||
bracket: "https://sendous.challonge.com/InTheZone10",
|
||||
vod: "https://www.twitch.tv/videos/446387554",
|
||||
weapons: ["Heavy Splatling Remix", "Tenta Camo Brella", "Tentatek Splattershot", "Soda Slosher", "Splattershot Jr.", "Kensa Splattershot Pro", "Splatterscope", "Custom Dualie Squelchers", "Splat Brella", "Firefin Splatterscope", "Kensa Splattershot"],
|
||||
team_count: 42,
|
||||
japanese: false,
|
||||
patch: '4.9.0',
|
||||
timestamp: 1561852800,
|
||||
alpha_team: ["15919661737096779013", "17188550932108025730", "14175924256374209434", "10344205398411576675",], //either uids or nicknames order matters kaji plontro grey kiver
|
||||
bravo_team: ["12385180454540543327", "14434881234947959524", "15316460862005315247", "7140457213492687321"], //erza brian sorin zekken
|
||||
alpha_team_players: ["Kaji", "plontro", "Grey", "Kiver"],
|
||||
bravo_team_players: ["Erza", "Brian", "Sorin", "Zekken"],
|
||||
alpha_team_name: ["Kraken Paradise"],
|
||||
bravo_team_name: ["Team Olive"],
|
||||
rounds: [{
|
||||
winner: "BRAVO", //enum
|
||||
map: "MakoMart",
|
||||
mode: "Splat Zones", //enum
|
||||
alpha_weapons: ["Heavy Splatling Remix", "Soda Slosher", "Splattershot Jr.", "Kensa Splattershot Pro"],
|
||||
bravo_weapons: ["Soda Slosher", "Splatterscope", "Splattershot Jr.", "Kensa Splattershot Pro"]
|
||||
},
|
||||
{
|
||||
winner: "BRAVO", //enum
|
||||
map: "Wahoo World",
|
||||
mode: "Splat Zones", //enum
|
||||
alpha_weapons: ["Heavy Splatling Remix", "Soda Slosher", "Splattershot Jr.", "Custom Dualie Squelchers"],
|
||||
bravo_weapons: ["Splat Brella", "Firefin Splatterscope", "Splattershot Jr.", "Kensa Splattershot"]
|
||||
},
|
||||
{
|
||||
winner: "ALPHA",
|
||||
map: "Skipper Pavilion",
|
||||
mode: "Splat Zones",
|
||||
alpha_weapons: ["Heavy Splatling Remix", "Soda Slosher", "Tenta Camo Brella", "Custom Dualie Squelchers"],
|
||||
bravo_weapons: ["Kensa Sloshing Machine", "Splatterscope", "Splattershot Jr.", "Kensa Splattershot Pro"]
|
||||
},
|
||||
{
|
||||
winner: "BRAVO",
|
||||
map: "Manta Maria",
|
||||
mode: "Splat Zones",
|
||||
alpha_weapons: ["Heavy Splatling Remix", "Soda Slosher", "Tenta Camo Brella", "Tentatek Splattershot"],
|
||||
bravo_weapons: ["Splat Brella", "Firefin Splatterscope", "Splattershot Jr.", "Kensa Splattershot"]
|
||||
}]
|
||||
}]
|
||||
return (
|
||||
<div>
|
||||
<div>
|
||||
Search bar here.
|
||||
</div>
|
||||
<div>
|
||||
{mockData.map(t => {
|
||||
return (
|
||||
<Tournament tournament={t} key={t.id}/>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
<div>
|
||||
Pagination here
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default Comps
|
||||
2
react-ui/src/components/Tools/Rotations.js
vendored
2
react-ui/src/components/Tools/Rotations.js
vendored
@@ -239,7 +239,7 @@ const Rotations = ({ setMenuSelection }) => {
|
||||
return (
|
||||
<div key={r.start_time} style={{"paddingTop": "25px"}}>
|
||||
<Header size='small' disabled={preferences[modeShort[r.rule.name]][r.stage_a.name] && preferences[modeShort[r.rule.name]][r.stage_b.name]}>{header}</Header>
|
||||
<Segment disabled={preferences[modeShort[r.rule.name]][r.stage_a.name] && preferences[modeShort[r.rule.name]][r.stage_b.name]}>
|
||||
<Segment disabled={preferences[modeShort[r.rule.name]][r.stage_a.name] && preferences[modeShort[r.rule.name]][r.stage_b.name]} raised>
|
||||
<Grid columns={3} stackable>
|
||||
<Grid.Row>
|
||||
<Grid.Column>
|
||||
|
||||
149
react-ui/src/components/Tools/Tournament.js
vendored
Normal file
149
react-ui/src/components/Tools/Tournament.js
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
import React, { useState } from 'react'
|
||||
import { Segment, Header, Divider, Popup, Flag, Image, Button, Table } from 'semantic-ui-react'
|
||||
import { Link } from 'react-router-dom'
|
||||
import weaponDict from '../../utils/english_internal.json'
|
||||
import szIcon from '../img/modeIcons/sz.png'
|
||||
import tcIcon from '../img/modeIcons/tc.png'
|
||||
import rmIcon from '../img/modeIcons/rm.png'
|
||||
import cbIcon from '../img/modeIcons/cb.png'
|
||||
|
||||
const Tournament = ({ tournament }) => {
|
||||
const [expanded, setExpanded] = useState(false)
|
||||
const t = tournament
|
||||
let date = null
|
||||
let day = null
|
||||
let month = null
|
||||
let year = null
|
||||
let alphaCount = 0
|
||||
let bravoCount = 0
|
||||
|
||||
const modeIcons = {
|
||||
"Splat Zones": szIcon,
|
||||
"Tower Control": tcIcon,
|
||||
"Rainmaker": rmIcon,
|
||||
"Clam Blitz": cbIcon
|
||||
}
|
||||
|
||||
if (t.timestamp) {
|
||||
const monthNames = ["January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December"
|
||||
]
|
||||
date = new Date(t.timestamp * 1000)
|
||||
day = date.getDate()
|
||||
month = monthNames[date.getMonth()]
|
||||
year = date.getFullYear()
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Segment raised compact padded>
|
||||
<Header>
|
||||
{t.name}
|
||||
{t.japanese ? <><br/>{<Flag name='jp'/>}</> : null}
|
||||
<Header.Subheader>{t.timestamp ? <>{`${day} ${month} ${year}`}</> : null}{t.patch ? <> | Patch {t.patch}</>: null}</Header.Subheader>
|
||||
<Header.Subheader>
|
||||
{t.bracket ? <a href={t.bracket}>Bracket</a> : null}
|
||||
{t.vod ? <> | <a href={t.vod}>VoD</a></> : null}<br />
|
||||
</Header.Subheader>
|
||||
<Header.Subheader>{t.team_count ? <>{t.team_count} teams</> : null}</Header.Subheader>
|
||||
</Header>
|
||||
<Divider />
|
||||
<b style={{'padding': '3px'}}>{t.alpha_team_name}</b><br/>
|
||||
{t.alpha_team_players.map((p, i) => {
|
||||
if (t.alpha_team[i]) return <span style={{"padding": "3px"}}><Link to={`/xsearch/p/${t.alpha_team[i]}`}>{p}</Link></span>
|
||||
return (
|
||||
<span style={{"padding": "3px"}}>{p}</span>
|
||||
)
|
||||
})}<br/>
|
||||
<span style={{'padding': '3px'}}>vs.</span><br/>
|
||||
<b style={{'padding': '3px'}}>{t.bravo_team_name}</b><br/>
|
||||
{t.bravo_team_players.map((p, i) => {
|
||||
if (t.bravo_team[i]) return <span style={{"padding": "3px"}}><Link to={`/xsearch/p/${t.bravo_team[i]}`}>{p}</Link></span>
|
||||
return (
|
||||
<span style={{"padding": "3px"}}>{p}</span>
|
||||
)
|
||||
})}
|
||||
<div style={{'paddingTop': '3px'}}>
|
||||
{t.weapons.map((w, i) => {
|
||||
return (
|
||||
<span key={w}>
|
||||
<Popup trigger={
|
||||
<Image inline src={process.env.PUBLIC_URL + `/wpnSmall/Wst_${weaponDict[w]}.png`}></Image>
|
||||
}>
|
||||
{w}
|
||||
</Popup>
|
||||
{i % 10 === 0 && i !== 0 ? <br/> : null}
|
||||
</span>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
<div style={{'paddingTop': '10px'}}>
|
||||
<Button onClick={() => setExpanded(!expanded)}>
|
||||
{expanded ? 'Hide battles' : 'Show battles'}
|
||||
</Button>
|
||||
</div>
|
||||
{expanded ?
|
||||
<div style={{"paddingTop": "10px"}}>
|
||||
<Table basic='very' celled collapsing>
|
||||
<Table.Header>
|
||||
<Table.Row>
|
||||
<Table.HeaderCell>Mode</Table.HeaderCell>
|
||||
<Table.HeaderCell>Map</Table.HeaderCell>
|
||||
<Table.HeaderCell>{t.alpha_team_name}<br/>{t.bravo_team_name}</Table.HeaderCell>
|
||||
</Table.Row>
|
||||
</Table.Header>
|
||||
<Table.Body>
|
||||
{t.rounds.map(r => {
|
||||
if (r.winner === 'ALPHA') alphaCount++
|
||||
if (r.winner === 'BRAVO') bravoCount++
|
||||
return (
|
||||
<Table.Row>
|
||||
<Table.Cell>
|
||||
<Image size="mini" src={modeIcons[r.mode]} />
|
||||
</Table.Cell>
|
||||
<Table.Cell>
|
||||
{r.map}
|
||||
</Table.Cell>
|
||||
<Table.Cell>
|
||||
{r.alpha_weapons.map((w, i) => {
|
||||
return (
|
||||
<Popup trigger={
|
||||
<Image
|
||||
style={{"maxWidth": "100px", "height": "auto", "width": "auto"}}
|
||||
inline
|
||||
src={process.env.PUBLIC_URL + `/wpnSmall/Wst_${weaponDict[w]}.png`} />}>
|
||||
{t.alpha_team_players[i]}
|
||||
</Popup>
|
||||
)
|
||||
})} {r.winner === 'ALPHA' ? '🏆' : null}<br/>
|
||||
{r.bravo_weapons.map((w, i) => {
|
||||
return (
|
||||
<Popup trigger={
|
||||
<Image
|
||||
style={{"maxWidth": "100px", "height": "auto", "width": "auto"}}
|
||||
inline
|
||||
src={process.env.PUBLIC_URL + `/wpnSmall/Wst_${weaponDict[w]}.png`} />}>
|
||||
{t.bravo_team_players[i]}
|
||||
</Popup>
|
||||
)
|
||||
})} {r.winner === 'BRAVO' ? '🏆' : null}
|
||||
</Table.Cell>
|
||||
</Table.Row>
|
||||
)
|
||||
})}
|
||||
<Table.Row>
|
||||
<Table.Cell></Table.Cell>
|
||||
<Table.Cell>
|
||||
{t.alpha_team_name} {alphaCount} - {bravoCount} {t.bravo_team_name}
|
||||
</Table.Cell>
|
||||
</Table.Row>
|
||||
</Table.Body>
|
||||
</Table>
|
||||
</div>
|
||||
: null}
|
||||
</Segment>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default Tournament
|
||||
Reference in New Issue
Block a user