mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 17:36:40 +00:00
added new method to the sailingservice to retreive the timepoints of the legs (for the TimePanel)
This commit is contained in:
1 parent
afc8392a75
commit
08e30bef40
10 files changed
+128
-12
No files matched your search
@@ -297,3 +297,10 @@ input.magnifier {
|
||||
.gwt-DialogBox {
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.breadcrumbPanel-ActiveBreadcrumb, .breadcrumbPanel-InactiveBreadcrumb, .breadcrumbPanel-NextArrow {
|
||||
font-size: 20px;
|
||||
text-transform: uppercase;
|
||||
color: #a1a1a1;
|
||||
font-weight: 500;
|
||||
}
|
||||
+14
-1
@@ -34,6 +34,7 @@ import com.sap.sailing.gwt.ui.client.TimePanel;
|
||||
import com.sap.sailing.gwt.ui.client.Timer;
|
||||
import com.sap.sailing.gwt.ui.client.Timer.PlayModes;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LegTimepointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.PositionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.QuickRankDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceDTO;
|
||||
@@ -155,7 +156,19 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer, TimeListe
|
||||
}
|
||||
break;
|
||||
}
|
||||
timePanel.setLegMarkers();
|
||||
|
||||
sailingService.getLegTimePositions(selectedRace.getRaceIdentifier(),
|
||||
new AsyncCallback<List<LegTimepointDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error obtaining leg timepoints: " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<LegTimepointDTO> legTimepoints) {
|
||||
timePanel.setLegMarkers(legTimepoints);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
@@ -21,6 +21,7 @@ import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.GPSFixDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LegTimepointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ManeuverDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.MarkDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.QuickRankDTO;
|
||||
@@ -61,6 +62,8 @@ public interface SailingService extends RemoteService {
|
||||
Map<CompetitorDTO, List<GPSFixDTO>> getBoatPositions(RaceIdentifier raceIdentifier, Map<CompetitorDTO, Date> from,
|
||||
Map<CompetitorDTO, Date> to, boolean extrapolate) throws NoWindException;
|
||||
|
||||
List<LegTimepointDTO> getLegTimePositions(RaceIdentifier raceIdentifier);
|
||||
|
||||
List<MarkDTO> getMarkPositions(RaceIdentifier raceIdentifier, Date date);
|
||||
|
||||
List<QuickRankDTO> getQuickRanks(RaceIdentifier raceIdentifier, Date date) throws NoWindException;
|
||||
|
||||
+3
@@ -20,6 +20,7 @@ import com.sap.sailing.gwt.ui.shared.GPSFixDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LegTimepointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ManeuverDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.MarkDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.QuickRankDTO;
|
||||
@@ -107,6 +108,8 @@ public interface SailingServiceAsync {
|
||||
Map<CompetitorDTO, Date> from, Map<CompetitorDTO, Date> to,
|
||||
boolean extrapolate, AsyncCallback<Map<CompetitorDTO, List<GPSFixDTO>>> callback);
|
||||
|
||||
void getLegTimePositions(RaceIdentifier raceIdentifier, AsyncCallback<List<LegTimepointDTO>> callback);
|
||||
|
||||
void getMarkPositions(RaceIdentifier raceIdentifier, Date date, AsyncCallback<List<MarkDTO>> asyncCallback);
|
||||
|
||||
void getQuickRanks(RaceIdentifier raceIdentifier, Date date, AsyncCallback<List<QuickRankDTO>> callback);
|
||||
|
||||
+16
-7
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.client;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.Style;
|
||||
@@ -23,6 +24,7 @@ import com.google.gwt.user.client.ui.RequiresResize;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.Timer.PlayModes;
|
||||
import com.sap.sailing.gwt.ui.shared.LegTimepointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.components.Component;
|
||||
import com.sap.sailing.gwt.ui.shared.components.SettingsDialog;
|
||||
import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
|
||||
@@ -220,9 +222,11 @@ public class TimePanel extends FormPanel implements Component<TimePanelSettings>
|
||||
case Live:
|
||||
playModeLabel.setText(stringMessages.playModeLive());
|
||||
timeDelayLabel.setText(((int) timer.getCurrentDelay() / 1000) + " s");
|
||||
sliderBar.setEnabled(false);
|
||||
break;
|
||||
case Replay:
|
||||
playModeLabel.setText(stringMessages.playModeReplay());
|
||||
sliderBar.setEnabled(true);
|
||||
break;
|
||||
}
|
||||
playModeLabel.setText(timer.getPlayMode().name());
|
||||
@@ -254,16 +258,21 @@ public class TimePanel extends FormPanel implements Component<TimePanelSettings>
|
||||
}
|
||||
}
|
||||
|
||||
public void setLegMarkers() {
|
||||
public void setLegMarkers(List<LegTimepointDTO> legTimepoints) {
|
||||
if(sliderBar.isMinMaxInitialized()) {
|
||||
sliderBar.clearMarkers();
|
||||
Double minValue = sliderBar.getMinValue();
|
||||
Double maxValue = sliderBar.getMaxValue();
|
||||
int legCount = 5;
|
||||
double diff = (maxValue - minValue) / (double) legCount;
|
||||
for(int i = 0; i < legCount; i++) {
|
||||
sliderBar.addMarker("L" + (i + 1), minValue + i * diff);
|
||||
|
||||
for (LegTimepointDTO legTimepointDTO : legTimepoints) {
|
||||
sliderBar.addMarker(legTimepointDTO.name, new Double(legTimepointDTO.firstPassingDate.getTime()));
|
||||
|
||||
}
|
||||
// Double minValue = sliderBar.getMinValue();
|
||||
// Double maxValue = sliderBar.getMaxValue();
|
||||
// int legCount = 5;
|
||||
// double diff = (maxValue - minValue) / (double) legCount;
|
||||
// for(int i = 0; i < legCount; i++) {
|
||||
// sliderBar.addMarker("L" + (i + 1), minValue + i * diff);
|
||||
// }
|
||||
sliderBar.redraw();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -209,5 +209,9 @@ public class Timer {
|
||||
public PlayModes getPlayMode() {
|
||||
return playMode;
|
||||
}
|
||||
|
||||
public void setPlayMode(PlayModes playMode) {
|
||||
this.playMode = playMode;
|
||||
}
|
||||
|
||||
}
|
||||
+17
@@ -28,6 +28,7 @@ import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||
import com.google.gwt.user.cellview.client.ColumnSortList.ColumnSortInfo;
|
||||
import com.google.gwt.user.cellview.client.Header;
|
||||
import com.google.gwt.user.cellview.client.TextHeader;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.AbstractImagePrototype;
|
||||
import com.google.gwt.user.client.ui.Anchor;
|
||||
@@ -45,6 +46,7 @@ import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
|
||||
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.Collator;
|
||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
|
||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||
@@ -66,6 +68,7 @@ import com.sap.sailing.gwt.ui.shared.components.Component;
|
||||
import com.sap.sailing.gwt.ui.shared.components.IsEmbeddableComponent;
|
||||
import com.sap.sailing.gwt.ui.shared.components.SettingsDialog;
|
||||
import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
|
||||
import com.sap.sailing.gwt.ui.shared.panels.BreadcrumbPanel;
|
||||
|
||||
/**
|
||||
* A leaderboard essentially consists of a table widget that in its columns displays the entries.
|
||||
@@ -848,6 +851,20 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
getLeaderboardTable().addColumnSortHandler(listHandler);
|
||||
loadCompleteLeaderboard(getLeaderboardDisplayDate());
|
||||
|
||||
// create the breadcrumb navigation
|
||||
// ArrayList<Pair<String, String>> breadcrumbLinksData = new ArrayList<Pair<String, String>>();
|
||||
// String debugParam = Window.Location.getParameter("gwt.codesvr");
|
||||
//
|
||||
// if(leaderboardGroup != null) {
|
||||
// String link = "/gwt/Spectator.html?leaderboardGroupName=" + leaderboardGroup.name;
|
||||
// if(debugParam != null && !debugParam.isEmpty())
|
||||
// link += "&gwt.codesvr=" + debugParam;
|
||||
// breadcrumbLinksData.add(new Pair<String, String>(link, leaderboardGroup.name));
|
||||
// }
|
||||
// breadcrumbPanel = new BreadcrumbPanel(breadcrumbLinksData, selectedRaceIdentifier.getRaceName());
|
||||
// mainPanel.add(breadcrumbPanel);
|
||||
|
||||
|
||||
contentPanel = new VerticalPanel();
|
||||
headerPanel = new DockPanel();
|
||||
DockPanel toolbarPanel = new DockPanel();
|
||||
|
||||
+23
-4
@@ -10,6 +10,7 @@ import java.util.Map;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Anchor;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.FormPanel;
|
||||
@@ -35,6 +36,7 @@ import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
|
||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LegTimepointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.components.ComponentViewer;
|
||||
@@ -83,10 +85,16 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
||||
collapsableViewers = new ArrayList<CollapsableComponentViewer<?>>();
|
||||
CompetitorSelectionModel competitorSelectionModel = new CompetitorSelectionModel(/* hasMultiSelection */ true);
|
||||
|
||||
String debugParam = Window.Location.getParameter("gwt.codesvr");
|
||||
String link = "/gwt/Spectator.html" + (debugParam != null && !debugParam.isEmpty() ? "?gwt.codesvr=" + debugParam : "");
|
||||
// create the breadcrumb navigation
|
||||
ArrayList<Pair<String, String>> breadcrumbLinksData = new ArrayList<Pair<String, String>>();
|
||||
breadcrumbLinksData.add(new Pair<String, String>(link, stringMessages.home()));
|
||||
String debugParam = Window.Location.getParameter("gwt.codesvr");
|
||||
|
||||
if(leaderboardGroup != null) {
|
||||
String link = "/gwt/Spectator.html?leaderboardGroupName=" + leaderboardGroup.name;
|
||||
if(debugParam != null && !debugParam.isEmpty())
|
||||
link += "&gwt.codesvr=" + debugParam;
|
||||
breadcrumbLinksData.add(new Pair<String, String>(link, leaderboardGroup.name));
|
||||
}
|
||||
breadcrumbPanel = new BreadcrumbPanel(breadcrumbLinksData, selectedRaceIdentifier.getRaceName());
|
||||
mainPanel.add(breadcrumbPanel);
|
||||
|
||||
@@ -214,7 +222,18 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
||||
}
|
||||
break;
|
||||
}
|
||||
timePanel.setLegMarkers();
|
||||
sailingService.getLegTimePositions(selectedRace.getRaceIdentifier(),
|
||||
new AsyncCallback<List<LegTimepointDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error obtaining leg timepoints: " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<LegTimepointDTO> legTimepoints) {
|
||||
timePanel.setLegMarkers(legTimepoints);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+23
@@ -89,6 +89,7 @@ import com.sap.sailing.domain.tracking.GPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.Maneuver;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
@@ -109,6 +110,7 @@ import com.sap.sailing.gwt.ui.shared.LeaderboardEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LeaderboardRowDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LegEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.LegTimepointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.ManeuverDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.MarkDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.PositionDTO;
|
||||
@@ -744,6 +746,27 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
createSpeedWithBearingDTO(speedWithBearing), tack, legType, extrapolated);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LegTimepointDTO> getLegTimePositions(RaceIdentifier raceIdentifier) {
|
||||
List<LegTimepointDTO> result = new ArrayList<LegTimepointDTO>();
|
||||
TrackedRace trackedRace = getExistingTrackedRace(raceIdentifier);
|
||||
if (trackedRace != null) {
|
||||
Iterable<TrackedLeg> trackedLegs = trackedRace.getTrackedLegs();
|
||||
int i = 1;
|
||||
for (TrackedLeg trackedLeg : trackedLegs) {
|
||||
Waypoint to = trackedLeg.getLeg().getTo();
|
||||
Iterable<MarkPassing> markPassings = trackedRace.getMarkPassingsInOrder(to);
|
||||
if(markPassings != null) {
|
||||
MarkPassing firstPassing = markPassings.iterator().next();
|
||||
LegTimepointDTO legTimepointDTO = new LegTimepointDTO("L" + i++);
|
||||
legTimepointDTO.firstPassingDate = firstPassing.getTimePoint().asDate();
|
||||
result.add(legTimepointDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MarkDTO> getMarkPositions(RaceIdentifier raceIdentifier, Date date) {
|
||||
List<MarkDTO> result = new ArrayList<MarkDTO>();
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.sap.sailing.gwt.ui.shared;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
|
||||
public class LegTimepointDTO extends NamedDTO implements IsSerializable {
|
||||
public Date firstPassingDate;
|
||||
|
||||
public Date lastPassingDate;
|
||||
|
||||
public LegTimepointDTO() {}
|
||||
|
||||
public LegTimepointDTO(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user