diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java index ab5e46d4bf8..08cae74e599 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/SmartphoneApplicationClientFactory.java @@ -6,7 +6,9 @@ import com.google.gwt.event.shared.SimpleEventBus; import com.google.gwt.place.shared.PlaceController; import com.google.web.bindery.event.shared.EventBus; import com.sap.sailing.gwt.home.client.place.event.EventView; +import com.sap.sailing.gwt.home.client.place.event.EventWithoutRegattasView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventView; +import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventWithoutRegattasView; import com.sap.sailing.gwt.home.client.place.events.EventsActivity; import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; @@ -43,6 +45,11 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien return new TabletAndDesktopEventView(getSailingService(), event, raceGroups, leaderboardName, timerForClientServerOffset); } + @Override + public EventWithoutRegattasView createEventWithoutRegattasView(EventDTO event) { + return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event); + } + @Override public EventsView createEventsView(EventsActivity activity) { return new TabletAndDesktopEventsView(getPlaceNavigator()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java index c58a34f6f62..1d56f2ddd0d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/app/TabletAndDesktopApplicationClientFactory.java @@ -6,7 +6,9 @@ import com.google.gwt.event.shared.SimpleEventBus; import com.google.gwt.place.shared.PlaceController; import com.google.web.bindery.event.shared.EventBus; import com.sap.sailing.gwt.home.client.place.event.EventView; +import com.sap.sailing.gwt.home.client.place.event.EventWithoutRegattasView; import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventView; +import com.sap.sailing.gwt.home.client.place.event.TabletAndDesktopEventWithoutRegattasView; import com.sap.sailing.gwt.home.client.place.events.EventsActivity; import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; @@ -43,6 +45,11 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio return new TabletAndDesktopEventView(getSailingService(), event, raceGroups, leaderboardName, timerForClientServerOffset); } + @Override + public EventWithoutRegattasView createEventWithoutRegattasView(EventDTO event) { + return new TabletAndDesktopEventWithoutRegattasView(getSailingService(), event); + } + @Override public EventsView createEventsView(EventsActivity activity) { return new TabletAndDesktopEventsView(getPlaceNavigator()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivity.java index 4c47059a9ef..06758ea741d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivity.java @@ -55,27 +55,32 @@ public class EventActivity extends AbstractActivity { clientFactory.getSailingService().getEventById(eventUUID, new AsyncCallback() { @Override public void onSuccess(final EventDTO event) { - - clientFactory.getSailingService().getRegattaStructureForEvent(event.id, new AsyncCallback>() { - @Override - public void onSuccess(List raceGroups) { - for(LeaderboardGroupDTO leaderboardGroupDTO: event.getLeaderboardGroups()) { - final long clientTimeWhenResponseWasReceived = System.currentTimeMillis(); - if (leaderboardGroupDTO.getAverageDelayToLiveInMillis() != null) { - timerForClientServerOffset.setLivePlayDelayInMillis(leaderboardGroupDTO.getAverageDelayToLiveInMillis()); + if(event.getLeaderboardGroups().size() > 0) { + clientFactory.getSailingService().getRegattaStructureForEvent(event.id, new AsyncCallback>() { + @Override + public void onSuccess(List raceGroups) { + for(LeaderboardGroupDTO leaderboardGroupDTO: event.getLeaderboardGroups()) { + final long clientTimeWhenResponseWasReceived = System.currentTimeMillis(); + if (leaderboardGroupDTO.getAverageDelayToLiveInMillis() != null) { + timerForClientServerOffset.setLivePlayDelayInMillis(leaderboardGroupDTO.getAverageDelayToLiveInMillis()); + } + timerForClientServerOffset.adjustClientServerOffset(clientTimeWhenRequestWasSent, leaderboardGroupDTO.getCurrentServerTime(), clientTimeWhenResponseWasReceived); } - timerForClientServerOffset.adjustClientServerOffset(clientTimeWhenRequestWasSent, leaderboardGroupDTO.getCurrentServerTime(), clientTimeWhenResponseWasReceived); + + view = clientFactory.createEventView(event, raceGroups, eventPlace.getLeaderboardIdAsNameString(), timerForClientServerOffset); + panel.setWidget(view.asWidget()); } - view = clientFactory.createEventView(event, raceGroups, eventPlace.getLeaderboardIdAsNameString(), timerForClientServerOffset); - panel.setWidget(view.asWidget()); - } - - @Override - public void onFailure(Throwable caught) { - Window.alert("Shit happens at getRegattaStructureForEvent()"); - } - }); + @Override + public void onFailure(Throwable caught) { + Window.alert("Shit happens at getRegattaStructureForEvent()"); + } + }); + } else { + // no leaderboard groups defined yet -> show a teaser page + EventWithoutRegattasView view = clientFactory.createEventWithoutRegattasView(event); + panel.setWidget(view.asWidget()); + } } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventClientFactory.java index 7d07e0c4625..6d79fe73c60 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventClientFactory.java @@ -9,4 +9,6 @@ import com.sap.sse.gwt.client.player.Timer; public interface EventClientFactory extends SailingClientFactory { EventView createEventView(EventDTO event, List raceGroups, String leaderboardName, Timer timerForClientServerOffset); + + EventWithoutRegattasView createEventWithoutRegattasView(EventDTO event); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventWithoutRegattasView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventWithoutRegattasView.java new file mode 100644 index 00000000000..24eacd20417 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventWithoutRegattasView.java @@ -0,0 +1,7 @@ +package com.sap.sailing.gwt.home.client.place.event; + +import com.google.gwt.user.client.ui.Widget; + +public interface EventWithoutRegattasView { + Widget asWidget(); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.java new file mode 100644 index 00000000000..f140e40cbc6 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.java @@ -0,0 +1,25 @@ +package com.sap.sailing.gwt.home.client.place.event; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.client.place.event.header.EventHeader; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.shared.EventDTO; + +public class TabletAndDesktopEventWithoutRegattasView extends Composite implements EventWithoutRegattasView { + private static EventViewUiBinder uiBinder = GWT.create(EventViewUiBinder.class); + + interface EventViewUiBinder extends UiBinder { + } + + @UiField(provided=true) EventHeader eventHeader; + + public TabletAndDesktopEventWithoutRegattasView(SailingServiceAsync sailingService, EventDTO event) { + eventHeader = new EventHeader(event); + + initWidget(uiBinder.createAndBindUi(this)); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.ui.xml new file mode 100644 index 00000000000..35264d68afd --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/TabletAndDesktopEventWithoutRegattasView.ui.xml @@ -0,0 +1,21 @@ + + + + + .infoPanel { + height: 300px; + padding-top: 2em; + } + + + +
+
+ There is no information available about the regattas of this event yet. +
+
+
+
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java index 47fb93e05df..86db5ca2988 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/header/EventHeader.java @@ -88,6 +88,22 @@ public class EventHeader extends Composite { setDataNavigationType("normal"); updateUI(); } + + public EventHeader(EventDTO event) { + this.event = event; + this.pageNavigator = null; + + EventHeaderResources.INSTANCE.css().ensureInjected(); + StyleInjector.injectAtEnd("@media (min-width: 50em) { "+EventHeaderResources.INSTANCE.largeCss().getText()+"}"); + + initWidget(uiBinder.createAndBindUi(this)); + + isFinishedDiv.getStyle().setDisplay(Display.NONE); + isLiveDiv.getStyle().setDisplay(Display.NONE); + + setDataNavigationType("normal"); + updateUI(); + } public void setDataNavigationType(String dataNavigationType) { eventHeaderWrapperDiv.setAttribute("data-navigationtype", dataNavigationType); @@ -105,6 +121,8 @@ public class EventHeader extends Composite { } if(event.getOfficialWebsiteURL() != null) { officalWebsiteLink.setHref(event.getOfficialWebsiteURL()); + } else { + officalWebsiteLink.setVisible(false); } String logoUrl = event.getLogoImageURL() != null ? event.getLogoImageURL() : defaultLogoUrl;