diff --git a/pages/tournament.js b/pages/tournament.js index 388f9f5..36908cf 100644 --- a/pages/tournament.js +++ b/pages/tournament.js @@ -5,7 +5,10 @@ import { Card, CardBody, Col, - Container, Input, InputGroup, InputGroupAddon, + Container, + Input, + InputGroup, + InputGroupAddon, ListGroup, ListGroupItem, Modal, @@ -22,15 +25,6 @@ import '../static/css/tournament.css' import {getRequest} from '../js/api'; function Tournament(props) { - let demoMatches = [ - {scoreTeam1: 1, team1: 'Eins', scoreTeam2: 2, team2: 'Zwei', state: 'in_progress', id: 0}, - {scoreTeam1: 3, team1: 'Eins', scoreTeam2: 2, team2: 'Zwei', state: 'team1_won', id: 1}, - {scoreTeam1: 1, team1: 'Eins', scoreTeam2: 3, team2: 'Zwei', state: 'team2_won', id: 2}, - {scoreTeam1: 1, team1: 'Eins', scoreTeam2: 0, team2: 'Zwei', state: 'single_team', id: 3}, - {scoreTeam1: 1, team1: 'Eins', scoreTeam2: 0, team2: 'Zwei', state: 'not_ready', id: 4}, - {scoreTeam1: 1, team1: 'Eins', scoreTeam2: 0, team2: 'Zwei', state: 'not_started', id: 5}, - {scoreTeam1: 2, team1: 'Eins', scoreTeam2: 2, team2: 'Zwei', state: 'undecided', id: 6}]; - let stages = [{level: 0, matches: demoMatches}, {level: 1, matches: demoMatches}]; return (
@@ -44,7 +38,8 @@ function Tournament(props) {
- {stages.map(stage => )} + {props.tournament.playoffStages.map(stage => + )}
); @@ -280,6 +275,52 @@ class ScoreInput extends React.Component { } } +function convertTournament(apiTournament) { + let groupStage = null; + let playoffStages = []; + for (let stage of apiTournament.stages) { + if(stage.groups.length > 0){ + //group stage + groupStage = {groups: stage.groups.map(group => convertGroup(group))}; + }else{ + //playoff stage + playoffStages.push({ + id: stage.id, + level: stage.level, + matches: stage.matches.map(match => convertMatch(match)) + }) + } + } + return { + id: apiTournament.id, + code: apiTournament.code, + description: apiTournament.description, + name: apiTournament.name, + public: apiTournament.public, + groupStage: groupStage, + playoffStages: playoffStages + }; +} + +function convertGroup(apiGroup) { + return { + id: apiGroup.id, + number: apiGroup.number, + scores: apiGroup.group_scores, + matches: apiGroup.matches.map(match => convertMatch(match)) + } +} + +function convertMatch(apiMatch) { + return { + id: apiMatch.id, + state: apiMatch.state, + team1: apiMatch.match_scores[0].team.name, + team2: apiMatch.match_scores[1].team.name, + scoreTeam1: apiMatch.match_scores[0].points, + scoreTeam2: apiMatch.match_scores[1].points + } +} class Main extends React.Component { constructor(props) { @@ -287,18 +328,7 @@ class Main extends React.Component { const code = this.props.query.code; getRequest('/tournaments/' + code, {}) .then(response => { - const attributes = response.data.data.attributes; - const relationships = response.data.data.relationships; - this.setState({ - tournament: { - name: attributes.name, - code: attributes.code, - description: attributes.description, - isPublic: attributes.public, - teams: relationships.teams.data.map(team => team.id), - stages: relationships.stages.data.map(stage => stage.id) - } - }); + this.setState({tournament: convertTournament(response.data)}); }) .catch(error => console.log(error)); } @@ -317,7 +347,6 @@ class Main extends React.Component { - {JSON.stringify(this.state)}