Improving the list of leagues to allow for further planning.
This commit is contained in:
@@ -48,15 +48,13 @@ public class LeagueResource extends AbstractResource {
|
||||
}
|
||||
|
||||
@GET
|
||||
public Document getLeagueInformation(
|
||||
public Document getNonExpiresLeagues(
|
||||
@QueryParam("participantId") String participantId,
|
||||
@Context HttpServletRequest request,
|
||||
@Context HttpServletResponse response) throws ParserConfigurationException {
|
||||
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
|
||||
|
||||
Player resourceOwner = getResourceOwnerSafely(request, participantId);
|
||||
|
||||
Document doc = documentBuilder.newDocument();
|
||||
Element leagues = doc.createElement("leagues");
|
||||
|
||||
@@ -67,43 +65,12 @@ public class LeagueResource extends AbstractResource {
|
||||
int end = series.get(series.size() - 1).getEnd();
|
||||
|
||||
Element leagueElem = doc.createElement("league");
|
||||
boolean inLeague = _leagueService.isPlayerInLeague(league, resourceOwner);
|
||||
|
||||
leagueElem.setAttribute("member", String.valueOf(inLeague));
|
||||
leagueElem.setAttribute("joinable", String.valueOf(!inLeague && end >= DateUtils.getCurrentDate()));
|
||||
leagueElem.setAttribute("type", league.getType());
|
||||
leagueElem.setAttribute("name", league.getName());
|
||||
leagueElem.setAttribute("cost", String.valueOf(league.getCost()));
|
||||
leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart()));
|
||||
leagueElem.setAttribute("end", String.valueOf(end));
|
||||
|
||||
for (LeagueSerieData serie : series) {
|
||||
Element serieElem = doc.createElement("serie");
|
||||
serieElem.setAttribute("type", serie.getName());
|
||||
serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches()));
|
||||
serieElem.setAttribute("start", String.valueOf(serie.getStart()));
|
||||
serieElem.setAttribute("end", String.valueOf(serie.getEnd()));
|
||||
serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName());
|
||||
serieElem.setAttribute("collection", serie.getCollectionType().getFullName());
|
||||
serieElem.setAttribute("limited", String.valueOf(serie.isLimited()));
|
||||
|
||||
final List<LeagueStanding> standings = _leagueService.getLeagueSerieStandings(league, serie);
|
||||
for (LeagueStanding standing : standings) {
|
||||
Element standingElem = doc.createElement("standing");
|
||||
setStandingAttributes(standing, standingElem);
|
||||
serieElem.appendChild(standingElem);
|
||||
}
|
||||
|
||||
leagueElem.appendChild(serieElem);
|
||||
}
|
||||
|
||||
List<LeagueStanding> leagueStandings = _leagueService.getLeagueStandings(league);
|
||||
for (LeagueStanding standing : leagueStandings) {
|
||||
Element standingElem = doc.createElement("leagueStanding");
|
||||
setStandingAttributes(standing, standingElem);
|
||||
leagueElem.appendChild(standingElem);
|
||||
}
|
||||
|
||||
leagues.appendChild(leagueElem);
|
||||
}
|
||||
|
||||
@@ -112,6 +79,81 @@ public class LeagueResource extends AbstractResource {
|
||||
return doc;
|
||||
}
|
||||
|
||||
@Path("/{leagueType}")
|
||||
@GET
|
||||
public Document getLeagueInformation(
|
||||
@PathParam("leagueType") String leagueType,
|
||||
@QueryParam("participantId") String participantId,
|
||||
@Context HttpServletRequest request,
|
||||
@Context HttpServletResponse response) throws ParserConfigurationException {
|
||||
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
|
||||
|
||||
Player resourceOwner = getResourceOwnerSafely(request, participantId);
|
||||
|
||||
Document doc = documentBuilder.newDocument();
|
||||
|
||||
League league = getLeagueByType(leagueType);
|
||||
|
||||
if (league == null)
|
||||
sendError(Response.Status.NOT_FOUND);
|
||||
|
||||
final LeagueData leagueData = league.getLeagueData();
|
||||
final List<LeagueSerieData> series = leagueData.getSeries();
|
||||
|
||||
int end = series.get(series.size() - 1).getEnd();
|
||||
|
||||
Element leagueElem = doc.createElement("league");
|
||||
boolean inLeague = _leagueService.isPlayerInLeague(league, resourceOwner);
|
||||
|
||||
leagueElem.setAttribute("member", String.valueOf(inLeague));
|
||||
leagueElem.setAttribute("joinable", String.valueOf(!inLeague && end >= DateUtils.getCurrentDate()));
|
||||
leagueElem.setAttribute("type", league.getType());
|
||||
leagueElem.setAttribute("name", league.getName());
|
||||
leagueElem.setAttribute("cost", String.valueOf(league.getCost()));
|
||||
leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart()));
|
||||
leagueElem.setAttribute("end", String.valueOf(end));
|
||||
|
||||
for (LeagueSerieData serie : series) {
|
||||
Element serieElem = doc.createElement("serie");
|
||||
serieElem.setAttribute("type", serie.getName());
|
||||
serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches()));
|
||||
serieElem.setAttribute("start", String.valueOf(serie.getStart()));
|
||||
serieElem.setAttribute("end", String.valueOf(serie.getEnd()));
|
||||
serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName());
|
||||
serieElem.setAttribute("collection", serie.getCollectionType().getFullName());
|
||||
serieElem.setAttribute("limited", String.valueOf(serie.isLimited()));
|
||||
|
||||
final List<LeagueStanding> standings = _leagueService.getLeagueSerieStandings(league, serie);
|
||||
for (LeagueStanding standing : standings) {
|
||||
Element standingElem = doc.createElement("standing");
|
||||
setStandingAttributes(standing, standingElem);
|
||||
serieElem.appendChild(standingElem);
|
||||
}
|
||||
|
||||
leagueElem.appendChild(serieElem);
|
||||
}
|
||||
|
||||
List<LeagueStanding> leagueStandings = _leagueService.getLeagueStandings(league);
|
||||
for (LeagueStanding standing : leagueStandings) {
|
||||
Element standingElem = doc.createElement("leagueStanding");
|
||||
setStandingAttributes(standing, standingElem);
|
||||
leagueElem.appendChild(standingElem);
|
||||
}
|
||||
|
||||
doc.appendChild(leagueElem);
|
||||
|
||||
return doc;
|
||||
}
|
||||
|
||||
public League getLeagueByType(String type) {
|
||||
for (League league : _leagueService.getActiveLeagues()) {
|
||||
if (league.getType().equals(type))
|
||||
return league;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void setStandingAttributes(LeagueStanding standing, Element standingElem) {
|
||||
standingElem.setAttribute("player", standing.getPlayerName());
|
||||
standingElem.setAttribute("standing", String.valueOf(standing.getStanding()));
|
||||
|
||||
@@ -81,6 +81,19 @@ var GempLotrCommunication = Class.extend({
|
||||
});
|
||||
},
|
||||
|
||||
getLeague: function(type, callback, errorMap) {
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: this.url + "/league/" + type,
|
||||
cache: false,
|
||||
data: {
|
||||
participanId: getUrlParam("participantId") },
|
||||
success: this.deliveryCheck(callback),
|
||||
error: this.errorCheck(errorMap),
|
||||
dataType: "xml"
|
||||
});
|
||||
},
|
||||
|
||||
joinLeague: function(code, callback, errorMap) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
|
||||
@@ -31,6 +31,103 @@ var LeagueResultsUI = Class.extend({
|
||||
return date.substring(0, 4) + "-" + date.substring(4, 6) + "-" + date.substring(6, 8);
|
||||
},
|
||||
|
||||
loadedLeague: function(xml) {
|
||||
var that = this;
|
||||
log(xml);
|
||||
var root = xml.documentElement;
|
||||
if (root.tagName == 'league') {
|
||||
var league = root;
|
||||
|
||||
var leagueName = league.getAttribute("name");
|
||||
var leagueType = league.getAttribute("type");
|
||||
var cost = parseInt(league.getAttribute("cost"));
|
||||
var start = league.getAttribute("start");
|
||||
var end = league.getAttribute("end");
|
||||
var member = league.getAttribute("member");
|
||||
var joinable = league.getAttribute("joinable");
|
||||
|
||||
var leagueText = leagueName;
|
||||
$("#leagueExtraInfo").append("<div class='leagueName'>" + leagueText + "</div>");
|
||||
|
||||
var costStr = formatPrice(cost);
|
||||
$("#leagueExtraInfo").append("<div class='leagueCost'><b>Cost:</b> " + costStr + "</div>");
|
||||
|
||||
if (member == "true")
|
||||
$("#leagueExtraInfo").append("<div class='leagueMembership'>You are already a member of this league.</div>");
|
||||
else if (joinable == "true") {
|
||||
var joinBut = $("<button>Join league</button>").button();
|
||||
|
||||
var joinFunc = (function(leagueCode, costString) {
|
||||
return function() {
|
||||
that.displayBuyAction("Do you want to join the league by paying " + costString + "?",
|
||||
function() {
|
||||
that.communication.joinLeague(leagueCode, function() {
|
||||
that.loadResults();
|
||||
}, {
|
||||
"409": function() {
|
||||
alert("You don't have enough funds to join this league.");
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
})(leagueType, costStr);
|
||||
|
||||
joinBut.click(joinFunc);
|
||||
var joinDiv = $("<div class='leagueMembership'>You're not a member of this league. </div>");
|
||||
joinDiv.append(joinBut);
|
||||
$("#leagueExtraInfo").append(joinDiv);
|
||||
}
|
||||
|
||||
var tabDiv = $("<div width='100%'></div>");
|
||||
var tabNavigation = $("<ul></ul>");
|
||||
tabDiv.append(tabNavigation);
|
||||
|
||||
// Overall tab
|
||||
var tabContent = $("<div id='league" + i + "overall'></div>");
|
||||
|
||||
var standings = league.getElementsByTagName("leagueStanding");
|
||||
if (standings.length > 0)
|
||||
tabContent.append(this.createStandingsTable(standings));
|
||||
tabDiv.append(tabContent);
|
||||
|
||||
tabNavigation.append("<li><a href='#league" + i + "overall'>Overall results</a></li>");
|
||||
|
||||
var series = league.getElementsByTagName("serie");
|
||||
for (var j = 0; j < series.length; j++) {
|
||||
|
||||
var tabContent = $("<div id='league" + i + "serie" + j + "'></div>");
|
||||
|
||||
var serie = series[j];
|
||||
var serieName = serie.getAttribute("type");
|
||||
var serieStart = serie.getAttribute("start");
|
||||
var serieEnd = serie.getAttribute("end");
|
||||
var maxMatches = serie.getAttribute("maxMatches");
|
||||
var format = serie.getAttribute("format");
|
||||
var collection = serie.getAttribute("collection");
|
||||
var limited = serie.getAttribute("limited");
|
||||
|
||||
var serieText = serieName + " - " + this.getDateString(serieStart) + " to " + this.getDateString(serieEnd);
|
||||
$("#leagueExtraInfo").append("<div class='serieName'>" + serieText + "</div>");
|
||||
|
||||
$("#leagueExtraInfo").append("<div><b>Format:</b> " + ((limited == "true") ? "Limited" : "Constructed") + " " + format + "</div>");
|
||||
$("#leagueExtraInfo").append("<div><b>Collection:</b> " + collection + "</div>");
|
||||
|
||||
tabContent.append("<div>Maximum ranked matches in serie: " + maxMatches + "</div>");
|
||||
|
||||
var standings = serie.getElementsByTagName("standing");
|
||||
if (standings.length > 0)
|
||||
tabContent.append(this.createStandingsTable(standings));
|
||||
tabDiv.append(tabContent);
|
||||
|
||||
tabNavigation.append("<li><a href='#league" + i + "serie" + j + "'>Serie " + (j + 1) + "</a></li>");
|
||||
}
|
||||
|
||||
tabDiv.tabs();
|
||||
|
||||
$("#leagueExtraInfo").append(tabDiv);
|
||||
}
|
||||
},
|
||||
|
||||
loadedLeagueResults: function(xml) {
|
||||
var that = this;
|
||||
log(xml);
|
||||
@@ -43,94 +140,28 @@ var LeagueResultsUI = Class.extend({
|
||||
var league = leagues[i];
|
||||
var leagueName = league.getAttribute("name");
|
||||
var leagueType = league.getAttribute("type");
|
||||
var cost = parseInt(league.getAttribute("cost"));
|
||||
var start = league.getAttribute("start");
|
||||
var end = league.getAttribute("end");
|
||||
var member = league.getAttribute("member");
|
||||
var joinable = league.getAttribute("joinable");
|
||||
|
||||
var leagueText = leagueName;
|
||||
$("#leagueResults").append("<div class='leagueName'>" + leagueText + "</div>");
|
||||
|
||||
var costStr = formatPrice(cost);
|
||||
$("#leagueResults").append("<div class='leagueCost'><b>Cost:</b> " + costStr + "</div>");
|
||||
$("#leagueResults").append("<div class='leagueName'>" + leagueName + "</div>");
|
||||
|
||||
var duration = this.getDateString(start) + " to " + this.getDateString(end);
|
||||
$("#leagueResults").append("<div class='leagueDuration'><b>Duration (GMT+0):</b> " + duration + "</div>");
|
||||
if (member == "true")
|
||||
$("#leagueResults").append("<div class='leagueMembership'>You are already a member of this league.</div>");
|
||||
else if (joinable == "true") {
|
||||
var joinBut = $("<button>Join league</button>").button();
|
||||
|
||||
var joinFunc = (function(leagueCode, costString) {
|
||||
return function() {
|
||||
that.displayBuyAction("Do you want to join the league by paying " + costString + "?",
|
||||
function() {
|
||||
that.communication.joinLeague(leagueCode, function() {
|
||||
that.loadResults();
|
||||
}, {
|
||||
"409": function() {
|
||||
alert("You don't have enough funds to join this league.");
|
||||
}
|
||||
var detailsBut = $("<button>See details</button>").button();
|
||||
detailsBut.click(
|
||||
(function(type) {
|
||||
return function() {
|
||||
that.communication.getLeague(type,
|
||||
function(xml) {
|
||||
that.loadedLeague(xml);
|
||||
});
|
||||
});
|
||||
};
|
||||
})(leagueType, costStr);
|
||||
|
||||
joinBut.click(joinFunc);
|
||||
var joinDiv = $("<div class='leagueMembership'>You're not a member of this league. </div>");
|
||||
joinDiv.append(joinBut);
|
||||
$("#leagueResults").append(joinDiv);
|
||||
}
|
||||
|
||||
var tabDiv = $("<div width='100%'></div>");
|
||||
var tabNavigation = $("<ul></ul>");
|
||||
tabDiv.append(tabNavigation);
|
||||
|
||||
// Overall tab
|
||||
var tabContent = $("<div id='league" + i + "overall'></div>");
|
||||
|
||||
var standings = league.getElementsByTagName("leagueStanding");
|
||||
if (standings.length > 0)
|
||||
tabContent.append(this.createStandingsTable(standings));
|
||||
tabDiv.append(tabContent);
|
||||
|
||||
tabNavigation.append("<li><a href='#league" + i + "overall'>Overall results</a></li>");
|
||||
|
||||
var series = league.getElementsByTagName("serie");
|
||||
for (var j = 0; j < series.length; j++) {
|
||||
|
||||
var tabContent = $("<div id='league" + i + "serie" + j + "'></div>");
|
||||
|
||||
var serie = series[j];
|
||||
var serieName = serie.getAttribute("type");
|
||||
var serieStart = serie.getAttribute("start");
|
||||
var serieEnd = serie.getAttribute("end");
|
||||
var maxMatches = serie.getAttribute("maxMatches");
|
||||
var format = serie.getAttribute("format");
|
||||
var collection = serie.getAttribute("collection");
|
||||
var limited = serie.getAttribute("limited");
|
||||
|
||||
var serieText = serieName + " - " + this.getDateString(serieStart) + " to " + this.getDateString(serieEnd);
|
||||
$("#leagueResults").append("<div class='serieName'>" + serieText + "</div>");
|
||||
|
||||
$("#leagueResults").append("<div><b>Format:</b> " + ((limited == "true") ? "Limited" : "Constructed") + " " + format + "</div>");
|
||||
$("#leagueResults").append("<div><b>Collection:</b> " + collection + "</div>");
|
||||
|
||||
tabContent.append("<div>Maximum ranked matches in serie: " + maxMatches + "</div>");
|
||||
|
||||
var standings = serie.getElementsByTagName("standing");
|
||||
if (standings.length > 0)
|
||||
tabContent.append(this.createStandingsTable(standings));
|
||||
tabDiv.append(tabContent);
|
||||
|
||||
tabNavigation.append("<li><a href='#league" + i + "serie" + j + "'>Serie " + (j + 1) + "</a></li>");
|
||||
}
|
||||
|
||||
tabDiv.tabs();
|
||||
|
||||
$("#leagueResults").append(tabDiv);
|
||||
};
|
||||
})(leagueType));
|
||||
$("#leagueResults").append(detailsBut);
|
||||
}
|
||||
|
||||
$("#leagueResults").append("<div id='leagueExtraInfo'></div>");
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user