Merge remote-tracking branch 'origin/master'

This commit is contained in:
fmittag committed 2012-06-16 09:07:42 +02:00
commit da32cc6d0a
11 files changed
+57 -51

No files matched your search

@@ -333,4 +333,5 @@ public interface StringMessages extends Messages {
String apply();
String successfullyUpdatedScores();
String errorUpdatingScoresForLeaderboard(String leaderboardName, String message);
String maneuverTypesToShowWhenCompetitorIsClicked();
}
@@ -329,4 +329,5 @@ importOfficialResults=Import official results...
selectAll=Select all
apply=Apply
successfullyUpdatedScores=Successfully updated scores
errorUpdatingScoresForLeaderboard=Error updating scores for leaderboard {0}: {1}
errorUpdatingScoresForLeaderboard=Error updating scores for leaderboard {0}: {1}
maneuverTypesToShowWhenCompetitorIsClicked=Maneuver types to show when competitor is clicked
@@ -159,7 +159,7 @@ secondsUnit=s
metersUnit=m
failedToLoadRaceData=Renndaten konnten nicht geladen werden.
close=Schließen
compareCompetitors=Kompetitoren vergleichen
compareCompetitors=Segler vergleichen
description=Beschreibung
sailNumber=Segelnummer
country=Land
@@ -330,4 +330,5 @@ importOfficialResults=Offizielle Ergebnisse importieren...
selectAll=Alle auswählen
apply=Übernehmen
successfullyUpdatedScores=Ergebnisse erfolgreich aktualisiert
errorUpdatingScoresForLeaderboard=Fehler beim Aktualisieren der Ergebnisse für {0}: {1}
errorUpdatingScoresForLeaderboard=Fehler beim Aktualisieren der Ergebnisse für {0}: {1}
maneuverTypesToShowWhenCompetitorIsClicked=Anzuzeigende Manövertypen für angeklickte Segler
@@ -5,6 +5,7 @@ import com.google.gwt.cell.client.TextCell;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.CellTable;
import com.sap.sailing.gwt.ui.client.NumberFormatterFactory;
import com.sap.sailing.gwt.ui.shared.LeaderboardDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardRowDTO;
@@ -16,14 +17,7 @@ public class FormattedDoubleLegDetailColumn extends LegDetailColumn<Double, Stri
com.sap.sailing.gwt.ui.leaderboard.LegDetailColumn.LegDetailField<Double> field, int decimals,
CellTable<LeaderboardRowDTO> leaderboardTable, String headerStyle, String columnStyle) {
super(title, unit, field, new TextCell(), leaderboardTable, headerStyle, columnStyle);
StringBuilder patternBuilder = new StringBuilder("0");
if (decimals > 0) {
patternBuilder.append('.');
}
for (int i = 0; i < decimals; i++) {
patternBuilder.append('0');
}
formatter = NumberFormat.getFormat(patternBuilder.toString());
formatter = NumberFormatterFactory.getDecimalFormat(decimals);
this.minMaxRenderer = new MinMaxRenderer(this, getComparator());
}
@@ -51,10 +51,14 @@ public class LeaderboardSettingsFactory {
ArrayList<DetailType> legDetails = new ArrayList<DetailType>();
legDetails.add(DetailType.DISTANCE_TRAVELED);
legDetails.add(DetailType.AVERAGE_SPEED_OVER_GROUND_IN_KNOTS);
legDetails.add(DetailType.ESTIMATED_TIME_TO_NEXT_WAYPOINT_IN_SECONDS);
legDetails.add(DetailType.RANK_GAIN);
ArrayList<DetailType> raceDetails = new ArrayList<DetailType>();
raceDetails.add(DetailType.RACE_DISTANCE_TRAVELED);
raceDetails.add(DetailType.RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS);
raceDetails.add(DetailType.RACE_DISTANCE_TO_LEADER_IN_METERS);
raceDetails.add(DetailType.NUMBER_OF_MANEUVERS);
raceDetails.add(DetailType.DISPLAY_LEGS);
settings = new LeaderboardSettings(maneuverDetails, legDetails, raceDetails, namesOfRaceColumnsToShow,
namesOfRacesToShow,
/* set autoExpandFirstRace to true if we look at a single race */ nameOfRaceColumnToShow != null || nameOfRaceToShow != null, /* refresh interval */ null,
@@ -77,7 +81,6 @@ public class LeaderboardSettingsFactory {
* @param namesOfRacesToShow
* alternatively, races to show can also be specified by their race names; if not <code>null</code>,
* <code>namesOfRaceColumnsToShow</code> must be <code>null
* @param nameOfRaceToSort TODO
*/
public LeaderboardSettings createNewDefaultSettings(List<String> namesOfRaceColumnsToShow,
List<String> namesOfRacesToShow, String nameOfRaceToSort, boolean autoExpandFirstRace) {
@@ -61,6 +61,7 @@ import com.sap.sailing.gwt.ui.actions.GetWindInfoAction;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
import com.sap.sailing.gwt.ui.client.ErrorReporter;
import com.sap.sailing.gwt.ui.client.NumberFormatterFactory;
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.RaceTimesInfoProviderListener;
import com.sap.sailing.gwt.ui.client.RequiresDataInitialization;
@@ -995,16 +996,13 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
result.add(new Label(stringMessages.rank() + ": " + rank));
}
result.add(new Label(stringMessages.speed() + ": "
+ NumberFormat.getDecimalFormat().format(lastFix.speedWithBearing.speedInKnots) + " "+stringMessages.averageSpeedInKnotsUnit()));
+ NumberFormatterFactory.getDecimalFormat(1).format(lastFix.speedWithBearing.speedInKnots) + " "+stringMessages.averageSpeedInKnotsUnit()));
result.add(new Label(stringMessages.bearing() + ": "+ (int) lastFix.speedWithBearing.bearingInDegrees + " "+stringMessages.degreesShort()));
if (lastFix.wind != null) {
result.add(new Label(stringMessages.degreesBoatToTheWind() + ": " + NumberFormat.getDecimalFormat().format(Math.abs(
result.add(new Label(stringMessages.degreesBoatToTheWind() + ": " + (int) Math.abs(
new DegreeBearingImpl(lastFix.speedWithBearing.bearingInDegrees).getDifferenceTo(
new DegreeBearingImpl(lastFix.wind.dampenedTrueWindFromDeg)).getDegrees())) + " "+stringMessages.degreesShort() ));
new DegreeBearingImpl(lastFix.wind.dampenedTrueWindFromDeg)).getDegrees()) + " "+stringMessages.degreesShort()));
}
//TODO Introduce user role dependent view (Spectator, Admin). Comments underneath are necessary for other views
// result.add(new Label("" + lastFix.position));
// result.add(new Label("Tack: " + lastFix.tack.name()));
if (!selectedRaces.isEmpty()) {
RaceIdentifier race = selectedRaces.get(selectedRaces.size() - 1);
if (race != null) {
@@ -16,14 +16,14 @@ public class RaceMapHelpLinesSettings {
private final Set<HelpLineTypes> visibleHelpLines;
/**
* Creates new RaceMapHelpLinesSettings with the {@link HelpLineTypes} <code>STARTLINE</code>, <code>FINISHLINE</code> and <code>ADVANTAGELINE</code>.<br />
* Creates new RaceMapHelpLinesSettings with the {@link HelpLineTypes} <code>STARTLINE</code>,
* <code>FINISHLINE</code> and <code>ADVANTAGELINE</code>.<br />
*/
public RaceMapHelpLinesSettings() {
visibleHelpLines = new HashSet<HelpLineTypes>();
visibleHelpLines.add(HelpLineTypes.STARTLINE);
visibleHelpLines.add(HelpLineTypes.FINISHLINE);
visibleHelpLines.add(HelpLineTypes.ADVANTAGELINE);
visibleHelpLines.add(HelpLineTypes.COURSEMIDDLELINE);
}
public RaceMapHelpLinesSettings(Collection<HelpLineTypes> visibleHelpLines) {
@@ -20,12 +20,8 @@ public class RaceMapSettings {
private long tailLengthInMilliseconds = 100000l;
public RaceMapSettings() {
// empty default settings; don't show maneuvers by default
maneuverTypesToShow = new HashSet<ManeuverType>();
maneuverTypesToShow.add(ManeuverType.TACK);
maneuverTypesToShow.add(ManeuverType.JIBE);
maneuverTypesToShow.add(ManeuverType.PENALTY_CIRCLE);
maneuverTypesToShow.add(ManeuverType.MARK_PASSING);
this.zoomSettings = new RaceMapZoomSettings();
this.helpLinesSettings = new RaceMapHelpLinesSettings();
}
@@ -97,7 +97,7 @@ public class RaceMapSettingsDialogComponent implements SettingsDialogComponent<R
//Run zoomSettingsChanged to set the checkboxes to their correct state
zoomSettingsChanged();
Label maneuversLabel = dialog.createHeadlineLabel(stringMessages.maneuverTypes());
Label maneuversLabel = dialog.createHeadlineLabel(stringMessages.maneuverTypesToShowWhenCompetitorIsClicked());
vp.add(maneuversLabel);
for (ManeuverType maneuverType : ManeuverType.values()) {
CheckBox checkbox = dialog.createCheckbox(ManeuverTypeFormatter.format(maneuverType, stringMessages));
@@ -42,6 +42,9 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
interface AnchorTemplates extends SafeHtmlTemplates {
@SafeHtmlTemplates.Template("<a class=\"{2}\" href=\"{0}\">{1}</a>")
SafeHtml anchor(String url, String displayName, String styleClass);
@SafeHtmlTemplates.Template("<a target=\"{3}\" class=\"{2}\" href=\"{0}\">{1}</a>")
SafeHtml anchorWithTarget(String url, String displayName, String styleClass, String target);
}
interface TextWithClassTemplate extends SafeHtmlTemplates {
@@ -54,29 +57,27 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
private static final int MAX_COLUMNS_IN_ROW = 0;
private static final String STYLE_NAME_PREFIX = "leaderboardGroupPanel-";
private SailingServiceAsync sailingService;
private StringMessages stringConstants;
private ErrorReporter errorReporter;
private final SailingServiceAsync sailingService;
private final StringMessages stringConstants;
private final ErrorReporter errorReporter;
private LeaderboardGroupDTO group;
private String root;
private String viewMode;
private final String root;
private final String viewMode;
private FlowPanel mainPanel;
private Widget welcomeWidget = null;
private boolean allLeaderboardNamesStartWithGroupName = false;
private final boolean embedded;
public LeaderboardGroupPanel(SailingServiceAsync sailingService, StringMessages stringConstants,
ErrorReporter errorReporter, final String groupName, String root, String viewMode) {
ErrorReporter errorReporter, final String groupName, String root, String viewMode, boolean embedded) {
super();
this.embedded = embedded;
this.sailingService = sailingService;
this.stringConstants = stringConstants;
this.errorReporter = errorReporter;
this.root = root;
this.root = (root == null || root.length() == 0) ? "leaderboardGroupPanel" : root;
this.viewMode = viewMode;
if (this.root == null || this.root.length() == 0) {
this.root = "leaderboardGroupPanel";
}
mainPanel = new FlowPanel();
add(mainPanel);
loadGroup(groupName);
@@ -88,7 +89,6 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
public void onSuccess(LeaderboardGroupDTO group) {
if (group != null) {
LeaderboardGroupPanel.this.group = group;
if(group.leaderboards.size() > 1) {
allLeaderboardNamesStartWithGroupName = true;
String groupName = group.name;
@@ -99,7 +99,6 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
}
}
}
buildGUI();
} else {
errorReporter.reportError(stringConstants.noLeaderboardGroupWithNameFound(groupName));
@@ -164,7 +163,6 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
for (int i = 0; i < maxRacesNum; i++) {
tableData.add(i);
}
leaderboardsTable.setRowData(tableData);
mainPanel.add(leaderboardsTable);
} else {
@@ -192,7 +190,12 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
String link = URLFactory.INSTANCE.encode("/gwt/Leaderboard.html?name=" + leaderboard.name
+ "&leaderboardGroupName=" + group.name + "&root=" + root
+ (debugParam != null && !debugParam.isEmpty() ? "&gwt.codesvr=" + debugParam : ""));
return ANCHORTEMPLATE.anchor(link, stringConstants.overview(), STYLE_NAME_PREFIX + "ActiveLeaderboard");
if (embedded) {
return ANCHORTEMPLATE.anchor(link, stringConstants.overview(), STYLE_NAME_PREFIX + "ActiveLeaderboard");
} else {
return ANCHORTEMPLATE.anchorWithTarget(link, stringConstants.overview(), STYLE_NAME_PREFIX + "ActiveLeaderboard",
/* target */ "_blank");
}
}
};
@@ -232,11 +235,17 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
if (race.getRaceColumnName().equals(stringConstants.overview())) {
String link = URLFactory.INSTANCE.encode("/gwt/Leaderboard.html?name=" + leaderboard.name
+ "&leaderboardGroupName=" + group.name + "&root=" + root);
if(debugParam != null && !debugParam.isEmpty())
if (debugParam != null && !debugParam.isEmpty()) {
link += "&gwt.codesvr=" + debugParam;
if(viewMode != null && !viewMode.isEmpty())
}
if (viewMode != null && !viewMode.isEmpty()) {
link += "&viewMode=" + viewMode;
b.append(ANCHORTEMPLATE.anchor(link, raceColumnDisplayName, STYLE_NAME_PREFIX + "ActiveLeaderboard"));
}
if (embedded) {
b.append(ANCHORTEMPLATE.anchorWithTarget(link, raceColumnDisplayName, STYLE_NAME_PREFIX + "ActiveLeaderboard", "_blank"));
} else {
b.append(ANCHORTEMPLATE.anchor(link, raceColumnDisplayName, STYLE_NAME_PREFIX + "ActiveLeaderboard"));
}
} else {
final Iterable<FleetDTO> fleets = race.getFleets();
boolean singleFleet = Util.size(fleets) < 2;
@@ -48,19 +48,22 @@ public class SpectatorEntryPoint extends AbstractEntryPoint implements RegattaRe
RootPanel rootPanel = RootPanel.get();
FlowPanel groupAndFeedbackPanel = new FlowPanel();
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(groupName != null ? groupName
: stringMessages.overview(), stringMessages);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
rootPanel.add(logoAndTitlePanel);
boolean embedded = Window.Location.getParameter("embedded") != null
&& Window.Location.getParameter("embedded").equalsIgnoreCase("true");
if (!embedded) {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(groupName != null ? groupName
: stringMessages.overview(), stringMessages);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
rootPanel.add(logoAndTitlePanel);
}
if (groupName == null) {
FlowPanel groupOverviewPanel = new FlowPanel();
groupOverviewPanel.addStyleName("contentOuterPanel");
groupOverviewPanel.add(new LeaderboardGroupOverviewPanel(sailingService, this, stringMessages));
rootPanel.add(groupOverviewPanel);
} else {
LeaderboardGroupPanel groupPanel = new LeaderboardGroupPanel(sailingService, stringMessages, this, groupName, root, viewModeParamValue);
LeaderboardGroupPanel groupPanel = new LeaderboardGroupPanel(sailingService, stringMessages, this,
groupName, root, viewModeParamValue, embedded);
groupPanel.getElement().getStyle().setFloat(Style.Float.LEFT);
groupPanel.setWelcomeWidget(new SimpleWelcomeWidget( stringMessages.welcomeToSailingAnalytics(), stringMessages.welcomeToSailingAnalyticsBody()));
SimplePanel feedbackPanel = new SimplePanel();