diff --git a/java/com.sap.sailing.gwt.ui/RaceBoard.html b/java/com.sap.sailing.gwt.ui/RaceBoard.html
index becc8bade88..7fc9059b35e 100644
--- a/java/com.sap.sailing.gwt.ui/RaceBoard.html
+++ b/java/com.sap.sailing.gwt.ui/RaceBoard.html
@@ -11,11 +11,11 @@
-
+
+
+
+
+
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceMap.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceMap.java
index 997b6cf53ca..19451af529d 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceMap.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceMap.java
@@ -670,11 +670,6 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
return result;
}
- private String getColorString(CompetitorDTO competitorDTO) {
- // TODO green no more than 70, red no less than 120
- return "#" + (Integer.toHexString(competitorDTO.hashCode()) + "000000").substring(0, 4).toUpperCase() + "00";
- }
-
/**
* Creates a polyline for the competitor represented by competitorDTO, taking the fixes from
* {@link #fixes fixes.get(competitorDTO)} and using the fixes starting at time point from (inclusive)
@@ -716,7 +711,7 @@ public class RaceMap implements TimeListener, CompetitorSelectionChangeListener,
}
PolylineOptions options = PolylineOptions.newInstance(
/* clickable */true, /* geodesic */true);
- Polyline result = new Polyline(points.toArray(new LatLng[0]), getColorString(competitorDTO), /* width */ 1,
+ Polyline result = new Polyline(points.toArray(new LatLng[0]), competitorSelection.getColor(competitorDTO), /* width */ 1,
/* opacity */0.5, options);
result.addPolylineClickHandler(new PolylineClickHandler() {
@Override
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceMapResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceMapResources.java
index d55f81ab42f..859c897bccf 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceMapResources.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceMapResources.java
@@ -186,7 +186,7 @@ public class RaceMapResources {
public double getRealBoatSizeScaleFactor(Size imageSize) {
// the possible zoom level range is 0 to 21 (zoom level 0 would show the whole world)
int zoomLevel = map == null ? 1 : map.getZoomLevel();
- double minScaleFactor = 0.33;
+ double minScaleFactor = 0.45;
double maxScaleFactor = 2.0;
double realBoatSizeScaleFactor = minScaleFactor;
// here it would be better to get the boat length from the boat class -> for now we assume a length of 5m
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/CompetitorSelectionModel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/CompetitorSelectionModel.java
index 732e64f46fa..dda3f056a27 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/CompetitorSelectionModel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/CompetitorSelectionModel.java
@@ -18,12 +18,15 @@ public class CompetitorSelectionModel implements CompetitorSelectionProvider {
private final boolean hasMultiSelection;
+ private final ColorMap competitorsColorMap;
+
public CompetitorSelectionModel(boolean hasMultiSelection) {
super();
this.hasMultiSelection = hasMultiSelection;
this.allCompetitors = new HashSet();
this.selectedCompetitors = new LinkedHashSet();
this.listeners = new HashSet();
+ this.competitorsColorMap = new ColorMap();
}
/**
@@ -152,4 +155,14 @@ public class CompetitorSelectionModel implements CompetitorSelectionProvider {
remove(oldCompetitorToRemove);
}
}
+
+ @Override
+ public String getColor(CompetitorDTO competitor) {
+ if (allCompetitors.contains(competitor)) {
+ return competitorsColorMap.getColorByID(competitor);
+ }
+
+ return null;
+ }
+
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/CompetitorSelectionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/CompetitorSelectionProvider.java
index 24a60729b7d..edd00e19c73 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/CompetitorSelectionProvider.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/CompetitorSelectionProvider.java
@@ -43,6 +43,8 @@ public interface CompetitorSelectionProvider {
boolean hasMultiSelection();
+ String getColor(CompetitorDTO competitor);
+
void addCompetitorSelectionChangeListener(CompetitorSelectionChangeListener listener);
void removeCompetitorSelectionChangeListener(CompetitorSelectionChangeListener listener);
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java
index c5c91fefdd6..d6cc66bd16c 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/AbstractChartPanel.java
@@ -53,7 +53,6 @@ import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.impl.Util.Pair;
-import com.sap.sailing.gwt.ui.client.ColorMap;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
import com.sap.sailing.gwt.ui.client.DetailTypeFormatter;
@@ -93,7 +92,6 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener {
private final Label title;
private final DeckPanel chart;
private final RaceSelectionProvider raceSelectionProvider;
- private final ColorMap colorMap;
private int stepsToLoad = 100;
private final StringMessages stringMessages;
private PlotWithOverview plot;
@@ -124,7 +122,6 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener {
seriesIsUsed = new HashSet();
competitorID = new ArrayList();
markSeriesID = new ArrayList();
- colorMap = new ColorMap();
competitorLabels = new HashMap();
markPassingBuoyName = new HashMap();
this.sailingService = sailingService;
@@ -420,13 +417,14 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener {
plotOptions.setGridOptions(new GridOptions().setHoverable(true).setMouseActiveRadius(5).setAutoHighlight(true));
plotOptions.setSelectionOptions(new SelectionOptions().setDragging(true).setMode("x"));
- for (int i = 0; i < getCompetitorsAndTimePointsDTO().getCompetitors().length; i++){
- SeriesHandler series = model.addSeries(""+i, colorMap.getColorByID(i));
+ for (int i = 0; i < getCompetitorsAndTimePointsDTO().getCompetitors().length; i++){
+ CompetitorDTO competitor = getCompetitorsAndTimePointsDTO().getCompetitors()[i];
+ SeriesHandler series = model.addSeries(""+i, competitorSelectionProvider.getColor(competitor));
series.setOptions(SeriesType.LINES, new LineSeriesOptions().setLineWidth(2.5).setShow(true));
series.setOptions(SeriesType.POINTS, new PointsSeriesOptions().setLineWidth(0).setShow(false));
series.setVisible(false);
seriesID.add(series);
- series = model.addSeries(i + " passed mark", colorMap.getColorByID(i));
+ series = model.addSeries(i + " passed mark", competitorSelectionProvider.getColor(competitor));
series.setOptions(SeriesType.LINES, new LineSeriesOptions().setLineWidth(0).setShow(false));
series.setOptions(SeriesType.POINTS, new PointsSeriesOptions().setLineWidth(3).setShow(true));
series.setVisible(false);
@@ -550,7 +548,7 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener {
private void setLegendVisible(CompetitorDTO competitor, boolean visible) {
Widget label = competitorLabels.get(competitor);
if (label == null){
- label = createCompetitorLabel(competitor.name, colorMap.getColorByID(competitorID.indexOf(competitor)));
+ label = createCompetitorLabel(competitor.name, competitorSelectionProvider.getColor(competitor));
competitorLabels.put(competitor, label);
legendPanel.add(label);
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java
index 854b670c1cf..b9229a8b014 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java
@@ -117,12 +117,12 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
raceMap.onRaceSelectionChange(Collections.singletonList(selectedRaceIdentifier));
collapsableViewers.add(raceMapViewer);
- boolean showWindChart = false;
+ boolean showWindChart = true;
if(showWindChart) {
WindChartSettings windChartSettings = new WindChartSettings();
WindChart windChart = new WindChart(sailingService, raceSelectionProvider, windChartSettings, stringMessages, errorReporter);
CollapsableComponentViewer windChartViewer = new CollapsableComponentViewer(
- windChart, "600px", "300px", stringMessages);
+ windChart, "600px", "500px", stringMessages);
windChart.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces());
collapsableViewers.add(windChartViewer);
}
@@ -207,6 +207,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
max = selectedRace.endOfRace;
} else if (selectedRace.timePointOfNewestEvent != null) {
max = selectedRace.timePointOfNewestEvent;
+ timer.setPlayMode(PlayModes.Live);
}
if(min != null && max != null)