mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 17:36:40 +00:00
sorting leaderboard by race name
This commit is contained in:
1 parent
a6b4ca0cb5
commit
c610eac44c
4 files changed
+33
-19
No files matched your search
+16
-5
@@ -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;
|
||||
|
||||
+6
-7
@@ -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() {
|
||||
|
||||
+5
-2
@@ -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);
|
||||
|
||||
+6
-5
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user