mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-24 04:53:54 +00:00
Merge remote-tracking branch 'server/raceboardmodes' into raceboardmodes
This commit is contained in:
commit
82d9b3cf63
5 files changed
+48
-13
No files matched your search
+12
@@ -155,4 +155,16 @@ public class SimpleRaceMetadataDTO implements DTO, Comparable<SimpleRaceMetadata
|
||||
public boolean isFinished() {
|
||||
return getViewState() == RaceViewState.FINISHED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to check if this {@link SimpleRaceMetadataDTO race} is currently running.
|
||||
*
|
||||
* @return <code>true</code> if the {@link #getViewState() view state} is {@link RaceViewState#RUNNING},
|
||||
* <code>false</code> otherwise
|
||||
*/
|
||||
public boolean isRunning() {
|
||||
return getViewState() == RaceViewState.FINISHED;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+18
-3
@@ -4,7 +4,9 @@ import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.DivElement;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.Event;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.PopupPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.home.communication.race.SimpleRaceMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
@@ -18,8 +20,10 @@ public abstract class RaceviewerLaunchPad extends Composite {
|
||||
|
||||
@UiField RaceviewerLaunchPadResources local_res;
|
||||
@UiField DivElement itemContainerUi;
|
||||
private final PopupPanel parent;
|
||||
|
||||
public RaceviewerLaunchPad(SimpleRaceMetadataDTO data) {
|
||||
public RaceviewerLaunchPad(SimpleRaceMetadataDTO data, final PopupPanel parent) {
|
||||
this.parent = parent;
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
local_res.css().ensureInjected();
|
||||
if (!data.isFinished()) {
|
||||
@@ -27,10 +31,21 @@ public abstract class RaceviewerLaunchPad extends Composite {
|
||||
addItem(data, RaceviewerLaunchPadMenuItem.WATCH_LIVE);
|
||||
} else {
|
||||
addItem(data, RaceviewerLaunchPadMenuItem.REPLAY);
|
||||
addItem(data, RaceviewerLaunchPadMenuItem.RACE_ANALYSIS);
|
||||
}
|
||||
if (data.isRunning() || data.isFinished()) {
|
||||
addItem(data, RaceviewerLaunchPadMenuItem.START_ANALYSIS);
|
||||
}
|
||||
addItem(data, RaceviewerLaunchPadMenuItem.RACE_ANALYSIS);
|
||||
addItem(data, RaceviewerLaunchPadMenuItem.START_ANALYSIS);
|
||||
addItem(data, RaceviewerLaunchPadMenuItem.WINNING_LANES);
|
||||
sinkEvents(Event.ONCLICK);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBrowserEvent(final Event event) {
|
||||
if (event.getTypeInt() == Event.ONCLICK) {
|
||||
parent.hide();
|
||||
}
|
||||
super.onBrowserEvent(event);
|
||||
}
|
||||
|
||||
private void addItem(SimpleRaceMetadataDTO data, RaceviewerLaunchPadMenuItem item) {
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ public class RaceviewerLaunchPadCell<T extends RaceMetadataDTO<?>> extends Abstr
|
||||
ValueUpdater<T> valueUpdater) {
|
||||
if (data.hasValidTrackingData() && BrowserEvents.CLICK.equals(event.getType())
|
||||
&& parent.getFirstChildElement().isOrHasChild(Element.as(event.getEventTarget()))) {
|
||||
panel.setWidget(new RaceviewerLaunchPad(data) {
|
||||
panel.setWidget(new RaceviewerLaunchPad(data, panel) {
|
||||
@Override
|
||||
protected String getRaceViewerURL(SimpleRaceMetadataDTO data, String mode) {
|
||||
return presenter.getRaceViewerURL(data, mode);
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ public abstract class AbstractRegattaCompetitionFleetRace extends Widget impleme
|
||||
public void onBrowserEvent(Event event) {
|
||||
if (race.hasValidTrackingData() && event.getTypeInt() == Event.ONCLICK) {
|
||||
this.getElement().scrollIntoView();
|
||||
panel.setWidget(new RaceviewerLaunchPad(race) {
|
||||
panel.setWidget(new RaceviewerLaunchPad(race, panel) {
|
||||
@Override
|
||||
protected String getRaceViewerURL(SimpleRaceMetadataDTO data, String mode) {
|
||||
return presenter.getRaceViewerURL(data, mode);
|
||||
|
||||
+16
-8
@@ -117,7 +117,9 @@ public class StartAnalysisMode extends RaceBoardModeWithPerRaceCompetitors {
|
||||
setLeaderboard(result);
|
||||
getLeaderboardPanel().updateLeaderboard(result);
|
||||
updateCompetitorSelection();
|
||||
getRaceBoardPanel().setCompetitorChartVisible(true);
|
||||
if (isCompetitorChartEnabled()) {
|
||||
getRaceBoardPanel().setCompetitorChartVisible(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
|
||||
@@ -127,13 +129,15 @@ public class StartAnalysisMode extends RaceBoardModeWithPerRaceCompetitors {
|
||||
// settings is largely more successful because
|
||||
boolean result = getRaceBoardPanel().getMap().getSimulationOverlay() == null;
|
||||
if (!result) {
|
||||
final MultiCompetitorRaceChartSettings newCompetitorChartSettings = new MultiCompetitorRaceChartSettings(
|
||||
new ChartSettings(/* stepSizeInMillis */ 1000), DetailType.RACE_CURRENT_SPEED_OVER_GROUND_IN_KNOTS,
|
||||
/* no second series */ null);
|
||||
competitorChart.updateSettings(newCompetitorChartSettings);
|
||||
getRaceTimePanel().getTimeRangeProvider().setTimeZoom(
|
||||
new MillisecondsTimePoint(raceTimesInfo.startOfRace).minus(DURATION_BEFORE_START_TO_INCLUDE_IN_CHART_TIME_RANGE).asDate(),
|
||||
new MillisecondsTimePoint(raceTimesInfo.startOfRace).plus(DURATION_AFTER_START_TO_INCLUDE_IN_CHART_TIME_RANGE).asDate());
|
||||
if (isCompetitorChartEnabled()) {
|
||||
final MultiCompetitorRaceChartSettings newCompetitorChartSettings = new MultiCompetitorRaceChartSettings(
|
||||
new ChartSettings(/* stepSizeInMillis */ 1000), DetailType.RACE_CURRENT_SPEED_OVER_GROUND_IN_KNOTS,
|
||||
/* no second series */ null);
|
||||
competitorChart.updateSettings(newCompetitorChartSettings);
|
||||
getRaceTimePanel().getTimeRangeProvider().setTimeZoom(
|
||||
new MillisecondsTimePoint(raceTimesInfo.startOfRace).minus(DURATION_BEFORE_START_TO_INCLUDE_IN_CHART_TIME_RANGE).asDate(),
|
||||
new MillisecondsTimePoint(raceTimesInfo.startOfRace).plus(DURATION_AFTER_START_TO_INCLUDE_IN_CHART_TIME_RANGE).asDate());
|
||||
}
|
||||
final RaceMapSettings existingMapSettings = getRaceBoardPanel().getMap().getSettings();
|
||||
final RaceMapSettings newMapSettings = new RaceMapSettings(
|
||||
new RaceMapZoomSettings(Collections.singleton(ZoomTypes.BOATS), /* zoomToSelected */ false),
|
||||
@@ -213,5 +217,9 @@ public class StartAnalysisMode extends RaceBoardModeWithPerRaceCompetitors {
|
||||
showCompetitorChartIfAllDataReceived();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isCompetitorChartEnabled() {
|
||||
return competitorChart != null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user