Merge branch 'master' into ubilabs--rcapp--refactoring

This commit is contained in:
Peter Siegmund committed 2015-06-08 11:02:53 +02:00
commit d4e622650a
9 files changed
+68 -41

No files matched your search

@@ -28,7 +28,7 @@ public class CalculateImageSizeFromUrlTest {
public void calculateImageSizeFromUrl() throws IOException {
int width = 350;
int height = 150;
ImageSize size = calculate("http://placehold.it/" + width + "x" + height);
ImageSize size = calculate("http://placekitten.com/" + width + "/" + height);
assertTrue(size.getWidth() == width);
assertTrue(size.getHeight() == height);
}
@@ -62,7 +62,7 @@ public class CalculateImageSizeFromUrlTest {
Event e = new EventImpl("Event Name", /* startDate */ null, /* endDate */ null, "Kiel", /* isPublic */ true, UUID.randomUUID());
int width = Math.max(10, (int) (200. * Math.random()));
int height = Math.max(10, (int) (100. * Math.random()));
URL imageURL = new URL("http://placehold.it/" + width + "x" + height);
URL imageURL = new URL("http://placekitten.com/" + width + "/" + height);
e.addImageURL(imageURL);
ImageSize expectedSize = new ImageSizeImpl(width, height);
assertEquals(expectedSize, e.getImageSize(imageURL));
@@ -3,7 +3,7 @@ package com.sap.sailing.gwt.home.client.place.event.oldleaderboard;
import java.util.Date;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.ParagraphElement;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Style.Visibility;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
@@ -37,12 +37,12 @@ public class OldLeaderboard extends Composite {
@UiField Anchor settingsAnchor;
@UiField Anchor autoRefreshAnchor;
@UiField ParagraphElement lastScoringUpdateTimeDiv;
@UiField ParagraphElement lastScoringUpdateTextDiv;
@UiField ParagraphElement lastScoringCommentDiv;
@UiField ParagraphElement scoringSchemeDiv;
@UiField
EventRegattaLeaderboardResources local_res;
@UiField DivElement lastScoringUpdateTimeDiv;
@UiField DivElement lastScoringUpdateTextDiv;
@UiField DivElement lastScoringCommentDiv;
@UiField DivElement scoringSchemeDiv;
@UiField DivElement hasLiveRaceDiv;
@UiField EventRegattaLeaderboardResources local_res;
private LeaderboardPanel leaderboardPanel;
private Timer autoRefreshTimer;
@@ -93,9 +93,11 @@ public class OldLeaderboard extends Composite {
oldLeaderboardPanel.add(leaderboardPanel);
}
public void updatedLeaderboard(LeaderboardDTO leaderboard, boolean hasLiveRace) {
public void updatedLeaderboard(LeaderboardDTO leaderboard) {
boolean hasLiveRace = leaderboardPanel.hasLiveRace();
if (leaderboard != null) {
lastScoringCommentDiv.setInnerText(leaderboard.getComment() != null ? leaderboard.getComment() : "");
hasLiveRaceDiv.setInnerText(leaderboardPanel.getLiveRacesText());
scoringSchemeDiv.setInnerText(leaderboard.scoringScheme != null ? ScoringSchemeTypeFormatter.getDescription(leaderboard.scoringScheme, StringMessages.INSTANCE) : "");
if (leaderboard.getTimePointOfLastCorrectionsValidity() != null) {
Date lastCorrectionDate = leaderboard.getTimePointOfLastCorrectionsValidity();
@@ -104,11 +106,15 @@ public class OldLeaderboard extends Composite {
lastScoringUpdateTimeDiv.setInnerText(lastUpdate);
lastScoringUpdateTextDiv.setInnerText(TextMessages.INSTANCE.eventRegattaLeaderboardLastScoreUpdate());
} else {
lastScoringUpdateTimeDiv.setInnerText("");
lastScoringUpdateTextDiv.setInnerText("");
lastScoringUpdateTimeDiv.setInnerText(" ");
lastScoringUpdateTextDiv.setInnerText(" ");
}
lastScoringUpdateTextDiv.getStyle().setVisibility(!hasLiveRace ? Visibility.VISIBLE : Visibility.HIDDEN);
lastScoringUpdateTimeDiv.getStyle().setVisibility(!hasLiveRace ? Visibility.VISIBLE : Visibility.HIDDEN);
setVisible(hasLiveRaceDiv, hasLiveRace);
setVisible(lastScoringCommentDiv, !hasLiveRace);
setVisible(lastScoringUpdateTextDiv, !hasLiveRace);
setVisible(lastScoringUpdateTimeDiv, !hasLiveRace);
setVisible(scoringSchemeDiv, true);
}
}
@@ -9,13 +9,14 @@
<g:HTMLPanel styleName=" {local_res.css.marginFix}">
<div class="{res.mediaCss.grid}" >
<div class="{res.mediaCss.small7} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_scoring}">
<p ui:field="lastScoringCommentDiv" class="{local_res.css.regattaleaderboard_meta_scoring_comment}"></p>
<p ui:field="scoringSchemeDiv" class="{local_res.css.regattaleaderboard_meta_scoring_type}"></p>
<div ui:field="lastScoringCommentDiv" class="{local_res.css.regattaleaderboard_meta_scoring_comment}"></div>
<div ui:field="hasLiveRaceDiv" class="{local_res.css.regattaleaderboard_meta_liverace}"></div>
<div ui:field="scoringSchemeDiv" class="{local_res.css.regattaleaderboard_meta_scoring_type}"></div>
</div>
<div class="{res.mediaCss.small5} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_settings}">
<div class="{local_res.css.regattaleaderboard_meta_update}">
<p ui:field="lastScoringUpdateTextDiv" class="{local_res.css.regattaleaderboard_meta_update_text}"></p>
<p ui:field="lastScoringUpdateTimeDiv" class="{local_res.css.regattaleaderboard_meta_update_timestamp}"></p>
<div ui:field="lastScoringUpdateTextDiv" class="{local_res.css.regattaleaderboard_meta_update_text}"></div>
<div ui:field="lastScoringUpdateTimeDiv" class="{local_res.css.regattaleaderboard_meta_update_timestamp}"></div>
</div>
<g:Anchor ui:field="autoRefreshAnchor" href="javascript:;" styleName="{res.mainCss.button} {local_res.css.regattaleaderboard_meta_reload}"></g:Anchor>
<g:Anchor ui:field="settingsAnchor" href="javascript:;" styleName="{res.mainCss.button} {local_res.css.regattaleaderboard_meta_settings_button}"></g:Anchor>
@@ -69,6 +69,9 @@ public class RegattaLeaderboardTabView extends SharedLeaderboardRegattaTabView<R
}
regattaAnalyticsManager.hideCompetitorChart();
contentArea.setWidget(this);
if(leaderboardPanel.getLeaderboard() != null) {
leaderboard.updatedLeaderboard(leaderboardPanel.getLeaderboard());
}
} else {
contentArea.setWidget(new Label("No leaderboard specified, cannot proceed to leaderboardpage"));
new com.google.gwt.user.client.Timer() {
@@ -82,7 +85,7 @@ public class RegattaLeaderboardTabView extends SharedLeaderboardRegattaTabView<R
@Override
public void updatedLeaderboard(LeaderboardDTO leaderboard) {
this.leaderboard.updatedLeaderboard(leaderboard, true);
this.leaderboard.updatedLeaderboard(leaderboard);
}
@Override
@@ -66,9 +66,9 @@
padding-bottom: 1em;
border-bottom: 1px solid #ddd;
}
.regattaleaderboard_meta_scoring,
.regattaleaderboard_meta_update {
margin-top: 1em;
}
.regattaleaderboard_meta_scoring_comment,
.regattaleaderboard_meta_update_comment,
@@ -104,6 +104,10 @@
background-color: #f0ab00;
}
.regattaleaderboard_meta_liverace {
color: red;
font-weight: 600;
}
.regattaleaderboard_meta_reload:hover {
background-color: #909090;
@@ -217,7 +221,7 @@
table-layout: fixed;
}
.marginFix {
margin-top:2rem;
margin-top:0.5rem;
}
.letItScroll {
overflow-x: auto;
@@ -33,6 +33,7 @@ public interface EventRegattaLeaderboardResources extends ClientBundle {
String regattaleaderboard_meta_scoring_text();
String regattaleaderboard_meta_update_text();
String regattaleaderboard_meta_reload();
String regattaleaderboard_meta_liverace();
String regattaleaderboard_meta_reload_playing();
String regattaleaderboard_meta_reload_live();
@@ -60,26 +60,13 @@ public class EventSeriesLeaderboardTabView extends SharedLeaderboardEventSeriesT
if(leaderboardPanel == null) {
leaderboardPanel = createSharedLeaderboardPanel(leaderboardName, eventSeriesAnalyticsManager);
}
//
// boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(
// LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
// final LeaderboardSettings leaderboardSettings = EventParamUtils
// .createLeaderboardSettingsFromURLParameters(Window.Location
// .getParameterMap());
// final RegattaAndRaceIdentifier preselectedRace = EventParamUtils
// .getPreselectedRace(Window.Location.getParameterMap());
// LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createOverallLeaderboardPanel(
// leaderboardSettings,
// preselectedRace,
// "leaderboardGroupName", // TODO: keep using magic string? ask frank!
// leaderboardName,
// true, // this information came from place, now hard coded. check with frank
// autoExpandLastRaceColumn);
initWidget(ourUiBinder.createAndBindUi(this));
leaderboard.setLeaderboard(leaderboardPanel, currentPresenter.getAutoRefreshTimer());
// leaderboardPanel.addLeaderboardUpdateListener(this);
eventSeriesAnalyticsManager.hideCompetitorChart();
contentArea.setWidget(this);
if(leaderboardPanel.getLeaderboard() != null) {
leaderboard.updatedLeaderboard(leaderboardPanel.getLeaderboard());
}
} else {
contentArea.setWidget(new Label("No leaderboard specified, cannot proceed to leaderboardpage"));
new com.google.gwt.user.client.Timer() {
@@ -93,7 +80,7 @@ public class EventSeriesLeaderboardTabView extends SharedLeaderboardEventSeriesT
@Override
public void updatedLeaderboard(LeaderboardDTO leaderboard) {
this.leaderboard.updatedLeaderboard(leaderboard, true);
this.leaderboard.updatedLeaderboard(leaderboard);
}
@Override
@@ -91,7 +91,7 @@ velocityMadeGoodInKnots=VMG
velocityMadeGoodInKnotsTooltip=Die effektive Geschwindigkeit zum Ziel; auf der Kreuz die windwärtige Geschwindigkeit; auf der Vorwindstrecke die leewärtige Geschwindigkeit
windwardDistanceToGoInMeters=Abstand in Windrichtung zur nächsten Bahnmarke
windwardDistanceToGoInMetersTooltip=Windwärtige / leewärtige Distanz des Teilnehmerns bis zum Ende des Schenkels auf Kreuz bzw. Vorwindstrecke; Strecke entlang des Schenkels bei Holeschlägen
windwardDistanceToCompetitorFarthestAheadInMeters=Windärtiger Abstand zum schnellsten Boot
windwardDistanceToCompetitorFarthestAheadInMeters=Windwärtiger Abstand zum schnellsten Boot
windwardDistanceToCompetitorFarthestAheadInMetersTooltip=Windwärtiger Abstand zum Boot, das bisher am weitesten windwärts gesegelt ist.\nFür Handicap-Wertungen ist das nicht notwendigerweise der nach Verrechnung in Führung liegende Teilnehmer.
name=Name
leaveEmptyForDefault=Leer für Standardeinstellung
@@ -1264,4 +1264,4 @@ timeOnDistanceAllowanceInSecondsPerNauticalMileTooltip=Zeit-auf-Distanz Zuteilun
calculatedTimeTraveled=Berechnete Zeit
calculatedTimeTraveledTooltip=Berechnete Zeit anhand Teilnehmer-Handicap\nauf der Grundlage von Zeit seit Rennstart und zurückgelegter Distanz
raceCalcluatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Ber.Zeit@Führender
raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Berechnete Zeit bei erwarteter Ankunft am derzeit absolut in Führung liegenden Teilnehmers;\nSchätzung basierend auf durchschnittlichem VMG im aktuellen Bahnschenkel und gleicher verrechneter Geschwindigket wie der absolut in Führung liegende Teilnehmer\nfür alle nachfolgenden Bahnschenkel
raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Berechnete Zeit bei erwarteter Ankunft am derzeit absolut in Führung liegenden Teilnehmers;\nSchätzung basierend auf durchschnittlichem VMG im aktuellen Bahnschenkel und gleicher verrechneter Geschwindigket wie der absolut in Führung liegende Teilnehmer\nfür alle nachfolgenden Bahnschenkel
@@ -129,7 +129,7 @@ public class LeaderboardPanel extends SimplePanel implements TimeListener, PlayS
private final SailingServiceAsync sailingService;
private static String IS_LIVE_TEXT_COLOR = "#1876B3";
private static String IS_LIVE_TEXT_COLOR = "#FF0000";
private static String DEFAULT_TEXT_COLOR = "#000000";
private static final String STYLE_LEADERBOARD_CONTENT = "leaderboardContent";
@@ -2400,6 +2400,7 @@ public class LeaderboardPanel extends SimplePanel implements TimeListener, PlayS
List<com.sap.sse.common.Util.Pair<RaceColumnDTO, FleetDTO>> liveRaces = leaderboard.getLiveRaces(timer.getLiveTimePointInMillis());
boolean hasLiveRace = !liveRaces.isEmpty();
liveRaceLabel.setText(hasLiveRace ? getLiveRacesText() : "");
if (hasLiveRace) {
String liveRaceText = "";
if(liveRaces.size() == 1) {
@@ -3247,6 +3248,30 @@ public class LeaderboardPanel extends SimplePanel implements TimeListener, PlayS
}
}
public boolean hasLiveRace() {
return getLeaderboard().hasLiveRace(timer.getLiveTimePointInMillis());
}
public String getLiveRacesText() {
String result = "";
List<com.sap.sse.common.Util.Pair<RaceColumnDTO, FleetDTO>> liveRaces = leaderboard.getLiveRaces(timer.getLiveTimePointInMillis());
if (!liveRaces.isEmpty()) {
if(liveRaces.size() == 1) {
com.sap.sse.common.Util.Pair<RaceColumnDTO, FleetDTO> liveRace = liveRaces.get(0);
result = stringMessages.raceIsLive("'" + liveRace.getA().getRaceColumnName() + "'");
} else {
String raceNames = "";
for (com.sap.sse.common.Util.Pair<RaceColumnDTO, FleetDTO> liveRace : liveRaces) {
raceNames += "'" + liveRace.getA().getRaceColumnName() + "', ";
}
// remove last ", "
raceNames = raceNames.substring(0, raceNames.length() - 2);
result = stringMessages.racesAreLive(raceNames);
}
}
return result;
}
@Override
public String getDependentCssClassName() {
return "leaderboard";