add: tournament create view
This commit is contained in:
parent
587980d637
commit
278e2cbe54
@ -22,16 +22,8 @@ class Tourmanents
|
|||||||
return tournament;
|
return tournament;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
async createTournament(nb_players, nb_players_by_game, name = "")
|
||||||
* @param {boolean} online if the tournament is online or offline
|
|
||||||
*/
|
|
||||||
async createTournament(nb_players, nb_players_by_game, name = "", online = true)
|
|
||||||
{
|
{
|
||||||
if (online === false)
|
|
||||||
{
|
|
||||||
let tournament = new Tourmanent(this.client, nb_players, nb_players_by_game, 5, false, false, [], 0);
|
|
||||||
return tournament;
|
|
||||||
}
|
|
||||||
let response = await this.client._post("/api/tournaments/", {nb_players: nb_players, nb_players_by_game: nb_players_by_game, name: name});
|
let response = await this.client._post("/api/tournaments/", {nb_players: nb_players, nb_players_by_game: nb_players_by_game, name: name});
|
||||||
|
|
||||||
if (response.status === 403)
|
if (response.status === 403)
|
||||||
@ -41,10 +33,7 @@ class Tourmanents
|
|||||||
}
|
}
|
||||||
|
|
||||||
let response_data = await response.json();
|
let response_data = await response.json();
|
||||||
|
return response_data;
|
||||||
let tournament = this.getTournament(response_data["id"]);
|
|
||||||
|
|
||||||
return tournament;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,6 +16,7 @@ import ProfilePageView from "./views/ProfilePageView.js";
|
|||||||
import MatchMakingView from "./views/MatchMakingView.js";
|
import MatchMakingView from "./views/MatchMakingView.js";
|
||||||
import TournamentPageView from "./views/TournamentPageView.js";
|
import TournamentPageView from "./views/TournamentPageView.js";
|
||||||
import TournamentsView from "./views/TournamentsListView.js";
|
import TournamentsView from "./views/TournamentsListView.js";
|
||||||
|
import TournamentCreateView from "./views/TournamentCreateView.js";
|
||||||
|
|
||||||
let client = new Client(location.protocol + "//" + location.host)
|
let client = new Client(location.protocol + "//" + location.host)
|
||||||
|
|
||||||
@ -54,8 +55,9 @@ const router = async (uri) => {
|
|||||||
const routes = [
|
const routes = [
|
||||||
{ path: "/", view: Dashboard },
|
{ path: "/", view: Dashboard },
|
||||||
{ path: "/profiles/:id", view: ProfilePageView },
|
{ path: "/profiles/:id", view: ProfilePageView },
|
||||||
|
{ path: "/tournaments/create", view: TournamentCreateView },
|
||||||
{ path: "/tournaments/:id", view: TournamentPageView },
|
{ path: "/tournaments/:id", view: TournamentPageView },
|
||||||
{ path: "/tournaments/", view: TournamentsView},
|
{ path: "/tournaments/", view: TournamentsView },
|
||||||
{ path: "/login", view: LoginView },
|
{ path: "/login", view: LoginView },
|
||||||
{ path: "/logout", view: LogoutView },
|
{ path: "/logout", view: LogoutView },
|
||||||
{ path: "/register", view: RegisterView },
|
{ path: "/register", view: RegisterView },
|
||||||
|
52
frontend/static/js/views/TournamentCreateView.js
Normal file
52
frontend/static/js/views/TournamentCreateView.js
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
import {client, navigateTo} from "../index.js";
|
||||||
|
import { clear, fill_errors } from "../utils/formUtils.js";
|
||||||
|
import AbstractAuthentifiedView from "./abstracts/AbstractAuthentifiedView.js";
|
||||||
|
|
||||||
|
export default class extends AbstractAuthentifiedView
|
||||||
|
{
|
||||||
|
constructor(params)
|
||||||
|
{
|
||||||
|
super(params, "Create tournament");
|
||||||
|
this.id = params.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
async create()
|
||||||
|
{
|
||||||
|
let name = document.getElementById("name-input").value;
|
||||||
|
let nb_players = document.getElementById("nb_players-input").value;
|
||||||
|
let nb_players_by_game = document.getElementById("nb_players_by_game-input").value
|
||||||
|
|
||||||
|
let response_data = await client.tournaments.createTournament(nb_players, nb_players_by_game, name);
|
||||||
|
|
||||||
|
if (response_data === null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let id = response_data["id"]
|
||||||
|
if (id !== undefined)
|
||||||
|
{
|
||||||
|
navigateTo(`/tournaments/${id}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
clear("innerHTML", ["name", "nb_players", "nb_players_by_game"]);
|
||||||
|
fill_errors(response_data, "innerHTML");
|
||||||
|
}
|
||||||
|
|
||||||
|
async postInit()
|
||||||
|
{
|
||||||
|
document.getElementById("create-button").onclick = this.create;
|
||||||
|
}
|
||||||
|
|
||||||
|
async getHtml()
|
||||||
|
{
|
||||||
|
return `
|
||||||
|
<input type="text" id="name-input" placeholder="Tournament name">
|
||||||
|
<span id="name"></span>
|
||||||
|
<input type="number" id="nb_players-input" placeholder="Number of players in tournament">
|
||||||
|
<span id="nb_players"></span>
|
||||||
|
<input type="number" id="nb_players_by_game-input" placeholder="Number of players by game">
|
||||||
|
<span id="nb_players_by_game"></span>
|
||||||
|
<input type="button" id="create-button" value="Create tournament">
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user