mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-26 23:46:36 +00:00
Finetuning of the new AsynchActionExecutor:
- Added the async actions or the charts (WindChart, CompetitorCharts) - Added logic to check the amount of pending calls per action type - Added a central instance of the AsynchActionExecutor to the RaceboardPanel so that all used components of the panel can share one instance
This commit is contained in:
+1
-1
@@ -17,7 +17,7 @@ public class LeaderboardPanelMock extends LeaderboardPanel {
|
|||||||
public LeaderboardPanelMock(SailingServiceAsync sailingService,
|
public LeaderboardPanelMock(SailingServiceAsync sailingService,
|
||||||
String leaderboardName, ErrorReporter errorReporter,
|
String leaderboardName, ErrorReporter errorReporter,
|
||||||
StringMessages stringConstants) {
|
StringMessages stringConstants) {
|
||||||
super(sailingService, LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
|
super(sailingService, null, LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
|
||||||
/* racesToShow */null, /* namesOfRacesToShow */ null, /* autoExpandFirstRace */false), new CompetitorSelectionModel(
|
/* racesToShow */null, /* namesOfRacesToShow */ null, /* autoExpandFirstRace */false), new CompetitorSelectionModel(
|
||||||
/* hasMultiSelection */true), leaderboardName, null, errorReporter, stringConstants, null);
|
/* hasMultiSelection */true), leaderboardName, null, errorReporter, stringConstants, null);
|
||||||
}
|
}
|
||||||
|
|||||||
+39
-16
@@ -1,21 +1,30 @@
|
|||||||
package com.sap.sailing.gwt.ui.actions;
|
package com.sap.sailing.gwt.ui.actions;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
public class AsyncActionsExecutor {
|
public class AsyncActionsExecutor {
|
||||||
private AsyncAction<?> lastRequestedAction;
|
private AsyncAction<?> lastRequestedAction;
|
||||||
private int numPending;
|
private int numPendingCalls;
|
||||||
private final int maxPendingCalls;
|
private final int maxPendingCalls;
|
||||||
|
private final int maxPendingCallsPerType;
|
||||||
|
private Map<String, Integer> actionsPerType;
|
||||||
|
|
||||||
public AsyncActionsExecutor() {
|
public AsyncActionsExecutor() {
|
||||||
numPending = 0;
|
numPendingCalls = 0;
|
||||||
maxPendingCalls = 5;
|
maxPendingCalls = 6;
|
||||||
|
maxPendingCallsPerType = 3;
|
||||||
lastRequestedAction = null;
|
lastRequestedAction = null;
|
||||||
|
actionsPerType = new HashMap<String, Integer>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void execute(final AsyncAction<?> action) {
|
public void execute(final AsyncAction<?> action) {
|
||||||
if(numPending >= maxPendingCalls) {
|
Integer numActionsOfType = actionsPerType.get(action.getName());
|
||||||
|
|
||||||
|
if(numPendingCalls >= maxPendingCalls || (numActionsOfType != null && numActionsOfType > maxPendingCallsPerType)) {
|
||||||
GWT.log("Drop action : " + action.getName());
|
GWT.log("Drop action : " + action.getName());
|
||||||
|
|
||||||
// don't put the call into the execution queue, but save it as the last one
|
// don't put the call into the execution queue, but save it as the last one
|
||||||
@@ -28,33 +37,47 @@ public class AsyncActionsExecutor {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
AsyncCallback<Object> callback = (AsyncCallback<Object>) action.getCallback();
|
String actionName = action.getName();
|
||||||
callback.onFailure(caught);
|
GWT.log("Execution failure for action of type: " + actionName);
|
||||||
numPending--;
|
AsyncCallback<Object> callback = (AsyncCallback<Object>) action.getCallback();
|
||||||
finish();
|
callback.onFailure(caught);
|
||||||
|
Integer numActionsPerType = actionsPerType.get(actionName);
|
||||||
|
if(numActionsPerType != null && numActionsPerType > 0)
|
||||||
|
actionsPerType.put(actionName, numActionsPerType-1);
|
||||||
|
numPendingCalls--;
|
||||||
|
checkForEmptyCallQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Object result) {
|
public void onSuccess(Object result) {
|
||||||
|
String actionName = action.getName();
|
||||||
|
GWT.log("Execution success for action of type: " + actionName);
|
||||||
AsyncCallback<Object> callback = (AsyncCallback<Object>) action.getCallback();
|
AsyncCallback<Object> callback = (AsyncCallback<Object>) action.getCallback();
|
||||||
callback.onSuccess(result);
|
callback.onSuccess(result);
|
||||||
numPending--;
|
Integer numActionsPerType = actionsPerType.get(actionName);
|
||||||
finish();
|
if(numActionsPerType != null && numActionsPerType > 0)
|
||||||
|
actionsPerType.put(actionName, numActionsPerType-1);
|
||||||
|
numPendingCalls--;
|
||||||
|
checkForEmptyCallQueue();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
action.setWrapperCallback(wrapper);
|
action.setWrapperCallback(wrapper);
|
||||||
action.execute();
|
action.execute();
|
||||||
|
|
||||||
numPending++;
|
if(numActionsOfType == null)
|
||||||
|
numActionsOfType = 0;
|
||||||
|
actionsPerType.put(action.getName(), numActionsOfType+1);
|
||||||
|
|
||||||
|
numPendingCalls++;
|
||||||
GWT.log("Execute action: " + action.getName());
|
GWT.log("Execute action: " + action.getName());
|
||||||
GWT.log("Pending actions counter: " + numPending);
|
GWT.log("Pending actions counter: " + numPendingCalls);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void finish() {
|
private void checkForEmptyCallQueue() {
|
||||||
if(numPending == 0 && lastRequestedAction != null) {
|
if(numPendingCalls == 0 && lastRequestedAction != null) {
|
||||||
execute(lastRequestedAction);
|
|
||||||
GWT.log("Set back last action : " + lastRequestedAction.getName());
|
GWT.log("Set back last action : " + lastRequestedAction.getName());
|
||||||
|
execute(lastRequestedAction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+62
@@ -0,0 +1,62 @@
|
|||||||
|
package com.sap.sailing.gwt.ui.actions;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
import com.sap.sailing.domain.common.DetailType;
|
||||||
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
|
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||||
|
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||||
|
import com.sap.sailing.gwt.ui.shared.CompetitorDTO;
|
||||||
|
import com.sap.sailing.gwt.ui.shared.MultiCompetitorRaceDataDTO;
|
||||||
|
|
||||||
|
public class GetCompetitorsRaceDataAction extends DefaultAsyncAction<MultiCompetitorRaceDataDTO> {
|
||||||
|
private final SailingServiceAsync sailingService;
|
||||||
|
|
||||||
|
private final RaceIdentifier race;
|
||||||
|
private final List<Pair<Date, CompetitorDTO>> competitorsQuery;
|
||||||
|
private final Date toDate;
|
||||||
|
private final long stepSize;
|
||||||
|
private final DetailType detailType;
|
||||||
|
|
||||||
|
private MultiCompetitorRaceDataDTO result;
|
||||||
|
private AsyncCallback<MultiCompetitorRaceDataDTO> callback;
|
||||||
|
|
||||||
|
public GetCompetitorsRaceDataAction(SailingServiceAsync sailingService, RaceIdentifier race, List<Pair<Date, CompetitorDTO>> competitorsQuery,
|
||||||
|
Date toDate, long stepSize, DetailType detailType) {
|
||||||
|
this.sailingService = sailingService;
|
||||||
|
this.race = race;
|
||||||
|
this.competitorsQuery = competitorsQuery;
|
||||||
|
this.toDate = toDate;
|
||||||
|
this.stepSize = stepSize;
|
||||||
|
this.detailType = detailType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
sailingService.getCompetitorsRaceData(race, competitorsQuery, toDate, stepSize, detailType,
|
||||||
|
(AsyncCallback<MultiCompetitorRaceDataDTO>) wrapperCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MultiCompetitorRaceDataDTO getResult() {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AsyncCallback<MultiCompetitorRaceDataDTO> getCallback() {
|
||||||
|
return callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCallback(AsyncCallback<MultiCompetitorRaceDataDTO> callback) {
|
||||||
|
this.callback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return GetCompetitorsRaceDataAction.class.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
+31
-3
@@ -12,13 +12,20 @@ public class GetWindInfoAction extends DefaultAsyncAction<WindInfoForRaceDTO>
|
|||||||
{
|
{
|
||||||
private final SailingServiceAsync sailingService;
|
private final SailingServiceAsync sailingService;
|
||||||
private final RaceIdentifier raceIdentifier;
|
private final RaceIdentifier raceIdentifier;
|
||||||
private final Date from;
|
private Date from;
|
||||||
private long millisecondsStepWidth;
|
private long millisecondsStepWidth;
|
||||||
private int numberOfFixes;
|
private int numberOfFixes;
|
||||||
private Collection<String> windSourceTypeNames;
|
private Collection<String> windSourceTypeNames;
|
||||||
|
|
||||||
private WindInfoForRaceDTO result;
|
private WindInfoForRaceDTO result;
|
||||||
|
|
||||||
|
private long resolutionInMilliseconds;
|
||||||
|
private Date fromDate;
|
||||||
|
private Date toDate;
|
||||||
|
|
||||||
|
private enum CallVariants { Variant1, Variant2 };
|
||||||
|
private final CallVariants callVariant;
|
||||||
|
|
||||||
private AsyncCallback<WindInfoForRaceDTO> callback;
|
private AsyncCallback<WindInfoForRaceDTO> callback;
|
||||||
|
|
||||||
public GetWindInfoAction(SailingServiceAsync sailingService, RaceIdentifier raceIdentifier, Date from, long millisecondsStepWidth,
|
public GetWindInfoAction(SailingServiceAsync sailingService, RaceIdentifier raceIdentifier, Date from, long millisecondsStepWidth,
|
||||||
@@ -29,12 +36,33 @@ public class GetWindInfoAction extends DefaultAsyncAction<WindInfoForRaceDTO>
|
|||||||
this.millisecondsStepWidth = millisecondsStepWidth;
|
this.millisecondsStepWidth = millisecondsStepWidth;
|
||||||
this.numberOfFixes = numberOfFixes;
|
this.numberOfFixes = numberOfFixes;
|
||||||
this.windSourceTypeNames = windSourceTypeNames;
|
this.windSourceTypeNames = windSourceTypeNames;
|
||||||
|
|
||||||
|
callVariant = CallVariants.Variant1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GetWindInfoAction(SailingServiceAsync sailingService, RaceIdentifier raceIdentifier,
|
||||||
|
Date fromDate, Date toDate, long resolutionInMilliseconds, Collection<String> windSourceTypeNames) {
|
||||||
|
this.sailingService = sailingService;
|
||||||
|
this.raceIdentifier = raceIdentifier;
|
||||||
|
this.fromDate = fromDate;
|
||||||
|
this.toDate = toDate;
|
||||||
|
this.resolutionInMilliseconds = resolutionInMilliseconds;
|
||||||
|
this.windSourceTypeNames = windSourceTypeNames;
|
||||||
|
|
||||||
|
callVariant = CallVariants.Variant2;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
sailingService.getWindInfo(raceIdentifier, from, millisecondsStepWidth, numberOfFixes, windSourceTypeNames, (AsyncCallback<WindInfoForRaceDTO>) wrapperCallback);
|
switch (callVariant) {
|
||||||
|
case Variant1:
|
||||||
|
sailingService.getWindInfo(raceIdentifier, from, millisecondsStepWidth, numberOfFixes, windSourceTypeNames, (AsyncCallback<WindInfoForRaceDTO>) wrapperCallback);
|
||||||
|
break;
|
||||||
|
case Variant2:
|
||||||
|
sailingService.getWindInfo(raceIdentifier, fromDate, toDate, resolutionInMilliseconds, windSourceTypeNames, (AsyncCallback<WindInfoForRaceDTO>) wrapperCallback);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+2
-1
@@ -10,6 +10,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
|
|||||||
import com.google.gwt.user.client.ui.RootPanel;
|
import com.google.gwt.user.client.ui.RootPanel;
|
||||||
import com.google.gwt.user.client.ui.TabPanel;
|
import com.google.gwt.user.client.ui.TabPanel;
|
||||||
import com.sap.sailing.domain.common.DefaultLeaderboardName;
|
import com.sap.sailing.domain.common.DefaultLeaderboardName;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.client.AbstractEntryPoint;
|
import com.sap.sailing.gwt.ui.client.AbstractEntryPoint;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
||||||
import com.sap.sailing.gwt.ui.client.EventDisplayer;
|
import com.sap.sailing.gwt.ui.client.EventDisplayer;
|
||||||
@@ -58,7 +59,7 @@ public class AdminConsoleEntryPoint extends AbstractEntryPoint implements EventR
|
|||||||
tabPanel.add(raceMapPanel, stringMessages.map(), /* asHTML */ false);
|
tabPanel.add(raceMapPanel, stringMessages.map(), /* asHTML */ false);
|
||||||
LeaderboardSettings defaultLeaderboardSettings = LeaderboardSettingsFactory.getInstance()
|
LeaderboardSettings defaultLeaderboardSettings = LeaderboardSettingsFactory.getInstance()
|
||||||
.createNewDefaultSettings(/* racesToShow */ null, /* namesOfRacesToShow */ null, /* autoExpandFirstRace */false);
|
.createNewDefaultSettings(/* racesToShow */ null, /* namesOfRacesToShow */ null, /* autoExpandFirstRace */false);
|
||||||
final LeaderboardPanel defaultLeaderboardPanel = new LeaderboardPanel(sailingService,
|
final LeaderboardPanel defaultLeaderboardPanel = new LeaderboardPanel(sailingService, new AsyncActionsExecutor(),
|
||||||
defaultLeaderboardSettings,
|
defaultLeaderboardSettings,
|
||||||
/* preSelectedRace */null, new CompetitorSelectionModel(/* hasMultiSelection */true),
|
/* preSelectedRace */null, new CompetitorSelectionModel(/* hasMultiSelection */true),
|
||||||
DefaultLeaderboardName.DEFAULT_LEADERBOARD_NAME, /* leaderboard group name */null, this,
|
DefaultLeaderboardName.DEFAULT_LEADERBOARD_NAME, /* leaderboard group name */null, this,
|
||||||
|
|||||||
+2
-2
@@ -205,11 +205,12 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
|||||||
|
|
||||||
private final AsyncActionsExecutor asyncActionsExecutor;
|
private final AsyncActionsExecutor asyncActionsExecutor;
|
||||||
|
|
||||||
public RaceMap(SailingServiceAsync sailingService, ErrorReporter errorReporter, Timer timer,
|
public RaceMap(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, ErrorReporter errorReporter, Timer timer,
|
||||||
CompetitorSelectionProvider competitorSelection, StringMessages stringMessages) {
|
CompetitorSelectionProvider competitorSelection, StringMessages stringMessages) {
|
||||||
this.setSize("100%", "100%");
|
this.setSize("100%", "100%");
|
||||||
this.stringMessages = stringMessages;
|
this.stringMessages = stringMessages;
|
||||||
this.sailingService = sailingService;
|
this.sailingService = sailingService;
|
||||||
|
this.asyncActionsExecutor = asyncActionsExecutor;
|
||||||
this.errorReporter = errorReporter;
|
this.errorReporter = errorReporter;
|
||||||
this.timer = timer;
|
this.timer = timer;
|
||||||
timer.addTimeListener(this);
|
timer.addTimeListener(this);
|
||||||
@@ -227,7 +228,6 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
|||||||
settings = new RaceMapSettings();
|
settings = new RaceMapSettings();
|
||||||
lastTimeChangeBeforeInitialization = null;
|
lastTimeChangeBeforeInitialization = null;
|
||||||
dataInitialized = false;
|
dataInitialized = false;
|
||||||
asyncActionsExecutor = new AsyncActionsExecutor();
|
|
||||||
initializeData();
|
initializeData();
|
||||||
|
|
||||||
windPanel = new CombinedWindPanel(sailingService, asyncActionsExecutor, errorReporter, stringMessages, timer);
|
windPanel = new CombinedWindPanel(sailingService, asyncActionsExecutor, errorReporter, stringMessages, timer);
|
||||||
|
|||||||
+2
-1
@@ -21,6 +21,7 @@ import com.google.gwt.user.client.ui.RequiresResize;
|
|||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
import com.sap.sailing.gwt.ui.client.EventDisplayer;
|
import com.sap.sailing.gwt.ui.client.EventDisplayer;
|
||||||
@@ -71,7 +72,7 @@ public class RaceMapPanel extends FormPanel implements EventDisplayer, TimeListe
|
|||||||
AbsolutePanel mapPanel = new AbsolutePanel();
|
AbsolutePanel mapPanel = new AbsolutePanel();
|
||||||
mapPanel.setSize("100%", "100%");
|
mapPanel.setSize("100%", "100%");
|
||||||
grid.setWidget(2, 1, mapPanel);
|
grid.setWidget(2, 1, mapPanel);
|
||||||
raceMap = new RaceMap(sailingService, errorReporter, timer, competitorSelectionProvider, stringMessages);
|
raceMap = new RaceMap(sailingService, new AsyncActionsExecutor(), errorReporter, timer, competitorSelectionProvider, stringMessages);
|
||||||
mapPanel.add(raceMap);
|
mapPanel.add(raceMap);
|
||||||
raceSelectionModel = new RaceSelectionModel();
|
raceSelectionModel = new RaceSelectionModel();
|
||||||
raceListBox = new RacesListBoxPanel(eventRefresher, raceSelectionModel, stringMessages);
|
raceListBox = new RacesListBoxPanel(eventRefresher, raceSelectionModel, stringMessages);
|
||||||
|
|||||||
+7
-5
@@ -42,6 +42,7 @@ import com.google.gwt.user.client.ui.Widget;
|
|||||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
import com.sap.sailing.domain.common.WindSource;
|
import com.sap.sailing.domain.common.WindSource;
|
||||||
import com.sap.sailing.domain.common.WindSourceType;
|
import com.sap.sailing.domain.common.WindSourceType;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.GetWindInfoAction;
|
||||||
import com.sap.sailing.gwt.ui.client.ColorMap;
|
import com.sap.sailing.gwt.ui.client.ColorMap;
|
||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
|
import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener;
|
||||||
@@ -462,12 +463,13 @@ public class WindChart extends SimplePanel implements Component<WindChartSetting
|
|||||||
if (raceIdentifier == null) {
|
if (raceIdentifier == null) {
|
||||||
clearChart();
|
clearChart();
|
||||||
} else if (needsDataLoading()) {
|
} else if (needsDataLoading()) {
|
||||||
sailingService.getWindInfo(raceIdentifier,
|
GetWindInfoAction getWindInfoAction = new GetWindInfoAction(sailingService, raceIdentifier,
|
||||||
// TODO Time interval should be determined by a selection in the chart but be at most 60s. See bug #121.
|
// TODO Time interval should be determined by a selection in the chart but be at most 60s. See bug #121.
|
||||||
// Consider incremental updates for new data only.
|
// Consider incremental updates for new data only.
|
||||||
from, to, resolutionInMilliseconds, // use race start and time of newest event as default time period
|
from, to, resolutionInMilliseconds, // use race start and time of newest event as default time period
|
||||||
null, // retrieve data on all wind sources
|
null); // retrieve data on all wind sources
|
||||||
new AsyncCallback<WindInfoForRaceDTO>() {
|
|
||||||
|
getWindInfoAction.setCallback(new AsyncCallback<WindInfoForRaceDTO>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WindInfoForRaceDTO result) {
|
public void onSuccess(WindInfoForRaceDTO result) {
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
|
|||||||
+10
-3
@@ -40,6 +40,8 @@ import com.sap.sailing.domain.common.DetailType;
|
|||||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.GetCompetitorsRaceDataAction;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||||
import com.sap.sailing.gwt.ui.client.DetailTypeFormatter;
|
import com.sap.sailing.gwt.ui.client.DetailTypeFormatter;
|
||||||
@@ -75,6 +77,7 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
|
|||||||
protected static final int LINE_WIDTH = 1;
|
protected static final int LINE_WIDTH = 1;
|
||||||
protected MultiCompetitorRaceDataDTO chartData;
|
protected MultiCompetitorRaceDataDTO chartData;
|
||||||
protected final SailingServiceAsync sailingService;
|
protected final SailingServiceAsync sailingService;
|
||||||
|
protected final AsyncActionsExecutor asyncActionsExecutor;
|
||||||
protected final ErrorReporter errorReporter;
|
protected final ErrorReporter errorReporter;
|
||||||
protected Chart chart;
|
protected Chart chart;
|
||||||
private boolean compactChart;
|
private boolean compactChart;
|
||||||
@@ -94,7 +97,7 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
|
|||||||
protected DetailType dataToShow;
|
protected DetailType dataToShow;
|
||||||
protected final CompetitorSelectionProvider competitorSelectionProvider;
|
protected final CompetitorSelectionProvider competitorSelectionProvider;
|
||||||
|
|
||||||
public AbstractChartPanel(SailingServiceAsync sailingService,
|
public AbstractChartPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor,
|
||||||
CompetitorSelectionProvider competitorSelectionProvider, RaceSelectionProvider raceSelectionProvider,
|
CompetitorSelectionProvider competitorSelectionProvider, RaceSelectionProvider raceSelectionProvider,
|
||||||
Timer timer, final StringMessages stringMessages, ErrorReporter errorReporter, DetailType dataToShow,
|
Timer timer, final StringMessages stringMessages, ErrorReporter errorReporter, DetailType dataToShow,
|
||||||
boolean compactChart, boolean allowTimeAdjust) {
|
boolean compactChart, boolean allowTimeAdjust) {
|
||||||
@@ -110,6 +113,7 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
|
|||||||
chartData = null;
|
chartData = null;
|
||||||
this.compactChart = compactChart;
|
this.compactChart = compactChart;
|
||||||
this.sailingService = sailingService;
|
this.sailingService = sailingService;
|
||||||
|
this.asyncActionsExecutor = asyncActionsExecutor;
|
||||||
this.raceSelectionProvider = raceSelectionProvider;
|
this.raceSelectionProvider = raceSelectionProvider;
|
||||||
this.allowTimeAdjust = allowTimeAdjust;
|
this.allowTimeAdjust = allowTimeAdjust;
|
||||||
raceSelectionProvider.addRaceSelectionChangeListener(this);
|
raceSelectionProvider.addRaceSelectionChangeListener(this);
|
||||||
@@ -271,8 +275,9 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sailingService.getCompetitorsRaceData(getSelectedRace(), dataQuery, toDate, getStepSize(), getDataToShow(),
|
GetCompetitorsRaceDataAction getCompetitorsRaceDataAction = new GetCompetitorsRaceDataAction(sailingService,
|
||||||
new AsyncCallback<MultiCompetitorRaceDataDTO>() {
|
getSelectedRace(), dataQuery, toDate, getStepSize(), getDataToShow());
|
||||||
|
getCompetitorsRaceDataAction.setCallback(new AsyncCallback<MultiCompetitorRaceDataDTO>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
@@ -296,6 +301,8 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
|
|||||||
setWidget(chart);
|
setWidget(chart);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
asyncActionsExecutor.execute(getCompetitorsRaceDataAction);
|
||||||
} else {
|
} else {
|
||||||
setWidget(noCompetitorsSelectedLabel);
|
setWidget(noCompetitorsSelectedLabel);
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -1,6 +1,7 @@
|
|||||||
package com.sap.sailing.gwt.ui.leaderboard;
|
package com.sap.sailing.gwt.ui.leaderboard;
|
||||||
|
|
||||||
import com.sap.sailing.domain.common.DetailType;
|
import com.sap.sailing.domain.common.DetailType;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
|
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
|
||||||
@@ -24,10 +25,10 @@ import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
|
|||||||
*/
|
*/
|
||||||
public class ChartPanel extends AbstractChartPanel<ChartSettings> implements Component<ChartSettings> {
|
public class ChartPanel extends AbstractChartPanel<ChartSettings> implements Component<ChartSettings> {
|
||||||
|
|
||||||
public ChartPanel(SailingServiceAsync sailingService, CompetitorSelectionProvider competitorSelectionProvider,
|
public ChartPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, CompetitorSelectionProvider competitorSelectionProvider,
|
||||||
RaceSelectionProvider raceSelectionProvider, Timer timer, DetailType dataToShow, StringMessages stringMessages,
|
RaceSelectionProvider raceSelectionProvider, Timer timer, DetailType dataToShow, StringMessages stringMessages,
|
||||||
ErrorReporter errorReporter, boolean compactChart, boolean allowTimeAdjust) {
|
ErrorReporter errorReporter, boolean compactChart, boolean allowTimeAdjust) {
|
||||||
super(sailingService, competitorSelectionProvider, raceSelectionProvider, timer, stringMessages, errorReporter,
|
super(sailingService, asyncActionsExecutor, competitorSelectionProvider, raceSelectionProvider, timer, stringMessages, errorReporter,
|
||||||
dataToShow, compactChart, allowTimeAdjust);
|
dataToShow, compactChart, allowTimeAdjust);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -21,6 +21,7 @@ import com.google.gwt.user.client.ui.Panel;
|
|||||||
import com.google.gwt.user.client.ui.RadioButton;
|
import com.google.gwt.user.client.ui.RadioButton;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
import com.sap.sailing.gwt.ui.client.RaceSelectionModel;
|
import com.sap.sailing.gwt.ui.client.RaceSelectionModel;
|
||||||
@@ -53,7 +54,7 @@ public class CompareCompetitorsChartDialog extends DialogBox {
|
|||||||
raceSelectionProvider = new RaceSelectionModel();
|
raceSelectionProvider = new RaceSelectionModel();
|
||||||
raceSelectionProvider.setAllRaces(races);
|
raceSelectionProvider.setAllRaces(races);
|
||||||
|
|
||||||
multiChartPanel = new MultiChartPanel(sailingService, competitorSelectionProvider, raceSelectionProvider,
|
multiChartPanel = new MultiChartPanel(sailingService, new AsyncActionsExecutor(), competitorSelectionProvider, raceSelectionProvider,
|
||||||
timer, stringConstants, errorReporter, false, false);
|
timer, stringConstants, errorReporter, false, false);
|
||||||
multiChartPanel.setSize("100%", "100%");
|
multiChartPanel.setSize("100%", "100%");
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -12,6 +12,7 @@ import com.google.gwt.user.client.ui.RootLayoutPanel;
|
|||||||
import com.google.gwt.user.client.ui.RootPanel;
|
import com.google.gwt.user.client.ui.RootPanel;
|
||||||
import com.google.gwt.user.client.ui.ScrollPanel;
|
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.client.AbstractEntryPoint;
|
import com.sap.sailing.gwt.ui.client.AbstractEntryPoint;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
||||||
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
|
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
|
||||||
@@ -61,7 +62,7 @@ public class LeaderboardEntryPoint extends AbstractEntryPoint {
|
|||||||
userAgentType, null, timer, logoAndTitlePanel, mainPanel);
|
userAgentType, null, timer, logoAndTitlePanel, mainPanel);
|
||||||
mainPanel.add(tvViewPanel);
|
mainPanel.add(tvViewPanel);
|
||||||
} else {
|
} else {
|
||||||
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService,
|
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, new AsyncActionsExecutor(),
|
||||||
LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(null, null, /* autoExpandFirstRace */ false),
|
LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(null, null, /* autoExpandFirstRace */ false),
|
||||||
/* preSelectedRace */ null, new CompetitorSelectionModel(/* hasMultiSelection */ true),
|
/* preSelectedRace */ null, new CompetitorSelectionModel(/* hasMultiSelection */ true),
|
||||||
new Timer(PlayModes.Replay, /* delayBetweenAutoAdvancesInMilliseconds */3000l),
|
new Timer(PlayModes.Replay, /* delayBetweenAutoAdvancesInMilliseconds */3000l),
|
||||||
|
|||||||
+6
-6
@@ -846,25 +846,26 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LeaderboardPanel(SailingServiceAsync sailingService, LeaderboardSettings settings,
|
public LeaderboardPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings,
|
||||||
CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName,
|
CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName,
|
||||||
String leaderboardGroupName, ErrorReporter errorReporter, final StringMessages stringMessages,
|
String leaderboardGroupName, ErrorReporter errorReporter, final StringMessages stringMessages,
|
||||||
final UserAgentTypes userAgentType) {
|
final UserAgentTypes userAgentType) {
|
||||||
this(sailingService, settings, /* preSelectedRace */null, competitorSelectionProvider, leaderboardName,
|
this(sailingService, asyncActionsExecutor, settings, /* preSelectedRace */null, competitorSelectionProvider, leaderboardName,
|
||||||
leaderboardGroupName, errorReporter, stringMessages, userAgentType);
|
leaderboardGroupName, errorReporter, stringMessages, userAgentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LeaderboardPanel(SailingServiceAsync sailingService, LeaderboardSettings settings, RaceIdentifier preSelectedRace,
|
public LeaderboardPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, RaceIdentifier preSelectedRace,
|
||||||
CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, String leaderboardGroupName,
|
CompetitorSelectionProvider competitorSelectionProvider, String leaderboardName, String leaderboardGroupName,
|
||||||
ErrorReporter errorReporter, final StringMessages stringMessages, final UserAgentTypes userAgentType) {
|
ErrorReporter errorReporter, final StringMessages stringMessages, final UserAgentTypes userAgentType) {
|
||||||
this(sailingService, settings, preSelectedRace, competitorSelectionProvider, new Timer(PlayModes.Replay, /* delayBetweenAutoAdvancesInMilliseconds */3000l),
|
this(sailingService, asyncActionsExecutor, settings, preSelectedRace, competitorSelectionProvider, new Timer(PlayModes.Replay, /* delayBetweenAutoAdvancesInMilliseconds */3000l),
|
||||||
leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgentType);
|
leaderboardName, leaderboardGroupName, errorReporter, stringMessages, userAgentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LeaderboardPanel(SailingServiceAsync sailingService, LeaderboardSettings settings, RaceIdentifier preSelectedRace,
|
public LeaderboardPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, LeaderboardSettings settings, RaceIdentifier preSelectedRace,
|
||||||
CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardName, String leaderboardGroupName,
|
CompetitorSelectionProvider competitorSelectionProvider, Timer timer, String leaderboardName, String leaderboardGroupName,
|
||||||
ErrorReporter errorReporter, final StringMessages stringMessages, final UserAgentTypes userAgentType) {
|
ErrorReporter errorReporter, final StringMessages stringMessages, final UserAgentTypes userAgentType) {
|
||||||
this.sailingService = sailingService;
|
this.sailingService = sailingService;
|
||||||
|
this.asyncActionsExecutor = asyncActionsExecutor;
|
||||||
this.preSelectedRace = preSelectedRace;
|
this.preSelectedRace = preSelectedRace;
|
||||||
this.competitorSelectionProvider = competitorSelectionProvider;
|
this.competitorSelectionProvider = competitorSelectionProvider;
|
||||||
competitorSelectionProvider.addCompetitorSelectionChangeListener(this);
|
competitorSelectionProvider.addCompetitorSelectionChangeListener(this);
|
||||||
@@ -881,7 +882,6 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
|||||||
selectedRaceDetails.addAll(settings.getRaceDetailsToShow());
|
selectedRaceDetails.addAll(settings.getRaceDetailsToShow());
|
||||||
setAutoExpandFirstRace(settings.isAutoExpandFirstRace());
|
setAutoExpandFirstRace(settings.isAutoExpandFirstRace());
|
||||||
|
|
||||||
asyncActionsExecutor = new AsyncActionsExecutor();
|
|
||||||
this.timer = timer;
|
this.timer = timer;
|
||||||
timer.addPlayStateListener(this);
|
timer.addPlayStateListener(this);
|
||||||
timer.addTimeListener(this);
|
timer.addTimeListener(this);
|
||||||
|
|||||||
+3
-2
@@ -1,6 +1,7 @@
|
|||||||
package com.sap.sailing.gwt.ui.leaderboard;
|
package com.sap.sailing.gwt.ui.leaderboard;
|
||||||
|
|
||||||
import com.sap.sailing.domain.common.DetailType;
|
import com.sap.sailing.domain.common.DetailType;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
|
import com.sap.sailing.gwt.ui.client.RaceSelectionProvider;
|
||||||
@@ -23,10 +24,10 @@ import com.sap.sailing.gwt.ui.shared.components.SettingsDialogComponent;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class MultiChartPanel extends AbstractChartPanel<MultiChartSettings> implements Component<MultiChartSettings> {
|
public class MultiChartPanel extends AbstractChartPanel<MultiChartSettings> implements Component<MultiChartSettings> {
|
||||||
public MultiChartPanel(SailingServiceAsync sailingService, CompetitorSelectionProvider competitorSelectionProvider,
|
public MultiChartPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, CompetitorSelectionProvider competitorSelectionProvider,
|
||||||
RaceSelectionProvider raceSelectionProvider, Timer timer, final StringMessages stringMessages,
|
RaceSelectionProvider raceSelectionProvider, Timer timer, final StringMessages stringMessages,
|
||||||
ErrorReporter errorReporter, boolean compactChart, boolean allowTimeAdjust) {
|
ErrorReporter errorReporter, boolean compactChart, boolean allowTimeAdjust) {
|
||||||
super(sailingService, competitorSelectionProvider, raceSelectionProvider, timer, stringMessages, errorReporter,
|
super(sailingService, asyncActionsExecutor, competitorSelectionProvider, raceSelectionProvider, timer, stringMessages, errorReporter,
|
||||||
/*show initially*/ DetailType.WINDWARD_DISTANCE_TO_OVERALL_LEADER, compactChart, allowTimeAdjust);
|
/*show initially*/ DetailType.WINDWARD_DISTANCE_TO_OVERALL_LEADER, compactChart, allowTimeAdjust);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -12,6 +12,7 @@ import com.google.gwt.user.client.ui.FlowPanel;
|
|||||||
import com.google.gwt.user.client.ui.Label;
|
import com.google.gwt.user.client.ui.Label;
|
||||||
import com.google.gwt.user.client.ui.SimplePanel;
|
import com.google.gwt.user.client.ui.SimplePanel;
|
||||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
|
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
|
||||||
@@ -84,7 +85,7 @@ public class TVViewPanel extends SimplePanel implements RaceTimesInfoProviderLis
|
|||||||
CompetitorSelectionModel selectionModel = new CompetitorSelectionModel(/* hasMultiSelection */ true);
|
CompetitorSelectionModel selectionModel = new CompetitorSelectionModel(/* hasMultiSelection */ true);
|
||||||
Timer timer = new Timer(PlayModes.Live, /* delayBetweenAutoAdvancesInMilliseconds */3000l);
|
Timer timer = new Timer(PlayModes.Live, /* delayBetweenAutoAdvancesInMilliseconds */3000l);
|
||||||
timer.play();
|
timer.play();
|
||||||
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, settings,
|
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, new AsyncActionsExecutor(), settings,
|
||||||
/* preSelectedRace */null, selectionModel, timer, leaderboardName, null, errorReporter, stringMessages,
|
/* preSelectedRace */null, selectionModel, timer, leaderboardName, null, errorReporter, stringMessages,
|
||||||
userAgentType) {
|
userAgentType) {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+3
-2
@@ -14,6 +14,7 @@ import com.google.gwt.cell.client.SelectionCell;
|
|||||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
|
||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||||
@@ -250,9 +251,9 @@ public class EditableLeaderboardPanel extends LeaderboardPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditableLeaderboardPanel(SailingServiceAsync sailingService, String leaderboardName, String leaderboardGroupName,
|
public EditableLeaderboardPanel(SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, String leaderboardName, String leaderboardGroupName,
|
||||||
ErrorReporter errorReporter, StringMessages stringConstants, UserAgentTypes userAgentType) {
|
ErrorReporter errorReporter, StringMessages stringConstants, UserAgentTypes userAgentType) {
|
||||||
super(sailingService, LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
|
super(sailingService, asyncActionsExecutor, LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(
|
||||||
/* racesToShow */ null, /* namesOfRacesToShow */ null, /* autoExpandFirstRace */false),
|
/* racesToShow */ null, /* namesOfRacesToShow */ null, /* autoExpandFirstRace */false),
|
||||||
new CompetitorSelectionModel(/* hasMultiSelection */true),
|
new CompetitorSelectionModel(/* hasMultiSelection */true),
|
||||||
leaderboardName, leaderboardGroupName, errorReporter, stringConstants, userAgentType);
|
leaderboardName, leaderboardGroupName, errorReporter, stringConstants, userAgentType);
|
||||||
|
|||||||
+2
-1
@@ -6,6 +6,7 @@ import com.google.gwt.user.client.Window;
|
|||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.google.gwt.user.client.ui.Label;
|
import com.google.gwt.user.client.ui.Label;
|
||||||
import com.google.gwt.user.client.ui.RootPanel;
|
import com.google.gwt.user.client.ui.RootPanel;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.client.AbstractEntryPoint;
|
import com.sap.sailing.gwt.ui.client.AbstractEntryPoint;
|
||||||
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
|
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
|
||||||
|
|
||||||
@@ -20,7 +21,7 @@ public class LeaderboardEditPage extends AbstractEntryPoint {
|
|||||||
if (leaderboardNames.contains(leaderboardName)) {
|
if (leaderboardNames.contains(leaderboardName)) {
|
||||||
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel("", stringMessages);
|
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel("", stringMessages);
|
||||||
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
|
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
|
||||||
EditableLeaderboardPanel leaderboardPanel = new EditableLeaderboardPanel(sailingService, leaderboardName, null,
|
EditableLeaderboardPanel leaderboardPanel = new EditableLeaderboardPanel(sailingService, new AsyncActionsExecutor(), leaderboardName, null,
|
||||||
LeaderboardEditPage.this, stringMessages, userAgentType);
|
LeaderboardEditPage.this, stringMessages, userAgentType);
|
||||||
RootPanel.get().add(logoAndTitlePanel);
|
RootPanel.get().add(logoAndTitlePanel);
|
||||||
RootPanel.get().add(leaderboardPanel);
|
RootPanel.get().add(leaderboardPanel);
|
||||||
|
|||||||
+10
-6
@@ -22,6 +22,7 @@ import com.google.gwt.user.client.ui.ToggleButton;
|
|||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
import com.sap.sailing.domain.common.WindSourceType;
|
import com.sap.sailing.domain.common.WindSourceType;
|
||||||
|
import com.sap.sailing.gwt.ui.actions.AsyncActionsExecutor;
|
||||||
import com.sap.sailing.gwt.ui.adminconsole.RaceMap;
|
import com.sap.sailing.gwt.ui.adminconsole.RaceMap;
|
||||||
import com.sap.sailing.gwt.ui.adminconsole.RaceMapSettings;
|
import com.sap.sailing.gwt.ui.adminconsole.RaceMapSettings;
|
||||||
import com.sap.sailing.gwt.ui.adminconsole.WindChart;
|
import com.sap.sailing.gwt.ui.adminconsole.WindChart;
|
||||||
@@ -111,7 +112,9 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
|||||||
* The competitor chart viewer in <code>CASCADE</code> view mode. <code>null</code> if in <code>ONESCREEN</code> view mode
|
* The competitor chart viewer in <code>CASCADE</code> view mode. <code>null</code> if in <code>ONESCREEN</code> view mode
|
||||||
*/
|
*/
|
||||||
private CollapsableComponentViewer<MultiChartSettings> competitorChartViewer = null;
|
private CollapsableComponentViewer<MultiChartSettings> competitorChartViewer = null;
|
||||||
|
|
||||||
|
private final AsyncActionsExecutor asyncActionsExecutor;
|
||||||
|
|
||||||
public RaceBoardPanel(SailingServiceAsync sailingService, UserDTO theUser, Timer timer,
|
public RaceBoardPanel(SailingServiceAsync sailingService, UserDTO theUser, Timer timer,
|
||||||
RaceSelectionProvider theRaceSelectionProvider, String leaderboardName, String leaderboardGroupName,
|
RaceSelectionProvider theRaceSelectionProvider, String leaderboardName, String leaderboardGroupName,
|
||||||
ErrorReporter errorReporter, final StringMessages stringMessages, UserAgentTypes userAgentType,
|
ErrorReporter errorReporter, final StringMessages stringMessages, UserAgentTypes userAgentType,
|
||||||
@@ -127,6 +130,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
|||||||
this.errorReporter = errorReporter;
|
this.errorReporter = errorReporter;
|
||||||
this.userAgentType = userAgentType;
|
this.userAgentType = userAgentType;
|
||||||
this.viewMode = viewMode;
|
this.viewMode = viewMode;
|
||||||
|
asyncActionsExecutor = new AsyncActionsExecutor();
|
||||||
FlowPanel mainPanel = new FlowPanel();
|
FlowPanel mainPanel = new FlowPanel();
|
||||||
mainPanel.setSize("100%", "100%");
|
mainPanel.setSize("100%", "100%");
|
||||||
|
|
||||||
@@ -162,12 +166,12 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
|||||||
|
|
||||||
// create the default leaderboard and select the right race
|
// create the default leaderboard and select the right race
|
||||||
leaderboardPanel = createLeaderboardPanel(leaderboardName, leaderboardGroupName);
|
leaderboardPanel = createLeaderboardPanel(leaderboardName, leaderboardGroupName);
|
||||||
RaceMap raceMap = new RaceMap(sailingService, errorReporter, timer, competitorSelectionModel, stringMessages);
|
RaceMap raceMap = new RaceMap(sailingService, asyncActionsExecutor, errorReporter, timer, competitorSelectionModel, stringMessages);
|
||||||
raceMap.onRaceSelectionChange(Collections.singletonList(selectedRaceIdentifier));
|
raceMap.onRaceSelectionChange(Collections.singletonList(selectedRaceIdentifier));
|
||||||
|
|
||||||
List<Component<?>> components = new ArrayList<Component<?>>();
|
List<Component<?>> components = new ArrayList<Component<?>>();
|
||||||
|
|
||||||
competitorChart = new MultiChartPanel(sailingService, competitorSelectionModel, raceSelectionProvider,
|
competitorChart = new MultiChartPanel(sailingService, asyncActionsExecutor, competitorSelectionModel, raceSelectionProvider,
|
||||||
timer, stringMessages, errorReporter, true, true);
|
timer, stringMessages, errorReporter, true, true);
|
||||||
competitorChart.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces());
|
competitorChart.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces());
|
||||||
components.add(competitorChart);
|
components.add(competitorChart);
|
||||||
@@ -263,7 +267,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
|||||||
|
|
||||||
// create the race map
|
// create the race map
|
||||||
if(showMap) {
|
if(showMap) {
|
||||||
RaceMap raceMap = new RaceMap(sailingService, errorReporter, timer, competitorSelectionModel, stringMessages);
|
RaceMap raceMap = new RaceMap(sailingService, asyncActionsExecutor, errorReporter, timer, competitorSelectionModel, stringMessages);
|
||||||
CollapsableComponentViewer<RaceMapSettings> raceMapViewer = new CollapsableComponentViewer<RaceMapSettings>(
|
CollapsableComponentViewer<RaceMapSettings> raceMapViewer = new CollapsableComponentViewer<RaceMapSettings>(
|
||||||
raceMap, "auto", "500px", stringMessages);
|
raceMap, "auto", "500px", stringMessages);
|
||||||
|
|
||||||
@@ -283,7 +287,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
|||||||
// CollapsableComponentViewer<ChartSettings> chartViewer = new CollapsableComponentViewer<ChartSettings>(
|
// CollapsableComponentViewer<ChartSettings> chartViewer = new CollapsableComponentViewer<ChartSettings>(
|
||||||
// competitorCharts, "auto", "400px", stringMessages);
|
// competitorCharts, "auto", "400px", stringMessages);
|
||||||
|
|
||||||
competitorChart = new MultiChartPanel(sailingService, competitorSelectionModel, raceSelectionProvider,
|
competitorChart = new MultiChartPanel(sailingService, asyncActionsExecutor, competitorSelectionModel, raceSelectionProvider,
|
||||||
timer, stringMessages, errorReporter, false, true);
|
timer, stringMessages, errorReporter, false, true);
|
||||||
competitorChartViewer = new CollapsableComponentViewer<MultiChartSettings>(
|
competitorChartViewer = new CollapsableComponentViewer<MultiChartSettings>(
|
||||||
competitorChart, "auto", "400px", stringMessages);
|
competitorChart, "auto", "400px", stringMessages);
|
||||||
@@ -303,7 +307,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
|||||||
.createNewSettingsForPlayMode(timer.getPlayMode(), /* nameOfRaceToSort */
|
.createNewSettingsForPlayMode(timer.getPlayMode(), /* nameOfRaceToSort */
|
||||||
selectedRaceIdentifier.getRaceName(),
|
selectedRaceIdentifier.getRaceName(),
|
||||||
/* nameOfRaceColumnToShow */null, /* nameOfRaceToShow */selectedRaceIdentifier.getRaceName());
|
/* nameOfRaceColumnToShow */null, /* nameOfRaceToShow */selectedRaceIdentifier.getRaceName());
|
||||||
return new LeaderboardPanel(sailingService, leaderBoardSettings, selectedRaceIdentifier,
|
return new LeaderboardPanel(sailingService, asyncActionsExecutor, leaderBoardSettings, selectedRaceIdentifier,
|
||||||
competitorSelectionModel, timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages,
|
competitorSelectionModel, timer, leaderboardName, leaderboardGroupName, errorReporter, stringMessages,
|
||||||
userAgentType);
|
userAgentType);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user