mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
Improved auto player configuration UI
This commit is contained in:
1 parent
7f8ac5ec4f
commit
3b79c09400
8 files changed
+160
-184
No files matched your search
+2
-3
@@ -1,9 +1,8 @@
|
||||
package com.sap.sailing.gwt.autoplay.client.app;
|
||||
|
||||
import java.util.Map;
|
||||
import com.sap.sailing.gwt.autoplay.client.place.player.AutoPlayerConfiguration;
|
||||
|
||||
public interface PlaceNavigator {
|
||||
void goToStart();
|
||||
void goToPlayer(String eventUuidAsString, boolean fullscreen,
|
||||
Map<String, String> leaderboardParameters, Map<String, String> raceboardParameters);
|
||||
void goToPlayer(AutoPlayerConfiguration playerConfig);
|
||||
}
|
||||
+3
-8
@@ -1,8 +1,7 @@
|
||||
package com.sap.sailing.gwt.autoplay.client.app;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.gwt.place.shared.PlaceController;
|
||||
import com.sap.sailing.gwt.autoplay.client.place.player.AutoPlayerConfiguration;
|
||||
import com.sap.sailing.gwt.autoplay.client.place.player.PlayerPlace;
|
||||
import com.sap.sailing.gwt.autoplay.client.place.start.StartPlace;
|
||||
|
||||
@@ -20,12 +19,8 @@ public class PlaceNavigatorImpl implements PlaceNavigator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void goToPlayer(String eventUuidAsString, boolean fullscreen,
|
||||
Map<String, String> leaderboardParameters, Map<String, String> raceboardParameters) {
|
||||
PlayerPlace playerPlace = new PlayerPlace(eventUuidAsString, fullscreen,
|
||||
leaderboardParameters.get(PlayerPlace.PARAM_LEADEROARD_NAME),
|
||||
leaderboardParameters.get(PlayerPlace.PARAM_LEADEROARD_ZOOM),
|
||||
raceboardParameters.get(PlayerPlace.PARAM_RACEBOARD_AUTOSELECT_MEDIA));
|
||||
public void goToPlayer(AutoPlayerConfiguration playerConfig) {
|
||||
PlayerPlace playerPlace = new PlayerPlace(playerConfig);
|
||||
placeController.goTo(playerPlace);
|
||||
}
|
||||
|
||||
|
||||
+15
-20
@@ -66,14 +66,10 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
private final Timer raceboardTimer;
|
||||
private final RaceTimesInfoProvider raceTimesInfoProvider;
|
||||
private AutoPlayModes activeTvView;
|
||||
private final boolean isfullscreenMode;
|
||||
private boolean isInitialScreen = true;
|
||||
|
||||
// leaderboard related attributes
|
||||
private LeaderboardDTO leaderboard;
|
||||
private final String leaderboardName;
|
||||
private final String leaderboardGroupName;
|
||||
private final String leaderboardZoom;
|
||||
private LeaderboardSettings leaderboardSettings;
|
||||
|
||||
// raceboard related attributes
|
||||
@@ -82,24 +78,21 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
private boolean showWindChart;
|
||||
private final RaceBoardPerspectiveSettings raceboardViewConfig;
|
||||
private final PlayerView playerView;
|
||||
private final AutoPlayerConfiguration autoPlayerConfiguration;
|
||||
private Widget currentContentWidget;
|
||||
|
||||
private static int SAP_HEADER_HEIGHT = 70;
|
||||
|
||||
public AutoPlayController(SailingServiceAsync sailingService, MediaServiceAsync mediaService,
|
||||
UserService userService, ErrorReporter errorReporter, boolean isfullscreenMode,
|
||||
String leaderboardGroupName, String leaderboardName, final String leaderboardZoom,
|
||||
UserService userService, ErrorReporter errorReporter, AutoPlayerConfiguration autoPlayerConfiguration,
|
||||
UserAgentDetails userAgent, long delayToLiveInMillis, boolean showRaceDetails,
|
||||
RaceBoardPerspectiveSettings raceboardViewConfig, PlayerView playerView, LeaderboardSettings leaderboardSettings) {
|
||||
this.raceboardViewConfig = raceboardViewConfig;
|
||||
this.sailingService = sailingService;
|
||||
this.mediaService = mediaService;
|
||||
this.userService = userService;
|
||||
this.isfullscreenMode = isfullscreenMode;
|
||||
this.errorReporter = errorReporter;
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.leaderboardZoom = leaderboardZoom;
|
||||
this.leaderboardGroupName = leaderboardGroupName;
|
||||
this.autoPlayerConfiguration = autoPlayerConfiguration;
|
||||
this.userAgent = userAgent;
|
||||
this.showRaceDetails = showRaceDetails;
|
||||
this.playerView = playerView;
|
||||
@@ -128,6 +121,7 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
Window.addResizeHandler(new ResizeHandler() {
|
||||
@Override
|
||||
public void onResize(ResizeEvent event) {
|
||||
String leaderboardZoom = AutoPlayController.this.autoPlayerConfiguration.getLeaderboardZoom();
|
||||
if(leaderboardZoom != null && leaderboardZoom.equalsIgnoreCase("auto")) {
|
||||
autoZoomContentWidget(SAP_HEADER_HEIGHT, currentContentWidget);
|
||||
}
|
||||
@@ -135,11 +129,11 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
});
|
||||
}
|
||||
|
||||
private LeaderboardPanel createLeaderboardPanel(String leaderboardGroupName, String leaderboardName, boolean showRaceDetails) {
|
||||
private LeaderboardPanel createLeaderboardPanel(String leaderboardName, boolean showRaceDetails) {
|
||||
CompetitorSelectionModel selectionModel = new CompetitorSelectionModel(/* hasMultiSelection */ true);
|
||||
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, asyncActionsExecutor,
|
||||
leaderboardSettings, true,
|
||||
/* preSelectedRace */null, selectionModel, leaderboardTimer, leaderboardGroupName, leaderboardName,
|
||||
/* preSelectedRace */null, selectionModel, leaderboardTimer, /*leaderboardGroupName*/ "", leaderboardName,
|
||||
errorReporter, StringMessages.INSTANCE, userAgent, showRaceDetails, /* competitorSearchTextBox */ null, /* showRegattaRank */
|
||||
/* showSelectionCheckbox */false, /* raceTimesInfoProvider */null, false, /* autoExpandLastRaceColumn */
|
||||
/* adjustTimerDelay */true, /*autoApplyTopNFilter*/ false, false) {
|
||||
@@ -185,23 +179,23 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
if (activeTvView != AutoPlayModes.Leaderboard) {
|
||||
playerView.clear();
|
||||
|
||||
boolean withFullscreenButton = isfullscreenMode && isInitialScreen;
|
||||
boolean withFullscreenButton = autoPlayerConfiguration.isFullscreenMode() && isInitialScreen;
|
||||
|
||||
SAPHeader sapHeader = new SAPHeader(TextMessages.INSTANCE.leaderboard() + ": " + leaderboardName, withFullscreenButton);
|
||||
SAPHeader sapHeader = new SAPHeader(TextMessages.INSTANCE.leaderboard() + ": " + autoPlayerConfiguration.getLeaderboardName(), withFullscreenButton);
|
||||
playerView.getDockPanel().addNorth(sapHeader, SAP_HEADER_HEIGHT);
|
||||
|
||||
LeaderboardPanel leaderboardPanel = createLeaderboardPanel(leaderboardGroupName, leaderboardName, showRaceDetails);
|
||||
LeaderboardPanel leaderboardPanel = createLeaderboardPanel(autoPlayerConfiguration.getLeaderboardName(), showRaceDetails);
|
||||
OldLeaderboard oldLeaderboard = new OldLeaderboard(leaderboardPanel);
|
||||
leaderboardPanel.addLeaderboardUpdateListener(oldLeaderboard);
|
||||
|
||||
currentContentWidget = oldLeaderboard.getContentWidget();
|
||||
|
||||
if(leaderboardZoom != null) {
|
||||
if(leaderboardZoom.equalsIgnoreCase("auto")) {
|
||||
if(autoPlayerConfiguration.getLeaderboardZoom() != null) {
|
||||
if(autoPlayerConfiguration.getLeaderboardZoom().equalsIgnoreCase("auto")) {
|
||||
autoZoomContentWidget(SAP_HEADER_HEIGHT, currentContentWidget);
|
||||
} else {
|
||||
try {
|
||||
Double zoom = Double.valueOf(leaderboardZoom);
|
||||
Double zoom = Double.valueOf(autoPlayerConfiguration.getLeaderboardZoom());
|
||||
zoomContentWidget(SAP_HEADER_HEIGHT, currentContentWidget, zoom);
|
||||
} catch (NumberFormatException e) {
|
||||
// do nothing
|
||||
@@ -289,11 +283,12 @@ public class AutoPlayController implements RaceTimesInfoProviderListener {
|
||||
private void showRaceBoard() {
|
||||
if (activeTvView != AutoPlayModes.Raceboard) {
|
||||
sailingService.getRaceboardData(currentLiveRace.getRegattaName(), currentLiveRace.getRaceName(),
|
||||
leaderboardName, null, null, new AsyncCallback<RaceboardDataDTO>() {
|
||||
autoPlayerConfiguration.getLeaderboardName(), null, null, new AsyncCallback<RaceboardDataDTO>() {
|
||||
@Override
|
||||
public void onSuccess(RaceboardDataDTO result) {
|
||||
playerView.clear();
|
||||
RaceBoardPanel raceBoardPanel = createRaceBoardPanel(leaderboardName, currentLiveRace, result.getCompetitorAndTheirBoats());
|
||||
RaceBoardPanel raceBoardPanel = createRaceBoardPanel(AutoPlayController.this.autoPlayerConfiguration.getLeaderboardName(),
|
||||
currentLiveRace, result.getCompetitorAndTheirBoats());
|
||||
raceBoardPanel.setSize("100%", "100%");
|
||||
if (showWindChart) {
|
||||
raceBoardPanel.setWindChartVisible(true);
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package com.sap.sailing.gwt.autoplay.client.place.player;
|
||||
|
||||
|
||||
public class AutoPlayerConfiguration {
|
||||
public final static String PARAM_EVENTID = "eventId";
|
||||
public final static String PARAM_FULLSCREEN = "fullscreen";
|
||||
public final static String PARAM_LEADEROARD_NAME = "leaderboardName";
|
||||
public final static String PARAM_LEADEROARD_ZOOM = "leaderboardZoom";
|
||||
|
||||
private String eventUidAsString;
|
||||
private String leaderboardName;
|
||||
private boolean fullscreenMode;
|
||||
private String leaderboardZoom;
|
||||
|
||||
public AutoPlayerConfiguration(String eventUidAsString, String leaderboardName, boolean fullscreenMode,
|
||||
String leaderboardZoom) {
|
||||
this.eventUidAsString = eventUidAsString;
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.fullscreenMode = fullscreenMode;
|
||||
this.leaderboardZoom = leaderboardZoom;
|
||||
}
|
||||
|
||||
public String getEventUidAsString() {
|
||||
return eventUidAsString;
|
||||
}
|
||||
|
||||
public String getLeaderboardName() {
|
||||
return leaderboardName;
|
||||
}
|
||||
|
||||
public boolean isFullscreenMode() {
|
||||
return fullscreenMode;
|
||||
}
|
||||
|
||||
public String getLeaderboardZoom() {
|
||||
return leaderboardZoom;
|
||||
}
|
||||
}
|
||||
+4
-5
@@ -34,7 +34,7 @@ public class PlayerActivity extends AbstractActivity {
|
||||
final long delayToLiveMillis = Window.Location.getParameter(PARAM_DELAY_TO_LIVE_MILLIS) != null ? Long
|
||||
.valueOf(Window.Location.getParameter(PARAM_DELAY_TO_LIVE_MILLIS)) : 5000l; // default 5s
|
||||
|
||||
UUID eventUUID = UUID.fromString(playerPlace.getEventUuidAsString());
|
||||
UUID eventUUID = UUID.fromString(playerPlace.getConfiguration().getEventUidAsString());
|
||||
clientFactory.getSailingService().getEventById(eventUUID, true, new AsyncCallback<EventDTO>() {
|
||||
@Override
|
||||
public void onSuccess(final EventDTO event) {
|
||||
@@ -46,9 +46,8 @@ public class PlayerActivity extends AbstractActivity {
|
||||
RootLayoutPanel.get().add(view.asWidget());
|
||||
|
||||
autoPlayController = new AutoPlayController(clientFactory.getSailingService(), clientFactory
|
||||
.getMediaService(), clientFactory.getUserService(), clientFactory.getErrorReporter(), playerPlace
|
||||
.isFullscreen(), /* leaderboardGroupName */"", playerPlace.getLeaderboardIdAsNameString(),
|
||||
playerPlace.getLeaderboardZoom(), userAgent, delayToLiveMillis, showRaceDetails,
|
||||
.getMediaService(), clientFactory.getUserService(), clientFactory.getErrorReporter(),
|
||||
playerPlace.getConfiguration(), userAgent, delayToLiveMillis, showRaceDetails,
|
||||
readRaceboardConfiguration, view, /** TODO: pass leaderboardSettings*/ null);
|
||||
autoPlayController.updatePlayMode(AutoPlayModes.Leaderboard);
|
||||
}
|
||||
@@ -61,7 +60,7 @@ public class PlayerActivity extends AbstractActivity {
|
||||
}
|
||||
|
||||
private RaceBoardPerspectiveSettings readRaceboardConfiguration() {
|
||||
Boolean autoSelectMedia = Boolean.valueOf(playerPlace.getRaceboardAutoSelectMedia());
|
||||
Boolean autoSelectMedia = true;
|
||||
|
||||
final boolean showLeaderboard = GwtHttpRequestUtils.getBooleanParameter(
|
||||
RaceBoardPerspectiveSettings.PARAM_VIEW_SHOW_LEADERBOARD, true /* default */);
|
||||
|
||||
+15
-52
@@ -4,66 +4,29 @@ import com.google.gwt.place.shared.PlaceTokenizer;
|
||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||
|
||||
public class PlayerPlace extends AbstractBasePlace {
|
||||
// general parameters
|
||||
private final String eventUuidAsString;
|
||||
private final boolean fullscreen;
|
||||
|
||||
public final static String PARAM_EVENTID = "eventId";
|
||||
public final static String PARAM_FULLSCREEN = "fullscreen";
|
||||
|
||||
// leaderboard parameters
|
||||
private final String leaderboardIdAsNameString;
|
||||
private final String leaderboardZoom;
|
||||
|
||||
public final static String PARAM_LEADEROARD_NAME = "leaderboardName";
|
||||
public final static String PARAM_LEADEROARD_ZOOM = "leaderboardZoom";
|
||||
|
||||
// raceboard parameters
|
||||
private String raceboardAutoSelectMedia;
|
||||
|
||||
public final static String PARAM_RACEBOARD_AUTOSELECT_MEDIA = "autoSelectMedia";
|
||||
private final AutoPlayerConfiguration playerConfiguration;
|
||||
|
||||
public PlayerPlace(String url) {
|
||||
super(url);
|
||||
eventUuidAsString = getParameter(PARAM_EVENTID);
|
||||
fullscreen = Boolean.valueOf(getParameter(PARAM_FULLSCREEN));
|
||||
|
||||
leaderboardIdAsNameString = getParameter(PARAM_LEADEROARD_NAME);
|
||||
leaderboardZoom = getParameter(PARAM_LEADEROARD_ZOOM);
|
||||
|
||||
raceboardAutoSelectMedia = getParameter(PARAM_RACEBOARD_AUTOSELECT_MEDIA);
|
||||
String eventUuidAsString = getParameter(AutoPlayerConfiguration.PARAM_EVENTID);
|
||||
String leaderboardName= getParameter(AutoPlayerConfiguration.PARAM_LEADEROARD_NAME);
|
||||
Boolean fullscreen = Boolean.valueOf(getParameter(AutoPlayerConfiguration.PARAM_FULLSCREEN));
|
||||
String leaderboardZoom = getParameter(AutoPlayerConfiguration.PARAM_LEADEROARD_ZOOM);
|
||||
|
||||
this.playerConfiguration = new AutoPlayerConfiguration(eventUuidAsString, leaderboardName, fullscreen, leaderboardZoom);
|
||||
}
|
||||
|
||||
public PlayerPlace(String eventUuidAsString, boolean fullscreen,
|
||||
String leaderboardIdAsNameString, String leaderboardZoomAsString, String raceboardAutoSelectMedia) {
|
||||
super(PARAM_EVENTID, eventUuidAsString, PARAM_FULLSCREEN, String.valueOf(fullscreen),
|
||||
PARAM_LEADEROARD_NAME, leaderboardIdAsNameString, PARAM_LEADEROARD_ZOOM, leaderboardZoomAsString,
|
||||
PARAM_RACEBOARD_AUTOSELECT_MEDIA, raceboardAutoSelectMedia);
|
||||
this.eventUuidAsString = eventUuidAsString;
|
||||
this.fullscreen = fullscreen;
|
||||
this.leaderboardIdAsNameString = leaderboardIdAsNameString;
|
||||
this.leaderboardZoom = leaderboardZoomAsString;
|
||||
this.raceboardAutoSelectMedia = raceboardAutoSelectMedia;
|
||||
public PlayerPlace(AutoPlayerConfiguration playerConfiguration) {
|
||||
super(AutoPlayerConfiguration.PARAM_EVENTID, playerConfiguration.getEventUidAsString(),
|
||||
AutoPlayerConfiguration.PARAM_FULLSCREEN, String.valueOf(playerConfiguration.isFullscreenMode()),
|
||||
AutoPlayerConfiguration.PARAM_LEADEROARD_NAME, playerConfiguration.getLeaderboardName(),
|
||||
AutoPlayerConfiguration.PARAM_LEADEROARD_ZOOM, playerConfiguration.getLeaderboardZoom());
|
||||
this.playerConfiguration = playerConfiguration;
|
||||
}
|
||||
|
||||
public String getEventUuidAsString() {
|
||||
return eventUuidAsString;
|
||||
}
|
||||
|
||||
public String getLeaderboardIdAsNameString() {
|
||||
return leaderboardIdAsNameString;
|
||||
}
|
||||
|
||||
public String getLeaderboardZoom() {
|
||||
return leaderboardZoom;
|
||||
}
|
||||
|
||||
public String getRaceboardAutoSelectMedia() {
|
||||
return raceboardAutoSelectMedia;
|
||||
}
|
||||
|
||||
public boolean isFullscreen() {
|
||||
return fullscreen;
|
||||
public AutoPlayerConfiguration getConfiguration() {
|
||||
return this.playerConfiguration;
|
||||
}
|
||||
|
||||
public static class Tokenizer implements PlaceTokenizer<PlayerPlace> {
|
||||
|
||||
+40
-56
@@ -19,7 +19,6 @@ import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
@@ -28,7 +27,7 @@ import com.google.web.bindery.event.shared.EventBus;
|
||||
import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.gwt.autoplay.client.app.PlaceNavigator;
|
||||
import com.sap.sailing.gwt.autoplay.client.place.player.PlayerPlace;
|
||||
import com.sap.sailing.gwt.autoplay.client.place.player.AutoPlayerConfiguration;
|
||||
import com.sap.sailing.gwt.autoplay.client.shared.header.SAPHeader;
|
||||
import com.sap.sailing.gwt.common.client.SharedResources;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
@@ -64,8 +63,9 @@ public class DesktopStartView extends Composite implements StartView {
|
||||
@UiField DivElement leaderboardSelectionUi;
|
||||
@UiField DivElement leaderboardZoomDiv;
|
||||
@UiField DivElement leaderboardAutoZoomDiv;
|
||||
@UiField DivElement screenConfiguraionUi;
|
||||
@UiField VerticalPanel perspectiveConfigurationPanel;
|
||||
@UiField DivElement screenConfigurationUi;
|
||||
@UiField VerticalPanel leaderboardPerspectiveSettingsPanel;
|
||||
@UiField VerticalPanel raceboardPerspectiveSettingsPanel;
|
||||
|
||||
@UiField CheckBox autoSwitchToRaceboard;
|
||||
@UiField TextBox timeToRaceStartInSeconds;
|
||||
@@ -74,13 +74,8 @@ public class DesktopStartView extends Composite implements StartView {
|
||||
private final EventBus eventBus;
|
||||
private final List<EventDTO> events;
|
||||
|
||||
private Map<String, String> raceboardParameters;
|
||||
private Map<String, String> leaderboardParameters;
|
||||
|
||||
private final List<Perspective<?>> supportedPerspectives;
|
||||
|
||||
private ProxyLeaderboardPerspective leaderboardPerspective;
|
||||
private ProxyRaceBoardPerspective raceViewerPerspective;
|
||||
private ProxyRaceBoardPerspective raceboardPerspective;
|
||||
|
||||
private final int defaultTimeToStartTimeInSeconds = 180;
|
||||
private final Map<Perspective<?>, CompositeSettings> perspectiveSettings;
|
||||
@@ -90,9 +85,6 @@ public class DesktopStartView extends Composite implements StartView {
|
||||
this.navigator = navigator;
|
||||
this.eventBus = eventBus;
|
||||
this.events = new ArrayList<EventDTO>();
|
||||
this.raceboardParameters = new HashMap<String, String>();
|
||||
this.leaderboardParameters = new HashMap<String, String>();
|
||||
this.supportedPerspectives = new ArrayList<Perspective<?>>();
|
||||
|
||||
sapHeader = new SAPHeader("Auto player configuration", false);
|
||||
eventSelectionBox = new ListBox();
|
||||
@@ -127,9 +119,7 @@ public class DesktopStartView extends Composite implements StartView {
|
||||
timeToRaceStartInSeconds.setValue(String.valueOf(defaultTimeToStartTimeInSeconds));
|
||||
|
||||
leaderboardSelectionUi.getStyle().setVisibility(Visibility.HIDDEN);
|
||||
screenConfiguraionUi.getStyle().setVisibility(Visibility.HIDDEN);
|
||||
|
||||
perspectiveConfigurationPanel.setVisible(false);
|
||||
screenConfigurationUi.getStyle().setVisibility(Visibility.HIDDEN);
|
||||
|
||||
startAutoPlayButton.setEnabled(false);
|
||||
startAutoPlayButton.addStyleName(SharedResources.INSTANCE.mainCss().buttoninactive());
|
||||
@@ -137,12 +127,9 @@ public class DesktopStartView extends Composite implements StartView {
|
||||
|
||||
private void updatePerspectives(AbstractLeaderboardDTO leaderboard) {
|
||||
leaderboardPerspective = new ProxyLeaderboardPerspective(leaderboard, createDefaultLeaderboardSettings(leaderboard));
|
||||
raceViewerPerspective = new ProxyRaceBoardPerspective(new RaceBoardPerspectiveSettings(), leaderboard, createDefaultLeaderboardSettings(leaderboard));
|
||||
raceboardPerspective = new ProxyRaceBoardPerspective(new RaceBoardPerspectiveSettings(), leaderboard, createDefaultLeaderboardSettings(leaderboard));
|
||||
|
||||
perspectiveSettings.clear();
|
||||
supportedPerspectives.clear();
|
||||
supportedPerspectives.add(leaderboardPerspective);
|
||||
supportedPerspectives.add(raceViewerPerspective);
|
||||
}
|
||||
|
||||
private void openPerspectiveSettingsDialog(final Perspective<?> perspective) {
|
||||
@@ -201,40 +188,41 @@ public class DesktopStartView extends Composite implements StartView {
|
||||
StrippedLeaderboardDTO selectedLeaderboard = getSelectedLeaderboard();
|
||||
this.updatePerspectives(selectedLeaderboard);
|
||||
|
||||
perspectiveConfigurationPanel.clear();
|
||||
for(final Perspective<?> perspective: supportedPerspectives) {
|
||||
HorizontalPanel hPanel = new HorizontalPanel();
|
||||
perspectiveConfigurationPanel.add(hPanel);
|
||||
hPanel.add(new Label(perspective.getPerspectiveName() + ":"));
|
||||
hPanel.setSpacing(5);
|
||||
|
||||
Button perspectiveComponentSettingsButton = new Button("Component settings");
|
||||
hPanel.add(perspectiveComponentSettingsButton);
|
||||
perspectiveComponentSettingsButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
openPerspectiveComponentSettingsDialog(perspective);
|
||||
}
|
||||
});
|
||||
|
||||
if(perspective.hasSettings()) {
|
||||
Button perspectiveSettingsButton = new Button("Settings");
|
||||
hPanel.add(perspectiveSettingsButton);
|
||||
perspectiveSettingsButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
openPerspectiveSettingsDialog(perspective);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
createPerspectiveSettingsUI(leaderboardPerspective, leaderboardPerspectiveSettingsPanel);
|
||||
createPerspectiveSettingsUI(raceboardPerspective, raceboardPerspectiveSettingsPanel);
|
||||
} else {
|
||||
startAutoPlayButton.setEnabled(false);
|
||||
startAutoPlayButton.addStyleName(SharedResources.INSTANCE.mainCss().buttoninactive());
|
||||
}
|
||||
perspectiveConfigurationPanel.setVisible(selectedLeaderboardName != null);
|
||||
screenConfiguraionUi.getStyle().setVisibility(selectedLeaderboardName != null ? Visibility.VISIBLE : Visibility.HIDDEN);
|
||||
screenConfigurationUi.getStyle().setVisibility(selectedLeaderboardName != null ? Visibility.VISIBLE : Visibility.HIDDEN);
|
||||
}
|
||||
|
||||
private void createPerspectiveSettingsUI(final Perspective<?> perspective, VerticalPanel perspectiveSettingsPanel) {
|
||||
perspectiveSettingsPanel.clear();
|
||||
|
||||
HorizontalPanel hPanel = new HorizontalPanel();
|
||||
perspectiveSettingsPanel.add(hPanel);
|
||||
hPanel.setSpacing(5);
|
||||
|
||||
Button perspectiveComponentSettingsButton = new Button("Component settings");
|
||||
hPanel.add(perspectiveComponentSettingsButton);
|
||||
perspectiveComponentSettingsButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
openPerspectiveComponentSettingsDialog(perspective);
|
||||
}
|
||||
});
|
||||
|
||||
if(perspective.hasSettings()) {
|
||||
Button perspectiveSettingsButton = new Button("Settings");
|
||||
hPanel.add(perspectiveSettingsButton);
|
||||
perspectiveSettingsButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
openPerspectiveSettingsDialog(perspective);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@UiHandler("localeSelectionBox")
|
||||
@@ -251,12 +239,8 @@ public class DesktopStartView extends Composite implements StartView {
|
||||
String leaderboardZoom = getLeaderboardZoom();
|
||||
|
||||
if(selectedEvent != null && selectedLeaderboardName != null) {
|
||||
leaderboardParameters.put(PlayerPlace.PARAM_LEADEROARD_ZOOM, leaderboardZoom);
|
||||
leaderboardParameters.put(PlayerPlace.PARAM_LEADEROARD_NAME, selectedLeaderboardName);
|
||||
// raceboardParameters.put(PlayerPlace.PARAM_RACEBOARD_AUTOSELECT_MEDIA, String.valueOf(isAutoSelectMedia));
|
||||
|
||||
navigator.goToPlayer(selectedEvent.id.toString(), startInFullscreenModeBox.getValue(),
|
||||
leaderboardParameters, raceboardParameters);
|
||||
navigator.goToPlayer(new AutoPlayerConfiguration(selectedEvent.id.toString(), selectedLeaderboardName,
|
||||
startInFullscreenModeBox.getValue(), leaderboardZoom));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+43
-40
@@ -11,6 +11,11 @@
|
||||
.perspectiveConfigurationPanel {
|
||||
width: 100%;
|
||||
}
|
||||
.headline {
|
||||
background-color: #eeeeee;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
</ui:style>
|
||||
<g:HTMLPanel>
|
||||
<s:header.SAPHeader ui:field="sapHeader" />
|
||||
@@ -23,14 +28,6 @@
|
||||
<g:ListBox ui:field="localeSelectionBox" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
<span>Start browser in full screen mode:</span>
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large9} {res.mediaCss.columns}">
|
||||
<g:CheckBox ui:field="startInFullscreenModeBox" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
<span>Event:</span>
|
||||
@@ -47,16 +44,20 @@
|
||||
<g:ListBox ui:field="leaderboardSelectionBox" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div ui:field="screenConfiguraionUi" class="{res.mediaCss.columns}">
|
||||
Screen configuration
|
||||
|
||||
<div ui:field="screenConfigurationUi">
|
||||
<div class="{res.mediaCss.grid} {style.row} {style.headline}">
|
||||
<div class="{res.mediaCss.columns}">Screen size and zoom</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
<span>Start browser in full screen mode:</span>
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large9} {res.mediaCss.columns}">
|
||||
<g:CheckBox ui:field="startInFullscreenModeBox" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ui:field="leaderboardAutoZoomDiv" class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.columns} {style.row}">
|
||||
Screen settings
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
<span>Auto-Zoom:</span>
|
||||
</div>
|
||||
@@ -72,52 +73,54 @@
|
||||
<g:TextBox ui:field="leaderboardZoomBox" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="{res.mediaCss.grid} {style.row} {style.headline}">
|
||||
<div class="{res.mediaCss.columns}">Screen switching</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
<span>Auto switch when race active:</span>
|
||||
<span>Switch automatically to live race:</span>
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large9} {res.mediaCss.columns}">
|
||||
<g:CheckBox ui:field="autoSwitchToRaceboard" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.columns} {style.row}">
|
||||
Trigger to switch to raceboard
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
<span>Time to race start (in s):</span>
|
||||
<span>...when to start is less than (in s):</span>
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large9} {res.mediaCss.columns}">
|
||||
<g:TextBox ui:field="timeToRaceStartInSeconds" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
<span>Auto-Play video:</span>
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large9} {res.mediaCss.columns}">
|
||||
<g:CheckBox ui:field="autoSelectMediaBox" />
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row} {style.headline}">
|
||||
<div class="{res.mediaCss.columns}">Viewer Settings</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
<span>Settings:</span>
|
||||
<span>Leaderboard Viewer:</span>
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large9} {res.mediaCss.columns}">
|
||||
<g:VerticalPanel ui:field="perspectiveConfigurationPanel" styleName="{res.mediaCss.grid} {style.row}">
|
||||
<g:VerticalPanel ui:field="leaderboardPerspectiveSettingsPanel" styleName="{res.mediaCss.columns}">
|
||||
</g:VerticalPanel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
<span>Raceboard Viewer:</span>
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large9} {res.mediaCss.columns}">
|
||||
<g:VerticalPanel ui:field="raceboardPerspectiveSettingsPanel" styleName="{res.mediaCss.columns}">
|
||||
</g:VerticalPanel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid} {style.row}">
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large9} {res.mediaCss.columns}">
|
||||
<g:Button ui:field="startAutoPlayButton" text="Start autoplay" styleName="{res.mainCss.button}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="{res.mediaCss.grid}">
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large3} {res.mediaCss.columns}">
|
||||
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.medium6} {res.mediaCss.large9} {res.mediaCss.columns}">
|
||||
<g:Button ui:field="startAutoPlayButton" text="Start autoplay" styleName="{res.mainCss.button}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
Reference in new issue
Block a user