mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 17:36:40 +00:00
Merge remote-tracking branch 'server/master'
This commit is contained in:
commit
b4b32a3f7c
7 files changed
+102
-52
No files matched your search
+2
-1
@@ -155,11 +155,12 @@ public class WindChart implements Component<WindChartSettings>, RaceSelectionCha
|
||||
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return true;
|
||||
return mainPanel.isVisible();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visibility) {
|
||||
mainPanel.setVisible(visibility);
|
||||
}
|
||||
|
||||
private void showVisibleSeries() {
|
||||
|
||||
+1
-1
@@ -251,7 +251,7 @@ stepSizeInSeconds=Step size in seconds
|
||||
refreshInterval=Refresh interval (s)
|
||||
refreshIntervalMustBeGreaterThanXSeconds=Refresh interval must be greater than {0} seconds
|
||||
competitorCharts=Competitor charts
|
||||
selectAtLeastOneCompetitor=Select at least one competitor
|
||||
selectAtLeastOneCompetitor=To show the competitor charts, select at least one competitor
|
||||
directionChange=Direction change
|
||||
speedChange=Speed change
|
||||
degreesShort=deg
|
||||
|
||||
+1
-1
@@ -252,7 +252,7 @@ stepSizeInSeconds=Schrittweite in Sekunden
|
||||
refreshInterval=Aktualisierungs-Interval (s)
|
||||
refreshIntervalMustBeGreaterThanXSeconds=Aktualisierungs-Interval muss größer als {0} Sekunden sein
|
||||
competitorCharts=Competitor charts
|
||||
selectAtLeastOneCompetitor=Mindestens einen Segler auswählen
|
||||
selectAtLeastOneCompetitor=Um die Segler-Diagramme anzeigen zu lassen, wähle mindestens einen Segler aus
|
||||
directionChange=Richtungsänderung
|
||||
speedChange=Geschwindigkeitsänderung
|
||||
degreesShort=deg
|
||||
|
||||
+72
-29
@@ -3,8 +3,11 @@ package com.sap.sailing.gwt.ui.raceboard;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.ui.DockLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.RootLayoutPanel;
|
||||
import com.google.gwt.user.client.ui.RootPanel;
|
||||
import com.sap.sailing.domain.common.DefaultLeaderboardName;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
@@ -22,7 +25,6 @@ import com.sap.sailing.gwt.ui.shared.UserDTO;
|
||||
|
||||
public class RaceBoardEntryPoint extends AbstractEntryPoint {
|
||||
private RaceDTO selectedRace;
|
||||
private RaceBoardPanel raceBoardPanel;
|
||||
|
||||
private String eventName;
|
||||
private String raceName;
|
||||
@@ -44,10 +46,10 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
|
||||
|
||||
viewMode = RaceBoardViewMode.valueOf(viewModeParamValue);
|
||||
} catch (IllegalArgumentException e) {
|
||||
viewMode = RaceBoardViewMode.CASCADING;
|
||||
viewMode = RaceBoardViewMode.CASCADE;
|
||||
}
|
||||
} else {
|
||||
viewMode = RaceBoardViewMode.CASCADING;
|
||||
viewMode = RaceBoardViewMode.CASCADE;
|
||||
}
|
||||
if(leaderboardNameParamValue == null || leaderboardNameParamValue.isEmpty()) {
|
||||
leaderboardName = DefaultLeaderboardName.DEFAULT_LEADERBOARD_NAME;
|
||||
@@ -120,7 +122,22 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
|
||||
createErrorPage("Could not obtain a race with name " + raceName + " for an event with name " + eventName);
|
||||
return;
|
||||
}
|
||||
createRaceBoardPanel(selectedRace, events, user);
|
||||
|
||||
RaceSelectionModel raceSelectionModel = new RaceSelectionModel();
|
||||
List<RaceIdentifier> singletonList = Collections.singletonList(selectedRace.getRaceIdentifier());
|
||||
raceSelectionModel.setSelection(singletonList);
|
||||
RaceBoardPanel raceBoardPanel = new RaceBoardPanel(sailingService, user, raceSelectionModel, leaderboardName, leaderboardGroupName,
|
||||
RaceBoardEntryPoint.this, stringMessages, userAgentType, viewMode);
|
||||
raceBoardPanel.fillEvents(events);
|
||||
|
||||
switch (viewMode) {
|
||||
case CASCADE:
|
||||
createRaceBoardInCascadeMode(raceBoardPanel);
|
||||
break;
|
||||
case ONESCREEN:
|
||||
createRaceBoardInOneScreenMode(raceBoardPanel);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private RaceDTO findRace(String eventName, String raceName, List<EventDTO> events) {
|
||||
@@ -138,27 +155,40 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
|
||||
return null;
|
||||
}
|
||||
|
||||
private void createRaceBoardPanel(RaceDTO selectedRace, List<EventDTO> events, UserDTO userDTO) {
|
||||
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages);
|
||||
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
|
||||
RaceSelectionModel raceSelectionModel = new RaceSelectionModel();
|
||||
List<RaceIdentifier> singletonList = Collections.singletonList(selectedRace.getRaceIdentifier());
|
||||
raceSelectionModel.setSelection(singletonList);
|
||||
raceBoardPanel = new RaceBoardPanel(sailingService, userDTO, raceSelectionModel, leaderboardName, leaderboardGroupName,
|
||||
RaceBoardEntryPoint.this, stringMessages, userAgentType, viewMode);
|
||||
raceBoardPanel.fillEvents(events);
|
||||
private void createRaceBoardInCascadeMode(RaceBoardPanel raceBoardPanel) {
|
||||
|
||||
logoAndTitlePanel.add(raceBoardPanel.getNavigationWidget());
|
||||
FlowPanel raceBoardHeaderPanel = createBoardHeaderPanel(raceBoardPanel);
|
||||
FlowPanel logoAndTitlePanel = createLogoAndTitlePanel(raceBoardPanel);
|
||||
FlowPanel timePanel = createTimePanel(raceBoardPanel);
|
||||
|
||||
FlowPanel contentOuterPanel = new FlowPanel(); // outer div which centered page content
|
||||
contentOuterPanel.addStyleName("contentOuterPanel");
|
||||
contentOuterPanel.setSize("100%", "100%");
|
||||
contentOuterPanel.add(raceBoardPanel);
|
||||
|
||||
//FlowPanel footerShadowPanel = new FlowPanel();
|
||||
// footerShadowPanel.addStyleName("footerShadowPanel");
|
||||
|
||||
RootPanel.get().add(raceBoardHeaderPanel);
|
||||
RootPanel.get().add(contentOuterPanel);
|
||||
|
||||
// Don't change this order because of the inner logic in html of "position fixed"-elements
|
||||
RootPanel.get().add(logoAndTitlePanel); // position:fixed
|
||||
RootPanel.get().add(timePanel); // position:fixed
|
||||
//RootPanel.get().add(footerShadowPanel); // position:fixed
|
||||
raceBoardPanel.setScrollOffset(logoAndTitlePanel.getOffsetHeight());
|
||||
}
|
||||
|
||||
private FlowPanel createBoardHeaderPanel(RaceBoardPanel raceBoardPanel)
|
||||
{
|
||||
FlowPanel raceBoardHeaderPanel = new FlowPanel();
|
||||
raceBoardHeaderPanel.addStyleName("RaceBoardHeaderPanel");
|
||||
if(raceBoardPanel.getBreadcrumbWidget() != null)
|
||||
raceBoardHeaderPanel.add(raceBoardPanel.getBreadcrumbWidget());
|
||||
|
||||
FlowPanel contentOuterPanel = new FlowPanel(); // outer div which centered page content
|
||||
contentOuterPanel.addStyleName("contentOuterPanel");
|
||||
contentOuterPanel.add(raceBoardPanel);
|
||||
return raceBoardHeaderPanel;
|
||||
}
|
||||
|
||||
private FlowPanel createTimePanel(RaceBoardPanel raceBoardPanel) {
|
||||
FlowPanel timeLineInnerBgPanel = new FlowPanel();
|
||||
timeLineInnerBgPanel.addStyleName("timeLineInnerBgPanel");
|
||||
timeLineInnerBgPanel.add(raceBoardPanel.getTimeWidget());
|
||||
@@ -171,16 +201,29 @@ public class RaceBoardEntryPoint extends AbstractEntryPoint {
|
||||
timelinePanel.add(timeLineInnerPanel);
|
||||
timelinePanel.addStyleName("timeLinePanel");
|
||||
|
||||
//FlowPanel footerShadowPanel = new FlowPanel();
|
||||
// footerShadowPanel.addStyleName("footerShadowPanel");
|
||||
|
||||
RootPanel.get().add(raceBoardHeaderPanel);
|
||||
RootPanel.get().add(contentOuterPanel);
|
||||
|
||||
// Don't change this order because of the inner logic in html of "position fixed"-elements
|
||||
RootPanel.get().add(logoAndTitlePanel); // position:fixed
|
||||
RootPanel.get().add(timelinePanel); // position:fixed
|
||||
//RootPanel.get().add(footerShadowPanel); // position:fixed
|
||||
raceBoardPanel.setScrollOffset(logoAndTitlePanel.getOffsetHeight());
|
||||
return timelinePanel;
|
||||
}
|
||||
|
||||
private FlowPanel createLogoAndTitlePanel(RaceBoardPanel raceBoardPanel) {
|
||||
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages);
|
||||
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
|
||||
|
||||
logoAndTitlePanel.add(raceBoardPanel.getNavigationWidget());
|
||||
|
||||
return logoAndTitlePanel;
|
||||
}
|
||||
|
||||
private void createRaceBoardInOneScreenMode(RaceBoardPanel raceBoardPanel) {
|
||||
DockLayoutPanel p = new DockLayoutPanel(Unit.PX);
|
||||
RootLayoutPanel.get().add(p);
|
||||
|
||||
FlowPanel raceBoardHeaderPanel = createBoardHeaderPanel(raceBoardPanel);
|
||||
FlowPanel logoAndTitlePanel = createLogoAndTitlePanel(raceBoardPanel);
|
||||
FlowPanel timePanel = createTimePanel(raceBoardPanel);
|
||||
|
||||
p.addNorth(logoAndTitlePanel, 68);
|
||||
p.addNorth(raceBoardHeaderPanel,30);
|
||||
p.addSouth(timePanel, 140);
|
||||
p.add(raceBoardPanel);
|
||||
}
|
||||
}
|
||||
+20
-17
@@ -106,10 +106,10 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
||||
componentsNavigationPanel.addStyleName("raceBoardNavigation");
|
||||
|
||||
switch (viewMode) {
|
||||
case CASCADING:
|
||||
case CASCADE:
|
||||
createCascadingView(leaderboardName, leaderboardGroupName, mainPanel);
|
||||
break;
|
||||
case ONE_SCREEN:
|
||||
case ONESCREEN:
|
||||
createOneScreenView(leaderboardName, leaderboardGroupName, mainPanel);
|
||||
break;
|
||||
}
|
||||
@@ -132,24 +132,21 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
||||
|
||||
List<Component<?>> components = new ArrayList<Component<?>>();
|
||||
|
||||
MultiChartPanel competitorCharts = new MultiChartPanel(sailingService, competitorSelectionModel, raceSelectionProvider,
|
||||
timer, stringMessages, errorReporter, 200, true);
|
||||
competitorCharts.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces());
|
||||
components.add(competitorCharts);
|
||||
competitorCharts.setVisible(false);
|
||||
|
||||
WindChartSettings windChartSettings = new WindChartSettings(WindSourceType.values());
|
||||
WindChart windChart = new WindChart(sailingService, raceSelectionProvider, timer, windChartSettings,
|
||||
stringMessages, errorReporter, 200, true);
|
||||
// SimpleComponentViewer<WindChartSettings> windChartViewer = new SimpleComponentViewer<WindChartSettings>(
|
||||
// windChart, "auto", "200px");
|
||||
windChart.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces());
|
||||
windChart.setVisible(false);
|
||||
components.add(windChart);
|
||||
|
||||
MultiChartPanel competitorCharts = new MultiChartPanel(sailingService, competitorSelectionModel, raceSelectionProvider,
|
||||
timer, stringMessages, errorReporter, 200, true);
|
||||
// SimpleComponentViewer<MultiChartSettings> chartViewer = new SimpleComponentViewer<MultiChartSettings>(
|
||||
// competitorCharts, "auto", "200px");
|
||||
|
||||
competitorCharts.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces());
|
||||
components.add(competitorCharts);
|
||||
|
||||
|
||||
SideBySideComponentViewer leaderboardAndMapViewer = new SideBySideComponentViewer(leaderboardPanel, raceMap, components, "auto", "500px");
|
||||
SideBySideComponentViewer leaderboardAndMapViewer = new SideBySideComponentViewer(leaderboardPanel, raceMap,
|
||||
components, "100%", "100%");
|
||||
componentViewers.add(leaderboardAndMapViewer);
|
||||
|
||||
for (ComponentViewer componentViewer : componentViewers) {
|
||||
@@ -157,7 +154,7 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
||||
}
|
||||
|
||||
addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, leaderboardPanel);
|
||||
addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, raceMap);
|
||||
//addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, raceMap);
|
||||
addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, windChart);
|
||||
addComponentAsToogleButtonToNavigationMenu(leaderboardAndMapViewer, competitorCharts);
|
||||
}
|
||||
@@ -237,13 +234,19 @@ public class RaceBoardPanel extends FormPanel implements EventDisplayer, RaceSel
|
||||
toggleButton.getElement().getStyle().setFloat(Style.Float.LEFT);
|
||||
toggleButton.getElement().getStyle().setPadding(3, Style.Unit.PX);
|
||||
toggleButton.getElement().getStyle().setMargin(3, Style.Unit.PX);
|
||||
toggleButton.setDown(component.isVisible());
|
||||
|
||||
toggleButton.addClickHandler(new ClickHandler() {
|
||||
public void onClick(ClickEvent event) {
|
||||
// make the map invisible is this is not supported yet due to problems with disabling the center element of a DockPanel
|
||||
if(component instanceof RaceMap)
|
||||
return;
|
||||
|
||||
if (toggleButton.isDown()) {
|
||||
component.setVisible(false);
|
||||
component.setVisible(true);
|
||||
componentViewer.forceLayout();
|
||||
} else {
|
||||
component.setVisible(true);
|
||||
component.setVisible(false);
|
||||
componentViewer.forceLayout();
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,6 +2,6 @@ package com.sap.sailing.gwt.ui.raceboard;
|
||||
|
||||
public enum RaceBoardViewMode {
|
||||
|
||||
CASCADING, ONE_SCREEN
|
||||
CASCADE, ONESCREEN
|
||||
|
||||
}
|
||||
+5
-2
@@ -52,8 +52,9 @@ public class SideBySideComponentViewer implements ComponentViewer {
|
||||
public void forceLayout() {
|
||||
if(leftComponent.isVisible() && !rightComponent.isVisible()) {
|
||||
// the leaderboard is visible, but not the map
|
||||
if(isWidgetInSplitPanel(rightComponent.getEntryWidget()))
|
||||
if(isWidgetInSplitPanel(rightComponent.getEntryWidget())) {
|
||||
splitLayoutPanel.remove(rightComponent.getEntryWidget());
|
||||
}
|
||||
}
|
||||
else if(!leftComponent.isVisible() && rightComponent.isVisible()) {
|
||||
// the leaderboard is not visible, but the map is
|
||||
@@ -61,6 +62,7 @@ public class SideBySideComponentViewer implements ComponentViewer {
|
||||
splitLayoutPanel.remove(leftScrollPanel);
|
||||
}
|
||||
else if(leftComponent.isVisible() && rightComponent.isVisible()) {
|
||||
// the leaderboard and the map are visible
|
||||
if(!isWidgetInSplitPanel(leftScrollPanel) || !isWidgetInSplitPanel(rightComponent.getEntryWidget())) {
|
||||
if(!isWidgetInSplitPanel(leftScrollPanel))
|
||||
splitLayoutPanel.insertWest(leftScrollPanel, savedSplitPosition, rightComponent.getEntryWidget());
|
||||
@@ -74,7 +76,8 @@ public class SideBySideComponentViewer implements ComponentViewer {
|
||||
for(Component<?> component: components) {
|
||||
boolean isComponentInSplitPanel = isWidgetInSplitPanel(component.getEntryWidget());
|
||||
if(component.isVisible()) {
|
||||
// splitLayoutPanel.addSouth(component.getEntryWidget(), 200);
|
||||
if(!isComponentInSplitPanel)
|
||||
splitLayoutPanel.insertSouth(component.getEntryWidget(), 200, splitLayoutPanel.getWidget(0));
|
||||
} else {
|
||||
if(isComponentInSplitPanel)
|
||||
splitLayoutPanel.remove(component.getEntryWidget());
|
||||
|
||||
Reference in new issue
Block a user