///
import { Game } from "../api/game";
import { App } from "../app";
import { debugSettings } from "../debugsettings";
import { _ } from "../languagemanager";
import { reloadManager } from "../services";
import { tableManager } from "../table/tablemanager";
import { PageBase } from "../ui/pagebase";
declare var apiHost: string;
declare var host: string;
declare var app: App;
export class TablesListPage extends PageBase {
public tablesCaption: KnockoutComputed;
public tables: KnockoutObservableArray;
public loading: KnockoutObservable;
constructor() {
super();
this.tables = ko.observableArray([]);
this.tablesCaption = ko.computed(function () {
return _("tablesList.headerCaption")
.replace("#count", this.tables().length.toString());
}, this);
this.loading = ko.observable(false);
tableManager.tables.subscribe(() => {
this.updateOpenedTables();
});
}
public deactivate() {
super.deactivate();
}
public activate() {
super.activate();
this.refreshTables(false);
reloadManager.setReloadCallback(() => this.refreshTables(true));
}
public async refreshTables(force: boolean) {
if (this.loading() && !force) {
return;
}
this.loading(true);
const self = this;
const gameApi = new Game(host);
const privateTables = 0;
const fullTables = null;
const lobbyPage = app.lobbyPageBlock.lobbyPage;
/* tslint:disable:no-bitwise */
const maxPlayers = lobbyPage.cashOptions.maxPlayers() === 0 ? 0 : 1 << lobbyPage.cashOptions.maxPlayers();
const betLevels = lobbyPage.cashOptions.bets() === 0 ? 0 : 1 << (lobbyPage.cashOptions.bets() - 1);
/* tslint:enable:no-bitwise */
const moneyType = lobbyPage.cashOptions.currency();
const limitType = lobbyPage.cashOptions.limits();
const data = await gameApi.getTables();
self.loading(false);
if (!self.visible()) {
return;
}
if (data.Status === "Ok") {
self.log("Informaton about tables received: ", data.Data);
const tables = data.Data as any[];
tables.forEach(function (item) {
item.IsOpened = tableManager.isOpened(item.TableId);
});
self.tables(tables);
}
}
public updateOpenedTables() {
const tables = this.tables();
tables.forEach(function (item) {
item.IsOpened = tableManager.isOpened(item.TableId);
});
this.tables([]);
this.tables(tables);
}
public back() {
app.lobbyPageBlock.showLobby();
}
public selectTable(table: GameTableModel) {
app.executeCommand("app.selectTable", [table]);
app.executeCommand("page.tables");
}
private log(message: string, ...params: any[]) {
if (debugSettings.lobby.trace) {
console.log(message, params);
}
}
}