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)}/>
+