From 66d84b05e86f9835de22333090cb3e3125af76b4 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Tue, 3 Jul 2012 21:46:08 +0000 Subject: [PATCH] Tournament queues, seems to work. --- .../gempukku/lotro/db/DbTournamentDAO.java | 28 +++++++ .../lotro/db/DbTournamentPlayerDAO.java | 2 +- .../lotro/game/LotroGameMediator.java | 7 +- .../com/gempukku/lotro/game/LotroServer.java | 5 +- .../com/gempukku/lotro/hall/HallServer.java | 6 +- .../lotro/tournament/AbstractTournament.java | 32 +++++++- .../SingleEliminationRecurringQueue.java | 13 ++-- .../lotro/tournament/TournamentDAO.java | 2 + .../lotro/tournament/TournamentQueue.java | 3 +- .../lotro/tournament/TournamentService.java | 13 +++- .../lotro/server/TournamentResource.java | 34 ++++++++- .../gemp-lotr-web/src/main/webapp/hall.html | 15 ++-- .../webapp/includes/tournamentResults.html | 6 ++ .../main/webapp/js/gemp-007/communication.js | 26 +++++++ .../webapp/js/gemp-007/tournamentResultsUi.js | 74 ++++++++++++------- 15 files changed, 215 insertions(+), 51 deletions(-) diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbTournamentDAO.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbTournamentDAO.java index 5cfc5b401..481d79d95 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbTournamentDAO.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbTournamentDAO.java @@ -96,6 +96,34 @@ public class DbTournamentDAO implements TournamentDAO { } } + @Override + public List getFinishedTournamentsSince(long time) { + try { + Connection connection = _dbAccess.getDataSource().getConnection(); + try { + PreparedStatement statement = connection.prepareStatement("select tournament_id, class, parameters, start from tournament where finished=true and start>?"); + try { + statement.setLong(1, time); + ResultSet rs = statement.executeQuery(); + try { + List result = new ArrayList(); + while (rs.next()) + result.add(new TournamentInfo(rs.getString(1), rs.getString(2), rs.getString(3), new Date(rs.getLong(4)))); + return result; + } finally { + rs.close(); + } + } finally { + statement.close(); + } + } finally { + connection.close(); + } + } catch (SQLException exp) { + throw new RuntimeException(exp); + } + } + @Override public void markTournamentFinished(String tournamentId) { try { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbTournamentPlayerDAO.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbTournamentPlayerDAO.java index c90ddc7ee..a4819cd0a 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbTournamentPlayerDAO.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbTournamentPlayerDAO.java @@ -133,7 +133,7 @@ public class DbTournamentPlayerDAO implements TournamentPlayerDAO { PreparedStatement statement = connection.prepareStatement("select deck_name, deck from tournament_player where tournament_id=? and player=?"); try { statement.setString(1, tournamentId); - statement.setString(2, tournamentId); + statement.setString(2, playerName); ResultSet rs = statement.executeQuery(); try { if (rs.next()) diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java index fb7a5baba..b0fd75d84 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java @@ -30,6 +30,7 @@ public class LotroGameMediator { private int _maxSecondsForGamePerPlayer = 60 * 80; // 80 minutes private boolean _noSpectators; + private boolean _cancellable; // private final int _maxSecondsForGamePerPlayer = 60 * 40; // 40 minutes private final int _channelInactivityTimeoutPeriod = 1000 * 60 * 5; // 5 minutes private final int _playerDecisionTimeoutPeriod = 1000 * 60 * 10; // 10 minutes @@ -40,9 +41,10 @@ public class LotroGameMediator { private int _channelNextIndex = 0; public LotroGameMediator(LotroFormat lotroFormat, LotroGameParticipant[] participants, LotroCardBlueprintLibrary library, int maxSecondsForGamePerPlayer, - boolean noSpectators) { + boolean noSpectators, boolean cancellable) { _maxSecondsForGamePerPlayer = maxSecondsForGamePerPlayer; _noSpectators = noSpectators; + _cancellable = cancellable; if (participants.length < 1) throw new IllegalArgumentException("Game can't have less than one participant"); @@ -271,6 +273,9 @@ public class LotroGameMediator { } public void cancel(Player player) { + if (!_cancellable) + _userFeedback.sendWarning(player.getName(), "You can't cancel this game"); + String playerId = player.getName(); _writeLock.lock(); try { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java index 6a418e669..9b0f534ee 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java @@ -127,7 +127,8 @@ public class LotroServer extends AbstractServer { throw new IllegalArgumentException("There has to be at least two players"); final String gameId = String.valueOf(_nextGameId); - boolean noSpectators = false; + boolean noSpectators = competetive; + boolean cancellable = !competetive; if (noSpectators) { Set allowedUsers = new HashSet(); @@ -138,7 +139,7 @@ public class LotroServer extends AbstractServer { _chatServer.createChatRoom(getChatRoomName(gameId), 30); LotroGameMediator lotroGameMediator = new LotroGameMediator(lotroFormat, participants, _lotroCardBlueprintLibrary, - competetive ? 60 * 40 : 60 * 80, noSpectators); + competetive ? 60 * 40 : 60 * 80, noSpectators, cancellable); lotroGameMediator.addGameResultListener( new GameResultListener() { @Override diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java index 200d96129..4c043deda 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java @@ -62,7 +62,7 @@ public class HallServer extends AbstractServer { _runningTournaments.addAll(tournamentService.getLiveTournaments()); - _tournamentQueues.put("fotr_queue", new SingleEliminationRecurringQueue(0, _formatLibrary.getFormat("fotr_block"), + _tournamentQueues.put("fotr_queue", new SingleEliminationRecurringQueue(0, "fotr_block", new CollectionType("default", "All cards"), "fotrQueue-", "Fellowship Block", 2, tournamentService)); } @@ -175,7 +175,7 @@ public class HallServer extends AbstractServer { if (tournamentQueue.isPlayerSignedUp(player.getName())) throw new HallException("You have already joined that queue"); - LotroDeck lotroDeck = validateUserAndDeck(tournamentQueue.getLotroFormat(), player, deckName, tournamentQueue.getCollectionType()); + LotroDeck lotroDeck = validateUserAndDeck(_formatLibrary.getFormat(tournamentQueue.getFormat()), player, deckName, tournamentQueue.getCollectionType()); tournamentQueue.joinPlayer(_collectionsManager, player, lotroDeck); @@ -281,7 +281,7 @@ public class HallServer extends AbstractServer { String tournamentQueueKey = tournamentQueueEntry.getKey(); TournamentQueue tournamentQueue = tournamentQueueEntry.getValue(); visitor.visitTournamentQueue(tournamentQueueKey, tournamentQueue.getCollectionType().getFullName(), - tournamentQueue.getLotroFormat().getName(), tournamentQueue.getTournamentQueueName(), + tournamentQueue.getFormat(), tournamentQueue.getTournamentQueueName(), tournamentQueue.getPlayerCount(), tournamentQueue.isPlayerSignedUp(player.getName())); } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournament.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournament.java index 7bd29ffd2..731e37956 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournament.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournament.java @@ -49,7 +49,7 @@ public abstract class AbstractTournament implements Tournament { _playersInContention.removeAll(_tournamentService.getDroppedPlayers(tournamentId)); int round = 1; - while (!isFinished()) { + while (true) { List matches = _tournamentService.getMatches(tournamentId, round); if (matches.size() > 0) { Map gamesToCreate = new HashMap(); @@ -71,9 +71,16 @@ public abstract class AbstractTournament implements Tournament { break; } } else { - _nextTask = new PairPlayers(); + if (isFinished()) + break; + + if (round == 1) + _nextTask = new StartTournament(); + else + _nextTask = new PairPlayers(); break; } + round++; } } @@ -209,6 +216,27 @@ public abstract class AbstractTournament implements Tournament { new LotroGameParticipant(playerTwo, _playerDecks.get(playerTwo))); } + private class StartTournament implements TournamentTask { + @Override + public void executeTask(TournamentCallback tournamentCallback) { + tournamentCallback.broadcastMessage("Tournament " + getTournamentName() + " is starting"); + _playersInContention.removeAll(_droppedPlayers); + _droppedPlayers.clear(); + + if (isFinished()) { + finishTournament(tournamentCallback); + } else { + _currentRound++; + pairPlayers(tournamentCallback); + } + } + + @Override + public long getExecuteAfter() { + return 0; + } + } + private class PairPlayers implements TournamentTask { private long _taskStart = System.currentTimeMillis() + 1000 * 60 * 2; diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SingleEliminationRecurringQueue.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SingleEliminationRecurringQueue.java index c7cd3227d..910a06aa1 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SingleEliminationRecurringQueue.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SingleEliminationRecurringQueue.java @@ -3,7 +3,6 @@ package com.gempukku.lotro.tournament; import com.gempukku.lotro.DateUtils; import com.gempukku.lotro.collection.CollectionsManager; import com.gempukku.lotro.db.vo.CollectionType; -import com.gempukku.lotro.game.LotroFormat; import com.gempukku.lotro.game.Player; import com.gempukku.lotro.logic.vo.LotroDeck; @@ -13,7 +12,7 @@ import java.util.Map; public class SingleEliminationRecurringQueue implements TournamentQueue { private int _cost; - private LotroFormat _lotroFormat; + private String _format; private CollectionType _collectionType; private String _tournamentQueueName; private CollectionType _currencyCollection = new CollectionType("permanent", "My cards"); @@ -25,9 +24,9 @@ public class SingleEliminationRecurringQueue implements TournamentQueue { private TournamentService _tournamentService; private String _tournamentIdPrefix; - public SingleEliminationRecurringQueue(int cost, LotroFormat lotroFormat, CollectionType collectionType, String tournamentIdPrefix, String tournamentQueueName, int playerCap, TournamentService tournamentService) { + public SingleEliminationRecurringQueue(int cost, String format, CollectionType collectionType, String tournamentIdPrefix, String tournamentQueueName, int playerCap, TournamentService tournamentService) { _cost = cost; - _lotroFormat = lotroFormat; + _format = format; _collectionType = collectionType; _tournamentQueueName = tournamentQueueName; _playerCap = playerCap; @@ -36,8 +35,8 @@ public class SingleEliminationRecurringQueue implements TournamentQueue { } @Override - public LotroFormat getLotroFormat() { - return _lotroFormat; + public String getFormat() { + return _format; } @Override @@ -57,7 +56,7 @@ public class SingleEliminationRecurringQueue implements TournamentQueue { String tournamentName = _tournamentQueueName + " - " + DateUtils.getStringDateWithHour(); - String parameters = _lotroFormat.getName() + "," + _collectionType.getCode() + "," + _collectionType.getFullName() + "," + tournamentName; + String parameters = _format + "," + _collectionType.getCode() + "," + _collectionType.getFullName() + "," + tournamentName; for (Map.Entry playerDeck : _playerDecks.entrySet()) _tournamentService.addPlayer(tournamentId, playerDeck.getKey(), playerDeck.getValue()); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentDAO.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentDAO.java index b345f97e5..2e54eeb24 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentDAO.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentDAO.java @@ -10,5 +10,7 @@ public interface TournamentDAO { public List getUnfinishedTournaments(); + public List getFinishedTournamentsSince(long time); + public TournamentInfo getTournamentById(String tournamentId); } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentQueue.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentQueue.java index 98c6b26c5..1e22ff30a 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentQueue.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentQueue.java @@ -2,12 +2,11 @@ package com.gempukku.lotro.tournament; import com.gempukku.lotro.collection.CollectionsManager; import com.gempukku.lotro.db.vo.CollectionType; -import com.gempukku.lotro.game.LotroFormat; import com.gempukku.lotro.game.Player; import com.gempukku.lotro.logic.vo.LotroDeck; public interface TournamentQueue { - public LotroFormat getLotroFormat(); + public String getFormat(); public CollectionType getCollectionType(); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentService.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentService.java index 42a5a8db6..98eb8cca3 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentService.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentService.java @@ -63,12 +63,23 @@ public class TournamentService { _tournamentDao.markTournamentFinished(tournamentId); } + public List getOldTournaments(long since) { + List result = new ArrayList(); + for (TournamentInfo tournamentInfo : _tournamentDao.getFinishedTournamentsSince(since)) { + Tournament tournament = _tournamentById.get(tournamentInfo.getTournamentId()); + if (tournament == null) + tournament = createTournamentAndStoreInCache(tournamentInfo.getTournamentId(), tournamentInfo); + result.add(tournament); + } + return result; + } + public List getLiveTournaments() { List result = new ArrayList(); for (TournamentInfo tournamentInfo : _tournamentDao.getUnfinishedTournaments()) { Tournament tournament = _tournamentById.get(tournamentInfo.getTournamentId()); if (tournament == null) - tournament = createTournamentAndStoreInCache(tournament.getTournamentId(), tournamentInfo); + tournament = createTournamentAndStoreInCache(tournamentInfo.getTournamentId(), tournamentInfo); result.add(tournament); } return result; diff --git a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/TournamentResource.java b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/TournamentResource.java index c4b8084b7..7f893cb4c 100644 --- a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/TournamentResource.java +++ b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/TournamentResource.java @@ -53,6 +53,37 @@ public class TournamentResource extends AbstractResource { for (Tournament tournament : _tournamentService.getLiveTournaments()) { Element tournamentElem = doc.createElement("tournament"); + tournamentElem.setAttribute("id", tournament.getTournamentId()); + tournamentElem.setAttribute("name", tournament.getTournamentName()); + tournamentElem.setAttribute("format", _lotroFormatLibrary.getFormat(tournament.getFormat()).getName()); + tournamentElem.setAttribute("collection", tournament.getCollectionType().getFullName()); + tournamentElem.setAttribute("round", String.valueOf(tournament.getCurrentRound())); + tournamentElem.setAttribute("finished", String.valueOf(tournament.isFinished())); + + tournaments.appendChild(tournamentElem); + } + + doc.appendChild(tournaments); + + return doc; + } + + @Path("/history") + @GET + public Document getHistoryTournaments( + @QueryParam("participantId") String participantId, + @Context HttpServletRequest request, + @Context HttpServletResponse response) throws ParserConfigurationException { + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + + Document doc = documentBuilder.newDocument(); + Element tournaments = doc.createElement("tournaments"); + + for (Tournament tournament : _tournamentService.getOldTournaments(System.currentTimeMillis() - (1000 * 60 * 24 * 7))) { + Element tournamentElem = doc.createElement("tournament"); + + tournamentElem.setAttribute("id", tournament.getTournamentId()); tournamentElem.setAttribute("name", tournament.getTournamentName()); tournamentElem.setAttribute("format", _lotroFormatLibrary.getFormat(tournament.getFormat()).getName()); tournamentElem.setAttribute("collection", tournament.getCollectionType().getFullName()); @@ -86,6 +117,7 @@ public class TournamentResource extends AbstractResource { Element tournamentElem = doc.createElement("tournament"); + tournamentElem.setAttribute("id", tournament.getTournamentId()); tournamentElem.setAttribute("name", tournament.getTournamentName()); tournamentElem.setAttribute("format", _lotroFormatLibrary.getFormat(tournament.getFormat()).getName()); tournamentElem.setAttribute("collection", tournament.getCollectionType().getFullName()); @@ -118,7 +150,7 @@ public class TournamentResource extends AbstractResource { if (tournament == null) sendError(Response.Status.NOT_FOUND); - if (tournament.isFinished()) + if (!tournament.isFinished()) sendError(Response.Status.FORBIDDEN); LotroDeck deck = _tournamentService.getPlayerDeck(tournamentId, playerName); diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/hall.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/hall.html index 0c7fd20e2..fe172e9cc 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/hall.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/hall.html @@ -19,6 +19,11 @@ font-weight: bolder; } + .tournamentName { + font-size: 200%; + font-weight: bolder; + } + .serieName { font-size: 150%; font-weight: bolder; @@ -226,11 +231,11 @@ var infoDialog = $("
") .dialog({ - autoOpen:false, - closeOnEscape:true, - resizable:false, - title:"Card information" - }); + autoOpen:false, + closeOnEscape:true, + resizable:false, + title:"Card information" + }); $("body").click( function (event) { diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/tournamentResults.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/tournamentResults.html index dd85f1cd1..8cabefceb 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/tournamentResults.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/tournamentResults.html @@ -2,8 +2,14 @@ $(document).ready( function () { var ui = new TournamentResultsUI("/gemp-lotr-server"); + + $(".loadFinishedTournaments").button().click( + function() { + ui.loadHistoryTournaments(); + }); }); All times are GMT based. +
Load finished tournaments
\ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-007/communication.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-007/communication.js index 5a1b2dc80..a56541d6f 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-007/communication.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-007/communication.js @@ -81,6 +81,32 @@ var GempLotrCommunication = Class.extend({ }); }, + getHistoryTournaments:function (callback, errorMap) { + $.ajax({ + type:"GET", + url:this.url + "/tournament/history", + cache:false, + data:{ + participanId:getUrlParam("participantId") }, + success:this.deliveryCheck(callback), + error:this.errorCheck(errorMap), + dataType:"xml" + }); + }, + + getTournament:function (tournamentId, callback, errorMap) { + $.ajax({ + type:"GET", + url:this.url + "/tournament/" + tournamentId, + cache:false, + data:{ + participanId:getUrlParam("participantId") }, + success:this.deliveryCheck(callback), + error:this.errorCheck(errorMap), + dataType:"xml" + }); + }, + getLeagues:function (callback, errorMap) { $.ajax({ type:"GET", diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-007/tournamentResultsUi.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-007/tournamentResultsUi.js index 0d7838b34..26e98898d 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-007/tournamentResultsUi.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-007/tournamentResultsUi.js @@ -4,17 +4,17 @@ var TournamentResultsUI = Class.extend({ init:function (url) { this.communication = new GempLotrCommunication(url, - function (xhr, ajaxOptions, thrownError) { - }); + function (xhr, ajaxOptions, thrownError) { + }); this.formatDialog = $("
") - .dialog({ - autoOpen:false, - closeOnEscape:true, - resizable:false, - modal:true, - title:"Format description" - }); + .dialog({ + autoOpen:false, + closeOnEscape:true, + resizable:false, + modal:true, + title:"Format description" + }); this.loadLiveTournaments(); }, @@ -22,9 +22,17 @@ var TournamentResultsUI = Class.extend({ loadLiveTournaments:function () { var that = this; this.communication.getLiveTournaments( - function (xml) { - that.loadedLiveTournaments(xml); - }); + function (xml) { + that.loadedTournaments(xml); + }); + }, + + loadHistoryTournaments: function() { + var that = this; + this.communication.getHistoryTournaments( + function (xml) { + that.loadedTournaments(xml); + }); }, loadedTournament:function (xml) { @@ -36,6 +44,7 @@ var TournamentResultsUI = Class.extend({ var tournament = root; + var tournamentId = tournament.getAttribute("id"); var tournamentName = tournament.getAttribute("name"); var tournamentFormat = tournament.getAttribute("format"); var tournamentCollection = tournament.getAttribute("collection"); @@ -50,11 +59,11 @@ var TournamentResultsUI = Class.extend({ var standings = tournament.getElementsByTagName("tournamentStanding"); if (standings.length > 0) - $("#tournamentExtraInfo").append(this.createStandingsTable(standings)); + $("#tournamentExtraInfo").append(this.createStandingsTable(standings, tournamentId, tournamentFinished)); } }, - loadedLiveTournaments:function (xml) { + loadedTournaments:function (xml) { var that = this; log(xml); var root = xml.documentElement; @@ -64,6 +73,7 @@ var TournamentResultsUI = Class.extend({ var tournaments = root.getElementsByTagName("tournament"); for (var i = 0; i < tournaments.length; i++) { var tournament = tournaments[i]; + var tournamentId = tournament.getAttribute("id"); var tournamentName = tournament.getAttribute("name"); var tournamentFormat = tournament.getAttribute("format"); var tournamentCollection = tournament.getAttribute("collection"); @@ -71,18 +81,18 @@ var TournamentResultsUI = Class.extend({ var tournamentFinished = tournament.getAttribute("finished"); $("#tournamentResults").append("
" + tournamentName + "
"); - $("#tournamentResults").append("
" + tournamentRound + "
"); + $("#tournamentResults").append("
Round: " + tournamentRound + "
"); var detailsBut = $("").button(); detailsBut.click( - (function (type) { - return function () { - that.communication.getTournament(type, - function (xml) { - that.loadedTournament(xml); - }); - }; - })(tournamentFormat)); + (function (id) { + return function () { + that.communication.getTournament(id, + function (xml) { + that.loadedTournament(xml); + }); + }; + })(tournamentId)); $("#tournamentResults").append(detailsBut); } if (tournaments.length == 0) @@ -93,7 +103,7 @@ var TournamentResultsUI = Class.extend({ } }, - createStandingsTable:function (standings) { + createStandingsTable:function (standings, tournamentId, tournamentFinished) { var standingsTable = $("
"); standingsTable.append("StandingPlayerPointsGames playedOpp. Win %StandingPlayerPointsGames playedOpp. Win %"); @@ -108,7 +118,13 @@ var TournamentResultsUI = Class.extend({ var gamesPlayed = parseInt(standing.getAttribute("gamesPlayed")); var opponentWinPerc = standing.getAttribute("opponentWin"); - standingsTable.append("" + currentStanding + "" + player + "" + points + "" + gamesPlayed + "" + opponentWinPerc + ""); + var playerStr; + if (tournamentFinished == "true") + playerStr = "" + player + ""; + else + playerStr = player; + + standingsTable.append("" + currentStanding + "" + playerStr + "" + points + "" + gamesPlayed + "" + opponentWinPerc + ""); } for (var k = secondColumnBaseIndex; k < standings.length; k++) { @@ -119,7 +135,13 @@ var TournamentResultsUI = Class.extend({ var gamesPlayed = parseInt(standing.getAttribute("gamesPlayed")); var opponentWinPerc = standing.getAttribute("opponentWin"); - $("tr:eq(" + (k - secondColumnBaseIndex + 1) + ")", standingsTable).append("" + currentStanding + "" + player + "" + points + "" + gamesPlayed + "" + opponentWinPerc + ""); + var playerStr; + if (tournamentFinished == "true") + playerStr = "" + player + ""; + else + playerStr = player; + + $("tr:eq(" + (k - secondColumnBaseIndex + 1) + ")", standingsTable).append("" + currentStanding + "" + playerStr + "" + points + "" + gamesPlayed + "" + opponentWinPerc + ""); } return standingsTable;