mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-26 23:46:36 +00:00
Merge remote-tracking branch 'origin/master' into jbross-dependent-race-start
This commit is contained in:
+3
-2
@@ -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) {
|
||||
|
||||
-23
@@ -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);
|
||||
|
||||
+57
-19
@@ -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) {
|
||||
}
|
||||
}
|
||||
+10
-36
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
+41
@@ -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;
|
||||
}
|
||||
}
|
||||
+55
-29
@@ -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) {
|
||||
}
|
||||
}
|
||||
+29
-41
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+14
-40
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+44
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user