mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-02 10:23:51 +00:00
copy the settings collections to avoid them overwriting themselves during LeaderboardPanel.updateSettings
Change-Id: Iad76b1fafafb5f39391744a276ee0ed95af43f95
This commit is contained in:
1 parent
55e5c77d7e
commit
e062301155
9 files changed
+70
-32
No files matched your search
+6
-6
@@ -68,7 +68,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
|
||||
protected final SailingServiceAsync sailingService;
|
||||
|
||||
protected final ListDataProvider<StrippedLeaderboardDTO> leaderboardList;
|
||||
protected final ListDataProvider<StrippedLeaderboardDTO> filteredLeaderboardList;
|
||||
|
||||
protected final ErrorReporter errorReporter;
|
||||
|
||||
@@ -139,7 +139,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
StringMessages theStringConstants, boolean multiSelection) {
|
||||
this.stringMessages = theStringConstants;
|
||||
this.sailingService = sailingService;
|
||||
leaderboardList = new ListDataProvider<StrippedLeaderboardDTO>();
|
||||
filteredLeaderboardList = new ListDataProvider<StrippedLeaderboardDTO>();
|
||||
allRegattas = new ArrayList<RegattaDTO>();
|
||||
this.errorReporter = errorReporter;
|
||||
this.leaderboardsRefresher = leaderboardsRefresher;
|
||||
@@ -165,7 +165,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
|
||||
leaderboardTable = new FlushableCellTable<StrippedLeaderboardDTO>(/* pageSize */10000, tableRes);
|
||||
filterLeaderboardPanel = new LabeledAbstractFilterablePanel<StrippedLeaderboardDTO>(lblFilterEvents,
|
||||
availableLeaderboardList, leaderboardTable, leaderboardList) {
|
||||
availableLeaderboardList, leaderboardTable, filteredLeaderboardList) {
|
||||
@Override
|
||||
public List<String> getSearchableStrings(StrippedLeaderboardDTO t) {
|
||||
List<String> strings = new ArrayList<String>();
|
||||
@@ -191,7 +191,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
raceColumnTable.setSelectedLeaderboardName(getSelectedLeaderboardName());
|
||||
}
|
||||
});
|
||||
leaderboardList.addDataDisplay(leaderboardTable);
|
||||
filteredLeaderboardList.addDataDisplay(leaderboardTable);
|
||||
leaderboardsPanel.add(leaderboardTable);
|
||||
mainPanel.add(new Grid(1, 1));
|
||||
|
||||
@@ -351,7 +351,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
filterLeaderboardPanel.updateAll(availableLeaderboardList); // also updates leaderboardList provider
|
||||
leaderboardSelectionModel.setSelected(leaderboard, true);
|
||||
leaderboardSelectionChanged();
|
||||
getLeaderboardsRefresher().updateLeaderboards(leaderboardList.getList(), AbstractLeaderboardConfigPanel.this);
|
||||
getLeaderboardsRefresher().updateLeaderboards(filteredLeaderboardList.getList(), AbstractLeaderboardConfigPanel.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -499,7 +499,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
|
||||
@Override
|
||||
public void racesRemoved(Iterable<? extends RegattaAndRaceIdentifier> regattaAndRaceIdentifiers) {
|
||||
for (RegattaAndRaceIdentifier regattaAndRaceIdentifier : regattaAndRaceIdentifiers) {
|
||||
for (StrippedLeaderboardDTO leaderboard : leaderboardList.getList()) {
|
||||
for (StrippedLeaderboardDTO leaderboard : filteredLeaderboardList.getList()) {
|
||||
for (RaceColumnDTO raceColumn : leaderboard.getRaceList()) {
|
||||
for (FleetDTO fleet : raceColumn.getFleets()) {
|
||||
if (Util.equalsWithNull(raceColumn.getRaceIdentifier(fleet), regattaAndRaceIdentifier)) {
|
||||
|
||||
+7
-7
@@ -130,7 +130,7 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
protected void addColumnsToLeaderboardTableAndSetSelectionModel(final FlushableCellTable<StrippedLeaderboardDTO> leaderboardTable,
|
||||
AdminConsoleTableResources tableResources, ListDataProvider<StrippedLeaderboardDTO> listDataProvider) {
|
||||
ListHandler<StrippedLeaderboardDTO> leaderboardColumnListHandler = new ListHandler<StrippedLeaderboardDTO>(
|
||||
leaderboardList.getList());
|
||||
filteredLeaderboardList.getList());
|
||||
SelectionCheckboxColumn<StrippedLeaderboardDTO> selectionCheckboxColumn = createSortableSelectionCheckboxColumn(
|
||||
leaderboardTable, tableResources, leaderboardColumnListHandler, listDataProvider);
|
||||
AnchorCell anchorCell = new AnchorCell();
|
||||
@@ -778,7 +778,7 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
}
|
||||
|
||||
private void addLeaderboard(StrippedLeaderboardDTO result) {
|
||||
leaderboardList.getList().add(result);
|
||||
filteredLeaderboardList.getList().add(result);
|
||||
availableLeaderboardList.add(result);
|
||||
leaderboardSelectionModel.clear();
|
||||
leaderboardSelectionModel.setSelected(result, true);
|
||||
@@ -796,15 +796,15 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
@Override
|
||||
public void onSuccess(StrippedLeaderboardDTO updatedLeaderboard) {
|
||||
int indexOfLeaderboard = 0;
|
||||
for (int i = 0; i < leaderboardList.getList().size(); i++) {
|
||||
StrippedLeaderboardDTO dao = leaderboardList.getList().get(i);
|
||||
for (int i = 0; i < filteredLeaderboardList.getList().size(); i++) {
|
||||
StrippedLeaderboardDTO dao = filteredLeaderboardList.getList().get(i);
|
||||
if (dao.name.equals(oldLeaderboardName)) {
|
||||
indexOfLeaderboard = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
leaderboardList.getList().set(indexOfLeaderboard, updatedLeaderboard);
|
||||
leaderboardList.refresh();
|
||||
filteredLeaderboardList.getList().set(indexOfLeaderboard, updatedLeaderboard);
|
||||
filteredLeaderboardList.refresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -850,7 +850,7 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
|
||||
}
|
||||
|
||||
private void removeLeaderboardFromTable(final StrippedLeaderboardDTO leaderBoard) {
|
||||
leaderboardList.getList().remove(leaderBoard);
|
||||
filteredLeaderboardList.getList().remove(leaderBoard);
|
||||
availableLeaderboardList.remove(leaderBoard);
|
||||
leaderboardSelectionModel.setSelected(leaderBoard, false);
|
||||
}
|
||||
|
||||
+1
-1
@@ -110,7 +110,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
|
||||
protected void addColumnsToLeaderboardTableAndSetSelectionModel(FlushableCellTable<StrippedLeaderboardDTO> leaderboardTable,
|
||||
AdminConsoleTableResources tableResources, ListDataProvider<StrippedLeaderboardDTO> listDataProvider) {
|
||||
ListHandler<StrippedLeaderboardDTO> leaderboardColumnListHandler = new ListHandler<StrippedLeaderboardDTO>(
|
||||
leaderboardList.getList());
|
||||
filteredLeaderboardList.getList());
|
||||
SelectionCheckboxColumn<StrippedLeaderboardDTO> selectionCheckboxColumn = createSortableSelectionCheckboxColumn(
|
||||
leaderboardTable, tableResources, leaderboardColumnListHandler, listDataProvider);
|
||||
TextColumn<StrippedLeaderboardDTO> leaderboardNameColumn = new TextColumn<StrippedLeaderboardDTO>() {
|
||||
|
||||
+16
-2
@@ -137,25 +137,38 @@ public class LeaderboardSettings extends AbstractSettings {
|
||||
this.showOverallColumnWithNumberOfRacesCompletedPerCompetitor = showOverallColumnWithNumberOfRacesCompletedPerCompetitor;
|
||||
}
|
||||
|
||||
/**
|
||||
* A live collection that reflects the current state of the settings of a leaderboard panel
|
||||
*/
|
||||
public List<DetailType> getManeuverDetailsToShow() {
|
||||
return maneuverDetailsToShow;
|
||||
}
|
||||
|
||||
/**
|
||||
* A live collection that reflects the current state of the settings of a leaderboard panel
|
||||
*/
|
||||
public List<DetailType> getLegDetailsToShow() {
|
||||
return legDetailsToShow;
|
||||
}
|
||||
|
||||
/**
|
||||
* A live collection that reflects the current state of the settings of a leaderboard panel
|
||||
*/
|
||||
public List<DetailType> getRaceDetailsToShow() {
|
||||
return raceDetailsToShow;
|
||||
}
|
||||
|
||||
/**
|
||||
* A live collection that reflects the current state of the settings of a leaderboard panel
|
||||
*/
|
||||
public List<DetailType> getOverallDetailsToShow() {
|
||||
return overallDetailsToShow;
|
||||
}
|
||||
|
||||
/**
|
||||
* If <code>null</code>, this is to mean that the race columns should not be modified by
|
||||
* {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}.
|
||||
* {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. Otherwise a
|
||||
* live collection that reflects the current state of the settings of a leaderboard panel
|
||||
*/
|
||||
public List<String> getNamesOfRaceColumnsToShow() {
|
||||
return activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT ? namesOfRaceColumnsToShow : null;
|
||||
@@ -163,7 +176,8 @@ public class LeaderboardSettings extends AbstractSettings {
|
||||
|
||||
/**
|
||||
* If <code>null</code>, this is to mean that the race columns should not be modified by
|
||||
* {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}.
|
||||
* {@link LeaderboardPanel#updateSettings(LeaderboardSettings)}. Otherwise
|
||||
* a live collection that reflects the current state of the settings of a leaderboard panel
|
||||
*/
|
||||
public List<String> getNamesOfRacesToShow() {
|
||||
return activeRaceColumnSelectionStrategy == RaceColumnSelectionStrategies.EXPLICIT ? namesOfRacesToShow : null;
|
||||
|
||||
+7
-4
@@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.common.DetailType;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.gwt.client.player.Timer.PlayModes;
|
||||
import com.sap.sse.gwt.client.player.Timer.PlayStates;
|
||||
|
||||
@@ -48,10 +49,12 @@ public class FullAnalysisMode extends AbstractRaceBoardMode {
|
||||
raceDetailsToShow.add(DetailType.RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS);
|
||||
raceDetailsToShow.add(DetailType.RACE_DISTANCE_TRAVELED);
|
||||
raceDetailsToShow.add(DetailType.RACE_GAP_TO_LEADER_IN_SECONDS);
|
||||
final LeaderboardSettings newSettings = new LeaderboardSettings(existingSettings.getManeuverDetailsToShow(),
|
||||
existingSettings.getLegDetailsToShow(),
|
||||
raceDetailsToShow, existingSettings.getOverallDetailsToShow(), existingSettings.getNamesOfRaceColumnsToShow(),
|
||||
existingSettings.getNamesOfRacesToShow(),
|
||||
final LeaderboardSettings newSettings = new LeaderboardSettings(
|
||||
Util.cloneListOrNull(existingSettings.getManeuverDetailsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getLegDetailsToShow()),
|
||||
raceDetailsToShow, Util.cloneListOrNull(existingSettings.getOverallDetailsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getNamesOfRaceColumnsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getNamesOfRacesToShow()),
|
||||
existingSettings.getNumberOfLastRacesToShow(), /* auto-expand pre-selected race */ true,
|
||||
existingSettings.getDelayBetweenAutoAdvancesInMilliseconds(),
|
||||
existingSettings.getNameOfRaceToSort(), existingSettings.isSortAscending(),
|
||||
|
||||
+8
-4
@@ -6,6 +6,7 @@ import java.util.List;
|
||||
import com.sap.sailing.domain.common.DetailType;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.gwt.client.player.Timer.PlayModes;
|
||||
import com.sap.sse.gwt.client.player.Timer.PlayStates;
|
||||
@@ -29,10 +30,13 @@ public class PlayerMode extends AbstractRaceBoardMode {
|
||||
final List<DetailType> raceDetailsToShow = new ArrayList<>(existingSettings.getRaceDetailsToShow());
|
||||
raceDetailsToShow.add(DetailType.RACE_CURRENT_SPEED_OVER_GROUND_IN_KNOTS);
|
||||
raceDetailsToShow.add(DetailType.RACE_GAP_TO_LEADER_IN_SECONDS);
|
||||
final LeaderboardSettings newSettings = new LeaderboardSettings(existingSettings.getManeuverDetailsToShow(),
|
||||
existingSettings.getLegDetailsToShow(),
|
||||
raceDetailsToShow, existingSettings.getOverallDetailsToShow(), existingSettings.getNamesOfRaceColumnsToShow(),
|
||||
existingSettings.getNamesOfRacesToShow(),
|
||||
final LeaderboardSettings newSettings = new LeaderboardSettings(
|
||||
Util.cloneListOrNull(existingSettings.getManeuverDetailsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getLegDetailsToShow()),
|
||||
raceDetailsToShow,
|
||||
Util.cloneListOrNull(existingSettings.getOverallDetailsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getNamesOfRaceColumnsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getNamesOfRacesToShow()),
|
||||
existingSettings.getNumberOfLastRacesToShow(), /* auto-expand pre-selected race */ true,
|
||||
existingSettings.getDelayBetweenAutoAdvancesInMilliseconds(),
|
||||
existingSettings.getNameOfRaceToSort(), existingSettings.isSortAscending(),
|
||||
|
||||
+8
-4
@@ -19,6 +19,7 @@ import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapZoomSettings;
|
||||
import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapZoomSettings.ZoomTypes;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.gwt.client.player.Timer.PlayModes;
|
||||
import com.sap.sse.gwt.client.player.Timer.PlayStates;
|
||||
@@ -167,10 +168,13 @@ public class StartAnalysisMode extends RaceBoardModeWithPerRaceCompetitors {
|
||||
raceDetailsToShow.add(DetailType.START_TACK);
|
||||
raceDetailsToShow.add(DetailType.RACE_GAP_TO_LEADER_IN_SECONDS);
|
||||
raceDetailsToShow.remove(DetailType.DISPLAY_LEGS);
|
||||
final LeaderboardSettings newSettings = new LeaderboardSettings(existingSettings.getManeuverDetailsToShow(),
|
||||
existingSettings.getLegDetailsToShow(),
|
||||
raceDetailsToShow, existingSettings.getOverallDetailsToShow(), existingSettings.getNamesOfRaceColumnsToShow(),
|
||||
existingSettings.getNamesOfRacesToShow(),
|
||||
final LeaderboardSettings newSettings = new LeaderboardSettings(
|
||||
Util.cloneListOrNull(existingSettings.getManeuverDetailsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getLegDetailsToShow()),
|
||||
Util.cloneListOrNull(raceDetailsToShow),
|
||||
Util.cloneListOrNull(existingSettings.getOverallDetailsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getNamesOfRaceColumnsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getNamesOfRacesToShow()),
|
||||
existingSettings.getNumberOfLastRacesToShow(), /* auto-expand pre-selected race */ true,
|
||||
existingSettings.getDelayBetweenAutoAdvancesInMilliseconds(),
|
||||
existingSettings.getNameOfRaceToSort(), existingSettings.isSortAscending(),
|
||||
|
||||
+7
-4
@@ -44,10 +44,13 @@ public class WinningLanesMode extends RaceBoardModeWithPerRaceCompetitors {
|
||||
raceDetailsToShow.add(DetailType.RACE_DISTANCE_TRAVELED);
|
||||
raceDetailsToShow.add(DetailType.RACE_TIME_TRAVELED);
|
||||
raceDetailsToShow.remove(DetailType.DISPLAY_LEGS);
|
||||
final LeaderboardSettings newSettings = new LeaderboardSettings(existingSettings.getManeuverDetailsToShow(),
|
||||
existingSettings.getLegDetailsToShow(),
|
||||
raceDetailsToShow, existingSettings.getOverallDetailsToShow(), existingSettings.getNamesOfRaceColumnsToShow(),
|
||||
existingSettings.getNamesOfRacesToShow(),
|
||||
final LeaderboardSettings newSettings = new LeaderboardSettings(
|
||||
Util.cloneListOrNull(existingSettings.getManeuverDetailsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getLegDetailsToShow()),
|
||||
raceDetailsToShow,
|
||||
Util.cloneListOrNull(existingSettings.getOverallDetailsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getNamesOfRaceColumnsToShow()),
|
||||
Util.cloneListOrNull(existingSettings.getNamesOfRacesToShow()),
|
||||
existingSettings.getNumberOfLastRacesToShow(), /* auto-expand pre-selected race */ true,
|
||||
existingSettings.getDelayBetweenAutoAdvancesInMilliseconds(),
|
||||
existingSettings.getNameOfRaceToSort(), existingSettings.isSortAscending(),
|
||||
|
||||
@@ -504,4 +504,14 @@ public class Util {
|
||||
addAll(visibleCourseAreas, list);
|
||||
return list;
|
||||
}
|
||||
|
||||
public static <T> List<T> cloneListOrNull(List<T> list) {
|
||||
final List<T> result;
|
||||
if (list == null) {
|
||||
result = null;
|
||||
} else {
|
||||
result = new ArrayList<T>(list);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user