mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 22:37:15 +00:00
Merge branch 'design2015-charts' into design2015
This commit is contained in:
commit
d0dc0baa72
6 files changed
+191
-36
No files matched your search
+16
@@ -0,0 +1,16 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts;
|
||||
|
||||
import com.google.gwt.event.logical.shared.CloseHandler;
|
||||
import com.google.gwt.event.shared.HandlerRegistration;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.PopupPanel;
|
||||
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart;
|
||||
|
||||
public interface CompetitorChartsDelegate {
|
||||
|
||||
void setCompetitorChart(MultiCompetitorLeaderboardChart competitorChart);
|
||||
|
||||
ListBox getChartTypeSelectionControl();
|
||||
|
||||
HandlerRegistration addCloseHandler(CloseHandler<PopupPanel> handler);
|
||||
}
|
||||
+65
-4
@@ -7,17 +7,24 @@ import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.DivElement;
|
||||
import com.google.gwt.dom.client.Style.Visibility;
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.logical.shared.CloseEvent;
|
||||
import com.google.gwt.event.logical.shared.CloseHandler;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.uibinder.client.UiHandler;
|
||||
import com.google.gwt.user.client.ui.Anchor;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.PopupPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.DetailType;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources;
|
||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.client.DetailTypeFormatter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart;
|
||||
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChartSettings;
|
||||
import com.sap.sse.common.Util;
|
||||
@@ -30,20 +37,57 @@ public class OldCompetitorCharts extends Composite {
|
||||
|
||||
@UiField HTMLPanel oldCompetitorChartsPanel;
|
||||
@UiField ListBox chartTypeSelectionListBox;
|
||||
@UiField Anchor fullscreenAnchor;
|
||||
@UiField DivElement competitorSelectionStateUi;
|
||||
|
||||
private final List<DetailType> availableDetailsTypes;
|
||||
private MultiCompetitorLeaderboardChart multiCompetitorChart;
|
||||
|
||||
private final CompetitorChartsDelegate delegate;
|
||||
|
||||
public OldCompetitorCharts() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public OldCompetitorCharts(CompetitorChartsDelegate delegate) {
|
||||
this.availableDetailsTypes = new ArrayList<DetailType>();
|
||||
this.multiCompetitorChart = null;
|
||||
|
||||
EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected();
|
||||
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
fullscreenAnchor.setTitle(StringMessages.INSTANCE.openFullscreenView());
|
||||
this.delegate = delegate;
|
||||
this.setupFullscreenDelegate();
|
||||
}
|
||||
|
||||
private void setupFullscreenDelegate() {
|
||||
if (delegate == null) {
|
||||
fullscreenAnchor.removeFromParent();
|
||||
return;
|
||||
}
|
||||
delegate.addCloseHandler(new CloseHandler<PopupPanel>() {
|
||||
@Override
|
||||
public void onClose(CloseEvent<PopupPanel> event) {
|
||||
if (multiCompetitorChart != null) {
|
||||
multiCompetitorChart.removeFromParent();
|
||||
oldCompetitorChartsPanel.add(multiCompetitorChart);
|
||||
multiCompetitorChart.forceChartToClientHeight();
|
||||
}
|
||||
}
|
||||
});
|
||||
delegate.getChartTypeSelectionControl().addChangeHandler(new ChangeHandler() {
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
synchronizeChartTypeSelection(delegate.getChartTypeSelectionControl(), chartTypeSelectionListBox);
|
||||
OldCompetitorCharts.this.updateChartType();
|
||||
multiCompetitorChart.forceMaximumChartSize();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void synchronizeChartTypeSelection(ListBox from, ListBox to) {
|
||||
int selectedIndex = from.getSelectedIndex();
|
||||
to.setSelectedIndex(selectedIndex);
|
||||
}
|
||||
|
||||
public void setChart(MultiCompetitorLeaderboardChart multiCompetitorChart, List<DetailType> availableDetailsTypes, DetailType initialDetailType) {
|
||||
this.multiCompetitorChart = multiCompetitorChart;
|
||||
this.availableDetailsTypes.clear();
|
||||
@@ -56,11 +100,15 @@ public class OldCompetitorCharts extends Composite {
|
||||
|
||||
private void fillChartTypeSelectionBox(DetailType initialDetailType) {
|
||||
chartTypeSelectionListBox.clear();
|
||||
if (delegate != null) delegate.getChartTypeSelectionControl().clear();
|
||||
int i = 0;
|
||||
for (DetailType detailType : availableDetailsTypes) {
|
||||
chartTypeSelectionListBox.addItem(DetailTypeFormatter.format(detailType), detailType.name());
|
||||
String formattedDetailType = DetailTypeFormatter.format(detailType);
|
||||
chartTypeSelectionListBox.addItem(formattedDetailType, detailType.name());
|
||||
if (delegate != null) delegate.getChartTypeSelectionControl().addItem(formattedDetailType, detailType.name());
|
||||
if (detailType == initialDetailType) {
|
||||
chartTypeSelectionListBox.setSelectedIndex(i);
|
||||
if (delegate != null) delegate.getChartTypeSelectionControl().setSelectedIndex(i);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
@@ -68,10 +116,23 @@ public class OldCompetitorCharts extends Composite {
|
||||
|
||||
@UiHandler("chartTypeSelectionListBox")
|
||||
void chartTypeSelectionChanged(ChangeEvent event) {
|
||||
if (delegate != null) synchronizeChartTypeSelection(chartTypeSelectionListBox, delegate.getChartTypeSelectionControl());
|
||||
updateChartType();
|
||||
}
|
||||
|
||||
private void updateChartType() {
|
||||
DetailType selectedChartDetailType = getSelectedChartDetailType();
|
||||
multiCompetitorChart.updateSettings(new MultiCompetitorLeaderboardChartSettings(selectedChartDetailType));
|
||||
}
|
||||
|
||||
@UiHandler("fullscreenAnchor")
|
||||
void fullscreenClicked(ClickEvent event) {
|
||||
if(multiCompetitorChart != null && delegate != null) {
|
||||
multiCompetitorChart.removeFromParent();
|
||||
delegate.setCompetitorChart(multiCompetitorChart);
|
||||
}
|
||||
}
|
||||
|
||||
public DetailType getSelectedChartDetailType() {
|
||||
DetailType result = null;
|
||||
int selectedIndex = chartTypeSelectionListBox.getSelectedIndex();
|
||||
|
||||
+32
-30
@@ -1,36 +1,38 @@
|
||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.place.event"
|
||||
xmlns:g="urn:import:com.google.gwt.user.client.ui">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.common.client.i18n.TextMessages"/>
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.place.event">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.common.client.i18n.TextMessages" />
|
||||
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
|
||||
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources" />
|
||||
<ui:with field="local_res" type="com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources" />
|
||||
<ui:style>
|
||||
.marginFix {
|
||||
margin-top: 2rem;
|
||||
|
||||
}
|
||||
</ui:style>
|
||||
|
||||
|
||||
<g:HTMLPanel>
|
||||
<div class="{res.mediaCss.grid} {style.marginFix}" >
|
||||
<div class="{res.mediaCss.small6} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_scoring}">
|
||||
<h3><ui:text from="{i18n.competitorsAnalytics}" /></h3>
|
||||
</div>
|
||||
<div class="{res.mediaCss.small6} {res.mediaCss.column} {local_res.css.regattaleaderboard_meta_settings}">
|
||||
<ui:text from="{i18n.chooseChart}" />
|
||||
<g:ListBox ui:field="chartTypeSelectionListBox" />
|
||||
</div>
|
||||
<div class="{res.mediaCss.column}" style="margin-bottom: 1em;">
|
||||
<b><ui:text from="{i18n.chartSelectionHint}" /></b>
|
||||
</div>
|
||||
<div ui:field="competitorSelectionStateUi" class="{res.mediaCss.column}" style="margin-bottom: 1em;">
|
||||
</div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.columns}">
|
||||
<g:HTMLPanel ui:field="oldCompetitorChartsPanel">
|
||||
</g:HTMLPanel>
|
||||
</div>
|
||||
</div>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
.toolbar {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.toolbarButton {
|
||||
display: inline;
|
||||
}
|
||||
</ui:style>
|
||||
<g:HTMLPanel>
|
||||
<div class="{res.mediaCss.grid} {style.marginFix}">
|
||||
<div class="{res.mediaCss.column} {res.mediaCss.small12} {res.mediaCss.medium4} {res.mediaCss.large6} {local_res.css.regattaleaderboard_meta_scoring}">
|
||||
<h3><ui:text from="{i18n.competitorsAnalytics}" /></h3>
|
||||
</div>
|
||||
<div class="{res.mediaCss.column} {res.mediaCss.small12} {res.mediaCss.medium8} {res.mediaCss.large6} {local_res.css.regattaleaderboard_meta_settings} {style.toolbar}">
|
||||
<ui:text from="{i18n.chooseChart}" />
|
||||
<g:ListBox ui:field="chartTypeSelectionListBox" />
|
||||
<g:Anchor styleName="{res.mainCss.button} {local_res.css.regattaleaderboard_meta_fullscreen_button} {style.toolbarButton}"
|
||||
href="javascript:;" ui:field="fullscreenAnchor"></g:Anchor>
|
||||
</div>
|
||||
<div class="{res.mediaCss.column}" style="margin-bottom: 1em;">
|
||||
<b><ui:text from="{i18n.chartSelectionHint}" /></b>
|
||||
</div>
|
||||
<div ui:field="competitorSelectionStateUi" class="{res.mediaCss.column}" style="margin-bottom: 1em;"></div>
|
||||
<div class="{res.mediaCss.small12} {res.mediaCss.columns}">
|
||||
<g:HTMLPanel ui:field="oldCompetitorChartsPanel"/>
|
||||
</div>
|
||||
</div>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts;
|
||||
|
||||
import com.google.gwt.dom.client.Style.Display;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.user.client.ui.FlowPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.ListBox;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.common.client.i18n.TextMessages;
|
||||
import com.sap.sailing.gwt.home.shared.partials.fullscreen.FullscreenContainer;
|
||||
import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart;
|
||||
import com.sap.sse.common.Color;
|
||||
|
||||
public class OldCompetitorChartsDelegateFullscreenViewer extends FullscreenContainer<MultiCompetitorLeaderboardChart>
|
||||
implements CompetitorChartsDelegate {
|
||||
|
||||
private final ListBox chartTypeSelection = new ListBox();
|
||||
|
||||
public OldCompetitorChartsDelegateFullscreenViewer() {
|
||||
showLogo();
|
||||
showBorder();
|
||||
addToolbarInfo(createLabeledChartTypeSelectionControl());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onShow() {
|
||||
getContentWidget().forceMaximumChartSize();
|
||||
getContentWidget().onResize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompetitorChart(MultiCompetitorLeaderboardChart competitorChart) {
|
||||
showContent(competitorChart);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ListBox getChartTypeSelectionControl() {
|
||||
return chartTypeSelection;
|
||||
}
|
||||
|
||||
private Widget createLabeledChartTypeSelectionControl() {
|
||||
FlowPanel panel = getWidgetWithMarginTop(new FlowPanel(), -30, Unit.PX);
|
||||
panel.add(getWidgetWitDisplay(new Label(TextMessages.INSTANCE.chooseChart() + " "), Display.INLINE));
|
||||
panel.add(getWidgetWithColor(chartTypeSelection, Color.BLACK));
|
||||
return panel;
|
||||
}
|
||||
|
||||
private <T extends Widget> T getWidgetWithMarginTop(T widget, double value, Unit unit) {
|
||||
widget.getElement().getStyle().setMarginTop(value, unit);
|
||||
return widget;
|
||||
}
|
||||
|
||||
private <T extends Widget> T getWidgetWithColor(T widget, Color color) {
|
||||
widget.getElement().getStyle().setColor(color.getAsHtml());
|
||||
return widget;
|
||||
}
|
||||
|
||||
private <T extends Widget> T getWidgetWitDisplay(T widget, Display display) {
|
||||
widget.getElement().getStyle().setDisplay(display);
|
||||
return widget;
|
||||
}
|
||||
|
||||
}
|
||||
+3
-2
@@ -17,6 +17,7 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
|
||||
import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts;
|
||||
import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorChartsDelegateFullscreenViewer;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager;
|
||||
@@ -42,8 +43,8 @@ public class RegattaCompetitorAnalyticsTabView extends SharedLeaderboardRegattaT
|
||||
super();
|
||||
}
|
||||
|
||||
@UiField
|
||||
protected OldCompetitorCharts competitorCharts;
|
||||
@UiField(provided = true)
|
||||
protected OldCompetitorCharts competitorCharts = new OldCompetitorCharts(new OldCompetitorChartsDelegateFullscreenViewer());
|
||||
|
||||
@Override
|
||||
public Class<RegattaCompetitorAnalyticsPlace> getPlaceClassForActivation() {
|
||||
|
||||
+12
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.client.shared.charts;
|
||||
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.sap.sailing.domain.common.DetailType;
|
||||
import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
@@ -50,4 +51,15 @@ public class MultiCompetitorLeaderboardChart extends AbstractCompetitorLeaderboa
|
||||
public String getLocalizedShortName() {
|
||||
return stringMessages.showCharts();
|
||||
}
|
||||
|
||||
public void forceMaximumChartSize() {
|
||||
chart.setWidth100();
|
||||
chart.setHeight100();
|
||||
chart.redraw();
|
||||
}
|
||||
|
||||
public void forceChartToClientHeight() {
|
||||
chart.setSize(chart.getOffsetWidth(), Window.getClientHeight());
|
||||
chart.redraw();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user