sorting leaderboard by race name

This commit is contained in:
Axel Uhl committed 2012-03-09 17:51:28 +01:00
1 parent a6b4ca0cb5
commit c610eac44c
4 files changed
+33 -19

No files matched your search

@@ -286,8 +286,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
for (ExpandableSortableColumn<?> expandableSortableColumn : columnsToExpandAgain) { for (ExpandableSortableColumn<?> expandableSortableColumn : columnsToExpandAgain) {
expandableSortableColumn.toggleExpansion(); expandableSortableColumn.toggleExpansion();
} }
if (newSettings.getSortByColumn() != null) { if (newSettings.getNameOfRaceToSort() != null) {
sort(newSettings.getSortByColumn(), true); sort(getRaceColumnByRaceName(newSettings.getNameOfRaceToSort()), /* ascending */ true);
} }
} }
@@ -973,11 +973,22 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
} }
contentPanel.add(getLeaderboardTable()); contentPanel.add(getLeaderboardTable());
setWidget(contentPanel); setWidget(contentPanel);
if (settings.getSortByColumn() != null) { if (settings.getNameOfRaceToSort() != null) {
sort(settings.getSortByColumn(), settings.isSortAscending()); RaceColumn<?> column = getRaceColumnByRaceName(settings.getNameOfRaceToSort());
sort(column, settings.isSortAscending());
} }
} }
private RaceColumn<?> getRaceColumnByRaceName(String raceName) {
for (int i=0; i<getLeaderboardTable().getColumnCount(); i++) {
Column<LeaderboardRowDTO, ?> column = getLeaderboardTable().getColumn(i);
if (column instanceof RaceColumn<?> && ((RaceColumn<?>) column).getRaceName().equals(raceName)) {
return (RaceColumn<?>) column;
}
}
return null;
}
private SafeHtml getPlayPauseImgHtml(PlayStates playState) { private SafeHtml getPlayPauseImgHtml(PlayStates playState) {
if (playState == PlayStates.Playing) if (playState == PlayStates.Playing)
return AbstractImagePrototype.create(pauseIcon).getSafeHtml(); return AbstractImagePrototype.create(pauseIcon).getSafeHtml();
@@ -1573,7 +1584,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
playPause.setHTML(getPlayPauseImgHtml(playState)); playPause.setHTML(getPlayPauseImgHtml(playState));
playPause.setTitle(playState == PlayStates.Playing ? stringMessages.pauseAutomaticRefresh() : stringMessages.autoRefresh()); playPause.setTitle(playState == PlayStates.Playing ? stringMessages.pauseAutomaticRefresh() : stringMessages.autoRefresh());
if (!settingsUpdatedExplicitly && playMode != oldPlayMode) { if (!settingsUpdatedExplicitly && playMode != oldPlayMode) {
updateSettings(LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(playMode)); updateSettings(LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(playMode, /* columnToSort */ null));
} }
currentlyHandlingPlayStateChange = false; currentlyHandlingPlayStateChange = false;
oldPlayMode = playMode; oldPlayMode = playMode;
@@ -3,7 +3,6 @@ package com.sap.sailing.gwt.ui.leaderboard;
import java.util.List; import java.util.List;
import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.gwt.ui.shared.LeaderboardRowDTO;
import com.sap.sailing.gwt.ui.shared.RaceInLeaderboardDTO; import com.sap.sailing.gwt.ui.shared.RaceInLeaderboardDTO;
public class LeaderboardSettings { public class LeaderboardSettings {
@@ -17,15 +16,15 @@ public class LeaderboardSettings {
/** /**
* An optional sort column; if <code>null</code>, the leaderboard sorting won't be touched when updating the settings. * An optional sort column; if <code>null</code>, the leaderboard sorting won't be touched when updating the settings.
* Otherwise, the leaderboard will be sorted by this column (ascending if {@link #sortAscending}, descending otherwise. * Otherwise, the leaderboard will be sorted by the race column (ascending if {@link #sortAscending}, descending otherwise.
*/ */
private final SortableColumn<LeaderboardRowDTO, ?> sortByColumn; private final String nameOfRaceToSort;
private final boolean sortAscending; private final boolean sortAscending;
public LeaderboardSettings(List<DetailType> meneuverDetailsToShow, List<DetailType> legDetailsToShow, public LeaderboardSettings(List<DetailType> meneuverDetailsToShow, List<DetailType> legDetailsToShow,
List<DetailType> raceDetailsToShow, List<RaceInLeaderboardDTO> raceColumnsToShow, List<DetailType> raceDetailsToShow, List<RaceInLeaderboardDTO> raceColumnsToShow,
boolean autoExpandFirstRace, Long delayBetweenAutoAdvancesInMilliseconds, Long delayInMilliseconds, boolean autoExpandFirstRace, Long delayBetweenAutoAdvancesInMilliseconds, Long delayInMilliseconds,
SortableColumn<LeaderboardRowDTO, ?> sortByColumn, boolean sortAscending) { String nameOfRaceToSort, boolean sortAscending) {
this.legDetailsToShow = legDetailsToShow; this.legDetailsToShow = legDetailsToShow;
this.raceDetailsToShow = raceDetailsToShow; this.raceDetailsToShow = raceDetailsToShow;
this.raceColumnsToShow = raceColumnsToShow; this.raceColumnsToShow = raceColumnsToShow;
@@ -33,7 +32,7 @@ public class LeaderboardSettings {
this.delayBetweenAutoAdvancesInMilliseconds = delayBetweenAutoAdvancesInMilliseconds; this.delayBetweenAutoAdvancesInMilliseconds = delayBetweenAutoAdvancesInMilliseconds;
this.delayInMilliseconds = delayInMilliseconds; this.delayInMilliseconds = delayInMilliseconds;
this.maneuverDetailsToShow = meneuverDetailsToShow; this.maneuverDetailsToShow = meneuverDetailsToShow;
this.sortByColumn = sortByColumn; this.nameOfRaceToSort = nameOfRaceToSort;
this.sortAscending = sortAscending; this.sortAscending = sortAscending;
} }
@@ -76,8 +75,8 @@ public class LeaderboardSettings {
return delayInMilliseconds; return delayInMilliseconds;
} }
public SortableColumn<LeaderboardRowDTO, ?> getSortByColumn() { public String getNameOfRaceToSort() {
return sortByColumn; return nameOfRaceToSort;
} }
public boolean isSortAscending() { public boolean isSortAscending() {
@@ -19,7 +19,10 @@ public class LeaderboardSettingsFactory {
return instance; return instance;
} }
public LeaderboardSettings createNewSettingsForPlayMode(PlayModes playMode) { /**
* @param nameOfRaceToSort if <code>null</code>, don't sort any race column
*/
public LeaderboardSettings createNewSettingsForPlayMode(PlayModes playMode, String nameOfRaceToSort) {
LeaderboardSettings settings = null; LeaderboardSettings settings = null;
switch (playMode) { switch (playMode) {
case Live: case Live:
@@ -37,7 +40,7 @@ public class LeaderboardSettingsFactory {
settings = new LeaderboardSettings(maneuverDetails, legDetails, raceDetails, settings = new LeaderboardSettings(maneuverDetails, legDetails, raceDetails,
/* don't change raceColumns */ null, true, /* don't change raceColumns */ null, true,
/* refresh interval */ null, /* delay to live */ null, /* refresh interval */ null, /* delay to live */ null,
/* sort by column */ null, /* ascending */ true); /* name of race to sort*/ nameOfRaceToSort, /* ascending */ true);
break; break;
case Replay: case Replay:
settings = createNewDefaultSettings(true); settings = createNewDefaultSettings(true);
@@ -129,7 +129,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
componentsNavigationPanel.addStyleName("raceBoardNavigation"); componentsNavigationPanel.addStyleName("raceBoardNavigation");
// create the default leaderboard and select the right race // create the default leaderboard and select the right race
LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(timer.getPlayMode()); LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(timer.getPlayMode(), /* columnToSort */ null);
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, leaderBoardSettings, selectedRaceIdentifier, competitorSelectionModel, LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, leaderBoardSettings, selectedRaceIdentifier, competitorSelectionModel,
timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgentType); timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgentType);
RaceMap raceMap = new RaceMap(sailingService, errorReporter, timer, competitorSelectionModel, stringMessages); RaceMap raceMap = new RaceMap(sailingService, errorReporter, timer, competitorSelectionModel, stringMessages);
@@ -200,10 +200,11 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
boolean showCompetitorCharts = true; boolean showCompetitorCharts = true;
// create the default leaderboard and select the right race // create the default leaderboard and select the right race
if(showLeaderboard) { if(showLeaderboard) {
LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance().createNewSettingsForPlayMode(timer.getPlayMode()); LeaderboardSettings leaderBoardSettings = LeaderboardSettingsFactory.getInstance()
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, leaderBoardSettings, selectedRaceIdentifier, competitorSelectionModel, .createNewSettingsForPlayMode(timer.getPlayMode(), /* nameOfRaceToSort */null);
timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgentType); LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, leaderBoardSettings,
selectedRaceIdentifier, competitorSelectionModel, timer, leaderboardName, leaderboardGroupName,
errorReporter, stringMessages, userAgentType);
CollapsableComponentViewer<LeaderboardSettings> leaderboardViewer = new CollapsableComponentViewer<LeaderboardSettings>( CollapsableComponentViewer<LeaderboardSettings> leaderboardViewer = new CollapsableComponentViewer<LeaderboardSettings>(
leaderboardPanel, "100%", "100%", stringMessages, ViewerPanelTypes.SCROLL_PANEL); leaderboardPanel, "100%", "100%", stringMessages, ViewerPanelTypes.SCROLL_PANEL);
componentViewers.add(leaderboardViewer); componentViewers.add(leaderboardViewer);