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)