///
/* tslint:disable:no-bitwise */
declare var apiHost: string;
declare var host: string;
import * as ko from "knockout";
import { LobbyTournamentItem, Tournament } from "../api/tournament";
import { App } from "../app";
import { debugSettings } from "../debugsettings";
import { _ } from "../languagemanager";
import { reloadManager } from "../services";
import { PageBase } from "../ui/pagebase";
import { TournamentOptions } from "./lobbypage";
declare var app: App;
export class TournamentsListPage extends PageBase {
public tournamentsCaption: KnockoutComputed;
public tournaments: KnockoutObservableArray;
public loading: KnockoutObservable;
public options: TournamentOptions;
public tournamentType: number;
public slider: Slider;
constructor() {
super();
this.tournaments = ko.observableArray([]);
this.tournamentsCaption = ko.computed(function () {
return _("tournamentsList.headerCaption")
.replace("#count", this.tournaments().length.toString());
}, this);
this.loading = ko.observable(false);
this.slider = new Slider();
this.slider.addOption(_("lobby.cashGames"), "cash", null);
this.slider.addOption(_("lobby.tournaments"), "tournaments", null);
this.slider.addOption(_("lobby.sitAndGo"), "sng", null);
this.slider.selectPrev();
}
public deactivate() {
super.deactivate();
}
public activate() {
super.activate();
this.refreshTournaments(false);
reloadManager.setReloadCallback(() => this.refreshTournaments(true));
}
public setOptions(tournamentType: number, options: TournamentOptions): void {
this.tournamentType = tournamentType;
this.options = options;
}
public async refreshTournaments(force: boolean) {
if (this.loading() && !force) {
return;
}
this.loading(true);
const self = this;
const tournamentApi = new Tournament(host);
const options = this.options;
const prizeCurrency = options.currency();
const tournamentTypeMask = 1 << this.tournamentType;
const speed = options.speed() === 0 ? 0 : 1 << options.speed();
const buyin = options.buyin() === 0 ? 0 : 1 << options.buyin();
self.tournaments([]);
const data = await tournamentApi.getTournaments(prizeCurrency, tournamentTypeMask, speed, buyin, null);
self.loading(false);
if (!self.visible()) {
return;
}
if (data.Status === "Ok") {
self.log("Informaton about tournaments received: ", data.Data);
self.tournaments(data.Data);
}
}
public back() {
app.lobbyPageBlock.showLobby();
}
public selectTournament(tournament) {
app.lobbyPageBlock.selectTournament(tournament);
}
private log(message: string, ...params: any[]) {
if (debugSettings.lobby.trace) {
console.log(message, params);
}
}
}