mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-02 02:13:55 +00:00
Implemented improvements from branch bug_298, but avoided additional bugs
This commit is contained in:
1 parent
2719712031
commit
a99c13914c
1 file changed
+51
-51
+51
-51
@@ -120,7 +120,6 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
|
||||
}
|
||||
});
|
||||
|
||||
setWidget(busyIndicatorPanel);
|
||||
List<RaceIdentifier> selectedRaces = raceSelectionProvider.getSelectedRaces();
|
||||
if(!selectedRaces.isEmpty()) {
|
||||
loadData();
|
||||
@@ -191,56 +190,57 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
|
||||
}
|
||||
|
||||
private void doLoadData() {
|
||||
final List<CompetitorDTO> competitorsToLoad = new ArrayList<CompetitorDTO>();
|
||||
// Assumption: for those competitors shown in chart we already have all data that's needed (TODO: what to do in live mode?)
|
||||
// Therefore, we only need to load race data for those to be shown but not yet in the chart. Find them:
|
||||
for (CompetitorDTO competitor : competitorSelectionProvider.getAllCompetitors()) {
|
||||
if (isCompetitorVisible(competitor) && !seriesByCompetitor.keySet().contains(competitor)) {
|
||||
competitorsToLoad.add(competitor);
|
||||
}
|
||||
}
|
||||
if (competitorsToLoad != null && !competitorsToLoad.isEmpty()) {
|
||||
final CompetitorsAndTimePointsDTO competitorsAndTimePointsToLoad = new CompetitorsAndTimePointsDTO(
|
||||
getStepSize());
|
||||
competitorsAndTimePointsToLoad.setStartTime(getCompetitorsAndTimePointsDTO().getStartTime());
|
||||
competitorsAndTimePointsToLoad.setTimePointOfNewestEvent(getCompetitorsAndTimePointsDTO()
|
||||
.getTimePointOfNewestEvent());
|
||||
for (CompetitorDTO competitor : competitorsToLoad) {
|
||||
competitorsAndTimePointsToLoad.setMarkPassings(competitor, getCompetitorsAndTimePointsDTO()
|
||||
.getMarkPassings(competitor));
|
||||
}
|
||||
competitorsAndTimePointsToLoad.setCompetitors(competitorsToLoad);
|
||||
AbstractChartPanel.this.sailingService.getCompetitorRaceData(getSelectedRace(),
|
||||
competitorsAndTimePointsToLoad, getDataToShow(), new AsyncCallback<CompetitorInRaceDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(getStringMessages().failedToLoadRaceData() + ": "
|
||||
+ caught.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CompetitorInRaceDTO result) {
|
||||
fireEvent(new DataLoadedEvent());
|
||||
for (CompetitorDTO competitor : competitorsToLoad) {
|
||||
chartData.setRaceData(competitor, result.getRaceData(competitor));
|
||||
chartData.setMarkPassingData(competitor, result.getMarkPassings(competitor));
|
||||
}
|
||||
updateTableData(competitorsAndTimePointsToLoad.getCompetitors());
|
||||
setWidget(chart);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
//No data is needed to load, so display the selected competitors
|
||||
//This wouldn't be done by the AsyncCallbacks, because it never reaches the onSuccess-Method
|
||||
if (competitorSelectionProvider.getSelectedCompetitors().iterator().hasNext()) {
|
||||
final List<CompetitorDTO> competitorsToLoad = new ArrayList<CompetitorDTO>();
|
||||
List<CompetitorDTO> competitorsWhoseAlreadyLoadedDataNeedsToBeAdded = new ArrayList<CompetitorDTO>();
|
||||
// Assumption: for those competitors shown in chart we already have all data that's needed (TODO: what to do in live mode?)
|
||||
// Therefore, we only need to load race data for those to be shown but not yet in the chart. Find them:
|
||||
for (CompetitorDTO competitor : competitorSelectionProvider.getSelectedCompetitors()) {
|
||||
competitorsToLoad.add(competitor);
|
||||
if (!seriesByCompetitor.keySet().contains(competitor)) {
|
||||
competitorsToLoad.add(competitor);
|
||||
} else {
|
||||
competitorsWhoseAlreadyLoadedDataNeedsToBeAdded.add(competitor);
|
||||
}
|
||||
}
|
||||
if (!competitorsToLoad.isEmpty()) {
|
||||
setWidget(chart);
|
||||
updateTableData(competitorsToLoad);
|
||||
} else {
|
||||
setWidget(noCompetitorsSelectedLabel);
|
||||
|
||||
if (competitorsToLoad != null && !competitorsToLoad.isEmpty()) {
|
||||
final CompetitorsAndTimePointsDTO competitorsAndTimePointsToLoad = new CompetitorsAndTimePointsDTO(
|
||||
getStepSize());
|
||||
competitorsAndTimePointsToLoad.setStartTime(getCompetitorsAndTimePointsDTO().getStartTime());
|
||||
competitorsAndTimePointsToLoad.setTimePointOfNewestEvent(getCompetitorsAndTimePointsDTO()
|
||||
.getTimePointOfNewestEvent());
|
||||
for (CompetitorDTO competitor : competitorsToLoad) {
|
||||
competitorsAndTimePointsToLoad.setMarkPassings(competitor, getCompetitorsAndTimePointsDTO()
|
||||
.getMarkPassings(competitor));
|
||||
}
|
||||
competitorsAndTimePointsToLoad.setCompetitors(competitorsToLoad);
|
||||
AbstractChartPanel.this.sailingService.getCompetitorRaceData(getSelectedRace(),
|
||||
competitorsAndTimePointsToLoad, getDataToShow(), new AsyncCallback<CompetitorInRaceDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(getStringMessages().failedToLoadRaceData() + ": "
|
||||
+ caught.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CompetitorInRaceDTO result) {
|
||||
fireEvent(new DataLoadedEvent());
|
||||
for (CompetitorDTO competitor : competitorsToLoad) {
|
||||
chartData.setRaceData(competitor, result.getRaceData(competitor));
|
||||
chartData.setMarkPassingData(competitor, result.getMarkPassings(competitor));
|
||||
}
|
||||
updateTableData(competitorsAndTimePointsToLoad.getCompetitors());
|
||||
setWidget(chart);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (competitorsWhoseAlreadyLoadedDataNeedsToBeAdded != null
|
||||
&& !competitorsWhoseAlreadyLoadedDataNeedsToBeAdded.isEmpty()) {
|
||||
updateTableData(competitorsWhoseAlreadyLoadedDataNeedsToBeAdded);
|
||||
}
|
||||
} else {
|
||||
setWidget(noCompetitorsSelectedLabel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,8 +268,7 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
|
||||
if (competitorMarkPassingSeries != null) {
|
||||
chart.removeSeries(competitorMarkPassingSeries);
|
||||
}
|
||||
if (competitorSelectionProvider.getSelectedCompetitors() == null
|
||||
|| !competitorSelectionProvider.getSelectedCompetitors().iterator().hasNext()) {
|
||||
if (!competitorSelectionProvider.getSelectedCompetitors().iterator().hasNext()) {
|
||||
setWidget(noCompetitorsSelectedLabel);
|
||||
}
|
||||
}
|
||||
@@ -277,7 +276,8 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
|
||||
private synchronized void updateTableData(List<CompetitorDTO> competitors) {
|
||||
//Make sure the busy indicator is removed at this point, or plotting the data results in an exception
|
||||
setWidget(chart);
|
||||
if (getCompetitorsAndTimePointsDTO() != null && chartData != null) {
|
||||
if (getCompetitorsAndTimePointsDTO() != null && chartData != null
|
||||
&& competitors != null && !competitors.isEmpty()) {
|
||||
//Clearing the series to keep the chart clean
|
||||
chart.removeAllSeries();
|
||||
for (CompetitorDTO competitor : competitors) {
|
||||
|
||||
Reference in new issue
Block a user