diff --git a/js/api.js b/js/api.js index 6eb486c..dd58be9 100644 --- a/js/api.js +++ b/js/api.js @@ -211,7 +211,11 @@ const reducerTournamentinfo = (state = defaultStateTournamentinfo, action) => { ownerUsername: action.parameters.owner_username, isPublic: action.parameters.public, stages: action.parameters.stages, - teams: action.parameters.teams + teams: action.parameters.teams, + + playoffTeamsAmount: action.parameters.playoff_teams_amount, + instantFinalistAmount: action.parameters.instant_finalists_amount, + intermediateRoundParticipants: action.parameters.intermediate_round_participants_amount }); case actionTypesTournamentinfo.MODIFY_TOURNAMENT: patchRequest(action.state, '/teams/' + action.parameters.teamid, { @@ -495,6 +499,19 @@ export function requestTournamentList(type, successCallback, errorCallback) { }); } +export function updateTournament(tournament, successCallback, errorCallback) { + patchRequest(getState(), '/tournaments/' + tournament.id, tournament) + .then(resp => { + storeOptionalToken(resp); + successCallback(); + }).catch(err => { + if (err.response) { + storeOptionalToken(err.response); + } + errorCallback(); + }); +} + function rehydrateApplicationState() { const persistedState = localStorage.getItem('reduxState') ? JSON.parse(localStorage.getItem('reduxState')) : diff --git a/js/redux/tournamentInfo.js b/js/redux/tournamentInfo.js index b93f325..8ecd65a 100644 --- a/js/redux/tournamentInfo.js +++ b/js/redux/tournamentInfo.js @@ -24,6 +24,10 @@ export const defaultStateTournamentinfo = { ownerUsername: '', isPublic: '', stages: [], - teams: [] + teams: [], + + playoffTeamsAmount: 0, + instantFinalistAmount: 0, + intermediateRoundParticipants: 0 }; diff --git a/pages/tournament-edit.js b/pages/tournament-edit.js index d1eaeaf..b5e429c 100644 --- a/pages/tournament-edit.js +++ b/pages/tournament-edit.js @@ -3,7 +3,7 @@ import React from 'react'; import {connect} from 'react-redux'; import {notify} from 'react-notify-toast'; import { - Container, Button, Card, CardBody, Table + Col, Container, Button, Card, CardBody, Table, FormGroup, Label } from 'reactstrap'; import {requestTournament} from '../js/api'; @@ -13,7 +13,9 @@ import {UserRestrictor, Option} from '../js/components/UserRestrictor'; import {Footer} from '../js/components/Footer'; import {Login} from '../js/components/Login'; import {ErrorPageComponent} from '../js/components/ErrorComponents'; -import {updateTeamName} from '../js/api'; +import {updateTournament, updateTeamName} from '../js/api'; +import NumericInput from '../js/components/NumericInput'; +import {WarningPopup} from '../js/components/WarningPopup'; import 'bootstrap/dist/css/bootstrap.min.css'; @@ -142,8 +144,20 @@ class EditTournamentForm extends React.Component { super(props); this.state = { - name: '', description: '', isPublic: false + name: '', + description: '', + isPublic: false, + playoffTeamsAmount: 0, + instantFinalistAmount: 0, + intermediateRoundParticipants: 0 }; + + this.increasePlayoffTeamsAmount = this.increasePlayoffTeamsAmount.bind(this); + this.decreasePlayoffTeamsAmount = this.decreasePlayoffTeamsAmount.bind(this); + this.increaseInstantFinalistsAmount = this.increaseInstantFinalistsAmount.bind(this); + this.decreaseInstantFinalistsAmount = this.decreaseInstantFinalistsAmount.bind(this); + this.increaseIntermediateRoundParticipants = this.increaseIntermediateRoundParticipants.bind(this); + this.decreaseIntermediateRoundParticipants = this.decreaseIntermediateRoundParticipants.bind(this); } render() { @@ -167,6 +181,37 @@ class EditTournamentForm extends React.Component { onChange={this.handlePublicInput.bind(this)}/> + + + + + + + + + + + + + + + + + + +