Merge remote-tracking branch 'origin/master' into jbross-dependent-race-start

This commit is contained in:
Jan Broß
2015-05-20 11:46:00 +02:00
9 changed files with 253 additions and 190 deletions
@@ -53,6 +53,7 @@ import com.sap.sailing.domain.tracking.impl.MarkPassingImpl;
import com.sap.sailing.domain.tracking.impl.TrackedRaceStatusImpl;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import difflib.PatchFailedException;
@@ -294,9 +295,9 @@ public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter {
Course course = race.getCourse();
try {
// TODO: Does SwissTiming also deliver the passing side for course marks?
List<com.sap.sse.common.Util.Pair<ControlPoint, PassingInstruction>> courseToUpdate = new ArrayList<com.sap.sse.common.Util.Pair<ControlPoint, PassingInstruction>>();
List<Pair<ControlPoint, PassingInstruction>> courseToUpdate = new ArrayList<>();
for (ControlPoint cp : currentCourseDefinition) {
courseToUpdate.add(new com.sap.sse.common.Util.Pair<ControlPoint, PassingInstruction>(cp, null));
courseToUpdate.add(new Pair<ControlPoint, PassingInstruction>(cp, PassingInstruction.None));
}
course.update(courseToUpdate, domainFactory.getBaseDomainFactory());
} catch (PatchFailedException e) {
@@ -1,13 +1,7 @@
package com.sap.sailing.gwt.home.client.place.event.regatta;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
import com.sap.sailing.gwt.ui.client.DebugIdHelper;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
@@ -16,7 +10,6 @@ import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardCha
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChartSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sse.common.Util;
import com.sap.sse.common.settings.AbstractSettings;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
@@ -40,7 +33,6 @@ public class RegattaAnalyticsDataManager {
private final UserAgentDetails userAgent;
private final SailingServiceAsync sailingService;
private final Timer timer;
private final int MAX_COMPETITORS_IN_CHART = 30;
public RegattaAnalyticsDataManager(final SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, Timer timer, ErrorReporter errorReporter, UserAgentDetails userAgent) {
this.competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */true);
@@ -87,21 +79,6 @@ public class RegattaAnalyticsDataManager {
}
public void showCompetitorChart(DetailType chartDetailType) {
// preselect the top N competitors in case there was no selection before and there too many competitors for a chart
int competitorsCount = Util.size(competitorSelectionProvider.getAllCompetitors());
int selectedCompetitorsCount = Util.size(competitorSelectionProvider.getSelectedCompetitors());
if(selectedCompetitorsCount == 0 && competitorsCount > MAX_COMPETITORS_IN_CHART) {
List<CompetitorDTO> selectedCompetitors = new ArrayList<CompetitorDTO>();
Iterator<CompetitorDTO> allCompetitorsIt = competitorSelectionProvider.getAllCompetitors().iterator();
int counter = 0;
while(counter < MAX_COMPETITORS_IN_CHART) {
selectedCompetitors.add(allCompetitorsIt.next());
counter++;
}
competitorSelectionProvider.setSelection(selectedCompetitors, (CompetitorSelectionChangeListener[]) null);
}
MultiCompetitorLeaderboardChart multiCompetitorChart = getMultiCompetitorChart();
MultiCompetitorLeaderboardChartSettings settings = new MultiCompetitorLeaderboardChartSettings(chartDetailType);
multiCompetitorChart.updateSettings(settings);
@@ -1,31 +1,45 @@
package com.sap.sailing.gwt.home.client.place.event.regatta.tabs;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts;
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView;
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
import com.sap.sse.common.Util;
/**
* Created by pgtaboada on 25.11.14.
*/
public class RegattaCompetitorAnalyticsTabView extends Composite implements
RegattaTabView<RegattaCompetitorAnalyticsPlace> {
public class RegattaCompetitorAnalyticsTabView extends SharedLeaderboardRegattaTabView<RegattaCompetitorAnalyticsPlace> {
interface MyBinder extends UiBinder<HTMLPanel, RegattaCompetitorAnalyticsTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private Presenter currentPresenter;
private final int MAX_COMPETITORS_IN_CHART = 30;
public RegattaCompetitorAnalyticsTabView() {
super();
}
@UiField
@@ -43,17 +57,15 @@ public class RegattaCompetitorAnalyticsTabView extends Composite implements
@Override
public void start(RegattaCompetitorAnalyticsPlace myPlace, AcceptsOneWidget contentArea) {
contentArea.setWidget(new Placeholder());
String regattaId = myPlace.getRegattaId();
if (regattaId != null && !regattaId.isEmpty()) {
String leaderboardName = regattaId;
RegattaAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx()
.getRegattaAnalyticsManager();
RegattaAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx().getRegattaAnalyticsManager();
if(regattaAnalyticsManager.getLeaderboardPanel() == null) {
createSharedLeaderboardPanel(leaderboardName, regattaAnalyticsManager);
}
initWidget(ourUiBinder.createAndBindUi(this));
@@ -78,15 +90,8 @@ public class RegattaCompetitorAnalyticsTabView extends Composite implements
@Override
public void stop() {
}
interface MyBinder extends UiBinder<HTMLPanel, RegattaCompetitorAnalyticsTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private Presenter currentPresenter;
@Override
public RegattaCompetitorAnalyticsPlace placeToFire() {
return new RegattaCompetitorAnalyticsPlace(currentPresenter.getCtx());
@@ -95,7 +100,40 @@ public class RegattaCompetitorAnalyticsTabView extends Composite implements
@Override
public void setPresenter(EventRegattaView.Presenter currentPresenter) {
this.currentPresenter = currentPresenter;
}
public boolean isSmallWidth() {
int width = Window.getClientWidth();
return width <= 720;
}
@Override
public void updatedLeaderboard(LeaderboardDTO leaderboard) {
// adjust the competitor selection for the chart in case the leaderboard changed
updateCompetitorSelection();
}
private void updateCompetitorSelection() {
RegattaAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx().getRegattaAnalyticsManager();
CompetitorSelectionModel competitorSelectionProvider = regattaAnalyticsManager.getCompetitorSelectionProvider();
// preselect the top N competitors in case there was no selection before and there too many competitors for a chart
int competitorsCount = Util.size(competitorSelectionProvider.getAllCompetitors());
int selectedCompetitorsCount = Util.size(competitorSelectionProvider.getSelectedCompetitors());
if(selectedCompetitorsCount == 0 && competitorsCount > MAX_COMPETITORS_IN_CHART) {
List<CompetitorDTO> selectedCompetitors = new ArrayList<CompetitorDTO>();
Iterator<CompetitorDTO> allCompetitorsIt = competitorSelectionProvider.getAllCompetitors().iterator();
int counter = 0;
while(counter < MAX_COMPETITORS_IN_CHART) {
selectedCompetitors.add(allCompetitorsIt.next());
counter++;
}
competitorSelectionProvider.setSelection(selectedCompetitors, (CompetitorSelectionChangeListener[]) null);
}
}
@Override
public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) {
}
}
@@ -3,13 +3,10 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Label;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
@@ -17,30 +14,26 @@ import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView;
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView;
import com.sap.sailing.gwt.home.client.place.event.utils.EventParamUtils;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardUrlSettings;
import com.sap.sailing.gwt.ui.shared.general.EventState;
import com.sap.sse.gwt.shared.GwtHttpRequestUtils;
/**
* Created by pgtaboada on 25.11.14.
*/
public class RegattaLeaderboardTabView extends Composite implements RegattaTabView<RegattaLeaderboardPlace>,
LeaderboardUpdateListener {
public class RegattaLeaderboardTabView extends SharedLeaderboardRegattaTabView<RegattaLeaderboardPlace> {
interface MyBinder extends UiBinder<HTMLPanel, RegattaLeaderboardTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private Presenter currentPresenter;
@UiField
protected OldLeaderboard leaderboard;
public RegattaLeaderboardTabView() {
super();
}
@Override
@@ -65,23 +58,12 @@ public class RegattaLeaderboardTabView extends Composite implements RegattaTabVi
if (regattaId != null && !regattaId.isEmpty()) {
String leaderboardName = regattaId;
RegattaAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx().getRegattaAnalyticsManager();
boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(
LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
final LeaderboardSettings leaderboardSettings = EventParamUtils
.createLeaderboardSettingsFromURLParameters(Window.Location
.getParameterMap());
final RegattaAndRaceIdentifier preselectedRace = EventParamUtils
.getPreselectedRace(Window.Location.getParameterMap());
LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createLeaderboardPanel( //
leaderboardSettings, //
preselectedRace, //
"leaderboardGroupName", // TODO: keep using magic string? ask frank!
leaderboardName, //
true,
autoExpandLastRaceColumn);
LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.getLeaderboardPanel();
if(leaderboardPanel == null) {
leaderboardPanel = createSharedLeaderboardPanel(leaderboardName, regattaAnalyticsManager);
}
initWidget(ourUiBinder.createAndBindUi(this));
leaderboard.setLeaderboard(leaderboardPanel, currentPresenter.getAutoRefreshTimer());
leaderboardPanel.addLeaderboardUpdateListener(this);
if (currentPresenter.getCtx().getEventDTO().getState() == EventState.RUNNING) {
// TODO: start autorefresh?
}
@@ -105,22 +87,14 @@ public class RegattaLeaderboardTabView extends Composite implements RegattaTabVi
@Override
public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) {
}
@Override
public void stop() {
}
interface MyBinder extends UiBinder<HTMLPanel, RegattaLeaderboardTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
@Override
public RegattaLeaderboardPlace placeToFire() {
return new RegattaLeaderboardPlace(currentPresenter.getCtx());
}
}
@@ -0,0 +1,41 @@
package com.sap.sailing.gwt.home.client.place.event.regatta.tabs;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView;
import com.sap.sailing.gwt.home.client.place.event.utils.EventParamUtils;
import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardUrlSettings;
import com.sap.sse.gwt.shared.GwtHttpRequestUtils;
/**
* An abstract regatta tabView with some shared functions between the leaderboard tab and competitors chart tab
*/
public abstract class SharedLeaderboardRegattaTabView<T extends AbstractEventRegattaPlace> extends Composite implements RegattaTabView<T>,
LeaderboardUpdateListener {
public SharedLeaderboardRegattaTabView() {
}
public LeaderboardPanel createSharedLeaderboardPanel(String leaderboardName, RegattaAnalyticsDataManager regattaAnalyticsManager) {
boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(
LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
final LeaderboardSettings leaderboardSettings = EventParamUtils
.createLeaderboardSettingsFromURLParameters(Window.Location.getParameterMap());
final RegattaAndRaceIdentifier preselectedRace = EventParamUtils.getPreselectedRace(Window.Location.getParameterMap());
LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createLeaderboardPanel( //
leaderboardSettings, //
preselectedRace, //
"leaderboardGroupName", // TODO: keep using magic string? ask frank!
leaderboardName, //
true,
autoExpandLastRaceColumn);
leaderboardPanel.addLeaderboardUpdateListener(this);
return leaderboardPanel;
}
}
@@ -1,35 +1,47 @@
package com.sap.sailing.gwt.home.client.place.fakeseries.tabs;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts;
import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView;
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
import com.sap.sse.common.Util;
/**
* Created by pgtaboada on 25.11.14.
*/
public class EventSeriesCompetitorAnalyticsTabView extends Composite implements
SeriesTabView<EventSeriesCompetitorAnalyticsPlace> {
public EventSeriesCompetitorAnalyticsTabView() {
public class EventSeriesCompetitorAnalyticsTabView extends SharedLeaderboardEventSeriesTabView<EventSeriesCompetitorAnalyticsPlace> {
interface MyBinder extends UiBinder<HTMLPanel, EventSeriesCompetitorAnalyticsTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private SeriesView.Presenter currentPresenter;
@UiField
protected OldCompetitorCharts competitorCharts;
private final int MAX_COMPETITORS_IN_CHART = 30;
public EventSeriesCompetitorAnalyticsTabView() {
super();
}
@Override
public Class<EventSeriesCompetitorAnalyticsPlace> getPlaceClassForActivation() {
return EventSeriesCompetitorAnalyticsPlace.class;
@@ -42,27 +54,21 @@ public class EventSeriesCompetitorAnalyticsTabView extends Composite implements
@Override
public void start(EventSeriesCompetitorAnalyticsPlace myPlace, AcceptsOneWidget contentArea) {
contentArea.setWidget(new Placeholder());
String leaderboardName = myPlace.getCtx().getSeriesDTO().getLeaderboardId();
if (leaderboardName != null && !leaderboardName.isEmpty()) {
EventSeriesAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx()
.getAnalyticsManager();
EventSeriesAnalyticsDataManager eventSeriesAnalyticsManager = currentPresenter.getCtx().getAnalyticsManager();
if(eventSeriesAnalyticsManager.getLeaderboardPanel() == null) {
createSharedLeaderboardPanel(leaderboardName, eventSeriesAnalyticsManager);
}
initWidget(ourUiBinder.createAndBindUi(this));
DetailType initialDetailType = DetailType.OVERALL_RANK;
if (regattaAnalyticsManager.getMultiCompetitorChart() == null) {
regattaAnalyticsManager.createMultiCompetitorChart(leaderboardName, initialDetailType);
if (eventSeriesAnalyticsManager.getMultiCompetitorChart() == null) {
eventSeriesAnalyticsManager.createMultiCompetitorChart(leaderboardName, initialDetailType);
}
competitorCharts.setChart(regattaAnalyticsManager.getMultiCompetitorChart(), getAvailableDetailsTypes(),
initialDetailType);
regattaAnalyticsManager.showCompetitorChart(competitorCharts.getSelectedChartDetailType());
competitorCharts.setChart(eventSeriesAnalyticsManager.getMultiCompetitorChart(), getAvailableDetailsTypes(), initialDetailType);
eventSeriesAnalyticsManager.showCompetitorChart(competitorCharts.getSelectedChartDetailType());
contentArea.setWidget(this);
}
}
@@ -76,15 +82,8 @@ public class EventSeriesCompetitorAnalyticsTabView extends Composite implements
@Override
public void stop() {
}
interface MyBinder extends UiBinder<HTMLPanel, EventSeriesCompetitorAnalyticsTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private SeriesView.Presenter currentPresenter;
@Override
public EventSeriesCompetitorAnalyticsPlace placeToFire() {
return new EventSeriesCompetitorAnalyticsPlace(currentPresenter.getCtx());
@@ -93,8 +92,35 @@ public class EventSeriesCompetitorAnalyticsTabView extends Composite implements
@Override
public void setPresenter(SeriesView.Presenter currentPresenter) {
this.currentPresenter = currentPresenter;
}
@Override
public void updatedLeaderboard(LeaderboardDTO leaderboard) {
// adjust the competitor selection for the chart in case the leaderboard changed
updateCompetitorSelection();
}
private void updateCompetitorSelection() {
EventSeriesAnalyticsDataManager eventSeriesAnalyticsManager = currentPresenter.getCtx().getAnalyticsManager();
CompetitorSelectionModel competitorSelectionProvider = eventSeriesAnalyticsManager.getCompetitorSelectionProvider();
// preselect the top N competitors in case there was no selection before and there too many competitors for a chart
int competitorsCount = Util.size(competitorSelectionProvider.getAllCompetitors());
int selectedCompetitorsCount = Util.size(competitorSelectionProvider.getSelectedCompetitors());
if(selectedCompetitorsCount == 0 && competitorsCount > MAX_COMPETITORS_IN_CHART) {
List<CompetitorDTO> selectedCompetitors = new ArrayList<CompetitorDTO>();
Iterator<CompetitorDTO> allCompetitorsIt = competitorSelectionProvider.getAllCompetitors().iterator();
int counter = 0;
while(counter < MAX_COMPETITORS_IN_CHART) {
selectedCompetitors.add(allCompetitorsIt.next());
counter++;
}
competitorSelectionProvider.setSelection(selectedCompetitors, (CompetitorSelectionChangeListener[]) null);
}
}
@Override
public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) {
}
}
@@ -3,42 +3,36 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Label;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard;
import com.sap.sailing.gwt.home.client.place.event.utils.EventParamUtils;
import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView;
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardUrlSettings;
import com.sap.sse.gwt.shared.GwtHttpRequestUtils;
/**
* Created by pgtaboada on 25.11.14.
*/
public class EventSeriesLeaderboardTabView extends Composite implements SeriesTabView<EventSeriesOverallLeaderboardPlace>,
LeaderboardUpdateListener {
public class EventSeriesLeaderboardTabView extends SharedLeaderboardEventSeriesTabView<EventSeriesOverallLeaderboardPlace> {
interface MyBinder extends UiBinder<HTMLPanel, EventSeriesLeaderboardTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private SeriesView.Presenter currentPresenter;
@UiField
protected OldLeaderboard leaderboard;
public EventSeriesLeaderboardTabView() {
super();
}
@Override
@@ -61,25 +55,30 @@ public class EventSeriesLeaderboardTabView extends Composite implements SeriesTa
contentArea.setWidget(new Placeholder());
String leaderboardName = myPlace.getCtx().getSeriesDTO().getLeaderboardId();
if (leaderboardName != null && !leaderboardName.isEmpty()) {
EventSeriesAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx().getAnalyticsManager();
boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(
LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
final LeaderboardSettings leaderboardSettings = EventParamUtils
.createLeaderboardSettingsFromURLParameters(Window.Location
.getParameterMap());
final RegattaAndRaceIdentifier preselectedRace = EventParamUtils
.getPreselectedRace(Window.Location.getParameterMap());
LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createOverallLeaderboardPanel(
leaderboardSettings,
preselectedRace,
"leaderboardGroupName", // TODO: keep using magic string? ask frank!
leaderboardName,
true, // this information came from place, now hard coded. check with frank
autoExpandLastRaceColumn);
EventSeriesAnalyticsDataManager eventSeriesAnalyticsManager = currentPresenter.getCtx().getAnalyticsManager();
LeaderboardPanel leaderboardPanel = eventSeriesAnalyticsManager.getLeaderboardPanel();
if(leaderboardPanel == null) {
leaderboardPanel = createSharedLeaderboardPanel(leaderboardName, eventSeriesAnalyticsManager);
}
//
// boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(
// LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
// final LeaderboardSettings leaderboardSettings = EventParamUtils
// .createLeaderboardSettingsFromURLParameters(Window.Location
// .getParameterMap());
// final RegattaAndRaceIdentifier preselectedRace = EventParamUtils
// .getPreselectedRace(Window.Location.getParameterMap());
// LeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createOverallLeaderboardPanel(
// leaderboardSettings,
// preselectedRace,
// "leaderboardGroupName", // TODO: keep using magic string? ask frank!
// leaderboardName,
// true, // this information came from place, now hard coded. check with frank
// autoExpandLastRaceColumn);
initWidget(ourUiBinder.createAndBindUi(this));
leaderboard.setLeaderboard(leaderboardPanel, currentPresenter.getAutoRefreshTimer());
leaderboardPanel.addLeaderboardUpdateListener(this);
regattaAnalyticsManager.hideCompetitorChart();
// leaderboardPanel.addLeaderboardUpdateListener(this);
eventSeriesAnalyticsManager.hideCompetitorChart();
contentArea.setWidget(this);
} else {
contentArea.setWidget(new Label("No leaderboard specified, cannot proceed to leaderboardpage"));
@@ -90,7 +89,6 @@ public class EventSeriesLeaderboardTabView extends Composite implements SeriesTa
}
}.schedule(3000);
}
}
@Override
@@ -100,24 +98,14 @@ public class EventSeriesLeaderboardTabView extends Composite implements SeriesTa
@Override
public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) {
}
@Override
public void stop() {
}
interface MyBinder extends UiBinder<HTMLPanel, EventSeriesLeaderboardTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
@Override
public EventSeriesOverallLeaderboardPlace placeToFire() {
return new EventSeriesOverallLeaderboardPlace(currentPresenter.getCtx());
}
}
@@ -28,13 +28,17 @@ import com.sap.sse.gwt.shared.GwtHttpRequestUtils;
public class EventSeriesLeaderboardsTabView extends Composite implements SeriesTabView<EventSeriesLeaderboardsPlace>,
LeaderboardUpdateListener {
interface MyBinder extends UiBinder<HTMLPanel, EventSeriesLeaderboardsTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
private SeriesView.Presenter currentPresenter;
@UiField
protected OldMultiLeaderboard leaderboard;
public EventSeriesLeaderboardsTabView() {
}
@Override
@@ -54,52 +58,34 @@ public class EventSeriesLeaderboardsTabView extends Composite implements SeriesT
@Override
public void start(final EventSeriesLeaderboardsPlace myPlace, final AcceptsOneWidget contentArea) {
contentArea.setWidget(new Placeholder());
String leaderboardName = myPlace.getCtx().getSeriesDTO().getLeaderboardId();
if (leaderboardName != null && !leaderboardName.isEmpty()) {
EventSeriesAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx()
.getAnalyticsManager();
boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(
LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
final LeaderboardSettings leaderboardSettings = EventParamUtils
.createLeaderboardSettingsFromURLParameters(Window.Location
.getParameterMap());
final RaceIdentifier preselectedRace = EventParamUtils
.getPreselectedRace(Window.Location.getParameterMap());
if (leaderboardName != null && !leaderboardName.isEmpty()) {
EventSeriesAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx().getAnalyticsManager();
boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
final LeaderboardSettings leaderboardSettings = EventParamUtils.createLeaderboardSettingsFromURLParameters(Window.Location.getParameterMap());
final RaceIdentifier preselectedRace = EventParamUtils.getPreselectedRace(Window.Location.getParameterMap());
MultiLeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createMultiLeaderboardPanel(leaderboardSettings,
null, // TODO: preselectedLeaderboardName
preselectedRace,
"leaderboardGroupName",
"leaderboardGroupName",
leaderboardName,
true, // TODO @FM this information came from place, now hard coded. check with frank
autoExpandLastRaceColumn);
initWidget(ourUiBinder.createAndBindUi(this));
leaderboard.setMultiLeaderboard(leaderboardPanel,
currentPresenter.getAutoRefreshTimer());
leaderboard.setMultiLeaderboard(leaderboardPanel, currentPresenter.getAutoRefreshTimer());
leaderboardPanel.addLeaderboardUpdateListener(this);
if (currentPresenter.getCtx().getSeriesDTO().getState() != EventSeriesState.RUNNING) {
// TODO: this.leaderboard.hideRefresh();
} else {
// TODO: start autorefresh?
}
regattaAnalyticsManager.hideCompetitorChart();
leaderboardPanel.setVisible(true);
contentArea.setWidget(this);
} else {
contentArea.setWidget(new Label("No leaderboard specified, cannot proceed to leaderboardpage"));
@@ -109,36 +95,24 @@ public class EventSeriesLeaderboardsTabView extends Composite implements SeriesT
currentPresenter.getHomeNavigation().goToPlace();
}
}.schedule(3000);
}
}
@Override
public void updatedLeaderboard(LeaderboardDTO leaderboard) {
this.leaderboard.updatedMultiLeaderboard(leaderboard, true); // TODO hard coded
this.leaderboard.updatedMultiLeaderboard(leaderboard, true);
}
@Override
public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) {
}
@Override
public void stop() {
}
interface MyBinder extends UiBinder<HTMLPanel, EventSeriesLeaderboardsTabView> {
}
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
@Override
public EventSeriesLeaderboardsPlace placeToFire() {
return new EventSeriesLeaderboardsPlace(currentPresenter.getCtx());
}
}
@@ -0,0 +1,44 @@
package com.sap.sailing.gwt.home.client.place.fakeseries.tabs;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.gwt.home.client.place.event.utils.EventParamUtils;
import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace;
import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager;
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView;
import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardUrlSettings;
import com.sap.sse.gwt.shared.GwtHttpRequestUtils;
/**
* An abstract series tabView with some shared functions between the overall leaderboard tab and competitors chart tab
*/
public abstract class SharedLeaderboardEventSeriesTabView<T extends AbstractSeriesTabPlace> extends Composite implements SeriesTabView<T>,
LeaderboardUpdateListener {
public SharedLeaderboardEventSeriesTabView() {
}
public LeaderboardPanel createSharedLeaderboardPanel(String leaderboardName, EventSeriesAnalyticsDataManager eventSeriesAnalyticsManager) {
boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(
LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
final LeaderboardSettings leaderboardSettings = EventParamUtils
.createLeaderboardSettingsFromURLParameters(Window.Location
.getParameterMap());
final RegattaAndRaceIdentifier preselectedRace = EventParamUtils
.getPreselectedRace(Window.Location.getParameterMap());
LeaderboardPanel leaderboardPanel = eventSeriesAnalyticsManager.createOverallLeaderboardPanel(
leaderboardSettings,
preselectedRace,
"leaderboardGroupName",
leaderboardName,
true, // this information came from place, now hard coded. check with frank
autoExpandLastRaceColumn);
leaderboardPanel.addLeaderboardUpdateListener(this);
return leaderboardPanel;
}
}