Merge remote-tracking branch 'server/master'

This commit is contained in:
Axel Uhl committed 2012-06-16 23:24:25 +02:00
commit 34f79bce3f
4 files changed
+155 -39

No files matched your search

+32 -1
View File
@@ -233,10 +233,41 @@ input.magnifier {
.leaderboardGroupPanel-LeaderboardsTableLabel {
margin: 0 13px 10px;
font-size: 17px;
font-size: 17px;
font-weight: 500;
}
.leaderboardGroupPanel-Fleet {
padding: 5px 8px;
display: block;
float: left;
margin: 5px 5px 5px 0;
text-decoration: none;
font-family: 'UbuntuBold', Arial, Verdana, sans-serif;
}
.leaderboardGroupPanel-BoatClass {
padding: 5px 8px;
display: block;
float: left;
margin: 5px 5px 5px 0;
text-decoration: none;
white-space: nowrap;
font-family: 'UbuntuBold', Arial, Verdana, sans-serif;
}
.leaderboardGroupPanel-ColorBox {
margin: 5px 0 5px 0;
padding: 5px;
display: block;
float: left;
width: 8px;
height: 8px;
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
}
.leaderboardGroupPanel-ActiveRace, .leaderboardGroupPanel-ActiveLeaderboard, .leaderboardGroupPanel-InactiveRace {
padding: 5px 8px;
display: block;
@@ -31,10 +31,11 @@
background: none;
}
.cellTableEvenRowCell { /* th */
.cellTableEvenRowCell { /* td */
border: none;
background: none;
vertical-align: middle;
vertical-align: top;
padding: 2px 3px;
}
.cellTableOddRow { /* tr */
@@ -43,7 +44,9 @@
.cellTableOddRowCell { /* td */
border: none;
vertical-align: middle;
background: none;
vertical-align: top;
padding: 2px 3px;
}
.cellTableHoveredRow {
@@ -1,7 +1,9 @@
package com.sap.sailing.gwt.ui.spectator;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.google.gwt.cell.client.SafeHtmlCell;
import com.google.gwt.core.client.GWT;
@@ -11,7 +13,6 @@ import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FlowPanel;
@@ -20,6 +21,7 @@ import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.NoSelectionModel;
import com.sap.sailing.domain.common.Color;
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
import com.sap.sailing.domain.common.impl.Util;
import com.sap.sailing.domain.common.impl.Util.Pair;
@@ -47,13 +49,25 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
}
interface TextWithClassTemplate extends SafeHtmlTemplates {
@SafeHtmlTemplates.Template("<span class=\"{1}\">{0}</span>")
@SafeHtmlTemplates.Template("<div class=\"{1}\">{0}</div>")
SafeHtml textWithClass(String text, String styleClass);
@SafeHtmlTemplates.Template("<div class=\"{2}\" style=\"min-width:{1}px;\">{0}</div>")
SafeHtml textWithClass(String text, int widthInPx, String styleClass);
}
interface ColorBoxTemplate extends SafeHtmlTemplates {
@SafeHtmlTemplates.Template("<div class=\"{1}\" style=\"background:{0};\">&nbsp;</div>")
SafeHtml colorBox(String htmlColor, String styleClass);
@SafeHtmlTemplates.Template("<div class=\"{0}\">&nbsp;</div>")
SafeHtml nocolorBox(String styleClass);
}
private static final AnchorTemplates ANCHORTEMPLATE = GWT.create(AnchorTemplates.class);
private static final TextWithClassTemplate TEXTTEMPLATE = GWT.create(TextWithClassTemplate.class);
private static final int MAX_COLUMNS_IN_ROW = 10;
private static final ColorBoxTemplate COLORBOXTEMPLATE = GWT.create(ColorBoxTemplate.class);
private static final int MAX_COLUMNS_IN_ROW = 0;
private static final String STYLE_NAME_PREFIX = "leaderboardGroupPanel-";
private final SailingServiceAsync sailingService;
@@ -163,14 +177,19 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
leaderboardsTable.setRowData(tableData);
mainPanel.add(leaderboardsTable);
} else {
TextColumn<StrippedLeaderboardDTO> leaderboardNameColumn = new TextColumn<StrippedLeaderboardDTO>() {
SafeHtmlCell leaderboardNameCell = new SafeHtmlCell();
Column<StrippedLeaderboardDTO, SafeHtml> leaderboardNameColumn = new Column<StrippedLeaderboardDTO, SafeHtml>(leaderboardNameCell) {
@Override
public String getValue(StrippedLeaderboardDTO strippedLeaderboardDTO) {
public SafeHtml getValue(StrippedLeaderboardDTO strippedLeaderboardDTO) {
String text = "";
if(allLeaderboardNamesStartWithGroupName) {
return shortenLeaderboardName(group.name, strippedLeaderboardDTO.name);
text = shortenLeaderboardName(group.name, strippedLeaderboardDTO.name);
} else {
return strippedLeaderboardDTO.name;
text = strippedLeaderboardDTO.name;
}
SafeHtmlBuilder b = new SafeHtmlBuilder();
b.append(TEXTTEMPLATE.textWithClass(text, STYLE_NAME_PREFIX + "BoatClass"));
return b.toSafeHtml();
}
};
@@ -212,6 +231,10 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
private String shortenLeaderboardName(String prefixToCut, String leaderboardName) {
String result = leaderboardName.substring(prefixToCut.length(), leaderboardName.length());
result = result.trim();
if(result.startsWith("(") && result.endsWith(")")) {
result = result.substring(1, result.length()-1);
}
return result.trim();
}
@@ -271,39 +294,88 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
private SafeHtml leaderboardRacesToHtml(StrippedLeaderboardDTO leaderboard) {
SafeHtmlBuilder b = new SafeHtmlBuilder();
String debugParam = Window.Location.getParameter("gwt.codesvr");
for (RaceColumnDTO race : leaderboard.getRaceList()) {
final Iterable<FleetDTO> fleets = race.getFleets();
boolean singleFleet = Util.size(fleets) < 2;
for (FleetDTO fleet : fleets) {
String linkText;
if (singleFleet) {
linkText = race.getRaceColumnName();
List<Map<String,Pair<FleetDTO, List<RaceColumnDTO>>>> fleetGroups = new ArrayList<Map<String, Pair<FleetDTO, List<RaceColumnDTO>>>>();
Map<String, Pair<FleetDTO, List<RaceColumnDTO>>> racesOrderedByFleets = null;
RaceColumnDTO previousRaceColumn = null;
for (RaceColumnDTO raceColumn : leaderboard.getRaceList()) {
if(previousRaceColumn == null || (previousRaceColumn != null && !hasSameFleets(raceColumn, previousRaceColumn))) {
racesOrderedByFleets = new LinkedHashMap<String, Pair<FleetDTO, List<RaceColumnDTO>>>();
fleetGroups.add(racesOrderedByFleets);
}
for (FleetDTO fleet : raceColumn.getFleets()) {
Pair<FleetDTO, List<RaceColumnDTO>> pair = racesOrderedByFleets.get(fleet.name);
if(pair == null) {
List<RaceColumnDTO> raceList = new ArrayList<RaceColumnDTO>();
raceList.add(raceColumn);
pair = new Pair<FleetDTO, List<RaceColumnDTO>>(fleet, raceList);
racesOrderedByFleets.put(fleet.name, pair);
} else {
linkText = race.getRaceColumnName() + " (" + fleet.name + ")";
}
if (race.getRaceIdentifier(fleet) != null) {
RegattaNameAndRaceName raceId = (RegattaNameAndRaceName) race.getRaceIdentifier(fleet);
String link = URLFactory.INSTANCE.encode("/gwt/RaceBoard.html?leaderboardName=" + leaderboard.name
+ "&raceName=" + raceId.getRaceName() + "&root=" + root + raceId.getRaceName()
+ "&regattaName=" + raceId.getRegattaName() + "&leaderboardGroupName=" + group.name);
if (debugParam != null && !debugParam.isEmpty()) {
link += "&gwt.codesvr=" + debugParam;
}
if (viewMode != null && !viewMode.isEmpty()) {
link += "&viewMode=" + viewMode;
}
if (embedded) {
b.append(ANCHORTEMPLATE.anchorWithTarget(link, linkText, STYLE_NAME_PREFIX + "ActiveRace", "_blank"));
} else {
b.append(ANCHORTEMPLATE.anchor(link, linkText, STYLE_NAME_PREFIX + "ActiveRace"));
}
} else {
b.append(TEXTTEMPLATE.textWithClass(linkText, STYLE_NAME_PREFIX + "InactiveRace"));
pair.getB().add(raceColumn);
}
}
previousRaceColumn = raceColumn;
}
for(Map<String,Pair<FleetDTO, List<RaceColumnDTO>>> fleetGroup: fleetGroups) {
b.appendHtmlConstant("<div style=\"float:left; margin-left:20px;\">");
for(String fleetName: fleetGroup.keySet()) {
Pair<FleetDTO, List<RaceColumnDTO>> pair = fleetGroup.get(fleetName);
FleetDTO fleet = pair.getA();
Color color = fleet.getColor();
if(color != null) {
b.append(COLORBOXTEMPLATE.colorBox(color.getAsHtml(), STYLE_NAME_PREFIX + "ColorBox"));
} else {
b.append(COLORBOXTEMPLATE.nocolorBox(STYLE_NAME_PREFIX + "ColorBox"));
}
b.append(TEXTTEMPLATE.textWithClass(fleetName, 50, STYLE_NAME_PREFIX + "Fleet"));
for(RaceColumnDTO race: pair.getB()) {
String linkText = race.getRaceColumnName();
if (race.getRaceIdentifier(pair.getA()) != null) {
RegattaNameAndRaceName raceId = (RegattaNameAndRaceName) race.getRaceIdentifier(pair.getA());
String link = URLFactory.INSTANCE.encode("/gwt/RaceBoard.html?leaderboardName=" + leaderboard.name
+ "&raceName=" + raceId.getRaceName() + "&root=" + root + raceId.getRaceName()
+ "&regattaName=" + raceId.getRegattaName() + "&leaderboardGroupName=" + group.name);
if (debugParam != null && !debugParam.isEmpty()) {
link += "&gwt.codesvr=" + debugParam;
}
if (viewMode != null && !viewMode.isEmpty()) {
link += "&viewMode=" + viewMode;
}
if (embedded) {
b.append(ANCHORTEMPLATE.anchorWithTarget(link, linkText, STYLE_NAME_PREFIX + "ActiveRace", "_blank"));
} else {
b.append(ANCHORTEMPLATE.anchor(link, linkText, STYLE_NAME_PREFIX + "ActiveRace"));
}
} else {
b.append(TEXTTEMPLATE.textWithClass(linkText, STYLE_NAME_PREFIX + "InactiveRace"));
}
}
b.appendHtmlConstant("<div style=\"clear:both\"/></div>");
}
b.appendHtmlConstant("</div>");
}
return b.toSafeHtml();
}
private boolean hasSameFleets(RaceColumnDTO raceColumn1, RaceColumnDTO raceColumn2) {
Iterable<FleetDTO> raceColumn1Fleets = raceColumn1.getFleets();
Iterable<FleetDTO> raceColumn2Fleets = raceColumn2.getFleets();
if(Util.size(raceColumn1Fleets) != Util.size(raceColumn2Fleets))
return false;
for(int i = 0; i < Util.size(raceColumn1Fleets); i++) {
FleetDTO next1 = raceColumn1Fleets.iterator().next();
FleetDTO next2 = raceColumn2Fleets.iterator().next();
if(!next1.name.equals(next2.name))
return false;
}
return true;
}
private BreadcrumbPanel createBreadcrumbPanel() {
BreadcrumbPanel breadcrumbPanel = null;