C:/Program Files/Git/comps prototype

This commit is contained in:
Sendou
2019-07-08 14:42:17 +03:00
parent ec7588c038
commit 20f2b89a22
15 changed files with 241 additions and 19 deletions

View File

@@ -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",

View File

@@ -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>

View File

@@ -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",

View File

@@ -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

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4
react-ui/src/App.js vendored
View File

@@ -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
View 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

View File

@@ -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>

View 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