mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 05:11:04 +00:00
Merge branch 'master' into ubilabs--rcapp--refactoring
This commit is contained in:
commit
d4e622650a
9 files changed
+68
-41
No files matched your search
+2
-2
@@ -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));
|
||||
|
||||
+18
-12
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -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>
|
||||
|
||||
+4
-1
@@ -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
|
||||
|
||||
+6
-2
@@ -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;
|
||||
|
||||
+1
@@ -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();
|
||||
|
||||
+4
-17
@@ -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
|
||||
|
||||
+2
-2
@@ -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
|
||||
+26
-1
@@ -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";
|
||||
|
||||
Reference in new issue
Block a user