Merge branch 'design2015-races-navi' into design2015-races

This commit is contained in:
Benjamin Barth committed 2015-07-20 12:25:18 +02:00
commit 291fe9b704
13 files changed
+131 -47

No files matched your search

@@ -36,6 +36,8 @@ import com.sap.sailing.gwt.ui.shared.RaceGroupDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
import com.sap.sailing.gwt.ui.shared.eventview.HasRegattaMetadata;
import com.sap.sailing.gwt.ui.shared.eventview.HasRegattaMetadata.RegattaState;
import com.sap.sailing.gwt.ui.shared.general.EventState;
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
import com.sap.sse.gwt.client.mvp.ErrorView;
import com.sap.sse.gwt.client.player.Timer;
@@ -307,6 +309,29 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
return ctx.getEventDTO().isHasMedia();
}
@Override
public String getRegattaOverviewLink() {
String url = "RegattaOverview.html?ignoreLocalSettings=true&onlyrunningraces=false&event=" + getCtx().getEventId();
url += "&onlyracesofsameday=" + getCtx().getEventDTO().isRunning();
if(showRegattaMetadata()) {
url += "&regatta=" + getCtx().getRegattaId();
}
return url;
}
@Override
public boolean isEventOrRegattaLive() {
if(showRegattaMetadata()) {
if(ctx.getRegatta().getState() == RegattaState.RUNNING) {
return true;
}
if(ctx.getRegatta().getState() != RegattaState.UNKNOWN) {
return false;
}
}
return ctx.getEventDTO().getState() == EventState.RUNNING;
}
protected abstract EventView<PLACE, ?> getView();
}
@@ -49,8 +49,11 @@ public interface EventView<PLACE extends AbstractEventPlace, PRES extends EventV
PlaceNavigation<SeriesDefaultPlace> getCurrentEventSeriesNavigation();
boolean showRegattaMetadata();
boolean isEventOrRegattaLive();
HasRegattaMetadata getRegattaMetadata();
String getRegattaOverviewLink();
String getRaceViewerURL(StrippedLeaderboardDTO leaderboard, RaceDTO race);
String getRaceViewerURL(String regattaName, String trackedRaceName);
@@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -14,6 +15,8 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.sap.sailing.gwt.common.client.SharedResources;
import com.sap.sailing.gwt.common.client.SharedResources.MainCss;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView;
import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter;
@@ -43,6 +46,8 @@ import com.sap.sse.common.Util.Triple;
*/
public class MultiregattaOverviewTabView extends Composite implements MultiregattaTabView<MultiregattaOverviewPlace> {
private static final MainCss MAIN_CSS = SharedResources.INSTANCE.mainCss();
interface MyBinder extends UiBinder<HTMLPanel, MultiregattaOverviewTabView> {
}
@@ -55,11 +60,9 @@ public class MultiregattaOverviewTabView extends Composite implements Multiregat
@UiField(provided = true) DropdownFilter<String> boatCategoryFilterUi;
@UiField MultiRegattaListStepsLegend regattaProgressLegendUi;
@UiField(provided = true) MultiRegattaList regattaListUi;
@UiField AnchorElement regattaOverviewLinkUi;
private Presenter currentPresenter;
public MultiregattaOverviewTabView() {
}
@Override
public Class<MultiregattaOverviewPlace> getPlaceClassForActivation() {
return MultiregattaOverviewPlace.class;
@@ -84,6 +87,8 @@ public class MultiregattaOverviewTabView extends Composite implements Multiregat
regattaListUi = new MultiRegattaList(currentPresenter);
initWidget(ourUiBinder.createAndBindUi(this));
regattaOverviewLinkUi.setHref(currentPresenter.getRegattaOverviewLink());
regattaOverviewLinkUi.addClassName(currentPresenter.isEventOrRegattaLive() ? MAIN_CSS.buttonred() : MAIN_CSS.buttonprimary());
RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch());
stage.setupRefresh(refreshManager);
refreshManager.add(racesListLive.getRefreshable(), new GetLiveRacesForEventAction(currentPresenter.getCtx().getEventDTO().getId()));
@@ -3,13 +3,15 @@
xmlns:p="urn:import:com.sap.sailing.gwt.home.client.place.event.partials"
xmlns:o="urn:import:com.sap.sailing.gwt.home.client.place.event.overview">
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
<ui:style>
.legend_and_filter {
text-align: right;
}
.legend_and_filter > div {
.legend_and_filter > div, .legend_and_filter > a {
display: inline-block;
vertical-align: middle;
margin-left: 1.5em;
}
</ui:style>
<g:HTMLPanel>
@@ -20,6 +22,10 @@
<div class="{res.mainCss.spacermargintopmedium} {style.legend_and_filter}">
<p:multiRegattaList.MultiRegattaListStepsLegend ui:field="regattaProgressLegendUi" />
<p:listNavigation.DropdownFilter ui:field="boatCategoryFilterUi" />
<a class="{res.mainCss.button} {res.mainCss.buttonstrong} {res.mainCss.buttonarrowrightwhite}"
target="_blank" ui:field="regattaOverviewLinkUi">
<ui:text from="{i18n.racesOverview}" />
</a>
</div>
<p:multiRegattaList.MultiRegattaList ui:field="regattaListUi" />
</div>
@@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -14,6 +15,8 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.sap.sailing.gwt.common.client.SharedResources;
import com.sap.sailing.gwt.common.client.SharedResources.MainCss;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView;
import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter;
@@ -42,6 +45,8 @@ import com.sap.sse.common.Util.Triple;
*/
public class MultiregattaRegattasTabView extends Composite implements MultiregattaTabView<MultiregattaRegattasPlace> {
private static final MainCss MAIN_CSS = SharedResources.INSTANCE.mainCss();
interface MyBinder extends UiBinder<HTMLPanel, MultiregattaRegattasTabView> {
}
@@ -53,11 +58,9 @@ public class MultiregattaRegattasTabView extends Composite implements Multiregat
@UiField(provided = true) DropdownFilter<String> boatCategoryFilterUi;
@UiField MultiRegattaListStepsLegend regattaProgressLegendUi;
@UiField(provided = true) MultiRegattaList regattaListUi;
@UiField AnchorElement regattaOverviewLinkUi;
private Presenter currentPresenter;
public MultiregattaRegattasTabView() {
}
@Override
public Class<MultiregattaRegattasPlace> getPlaceClassForActivation() {
return MultiregattaRegattasPlace.class;
@@ -81,6 +84,8 @@ public class MultiregattaRegattasTabView extends Composite implements Multiregat
regattaListUi = new MultiRegattaList(currentPresenter);
initWidget(ourUiBinder.createAndBindUi(this));
regattaOverviewLinkUi.setHref(currentPresenter.getRegattaOverviewLink());
regattaOverviewLinkUi.addClassName(currentPresenter.isEventOrRegattaLive() ? MAIN_CSS.buttonred() : MAIN_CSS.buttonprimary());
RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch());
refreshManager.add(racesListLiveUi.getRefreshable(), new GetLiveRacesForEventAction(currentPresenter.getCtx().getEventDTO().getId()));
@@ -1,14 +1,15 @@
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:p="urn:import:com.sap.sailing.gwt.home.client.place.event.partials">
<ui:with field="res"
type="com.sap.sailing.gwt.common.client.SharedResources" />
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
<ui:style>
.legend_and_filter {
text-align: right;
}
.legend_and_filter > div {
.legend_and_filter > div, .legend_and_filter > a {
display: inline-block;
vertical-align: middle;
margin-left: 1.5em;
}
</ui:style>
<g:HTMLPanel>
@@ -18,6 +19,10 @@
<div class="{res.mainCss.spacermargintopmedium} {style.legend_and_filter}">
<p:multiRegattaList.MultiRegattaListStepsLegend ui:field="regattaProgressLegendUi" />
<p:listNavigation.DropdownFilter ui:field="boatCategoryFilterUi" />
<a class="{res.mainCss.button} {res.mainCss.buttonstrong} {res.mainCss.buttonarrowrightwhite}"
target="_blank" ui:field="regattaOverviewLinkUi">
<ui:text from="{i18n.racesOverview}" />
</a>
</div>
<p:multiRegattaList.MultiRegattaList ui:field="regattaListUi" />
</div>
@@ -6,6 +6,9 @@ import java.util.List;
import java.util.Map;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -16,6 +19,7 @@ import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.common.client.SharedResources;
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
import com.sap.sailing.gwt.home.client.place.event.EventView;
import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.ListNavigationPanel;
@@ -87,25 +91,16 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView<Reg
@UiField MultiRegattaListStepsLegend regattaProgressLegendUi;
@UiField SimplePanel regattaInfoContainerUi;
@UiField(provided = true) ListNavigationPanel<Navigation> listNavigationPanelUi;
@UiField FlowPanel listFormatContainerUi;
@UiField DivElement listFormatContainerUi;
@UiField FlowPanel compFormatContainerUi;
@UiField SimplePanel oldContentContainer;
private RacesListLive liveRacesList;
private RaceListContainer<RaceListRaceDTO> raceListContainer;
public RegattaRacesTabView() {
listNavigationPanelUi = new ListNavigationPanel<Navigation>(new RegattaRacesTabViewNavigationSelectionCallback());
listNavigationPanelUi.setAdditionalWidget(new RaceStateLegend());
initWidget(ourUiBinder.createAndBindUi(RegattaRacesTabView.this));
}
@UiField(provided = true) RacesListLive liveRacesListUi;
@UiField(provided = true) RaceListContainer<RaceListRaceDTO> raceListContainerUi;
@UiField AnchorElement regattaOverviewUi;
@Override
public void setPresenter(Presenter currentPresenter) {
this.currentPresenter = currentPresenter;
listFormatContainerUi.add(liveRacesList = new RacesListLive(currentPresenter, false));
raceListContainer = new RaceListContainer<>(I18N.finishedRaces(), I18N.noFinishedRaces(), new RaceListFinishedRaces(currentPresenter));
listFormatContainerUi.add(raceListContainer);
}
@Override
@@ -115,20 +110,33 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView<Reg
@Override
public void start(RegattaRacesPlace myPlace, final AcceptsOneWidget contentArea) {
listNavigationPanelUi = new ListNavigationPanel<Navigation>(new RegattaRacesTabViewNavigationSelectionCallback());
listNavigationPanelUi.setAdditionalWidget(new RaceStateLegend());
liveRacesListUi = new RacesListLive(currentPresenter, false);
raceListContainerUi = new RaceListContainer<>(I18N.finishedRaces(), I18N.noFinishedRaces(), new RaceListFinishedRaces(currentPresenter));
initWidget(ourUiBinder.createAndBindUi(RegattaRacesTabView.this));
regattaOverviewUi.setHref(currentPresenter.getRegattaOverviewLink());
if(currentPresenter.isEventOrRegattaLive()) {
regattaOverviewUi.addClassName(SharedResources.INSTANCE.mainCss().buttonred());
} else {
regattaOverviewUi.addClassName(SharedResources.INSTANCE.mainCss().buttonprimary());
}
RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch());
if (ExperimentalFeatures.SHOW_NEW_RACES_LIST) {
listNavigationPanelUi.removeFromParent(); // TODO temporary removed
// listNavigationPanelUi.addAction(Navigation.SORT_LIST_FORMAT, true);
// listNavigationPanelUi.addAction(Navigation.COMPETITION_FORMAT, false);
refreshManager.add(liveRacesList.getRefreshable(), new GetLiveRacesForRegattaAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId()));
refreshManager.add(liveRacesListUi.getRefreshable(), new GetLiveRacesForRegattaAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId()));
refreshManager.add(new RefreshableWidget<RegattaWithProgressDTO>() {
@Override
public void setData(RegattaWithProgressDTO data) {
regattaInfoContainerUi.setWidget(new MultiRegattaListItem(data));
}
}, new GetRegattaWithProgressAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId()));
refreshManager.add(raceListContainer, new GetFinishedRacesAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId()));
refreshManager.add(raceListContainerUi, new GetFinishedRacesAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId()));
oldContentContainer.removeFromParent();
} else {
@@ -202,7 +210,11 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView<Reg
}
private void showWidget(Widget widget, boolean show) {
widget.getElement().getStyle().setDisplay(show ? Display.BLOCK : Display.NONE);
showWidget(widget.getElement(), show);
}
private void showWidget(Element widget, boolean show) {
widget.getStyle().setDisplay(show ? Display.BLOCK : Display.NONE);
}
}
@@ -1,26 +1,44 @@
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:p='urn:import:com.sap.sailing.gwt.home.client.place.event.partials'>
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
<ui:style>
.listContainer > div {
margin-bottom: 2em;
}
.legend {
margin-top: 2em;
margin-bottom: -1.5em;
}
</ui:style>
xmlns:p='urn:import:com.sap.sailing.gwt.home.client.place.event.partials'>
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
<ui:style>
.listContainer > div {
margin-bottom: 2em;
}
.legend {
margin-top: 2em;
margin-bottom: -1.5em;
}
.buttonContainer {
position: relative;
margin: 0 !important;
}
.regattaOverviewButton {
position: absolute;
right: 0;
top: -0.25em;
}
</ui:style>
<g:HTMLPanel ui:field="contentPanel">
<div class="{res.mediaCss.grid}">
<p:multiRegattaList.MultiRegattaListStepsLegend addStyleNames="{res.mediaCss.small12} {res.mediaCss.columns} {style.legend}" ui:field="regattaProgressLegendUi" />
<g:SimplePanel addStyleNames="{res.mediaCss.small12} {res.mediaCss.columns} {res.mainCss.spacermarginbottommedium}" ui:field="regattaInfoContainerUi"/>
</div>
<div class="{res.mediaCss.grid}">
<p:multiRegattaList.MultiRegattaListStepsLegend addStyleNames="{res.mediaCss.small12} {res.mediaCss.columns} {style.legend}" ui:field="regattaProgressLegendUi" />
<g:SimplePanel addStyleNames="{res.mediaCss.small12} {res.mediaCss.columns} {res.mainCss.spacermarginbottommedium}" ui:field="regattaInfoContainerUi"/>
</div>
<p:listNavigation.ListNavigationPanel ui:field="listNavigationPanelUi"/>
<div class="{res.mediaCss.grid}">
<g:FlowPanel addStyleNames="{res.mediaCss.small12} {res.mediaCss.columns} {style.listContainer}" ui:field="listFormatContainerUi" />
<g:FlowPanel addStyleNames="{res.mediaCss.small12} {res.mediaCss.columns}" ui:field="compFormatContainerUi" />
</div>
<g:SimplePanel ui:field="oldContentContainer"/>
<div class="{res.mediaCss.grid}">
<div class="{res.mediaCss.small12} {res.mediaCss.columns} {style.listContainer}" ui:field="listFormatContainerUi">
<p:raceListLive.RacesListLive ui:field="liveRacesListUi" />
<div class="{style.buttonContainer}">
<a class="{res.mainCss.button} {res.mainCss.buttonstrong} {res.mainCss.buttonarrowrightwhite} {style.regattaOverviewButton}"
target="_blank" ui:field="regattaOverviewUi">
<ui:text from="{i18n.racesOverview}" />
</a>
</div>
<p:racelist.RaceListContainer ui:field="raceListContainerUi" />
</div>
<g:FlowPanel addStyleNames="{res.mediaCss.small12} {res.mediaCss.columns}" ui:field="compFormatContainerUi" />
</div>
<g:SimplePanel ui:field="oldContentContainer"/>
</g:HTMLPanel>
</ui:UiBinder>
@@ -1350,4 +1350,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
String miniLeeaderboardLegendText();
String currentOfTotal(int current, int total);
String noFinishedRaces();
String racesOverview();
}
@@ -1319,3 +1319,4 @@ degreesToWind={0}° to wind
miniLeeaderboardLegendText=Shows the points along with the number of races per competitor
currentOfTotal={0,number}/{1,number}
noFinishedRaces=There are no finished races yet
racesOverview=Races overview
@@ -1309,3 +1309,4 @@ degreesToWind={0}° zum Wind
miniLeeaderboardLegendText=Es werden die Punkte und die Anzahl Rennen je Team angezeigt
currentOfTotal={0,number}/{1,number}
noFinishedRaces=Es wurden noch keine Wettfahrten beendet.
racesOverview=Wettfahrtübersicht
@@ -1256,3 +1256,4 @@ degreesToWind={0}° to wind
miniLeeaderboardLegendText=Shows points along with the number of races per competitor
currentOfTotal={0,number}/{1,number}
noFinishedRaces=There are no finished races yet
racesOverview=Races overview
@@ -1305,3 +1305,4 @@ degreesToWind={0}° to wind
miniLeeaderboardLegendText=Shows points along with the number of races per competitor
currentOfTotal={0,number}/{1,number}
noFinishedRaces=There are no finished races yet
racesOverview=Races overview