mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-03 19:03:52 +00:00
Merge remote-tracking branch 'server/master'
This commit is contained in:
commit
e4350351bc
9 files changed
+72
-12
No files matched your search
+1
-1
@@ -206,7 +206,7 @@ public class RaceColumnInRegattaSeriesDialog extends DataEntryDialog<Pair<Series
|
||||
raceNamePrefixTextBox.setText(seriesName.substring(0, 1).toUpperCase());
|
||||
}
|
||||
} else {
|
||||
seriesListBox.addItem("Please select a series");
|
||||
seriesListBox.addItem(stringMessages.pleaseSelectASeries());
|
||||
for (SeriesDTO series : regatta.series) {
|
||||
seriesListBox.addItem(series.name);
|
||||
}
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import com.sap.sailing.gwt.ui.shared.RaceTimesInfoDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
|
||||
|
||||
public class RaceTimePanel extends TimePanel<RaceTimePanelSettings> implements RaceSelectionChangeListener, RaceTimesInfoProviderListener {
|
||||
private RaceTimesInfoProvider raceTimesInfoProvider;
|
||||
private final RaceTimesInfoProvider raceTimesInfoProvider;
|
||||
private RegattaAndRaceIdentifier selectedRace;
|
||||
private boolean autoAdjustPlayMode;
|
||||
private RaceTimesInfoDTO lastRaceTimesInfo;
|
||||
|
||||
+1
@@ -407,4 +407,5 @@ public interface StringMessages extends Messages {
|
||||
String unsuppress();
|
||||
String suppressedCompetitors();
|
||||
String pleaseSelectASeries();
|
||||
String pleaseSelectARace();
|
||||
}
|
||||
+2
-1
@@ -407,4 +407,5 @@ isPublic=Is public
|
||||
suppress=Suppress
|
||||
unsuppress=Unsuppress
|
||||
suppressedCompetitors=Suppressed Competitors
|
||||
pleaseSelectASeries=Please select a series.
|
||||
pleaseSelectASeries=Please select a series
|
||||
pleaseSelectARace=Please select a race
|
||||
+2
-1
@@ -408,4 +408,5 @@ isPublic=Öffentlich zugänglich
|
||||
suppress=Entfernen
|
||||
unsuppress=Wieder hinzufügen
|
||||
suppressedCompetitors=Unterdrückte Wettkampfteilnehmer
|
||||
pleaseSelectASeries=Bitte wählen Sie eine Serie aus.
|
||||
pleaseSelectASeries=Bitte wählen Sie eine Serie aus
|
||||
pleaseSelectARace=Bitte wählen Sie ein Rennen aus
|
||||
+62
-7
@@ -1,27 +1,37 @@
|
||||
package com.sap.sailing.gwt.ui.leaderboard;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.gwt.dom.client.Style.Float;
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.RaceSelectionModel;
|
||||
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.client.RaceTimesCalculationUtil;
|
||||
import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider;
|
||||
import com.sap.sailing.gwt.ui.client.RaceTimesInfoProviderListener;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.TimeRangeChangeListener;
|
||||
import com.sap.sailing.gwt.ui.client.TimeRangeWithZoomModel;
|
||||
import com.sap.sailing.gwt.ui.client.TimeRangeWithZoomProvider;
|
||||
import com.sap.sailing.gwt.ui.client.Timer;
|
||||
import com.sap.sailing.gwt.ui.shared.RaceTimesInfoDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.charts.MultiChartPanel;
|
||||
import com.sap.sailing.gwt.ui.shared.charts.MultiChartSettings;
|
||||
import com.sap.sailing.gwt.ui.shared.components.ComponentToolbar;
|
||||
@@ -32,27 +42,36 @@ import com.sap.sailing.gwt.ui.shared.components.ComponentToolbar;
|
||||
* @author Benjamin Ebling, Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public class CompareCompetitorsChartDialog extends DialogBoxExt {
|
||||
public class CompareCompetitorsChartDialog extends DialogBoxExt implements RaceTimesInfoProviderListener {
|
||||
private final RaceSelectionProvider raceSelectionProvider;
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final TimeRangeWithZoomProvider timeRangeWithZoomProvider;
|
||||
private final Timer timer;
|
||||
private final ErrorReporter errorReporter;
|
||||
|
||||
private final MultiChartPanel multiChartPanel;
|
||||
|
||||
final ListBox racesListBox;
|
||||
private final ListBox racesListBox;
|
||||
|
||||
public CompareCompetitorsChartDialog(SailingServiceAsync sailingService,
|
||||
List<RegattaAndRaceIdentifier> races, final CompetitorSelectionProvider competitorSelectionProvider, Timer timer,
|
||||
StringMessages stringConstants, ErrorReporter errorReporter) {
|
||||
List<RegattaAndRaceIdentifier> races, final RaceTimesInfoProvider raceTimesInfoProvider, final CompetitorSelectionProvider competitorSelectionProvider,
|
||||
Timer timer, StringMessages stringConstants, ErrorReporter errorReporter) {
|
||||
super(new Label(stringConstants.close()));
|
||||
this.sailingService = sailingService;
|
||||
this.timer = timer;
|
||||
this.errorReporter = errorReporter;
|
||||
this.timeRangeWithZoomProvider = new TimeRangeWithZoomModel();
|
||||
this.setPopupPosition(15, 15);
|
||||
this.setHTML(stringConstants.compareCompetitors());
|
||||
this.setWidth(Window.getClientWidth() - 250 + "px");
|
||||
this.setAnimationEnabled(true);
|
||||
|
||||
raceTimesInfoProvider.addRaceTimesInfoProviderListener(this);
|
||||
raceSelectionProvider = new RaceSelectionModel();
|
||||
raceSelectionProvider.setAllRaces(races);
|
||||
|
||||
multiChartPanel = new MultiChartPanel(sailingService, new AsyncActionsExecutor(), competitorSelectionProvider, raceSelectionProvider,
|
||||
timer, new TimeRangeWithZoomModel(), stringConstants, errorReporter, false, false);
|
||||
timer, timeRangeWithZoomProvider, stringConstants, errorReporter, false, false);
|
||||
multiChartPanel.setSize("100%", "100%");
|
||||
|
||||
VerticalPanel contentPanel = new VerticalPanel();
|
||||
@@ -66,7 +85,7 @@ public class CompareCompetitorsChartDialog extends DialogBoxExt {
|
||||
HorizontalPanel raceSelectionPanel = new HorizontalPanel();
|
||||
raceSelectionPanel.setSpacing(3);
|
||||
racesListBox = new ListBox();
|
||||
raceSelectionPanel.add(new Label("Select a race:"));
|
||||
raceSelectionPanel.add(new Label(stringConstants.pleaseSelectARace() + ":"));
|
||||
raceSelectionPanel.add(racesListBox);
|
||||
for (RegattaAndRaceIdentifier race : raceSelectionProvider.getAllRaces()) {
|
||||
racesListBox.addItem(race.toString());
|
||||
@@ -101,7 +120,43 @@ public class CompareCompetitorsChartDialog extends DialogBoxExt {
|
||||
}
|
||||
|
||||
private void selectRace(final RegattaAndRaceIdentifier selectedRace) {
|
||||
raceSelectionProvider.setSelection(Collections.singletonList(selectedRace));
|
||||
sailingService.getRaceTimesInfo(selectedRace, new AsyncCallback<RaceTimesInfoDTO>() {
|
||||
@Override
|
||||
public void onSuccess(RaceTimesInfoDTO raceTimesInfo) {
|
||||
updateMinMax(raceTimesInfo);
|
||||
raceSelectionProvider.setSelection(Collections.singletonList(selectedRace));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error obtaining race times: " + caught.getMessage(), true /*silentMode */);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void updateMinMax(RaceTimesInfoDTO newRaceTimesInfo) {
|
||||
Pair<Date, Date> raceMinMax = RaceTimesCalculationUtil.caluclateRaceMinMax(timer, newRaceTimesInfo);
|
||||
|
||||
Date min = raceMinMax.getA();
|
||||
Date max = raceMinMax.getB();
|
||||
|
||||
// never reduce max if it was already set
|
||||
if (min != null && max != null && (timeRangeWithZoomProvider.getToTime() == null || timeRangeWithZoomProvider.getToTime().before(max))) {
|
||||
timeRangeWithZoomProvider.setTimeRange(min, max, new TimeRangeChangeListener[0]);
|
||||
}
|
||||
}
|
||||
|
||||
private RegattaAndRaceIdentifier getSelectedRace() {
|
||||
return raceSelectionProvider.getSelectedRaces().size() > 0 ? raceSelectionProvider.getSelectedRaces().get(0) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void raceTimesInfosReceived(Map<RegattaAndRaceIdentifier, RaceTimesInfoDTO> raceTimesInfos) {
|
||||
RegattaAndRaceIdentifier selectedRace = getSelectedRace();
|
||||
if(selectedRace != null) {
|
||||
updateMinMax(raceTimesInfos.get(selectedRace));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+3
-1
@@ -63,6 +63,7 @@ import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.FlagImageResolver;
|
||||
import com.sap.sailing.gwt.ui.client.PlayStateListener;
|
||||
import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.TimeListener;
|
||||
@@ -2025,7 +2026,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
Window.alert(stringMessages.selectAtLeastOneCompetitor());
|
||||
} else {
|
||||
List<RegattaAndRaceIdentifier> races = getTrackedRacesIdentifiers();
|
||||
CompareCompetitorsChartDialog chartDialog = new CompareCompetitorsChartDialog(sailingService, races,
|
||||
RaceTimesInfoProvider raceTimesInfoProvider = new RaceTimesInfoProvider(sailingService, errorReporter, races, 5000l /* requestInterval*/);
|
||||
CompareCompetitorsChartDialog chartDialog = new CompareCompetitorsChartDialog(sailingService, races, raceTimesInfoProvider,
|
||||
competitorSelectionProvider, timer, stringMessages, errorReporter);
|
||||
chartDialog.show();
|
||||
}
|
||||
|
||||
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Reference in new issue
Block a user