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) {
|
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;
|
||||||
|
|||||||
+6
-7
@@ -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() {
|
||||||
|
|||||||
+5
-2
@@ -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);
|
||||||
|
|||||||
+6
-5
@@ -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);
|
||||||
|
|||||||
Reference in new issue
Block a user