added leaderboard settings support for overall leaderboard on same page; nothing loaded/displayed yet

This commit is contained in:
Axel Uhl committed 2012-12-05 15:02:53 +01:00
1 parent 20c576634d
commit 96b10a62d8
14 files changed
+97 -34

No files matched your search

@@ -18,7 +18,8 @@ public class LeaderboardPanelMock extends LeaderboardPanel {
String leaderboardName, ErrorReporter errorReporter,
StringMessages stringConstants) {
super(sailingService, null, LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
/* racesToShow */null, /* namesOfRacesToShow */ null, null, /* autoExpandFirstRace */false), new CompetitorSelectionModel(
/* racesToShow */null, /* namesOfRacesToShow */ null, null, /* autoExpandFirstRace */ false,
/* showMetaLeaderboardsOnSamePage */ false), new CompetitorSelectionModel(
/* hasMultiSelection */true), leaderboardName, null, errorReporter, stringConstants, null, /* showRaceDetails */ true);
}
@@ -439,4 +439,6 @@ public interface StringMessages extends Messages {
String rankNAfterRace(long l, String string);
String afterRace();
String showRankChart();
String overallLeaderboardSelection();
String showOverallLeaderboardOnSamePage();
}
@@ -439,4 +439,6 @@ errorFetchingRankingChartData=Error fetching ranking chart data: {0}
loadingCompetitorData=Loading competitor data...
rankNAfterRace=Rank {0} after race {1}
afterRace=after race
showRankChart=Show rank chart
showRankChart=Show rank chart
overallLeaderboardSelection=Overall Leaderboard
showOverallLeaderboardOnSamePage=Show overall leaderboard on same page
@@ -440,4 +440,6 @@ errorFetchingRankingChartData=Fehler beim Laden der Daten für das Ranglisten-Ch
loadingCompetitorData=Lade Teilnehmer-Daten
rankNAfterRace=Rang {0} nach Rennen {1}
afterRace=nach Rennen
showRankChart=Rang-Diagramm anzeigen
showRankChart=Rang-Diagramm anzeigen
overallLeaderboardSelection=Gesamtergebnisse
showOverallLeaderboardOnSamePage=Gesamtergebnisse auf derselben Seite anzeigen
@@ -46,6 +46,7 @@ public class LeaderboardEntryPoint extends AbstractEntryPoint {
private static final String PARAM_AUTO_EXPAND_LAST_RACE_COLUMN = "autoExpandLastRaceColumn";
private static final String PARAM_REGATTA_NAME = "regattaName";
private static final String PARAM_REFRESH_INTERVAL_MILLIS = "refreshIntervalMillis";
private static final String PARAM_SHOW_OVERALL_LEADERBOARDS_ON_SAME_PAGE = "showOverallLeaderboardsOnSamePage";
private static final String PARAM_DELAY_TO_LIVE_MILLIS = "delayToLiveMillis";
/**
@@ -153,6 +154,9 @@ public class LeaderboardEntryPoint extends AbstractEntryPoint {
} else {
numberOfLastRacesToShow = null;
}
boolean showOverallLeaderboardsOnSamePage = parameterMap.containsKey(PARAM_SHOW_OVERALL_LEADERBOARDS_ON_SAME_PAGE) ?
Boolean.valueOf(parameterMap.get(PARAM_SHOW_OVERALL_LEADERBOARDS_ON_SAME_PAGE).get(0)) :
false;
if (parameterMap.containsKey(PARAM_RACE_NAME) || parameterMap.containsKey(PARAM_RACE_DETAIL) ||
parameterMap.containsKey(PARAM_LEG_DETAIL) || parameterMap.containsKey(PARAM_MANEUVER_DETAIL) ||
parameterMap.containsKey(PARAM_OVERALL_DETAIL)) {
@@ -171,12 +175,13 @@ public class LeaderboardEntryPoint extends AbstractEntryPoint {
/* sort by column */ (namesOfRacesToShow != null && !namesOfRacesToShow.isEmpty()) ?
namesOfRacesToShow.get(0) : null, /* ascending */ true,
/* updateUponPlayStateChange */ raceDetails.isEmpty() && legDetails.isEmpty(),
raceColumnSelectionStrategy);
raceColumnSelectionStrategy, showOverallLeaderboardsOnSamePage);
} else {
final List<DetailType> overallDetails = Collections.emptyList();
result = LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(null, null, /* overallDetails */
overallDetails, null,
/* autoExpandFirstRace */ false, refreshIntervalMillis, numberOfLastRacesToShow, raceColumnSelectionStrategy);
result = LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(null, null,
/* overallDetails */ overallDetails, null,
/* autoExpandFirstRace */false, refreshIntervalMillis, numberOfLastRacesToShow,
raceColumnSelectionStrategy, showOverallLeaderboardsOnSamePage);
}
return result;
}
@@ -167,6 +167,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
private boolean autoExpandPreSelectedRace;
private boolean autoExpandLastRaceColumn;
private boolean showOverallLeaderboardsOnSamePage;
/**
* Remembers whether the auto-expand of the pre-selected race (see {@link #autoExpandPreSelectedRace}) or last
@@ -390,6 +392,22 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
getLeaderboardTable().sortColumn(raceColumnByRaceName, /* ascending */true);
}
}
if (newSettings.isShowOverallLeaderboardsOnSamePage() != showOverallLeaderboardsOnSamePage) {
showOverallLeaderboardsOnSamePage = newSettings.isShowOverallLeaderboardsOnSamePage();
if (showOverallLeaderboardsOnSamePage) {
showOverallLeaderboards();
} else {
hideOverallLeaderboards();
}
}
}
private void showOverallLeaderboards() {
// TODO Auto-generated method stub
}
private void hideOverallLeaderboards() {
// TODO Auto-generated method stub
}
private void setRaceColumnSelectionToLastNStrategy(final Integer numberOfLastRacesToShow) {
@@ -1133,6 +1151,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
this.selectedOverallDetailColumns = new ArrayList<DetailType>();
this.raceTimesInfoProvider = optionalRaceTimesInfoProvider;
this.selectedManeuverDetails = new ArrayList<DetailType>();
this.showOverallLeaderboardsOnSamePage = settings.isShowOverallLeaderboardsOnSamePage();
overallDetailColumnMap = createOverallDetailColumnMap();
settingsUpdatedExplicitly = !settings.updateUponPlayStateChange();
if (settings.getLegDetailsToShow() != null) {
@@ -2076,7 +2095,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
: preSelectedRace.getRaceName(),
/* don't change nameOfRaceColumnToShow */null,
/* set nameOfRaceToShow if race was pre-selected */preSelectedRace == null ? null : preSelectedRace
.getRaceName(), getRaceColumnSelection()));
.getRaceName(), getRaceColumnSelection(), showOverallLeaderboardsOnSamePage));
}
currentlyHandlingPlayStateChange = false;
oldPlayMode = playMode;
@@ -2129,7 +2148,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
Collections.unmodifiableList(selectedLegDetails), Collections.unmodifiableList(selectedRaceDetails),
Collections.unmodifiableList(selectedOverallDetailColumns), /* All races to select */ leaderboard.getRaceList(),
raceColumnSelection.getSelectedRaceColumnsOrderedAsInLeaderboard(leaderboard), raceColumnSelection, autoExpandPreSelectedRace,
timer.getRefreshInterval(), timer.getLivePlayDelayInMillis(), stringMessages);
showOverallLeaderboardsOnSamePage, timer.getRefreshInterval(), timer.getLivePlayDelayInMillis(), stringMessages);
}
@Override
@@ -30,6 +30,7 @@ public class LeaderboardSettings {
private final Long delayBetweenAutoAdvancesInMilliseconds;
private final Long delayInMilliseconds;
private final boolean updateUponPlayStateChange;
private final boolean showOverallLeaderboardsOnSamePage;
/**
* There are two ways to select race columns.
@@ -52,7 +53,8 @@ public class LeaderboardSettings {
List<DetailType> raceDetailsToShow, List<DetailType> overallDetailsToShow,
List<String> namesOfRaceColumnsToShow, List<String> namesOfRacesToShow, Integer numberOfLastRacesToShow,
boolean autoExpandPreSelectedRace, Long delayBetweenAutoAdvancesInMilliseconds, Long delayInMilliseconds,
String nameOfRaceToSort, boolean sortAscending, boolean updateUponPlayStateChange, RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy) {
String nameOfRaceToSort, boolean sortAscending, boolean updateUponPlayStateChange,
RaceColumnSelectionStrategies activeRaceColumnSelectionStrategy, boolean showOverallLeaderboardsOnSamePage) {
if (namesOfRacesToShow != null && namesOfRaceColumnsToShow != null) {
throw new IllegalArgumentException("You can identify races either only by their race or by their column names, not both");
}
@@ -70,6 +72,7 @@ public class LeaderboardSettings {
this.nameOfRaceToSort = nameOfRaceToSort;
this.sortAscending = sortAscending;
this.updateUponPlayStateChange = updateUponPlayStateChange;
this.showOverallLeaderboardsOnSamePage = showOverallLeaderboardsOnSamePage;
}
public List<DetailType> getManeuverDetailsToShow() {
@@ -151,4 +154,7 @@ public class LeaderboardSettings {
return activeRaceColumnSelectionStrategy;
}
public boolean isShowOverallLeaderboardsOnSamePage() {
return showOverallLeaderboardsOnSamePage;
}
}
@@ -46,6 +46,7 @@ public class LeaderboardSettingsDialogComponent implements SettingsDialogCompone
private LongBox refreshIntervalInSecondsBox;
private LongBox delayInSecondsBox;
private final boolean autoExpandPreSelectedRace;
private final boolean showOverallLeaderboardOnSamePage;
private final long delayBetweenAutoAdvancesInMilliseconds;
private final long delayInMilliseconds;
private final Integer numberOfLastRacesToShow;
@@ -53,11 +54,14 @@ public class LeaderboardSettingsDialogComponent implements SettingsDialogCompone
private RadioButton explicitRaceColumnSelectionRadioBtn;
private RadioButton lastNRacesColumnSelectionRadioBtn;
private IntegerBox numberOfLastRacesToShowBox;
private CheckBox showOverallLeaderboardOnSamePageCheckbox;
public LeaderboardSettingsDialogComponent(List<DetailType> maneuverDetailSelection,
List<DetailType> legDetailSelection, List<DetailType> raceDetailSelection, List<DetailType> overallDetailSelection,
List<RaceColumnDTO> raceAllRaceColumns, Iterable<RaceColumnDTO> raceColumnSelection, RaceColumnSelection raceColumnSelectionStrategy,
boolean autoExpandPreSelectedRace, long delayBetweenAutoAdvancesInMilliseconds, long delayInMilliseconds, StringMessages stringMessages) {
List<DetailType> legDetailSelection, List<DetailType> raceDetailSelection,
List<DetailType> overallDetailSelection, List<RaceColumnDTO> raceAllRaceColumns,
Iterable<RaceColumnDTO> raceColumnSelection, RaceColumnSelection raceColumnSelectionStrategy,
boolean autoExpandPreSelectedRace, boolean showOverallLeaderboardOnSamePage,
long delayBetweenAutoAdvancesInMilliseconds, long delayInMilliseconds, StringMessages stringMessages) {
this.raceAllRaceColumns = raceAllRaceColumns;
this.numberOfLastRacesToShow = raceColumnSelectionStrategy.getNumberOfLastRaceColumnsToShow();
this.activeRaceColumnSelectionStrategy = raceColumnSelectionStrategy.getType();
@@ -75,12 +79,14 @@ public class LeaderboardSettingsDialogComponent implements SettingsDialogCompone
this.autoExpandPreSelectedRace = autoExpandPreSelectedRace;
this.delayBetweenAutoAdvancesInMilliseconds = delayBetweenAutoAdvancesInMilliseconds;
this.delayInMilliseconds = delayInMilliseconds;
this.showOverallLeaderboardOnSamePage = showOverallLeaderboardOnSamePage;
}
@Override
public Widget getAdditionalWidget(DataEntryDialog<?> dialog) {
FlowPanel dialogPanel = new FlowPanel();
dialogPanel.add(createSelectedRacesPanel(dialog));
dialogPanel.add(createOverallLeaderboardSelectionPanel(dialog));
dialogPanel.add(createOverallDetailPanel(dialog));
dialogPanel.add(createRaceDetailPanel(dialog));
dialogPanel.add(createLegDetailsPanel(dialog));
@@ -274,6 +280,19 @@ public class LeaderboardSettingsDialogComponent implements SettingsDialogCompone
return selectedRacesPanel;
}
private FlowPanel createOverallLeaderboardSelectionPanel(DataEntryDialog<?> dialog) {
FlowPanel overallLeaderboardSelectionPanel = new FlowPanel();
overallLeaderboardSelectionPanel.addStyleName("SettingsDialogComponent");
overallLeaderboardSelectionPanel.add(dialog.createHeadline(stringMessages.overallLeaderboardSelection(), true));
FlowPanel overallLeaderboardSelectionContent = new FlowPanel();
overallLeaderboardSelectionContent.addStyleName("dialogInnerContent");
overallLeaderboardSelectionPanel.add(overallLeaderboardSelectionContent);
showOverallLeaderboardOnSamePageCheckbox = dialog.createCheckbox(stringMessages.showOverallLeaderboardOnSamePage());
showOverallLeaderboardOnSamePageCheckbox.setValue(showOverallLeaderboardOnSamePage);
overallLeaderboardSelectionContent.add(showOverallLeaderboardOnSamePageCheckbox);
return overallLeaderboardSelectionPanel;
}
@Override
public LeaderboardSettings getResult() {
List<DetailType> maneuverDetailsToShow = new ArrayList<DetailType>();
@@ -318,7 +337,8 @@ public class LeaderboardSettingsDialogComponent implements SettingsDialogCompone
lastNRacesToShowValue,
autoExpandPreSelectedRace, 1000l * (delayBetweenAutoAdvancesValue == null ? 0l : delayBetweenAutoAdvancesValue.longValue()),
1000 * (delayInSecondsValue == null ? 0 : delayInSecondsValue.longValue()),
null, true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy);
null, true, /* updateUponPlayStateChange */ true, activeRaceColumnSelectionStrategy,
showOverallLeaderboardOnSamePageCheckbox.getValue());
}
@Override
@@ -39,7 +39,7 @@ public class LeaderboardSettingsFactory {
* this argument
*/
public LeaderboardSettings createNewSettingsForPlayMode(PlayModes playMode, String nameOfRaceToSort, String nameOfRaceColumnToShow,
String nameOfRaceToShow, RaceColumnSelection raceColumnSelection) {
String nameOfRaceToShow, RaceColumnSelection raceColumnSelection, boolean showOverallLeaderboardsOnSamePage) {
if (nameOfRaceColumnToShow != null && nameOfRaceToShow != null) {
throw new IllegalArgumentException("Can identify only one race to show, either by race name or by its column name, but not both");
}
@@ -70,11 +70,11 @@ public class LeaderboardSettingsFactory {
/* set autoExpandPreSelectedRace to true if we look at a single race */ nameOfRaceColumnToShow != null || nameOfRaceToShow != null,
/* refresh interval */ null, /* delay to live */ null,
/* name of race to sort */ nameOfRaceToSort, /* ascending */ true, /* updateUponPlayStateChange */ true,
raceColumnSelection.getType());
raceColumnSelection.getType(), showOverallLeaderboardsOnSamePage);
break;
case Replay:
settings = createNewDefaultSettings(namesOfRaceColumnsToShow, namesOfRacesToShow, nameOfRaceToSort, /* autoExpandFirstRace */
nameOfRaceColumnToShow != null);
nameOfRaceColumnToShow != null, showOverallLeaderboardsOnSamePage);
break;
}
return settings;
@@ -89,28 +89,33 @@ public class LeaderboardSettingsFactory {
* @param namesOfRacesToShow
* alternatively, races to show can also be specified by their race names; if not <code>null</code>,
* <code>namesOfRaceColumnsToShow</code> must be <code>null</code>
* @param showOverallLeaderboardsOnSamePage
* tells whether a meta leaderboard should be shown beneath the actual leaderboard on the same page, if
* such a meta leaderboard exists; if multiple such meta leaderboards exist, they are all shown
*/
public LeaderboardSettings createNewDefaultSettings(List<String> namesOfRaceColumnsToShow,
List<String> namesOfRacesToShow, String nameOfRaceToSort, boolean autoExpandPreSelectedRace) {
List<String> namesOfRacesToShow, String nameOfRaceToSort, boolean autoExpandPreSelectedRace, boolean showOverallLeaderboardsOnSamePage) {
return createNewDefaultSettings(namesOfRaceColumnsToShow, namesOfRacesToShow, /* leave overallDetailsToShow unchanged */ null,
nameOfRaceToSort, autoExpandPreSelectedRace, /* refreshIntervalMillis */ null);
nameOfRaceToSort, autoExpandPreSelectedRace, /* refreshIntervalMillis */ null, showOverallLeaderboardsOnSamePage);
}
/**
* Like {@link #createNewDefaultSettings(List, List, String, boolean)}, only that an additional refresh interval for auto-refresh
* Like {@link #createNewDefaultSettings(List, List, String, boolean, boolean)}, only that an additional refresh interval for auto-refresh
* may be specified; if <code>null</code>, no auto-refresh shall be performed
*/
public LeaderboardSettings createNewDefaultSettings(List<String> namesOfRaceColumnsToShow,
List<String> namesOfRacesToShow, List<DetailType> overallDetailsToShow, String nameOfRaceToSort,
boolean autoExpandPreSelectedRace, Long refreshIntervalMillis) {
return createNewDefaultSettings(namesOfRaceColumnsToShow, namesOfRacesToShow, overallDetailsToShow, nameOfRaceToSort, autoExpandPreSelectedRace, refreshIntervalMillis,
/* numberOfLastRacesToShow */ null, /* raceColumnSelectionStrategy */ RaceColumnSelectionStrategies.EXPLICIT);
boolean autoExpandPreSelectedRace, Long refreshIntervalMillis, boolean showOverallLeaderboardsOnSamePage) {
return createNewDefaultSettings(namesOfRaceColumnsToShow, namesOfRacesToShow, overallDetailsToShow,
nameOfRaceToSort, autoExpandPreSelectedRace, refreshIntervalMillis,
/* numberOfLastRacesToShow */null, /* raceColumnSelectionStrategy */ RaceColumnSelectionStrategies.EXPLICIT,
showOverallLeaderboardsOnSamePage);
}
public LeaderboardSettings createNewDefaultSettings(List<String> namesOfRaceColumnsToShow,
List<String> namesOfRacesToShow, List<DetailType> overallDetailsToShow, String nameOfRaceToSort,
boolean autoExpandPreSelectedRace, Long refreshIntervalMillis, Integer numberOfLastRacesToShow,
RaceColumnSelectionStrategies raceColumnSelectionStrategy) {
RaceColumnSelectionStrategies raceColumnSelectionStrategy, boolean showOverallLeaderboardsOnSamePage) {
if (namesOfRaceColumnsToShow != null && namesOfRacesToShow != null) {
throw new IllegalArgumentException("Can specify race columns either by column or by race name, not both");
}
@@ -129,6 +134,6 @@ public class LeaderboardSettingsFactory {
namesOfRacesToShow, numberOfLastRacesToShow,
autoExpandPreSelectedRace, refreshIntervalMillis, /* delay to live */ null,
/* sort by column */ nameOfRaceToSort, /* ascending */ true, /* updateUponPlayStateChange */ true,
raceColumnSelectionStrategy);
raceColumnSelectionStrategy, showOverallLeaderboardsOnSamePage);
}
}
@@ -91,14 +91,14 @@ public class LeaderboardUrlConfigurationDialog extends SettingsDialog<Leaderboar
}
LeaderboardSettings settings = LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
namesOfRaceColumnsToShow, /* namesOfRacesToShow */null, /* nameOfRaceToSort */null, /* autoExpandPreSelectedRace */
false);
false, /* showMetaLeaderboardsOnSamePage */ false);
List<DetailType> overallDetailsToShow = Collections.emptyList();
leaderboardSettingsDialogComponent = new LeaderboardSettingsDialogComponent(settings.getManeuverDetailsToShow(),
settings.getLegDetailsToShow(), settings.getRaceDetailsToShow(), overallDetailsToShow, raceList,
/* select all races by default */ raceList, new ExplicitRaceColumnSelection(),
/* autoExpandPreSelectedRace */ false,
/* delayBetweenAutoAdvancesInMilliseconds */ 3000l,
/* delayInMilliseconds */ 3000l, stringMessages);
/* showOverallLeaderboardOnSamePage */ false,
/* delayBetweenAutoAdvancesInMilliseconds */ 3000l, /* delayInMilliseconds */ 3000l, stringMessages);
}
private void updateURL(LeaderboardUrlSettings settings, String leaderboardName) {
@@ -461,7 +461,8 @@ public class EditableLeaderboardPanel extends LeaderboardPanel {
String leaderboardName, String leaderboardGroupName, final ErrorReporter errorReporter,
final StringMessages stringMessages, UserAgentDetails userAgent) {
super(sailingService, asyncActionsExecutor, LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
/* racesToShow */ null, /* namesOfRacesToShow */ null, null, /* autoExpandFirstRace */false),
/* racesToShow */ null, /* namesOfRacesToShow */ null, null, /* autoExpandFirstRace */ false,
/* showMetaLeaderboardsOnSamePage */ false),
new CompetitorSelectionModel(/* hasMultiSelection */true),
leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgent, /* showRaceDetails */ true);
suppressedCompetitorsShown = new ListDataProvider<CompetitorDTO>(new ArrayList<CompetitorDTO>());
@@ -186,7 +186,8 @@ public class RaceBoardPanel extends FormPanel implements RegattaDisplayer, RaceS
.createNewSettingsForPlayMode(timer.getPlayMode(),
/* nameOfRaceToSort */ selectedRaceIdentifier.getRaceName(),
/* nameOfRaceColumnToShow */ null, /* nameOfRaceToShow */ selectedRaceIdentifier.getRaceName(),
new ExplicitRaceColumnSelectionWithPreselectedRace(selectedRaceIdentifier));
new ExplicitRaceColumnSelectionWithPreselectedRace(selectedRaceIdentifier),
/* showOverallLeaderboardsOnSamePage */ false);
return new LeaderboardPanel(sailingService, asyncActionsExecutor, leaderBoardSettings, selectedRaceIdentifier,
competitorSelectionModel, timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages,
userAgent, /* showRaceDetails */ true, raceTimesInfoProvider, /* autoExpandLastRaceColumn */ false);
@@ -72,7 +72,8 @@ public class TVViewController implements RaceTimesInfoProviderListener {
showWindChart = false;
leaderboard = null;
leaderboardSettings = LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(null, null, null, /* autoExpandFirstRace */ false);
leaderboardSettings = LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(null, null, null, /* autoExpandFirstRace */ false,
/* showMetaLeaderboardsOnSamePage */ false);
timer = new Timer(PlayModes.Live, /* delayBetweenAutoAdvancesInMilliseconds */1000l);
timer.setLivePlayDelayInMillis(delayToLiveInMillis);
@@ -4,8 +4,6 @@ bin.includes = META-INF/,\
WEB-INF/classes/,\
WEB-INF/web.xml,\
images/,\
winnercircle2012/,\
main.css,\
ess40/,\
fontface.css,\
sap.ico,\