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