mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-16 09:11:02 +00:00
Error handling (error view) on new event implementation
This commit is contained in:
1 parent
e1462316e5
commit
a6ab15c8f3
23 files changed
+264
-136
No files matched your search
+10
@@ -15,6 +15,7 @@ import com.google.gwt.uibinder.client.UiField;
|
|||||||
import com.google.gwt.uibinder.client.UiHandler;
|
import com.google.gwt.uibinder.client.UiHandler;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.FlowPanel;
|
import com.google.gwt.user.client.ui.FlowPanel;
|
||||||
|
import com.google.gwt.user.client.ui.IsWidget;
|
||||||
import com.google.gwt.user.client.ui.SimplePanel;
|
import com.google.gwt.user.client.ui.SimplePanel;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView.State;
|
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView.State;
|
||||||
@@ -129,6 +130,15 @@ public class TabPanel<PRESENTER> extends Composite {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Directly sets the content of the current widget until it is reloaded/ reset
|
||||||
|
*
|
||||||
|
* @param widget
|
||||||
|
*/
|
||||||
|
public void overrideCurrentContentInTab(IsWidget widget) {
|
||||||
|
tabContentPanelUi.setWidget(widget);
|
||||||
|
}
|
||||||
|
|
||||||
public void addBreadcrumbItem(String title, String link, final Runnable runnable) {
|
public void addBreadcrumbItem(String title, String link, final Runnable runnable) {
|
||||||
breadcrumbs.addBreadcrumbItem(title, link, runnable);
|
breadcrumbs.addBreadcrumbItem(title, link, runnable);
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -7,6 +7,8 @@ import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsActivityProxy;
|
|||||||
import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsPlace;
|
import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsPlace;
|
||||||
import com.sap.sailing.gwt.home.client.place.contact.ContactActivityProxy;
|
import com.sap.sailing.gwt.home.client.place.contact.ContactActivityProxy;
|
||||||
import com.sap.sailing.gwt.home.client.place.contact.ContactPlace;
|
import com.sap.sailing.gwt.home.client.place.contact.ContactPlace;
|
||||||
|
import com.sap.sailing.gwt.home.client.place.error.ErrorActivityProxy;
|
||||||
|
import com.sap.sailing.gwt.home.client.place.error.ErrorPlace;
|
||||||
import com.sap.sailing.gwt.home.client.place.event.EventPlace;
|
import com.sap.sailing.gwt.home.client.place.event.EventPlace;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.AbstractEventPlace;
|
import com.sap.sailing.gwt.home.client.place.event2.AbstractEventPlace;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.EventActivityProxy;
|
import com.sap.sailing.gwt.home.client.place.event2.EventActivityProxy;
|
||||||
@@ -48,6 +50,8 @@ public class ApplicationActivityMapper implements ActivityMapper {
|
|||||||
public Activity getActivity(Place place) {
|
public Activity getActivity(Place place) {
|
||||||
if (place instanceof AboutUsPlace) {
|
if (place instanceof AboutUsPlace) {
|
||||||
return new AboutUsActivityProxy((AboutUsPlace) place, clientFactory);
|
return new AboutUsActivityProxy((AboutUsPlace) place, clientFactory);
|
||||||
|
} else if (place instanceof ErrorPlace) {
|
||||||
|
return new ErrorActivityProxy((ErrorPlace) place, clientFactory);
|
||||||
} else if (place instanceof ContactPlace) {
|
} else if (place instanceof ContactPlace) {
|
||||||
return new ContactActivityProxy((ContactPlace) place, clientFactory);
|
return new ContactActivityProxy((ContactPlace) place, clientFactory);
|
||||||
} else if (place instanceof EventPlace) {
|
} else if (place instanceof EventPlace) {
|
||||||
|
|||||||
+2
-1
@@ -2,6 +2,7 @@ package com.sap.sailing.gwt.home.client.app;
|
|||||||
|
|
||||||
import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsClientFactory;
|
import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsClientFactory;
|
||||||
import com.sap.sailing.gwt.home.client.place.contact.ContactClientFactory;
|
import com.sap.sailing.gwt.home.client.place.contact.ContactClientFactory;
|
||||||
|
import com.sap.sailing.gwt.home.client.place.error.ErrorClientFactory;
|
||||||
import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
|
import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
|
||||||
import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory;
|
import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory;
|
||||||
import com.sap.sailing.gwt.home.client.place.regatta.RegattaClientFactory;
|
import com.sap.sailing.gwt.home.client.place.regatta.RegattaClientFactory;
|
||||||
@@ -14,6 +15,6 @@ import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewClientFactory;
|
|||||||
|
|
||||||
public interface ApplicationClientFactory extends AboutUsClientFactory, ContactClientFactory, EventClientFactory,
|
public interface ApplicationClientFactory extends AboutUsClientFactory, ContactClientFactory, EventClientFactory,
|
||||||
EventsClientFactory, StartClientFactory, SponsoringClientFactory, SolutionsClientFactory, SearchResultClientFactory,
|
EventsClientFactory, StartClientFactory, SponsoringClientFactory, SolutionsClientFactory, SearchResultClientFactory,
|
||||||
WhatsNewClientFactory, RegattaClientFactory, SeriesClientFactory {
|
WhatsNewClientFactory, RegattaClientFactory, SeriesClientFactory, ErrorClientFactory {
|
||||||
HomePlacesNavigator getHomePlacesNavigator();
|
HomePlacesNavigator getHomePlacesNavigator();
|
||||||
}
|
}
|
||||||
+2
-2
@@ -28,9 +28,9 @@ import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView;
|
|||||||
import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView;
|
import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView;
|
||||||
import com.sap.sailing.gwt.home.client.place.start.StartView;
|
import com.sap.sailing.gwt.home.client.place.start.StartView;
|
||||||
import com.sap.sailing.gwt.home.client.place.start.TabletAndDesktopStartView;
|
import com.sap.sailing.gwt.home.client.place.start.TabletAndDesktopStartView;
|
||||||
|
import com.sap.sailing.gwt.home.client.place.whatsnew.TabletAndDesktopWhatsNewView;
|
||||||
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
|
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
|
||||||
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewView;
|
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewView;
|
||||||
import com.sap.sailing.gwt.home.client.place.whatsnew.TabletAndDesktopWhatsNewView;
|
|
||||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.RaceGroupDTO;
|
import com.sap.sailing.gwt.ui.shared.RaceGroupDTO;
|
||||||
import com.sap.sse.gwt.client.player.Timer;
|
import com.sap.sse.gwt.client.player.Timer;
|
||||||
@@ -66,7 +66,7 @@ public class SmartphoneApplicationClientFactory extends AbstractApplicationClien
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TabletAndDesktopErrorView createErrorView(String errorMessage, Throwable errorReason) {
|
public TabletAndDesktopErrorView createErrorView(String errorMessage, Throwable errorReason) {
|
||||||
return new TabletAndDesktopErrorView(errorMessage, errorReason);
|
return new TabletAndDesktopErrorView(errorMessage, errorReason, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+2
-2
@@ -28,9 +28,9 @@ import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView;
|
|||||||
import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView;
|
import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView;
|
||||||
import com.sap.sailing.gwt.home.client.place.start.StartView;
|
import com.sap.sailing.gwt.home.client.place.start.StartView;
|
||||||
import com.sap.sailing.gwt.home.client.place.start.TabletAndDesktopStartView;
|
import com.sap.sailing.gwt.home.client.place.start.TabletAndDesktopStartView;
|
||||||
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewView;
|
|
||||||
import com.sap.sailing.gwt.home.client.place.whatsnew.TabletAndDesktopWhatsNewView;
|
import com.sap.sailing.gwt.home.client.place.whatsnew.TabletAndDesktopWhatsNewView;
|
||||||
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
|
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
|
||||||
|
import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewView;
|
||||||
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
import com.sap.sailing.gwt.ui.shared.EventDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.RaceGroupDTO;
|
import com.sap.sailing.gwt.ui.shared.RaceGroupDTO;
|
||||||
import com.sap.sse.gwt.client.player.Timer;
|
import com.sap.sse.gwt.client.player.Timer;
|
||||||
@@ -56,7 +56,7 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TabletAndDesktopErrorView createErrorView(String errorMessage, Throwable errorReason) {
|
public TabletAndDesktopErrorView createErrorView(String errorMessage, Throwable errorReason) {
|
||||||
return new TabletAndDesktopErrorView(errorMessage, errorReason);
|
return new TabletAndDesktopErrorView(errorMessage, errorReason, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+30
-1
@@ -2,17 +2,46 @@ package com.sap.sailing.gwt.home.client.place.error;
|
|||||||
|
|
||||||
import com.google.gwt.activity.shared.AbstractActivity;
|
import com.google.gwt.activity.shared.AbstractActivity;
|
||||||
import com.google.gwt.event.shared.EventBus;
|
import com.google.gwt.event.shared.EventBus;
|
||||||
|
import com.google.gwt.user.client.Command;
|
||||||
import com.google.gwt.user.client.ui.AcceptsOneWidget;
|
import com.google.gwt.user.client.ui.AcceptsOneWidget;
|
||||||
|
|
||||||
public class ErrorActivity extends AbstractActivity {
|
public class ErrorActivity extends AbstractActivity {
|
||||||
|
|
||||||
|
private ErrorPlace currentPlace;
|
||||||
|
private ErrorClientFactory clientFactory;
|
||||||
|
|
||||||
public ErrorActivity(ErrorPlace place, ErrorClientFactory clientFactory) {
|
public ErrorActivity(ErrorPlace place, ErrorClientFactory clientFactory) {
|
||||||
|
this.currentPlace = place;
|
||||||
|
this.clientFactory = clientFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(AcceptsOneWidget panel, EventBus eventBus) {
|
public void start(AcceptsOneWidget panel, EventBus eventBus) {
|
||||||
// TODO: the error place should get the error message from the place
|
// TODO: the error place should get the error message from the place
|
||||||
panel.setWidget(new TabletAndDesktopErrorView(null, null));
|
final TabletAndDesktopErrorView view;
|
||||||
|
|
||||||
|
Command reloadCommand = null;
|
||||||
|
if (currentPlace.getComingFrom() != null) {
|
||||||
|
reloadCommand = new Command() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
clientFactory.getPlaceController().goTo(currentPlace.getComingFrom());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentPlace.hasCustomErrorMessages()) {
|
||||||
|
view = new TabletAndDesktopErrorView(
|
||||||
|
currentPlace.getErrorMessage(),
|
||||||
|
currentPlace.getErrorMessageDetail(),
|
||||||
|
currentPlace.getException(), reloadCommand);
|
||||||
|
} else {
|
||||||
|
view = new TabletAndDesktopErrorView(currentPlace.getErrorMessageDetail(), currentPlace.getException(),
|
||||||
|
reloadCommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel.setWidget(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+58
-1
@@ -1,10 +1,62 @@
|
|||||||
package com.sap.sailing.gwt.home.client.place.error;
|
package com.sap.sailing.gwt.home.client.place.error;
|
||||||
|
|
||||||
|
import com.google.gwt.place.shared.Place;
|
||||||
import com.google.gwt.place.shared.PlaceTokenizer;
|
import com.google.gwt.place.shared.PlaceTokenizer;
|
||||||
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
import com.sap.sailing.gwt.common.client.AbstractBasePlace;
|
||||||
|
|
||||||
public class ErrorPlace extends AbstractBasePlace {
|
public class ErrorPlace extends AbstractBasePlace {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Place provided for reload action
|
||||||
|
*/
|
||||||
|
private Place comingFrom;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom error messages
|
||||||
|
*/
|
||||||
|
private String errorMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detail error message
|
||||||
|
*/
|
||||||
|
private final String errorMessageDetail;
|
||||||
|
|
||||||
|
public ErrorPlace(String errorMessageDetail) {
|
||||||
|
this.errorMessageDetail = errorMessageDetail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception ocurred
|
||||||
|
*/
|
||||||
|
private Throwable exception;
|
||||||
|
|
||||||
|
public Place getComingFrom() {
|
||||||
|
return comingFrom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setComingFrom(Place comingFrom) {
|
||||||
|
this.comingFrom = comingFrom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getErrorMessage() {
|
||||||
|
return errorMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getErrorMessageDetail() {
|
||||||
|
return errorMessageDetail;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setErrorMessage(String errorMessage) {
|
||||||
|
this.errorMessage = errorMessage;
|
||||||
|
}
|
||||||
|
public Throwable getException() {
|
||||||
|
return exception;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setException(Throwable exception) {
|
||||||
|
this.exception = exception;
|
||||||
|
}
|
||||||
|
|
||||||
public static class Tokenizer implements PlaceTokenizer<ErrorPlace> {
|
public static class Tokenizer implements PlaceTokenizer<ErrorPlace> {
|
||||||
@Override
|
@Override
|
||||||
public String getToken(ErrorPlace place) {
|
public String getToken(ErrorPlace place) {
|
||||||
@@ -13,7 +65,12 @@ public class ErrorPlace extends AbstractBasePlace {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ErrorPlace getPlace(String token) {
|
public ErrorPlace getPlace(String token) {
|
||||||
return new ErrorPlace();
|
return new ErrorPlace("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasCustomErrorMessages() {
|
||||||
|
|
||||||
|
return errorMessage != null && !errorMessage.isEmpty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+9
-3
@@ -3,6 +3,7 @@ package com.sap.sailing.gwt.home.client.place.error;
|
|||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.uibinder.client.UiBinder;
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
|
import com.google.gwt.user.client.Command;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.home.client.shared.error.ErrorMessage;
|
import com.sap.sailing.gwt.home.client.shared.error.ErrorMessage;
|
||||||
@@ -16,9 +17,14 @@ public class TabletAndDesktopErrorView extends Composite implements ErrorView {
|
|||||||
|
|
||||||
@UiField(provided=true) ErrorMessage errorMessage;
|
@UiField(provided=true) ErrorMessage errorMessage;
|
||||||
|
|
||||||
public TabletAndDesktopErrorView(String errorMessageText, Throwable errorReason) {
|
public TabletAndDesktopErrorView(String errorMessageTextDetail, Throwable errorReason, Command reloadCommand) {
|
||||||
errorMessage = new ErrorMessage(errorMessageText, errorReason);
|
errorMessage = new ErrorMessage(errorMessageTextDetail, errorReason, reloadCommand);
|
||||||
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TabletAndDesktopErrorView(String customMessageText, String errorMessageTextDetail, Throwable errorReason,
|
||||||
|
Command reloadCommand) {
|
||||||
|
errorMessage = new ErrorMessage(customMessageText, errorMessageTextDetail, errorReason, reloadCommand);
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+77
-57
@@ -31,10 +31,12 @@ 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.EventViewDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.eventview.HasRegattaMetadata;
|
import com.sap.sailing.gwt.ui.shared.eventview.HasRegattaMetadata;
|
||||||
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
|
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;
|
import com.sap.sse.gwt.client.player.Timer;
|
||||||
import com.sap.sse.gwt.client.player.Timer.PlayModes;
|
import com.sap.sse.gwt.client.player.Timer.PlayModes;
|
||||||
|
|
||||||
public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> extends AbstractActivity implements EventView.Presenter {
|
public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> extends AbstractActivity implements
|
||||||
|
EventView.Presenter {
|
||||||
|
|
||||||
protected final PLACE currentPlace;
|
protected final PLACE currentPlace;
|
||||||
|
|
||||||
@@ -45,7 +47,7 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
|
|||||||
private final Timer timerForClientServerOffset;
|
private final Timer timerForClientServerOffset;
|
||||||
|
|
||||||
protected final HomePlacesNavigator homePlacesNavigator;
|
protected final HomePlacesNavigator homePlacesNavigator;
|
||||||
|
|
||||||
private static final ApplicationHistoryMapper historyMapper = GWT.create(ApplicationHistoryMapper.class);
|
private static final ApplicationHistoryMapper historyMapper = GWT.create(ApplicationHistoryMapper.class);
|
||||||
|
|
||||||
public AbstractEventActivity(PLACE place, EventClientFactory clientFactory, HomePlacesNavigator homePlacesNavigator) {
|
public AbstractEventActivity(PLACE place, EventClientFactory clientFactory, HomePlacesNavigator homePlacesNavigator) {
|
||||||
@@ -71,11 +73,11 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
|
|||||||
Place tabPlaceToGo = selectedActivity.placeToFire();
|
Place tabPlaceToGo = selectedActivity.placeToFire();
|
||||||
clientFactory.getPlaceController().goTo(tabPlaceToGo);
|
clientFactory.getPlaceController().goTo(tabPlaceToGo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void navigateTo(Place place) {
|
public void navigateTo(Place place) {
|
||||||
clientFactory.getPlaceController().goTo(place);
|
clientFactory.getPlaceController().goTo(place);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SafeUri getUrl(AbstractEventPlace place) {
|
public SafeUri getUrl(AbstractEventPlace place) {
|
||||||
String token = historyMapper.getToken(place);
|
String token = historyMapper.getToken(place);
|
||||||
@@ -91,14 +93,14 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
|
|||||||
public Timer getTimerForClientServerOffset() {
|
public Timer getTimerForClientServerOffset() {
|
||||||
return timerForClientServerOffset;
|
return timerForClientServerOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AbstractEventRegattaPlace getPlaceForRegatta(String regattaId) {
|
public AbstractEventRegattaPlace getPlaceForRegatta(String regattaId) {
|
||||||
// TODO Overview isn't implemented yet
|
// TODO Overview isn't implemented yet
|
||||||
// return new RegattaOverviewPlace(contextForRegatta(regattaId));
|
// return new RegattaOverviewPlace(contextForRegatta(regattaId));
|
||||||
return new RegattaRacesPlace(contextForRegatta(regattaId));
|
return new RegattaRacesPlace(contextForRegatta(regattaId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RegattaRacesPlace getPlaceForRegattaRaces(String regattaId) {
|
public RegattaRacesPlace getPlaceForRegattaRaces(String regattaId) {
|
||||||
return new RegattaRacesPlace(contextForRegatta(regattaId));
|
return new RegattaRacesPlace(contextForRegatta(regattaId));
|
||||||
@@ -107,25 +109,27 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
|
|||||||
protected EventContext contextForRegatta(String regattaId) {
|
protected EventContext contextForRegatta(String regattaId) {
|
||||||
return new EventContext(ctx).withRegattaId(regattaId);
|
return new EventContext(ctx).withRegattaId(regattaId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRaceViewerURL(StrippedLeaderboardDTO leaderboard, RaceDTO race) {
|
public String getRaceViewerURL(StrippedLeaderboardDTO leaderboard, RaceDTO race) {
|
||||||
RegattaAndRaceIdentifier raceIdentifier = race.getRaceIdentifier();
|
RegattaAndRaceIdentifier raceIdentifier = race.getRaceIdentifier();
|
||||||
return EntryPointLinkFactory.createRaceBoardLink(createRaceBoardLinkParameters(leaderboard.name, raceIdentifier));
|
return EntryPointLinkFactory
|
||||||
|
.createRaceBoardLink(createRaceBoardLinkParameters(leaderboard.name, raceIdentifier));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, String> createRaceBoardLinkParameters(String leaderboardName, RegattaAndRaceIdentifier raceIdentifier) {
|
private Map<String, String> createRaceBoardLinkParameters(String leaderboardName,
|
||||||
|
RegattaAndRaceIdentifier raceIdentifier) {
|
||||||
Map<String, String> linkParams = new HashMap<String, String>();
|
Map<String, String> linkParams = new HashMap<String, String>();
|
||||||
linkParams.put("eventId", ctx.getEventId());
|
linkParams.put("eventId", ctx.getEventId());
|
||||||
linkParams.put("leaderboardName", leaderboardName);
|
linkParams.put("leaderboardName", leaderboardName);
|
||||||
linkParams.put("raceName", raceIdentifier.getRaceName());
|
linkParams.put("raceName", raceIdentifier.getRaceName());
|
||||||
// TODO this must only be forwarded if there is a logged-on user
|
// TODO this must only be forwarded if there is a logged-on user
|
||||||
// linkParams.put(RaceBoardViewConfiguration.PARAM_CAN_REPLAY_DURING_LIVE_RACES, "true");
|
// linkParams.put(RaceBoardViewConfiguration.PARAM_CAN_REPLAY_DURING_LIVE_RACES, "true");
|
||||||
linkParams.put(RaceBoardViewConfiguration.PARAM_VIEW_SHOW_MAPCONTROLS, "true");
|
linkParams.put(RaceBoardViewConfiguration.PARAM_VIEW_SHOW_MAPCONTROLS, "true");
|
||||||
linkParams.put(RaceBoardViewConfiguration.PARAM_VIEW_SHOW_NAVIGATION_PANEL, "true");
|
linkParams.put(RaceBoardViewConfiguration.PARAM_VIEW_SHOW_NAVIGATION_PANEL, "true");
|
||||||
linkParams.put("regattaName", raceIdentifier.getRegattaName());
|
linkParams.put("regattaName", raceIdentifier.getRegattaName());
|
||||||
return linkParams;
|
return linkParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlaceNavigation<StartPlace> getHomeNavigation() {
|
public PlaceNavigation<StartPlace> getHomeNavigation() {
|
||||||
return homePlacesNavigator.getHomeNavigation();
|
return homePlacesNavigator.getHomeNavigation();
|
||||||
@@ -135,82 +139,95 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
|
|||||||
public PlaceNavigation<EventsPlace> getEventsNavigation() {
|
public PlaceNavigation<EventsPlace> getEventsNavigation() {
|
||||||
return homePlacesNavigator.getEventsNavigation();
|
return homePlacesNavigator.getEventsNavigation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlaceNavigation<EventDefaultPlace> getCurrentEventNavigation() {
|
public PlaceNavigation<EventDefaultPlace> getCurrentEventNavigation() {
|
||||||
return homePlacesNavigator.getEventNavigation(ctx.getEventId(), ctx.getEventDTO().getBaseURL(), ctx.getEventDTO().isOnRemoteServer());
|
return homePlacesNavigator.getEventNavigation(ctx.getEventId(), ctx.getEventDTO().getBaseURL(), ctx
|
||||||
|
.getEventDTO().isOnRemoteServer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlaceNavigation<SeriesDefaultPlace> getCurrentEventSeriesNavigation() {
|
public PlaceNavigation<SeriesDefaultPlace> getCurrentEventSeriesNavigation() {
|
||||||
return homePlacesNavigator.getEventSeriesNavigation(ctx.getEventId(), ctx.getEventDTO().getBaseURL(), ctx.getEventDTO().isOnRemoteServer());
|
return homePlacesNavigator.getEventSeriesNavigation(ctx.getEventId(), ctx.getEventDTO().getBaseURL(), ctx
|
||||||
|
.getEventDTO().isOnRemoteServer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlaceNavigation<RegattaRacesPlace> getRegattaRacesNavigation(String regattaId) {
|
public PlaceNavigation<RegattaRacesPlace> getRegattaRacesNavigation(String regattaId) {
|
||||||
return homePlacesNavigator.getEventNavigation(getPlaceForRegattaRaces(regattaId), new RegattaRacesPlace.Tokenizer(), ctx.getEventDTO().getBaseURL(), ctx.getEventDTO().isOnRemoteServer());
|
return homePlacesNavigator
|
||||||
|
.getEventNavigation(getPlaceForRegattaRaces(regattaId), new RegattaRacesPlace.Tokenizer(), ctx
|
||||||
|
.getEventDTO().getBaseURL(), ctx.getEventDTO().isOnRemoteServer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlaceNavigation<RegattaRacesPlace> getRegattaNavigation(String regattaId) {
|
public PlaceNavigation<RegattaRacesPlace> getRegattaNavigation(String regattaId) {
|
||||||
return homePlacesNavigator.getEventNavigation(getPlaceForRegattaRaces(regattaId), new RegattaRacesPlace.Tokenizer(), ctx.getEventDTO().getBaseURL(), ctx.getEventDTO().isOnRemoteServer());
|
return homePlacesNavigator
|
||||||
|
.getEventNavigation(getPlaceForRegattaRaces(regattaId), new RegattaRacesPlace.Tokenizer(), ctx
|
||||||
|
.getEventDTO().getBaseURL(), ctx.getEventDTO().isOnRemoteServer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void ensureRegattaStructure(final AsyncCallback<List<RaceGroupDTO>> callback) {
|
public void ensureRegattaStructure(final AsyncCallback<List<RaceGroupDTO>> callback) {
|
||||||
if(ctx.getRaceGroups() != null) {
|
if (ctx.getRaceGroups() != null) {
|
||||||
callback.onSuccess(ctx.getRaceGroups());
|
callback.onSuccess(ctx.getRaceGroups());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final long clientTimeWhenRequestWasSent = System.currentTimeMillis();
|
final long clientTimeWhenRequestWasSent = System.currentTimeMillis();
|
||||||
|
|
||||||
final EventViewDTO eventDTO = ctx.getEventDTO();
|
final EventViewDTO eventDTO = ctx.getEventDTO();
|
||||||
|
|
||||||
getSailingService().getRegattaStructureOfEvent(eventDTO.id,
|
getSailingService().getRegattaStructureOfEvent(eventDTO.id,
|
||||||
new AsyncCallback<List<RaceGroupDTO>>() {
|
new AsyncCallback<List<RaceGroupDTO>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<RaceGroupDTO> raceGroups) {
|
public void onSuccess(List<RaceGroupDTO> raceGroups) {
|
||||||
if (raceGroups.size() > 0) {
|
if (raceGroups.size() > 0) {
|
||||||
for (LeaderboardGroupDTO leaderboardGroupDTO : eventDTO.getLeaderboardGroups()) {
|
for (LeaderboardGroupDTO leaderboardGroupDTO : eventDTO.getLeaderboardGroups()) {
|
||||||
final long clientTimeWhenResponseWasReceived = System.currentTimeMillis();
|
final long clientTimeWhenResponseWasReceived = System.currentTimeMillis();
|
||||||
if (leaderboardGroupDTO.getAverageDelayToLiveInMillis() != null) {
|
if (leaderboardGroupDTO.getAverageDelayToLiveInMillis() != null) {
|
||||||
timerForClientServerOffset.setLivePlayDelayInMillis(
|
timerForClientServerOffset.setLivePlayDelayInMillis(leaderboardGroupDTO
|
||||||
leaderboardGroupDTO
|
.getAverageDelayToLiveInMillis());
|
||||||
.getAverageDelayToLiveInMillis());
|
|
||||||
}
|
|
||||||
timerForClientServerOffset.adjustClientServerOffset(
|
|
||||||
clientTimeWhenRequestWasSent,
|
|
||||||
leaderboardGroupDTO.getCurrentServerTime(), clientTimeWhenResponseWasReceived);
|
|
||||||
}
|
|
||||||
ctx.withRaceGroups(raceGroups);
|
|
||||||
callback.onSuccess(raceGroups);
|
|
||||||
} else {
|
|
||||||
// TODO
|
|
||||||
// createEventWithoutRegattasView(event, panel);
|
|
||||||
}
|
}
|
||||||
|
timerForClientServerOffset.adjustClientServerOffset(clientTimeWhenRequestWasSent,
|
||||||
|
leaderboardGroupDTO.getCurrentServerTime(), clientTimeWhenResponseWasReceived);
|
||||||
}
|
}
|
||||||
|
ctx.withRaceGroups(raceGroups);
|
||||||
|
callback.onSuccess(raceGroups);
|
||||||
|
} else {
|
||||||
|
// TODO @FM: extract error message
|
||||||
|
ErrorView errorView = clientFactory.createErrorView("No race data available", null);
|
||||||
|
getView().showErrorInCurrentTab(errorView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
// createErrorView(
|
// TODO @FM: extract error message
|
||||||
// "Error while loading the regatta structure with service getRegattaStructureOfEvent()",
|
ErrorView errorView = clientFactory.createErrorView(
|
||||||
// caught, panel);
|
"Error while loading the regatta structure with service getRegattaStructureOfEvent()", caught);
|
||||||
callback.onFailure(caught);
|
getView().showErrorInCurrentTab(errorView);
|
||||||
}
|
// TODO: notify callback of failure?
|
||||||
});
|
// callback.onFailure(caught);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void ensureMedia(final AsyncCallback<MediaDTO> callback) {
|
public void ensureMedia(final AsyncCallback<MediaDTO> callback) {
|
||||||
if(ctx.getMedia() != null) {
|
if (ctx.getMedia() != null) {
|
||||||
callback.onSuccess(ctx.getMedia());
|
callback.onSuccess(ctx.getMedia());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSailingService().getMediaForEvent(ctx.getEventDTO().id, new AsyncCallback<MediaDTO>() {
|
getSailingService().getMediaForEvent(ctx.getEventDTO().id, new AsyncCallback<MediaDTO>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
callback.onFailure(caught);
|
// TODO @FM: extract error message
|
||||||
|
ErrorView errorView = clientFactory.createErrorView("Load media failure for event", caught);
|
||||||
|
getView().showErrorInCurrentTab(errorView);
|
||||||
|
// TODO: notify callback of failure?
|
||||||
|
// callback.onFailure(caught);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -220,12 +237,15 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasMedia() {
|
public boolean hasMedia() {
|
||||||
if(showRegattaMetadata()) {
|
if (showRegattaMetadata()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return ctx.getEventDTO().isHasMedia();
|
return ctx.getEventDTO().isHasMedia();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected abstract EventView<PLACE, ?> getView();
|
||||||
|
|
||||||
}
|
}
|
||||||
+10
-56
@@ -5,6 +5,7 @@ import java.util.UUID;
|
|||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator;
|
import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator;
|
||||||
|
import com.sap.sailing.gwt.home.client.place.error.ErrorPlace;
|
||||||
import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
|
import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.multiregatta.AbstractMultiregattaEventPlace;
|
import com.sap.sailing.gwt.home.client.place.event2.multiregatta.AbstractMultiregattaEventPlace;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.multiregatta.EventMultiregattaActivity;
|
import com.sap.sailing.gwt.home.client.place.event2.multiregatta.EventMultiregattaActivity;
|
||||||
@@ -27,7 +28,7 @@ public class EventActivityProxy extends AbstractActivityProxy {
|
|||||||
HomePlacesNavigator homePlacesNavigator) {
|
HomePlacesNavigator homePlacesNavigator) {
|
||||||
this.place = place;
|
this.place = place;
|
||||||
this.homePlacesNavigator = homePlacesNavigator;
|
this.homePlacesNavigator = homePlacesNavigator;
|
||||||
ctx = this.place.getCtx();
|
this.ctx = this.place.getCtx();
|
||||||
this.clientFactory = clientFactory;
|
this.clientFactory = clientFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,75 +42,28 @@ public class EventActivityProxy extends AbstractActivityProxy {
|
|||||||
clientFactory.getSailingService().getEventViewById(eventUUID, new AsyncCallback<EventViewDTO>() {
|
clientFactory.getSailingService().getEventViewById(eventUUID, new AsyncCallback<EventViewDTO>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(final EventViewDTO event) {
|
public void onSuccess(final EventViewDTO event) {
|
||||||
if (event != null) {
|
ctx.updateContext(event);
|
||||||
ctx.updateContext(event);
|
afterEventLoad();
|
||||||
afterEventLoad();
|
|
||||||
} else {
|
|
||||||
// TODO
|
|
||||||
// createErrorView("No such event with UUID " + eventUUID, null, panel);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
// TODO
|
// TODO @FM: extract text?
|
||||||
// createErrorView("Error while loading the event with service getEventById()", caught, panel);
|
ErrorPlace errorPlace = new ErrorPlace("Error while loading the event with service getEventById()");
|
||||||
|
// TODO @FM: reload sinnvoll hier?
|
||||||
|
errorPlace.setComingFrom(place);
|
||||||
|
clientFactory.getPlaceController().goTo(errorPlace);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void afterEventLoad() {
|
private void afterEventLoad() {
|
||||||
if(place instanceof EventDefaultPlace) {
|
if(place instanceof EventDefaultPlace) {
|
||||||
place = getRealPlace();
|
place = getRealPlace();
|
||||||
}
|
}
|
||||||
|
afterLoad();
|
||||||
loadRegattaStructureIfNeeded();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void loadRegattaStructureIfNeeded() {
|
|
||||||
// // TODO do this in a nicer way
|
|
||||||
// if(place instanceof MultiregattaRegattasPlace || place instanceof RegattaRacesPlace) {
|
|
||||||
// final long clientTimeWhenRequestWasSent = System.currentTimeMillis();
|
|
||||||
//
|
|
||||||
// final EventViewDTO eventDTO = ctx.getEventDTO();
|
|
||||||
//
|
|
||||||
// clientFactory.getSailingService().getRegattaStructureOfEvent(eventDTO.id,
|
|
||||||
// new AsyncCallback<List<RaceGroupDTO>>() {
|
|
||||||
// @Override
|
|
||||||
// public void onSuccess(List<RaceGroupDTO> raceGroups) {
|
|
||||||
// if (raceGroups.size() > 0) {
|
|
||||||
// for (LeaderboardGroupDTO leaderboardGroupDTO : eventDTO.getLeaderboardGroups()) {
|
|
||||||
// final long clientTimeWhenResponseWasReceived = System.currentTimeMillis();
|
|
||||||
// if (leaderboardGroupDTO.getAverageDelayToLiveInMillis() != null) {
|
|
||||||
// currentPresenter.getTimerForClientServerOffset().setLivePlayDelayInMillis(
|
|
||||||
// leaderboardGroupDTO
|
|
||||||
// .getAverageDelayToLiveInMillis());
|
|
||||||
// }
|
|
||||||
// currentPresenter.getTimerForClientServerOffset().adjustClientServerOffset(
|
|
||||||
// clientTimeWhenRequestWasSent,
|
|
||||||
// leaderboardGroupDTO.getCurrentServerTime(), clientTimeWhenResponseWasReceived);
|
|
||||||
// }
|
|
||||||
// afterLoad();
|
|
||||||
// } else {
|
|
||||||
// // createEventWithoutRegattasView(event, panel);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onFailure(Throwable caught) {
|
|
||||||
// // createErrorView(
|
|
||||||
// // "Error while loading the regatta structure with service getRegattaStructureOfEvent()",
|
|
||||||
// // caught, panel);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// } else {
|
|
||||||
afterLoad();
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void afterLoad() {
|
private void afterLoad() {
|
||||||
|
|||||||
+2
@@ -75,4 +75,6 @@ public interface EventView<PLACE extends AbstractEventPlace, PRES extends EventV
|
|||||||
*/
|
*/
|
||||||
void navigateTabsTo(PLACE place);
|
void navigateTabsTo(PLACE place);
|
||||||
|
|
||||||
|
void showErrorInCurrentTab(IsWidget errorView);
|
||||||
|
|
||||||
}
|
}
|
||||||
+7
@@ -5,6 +5,7 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget;
|
|||||||
import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator;
|
import com.sap.sailing.gwt.home.client.app.HomePlacesNavigator;
|
||||||
import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
|
import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.AbstractEventActivity;
|
import com.sap.sailing.gwt.home.client.place.event2.AbstractEventActivity;
|
||||||
|
import com.sap.sailing.gwt.home.client.place.event2.EventView;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.EventView.PlaceCallback;
|
import com.sap.sailing.gwt.home.client.place.event2.EventView.PlaceCallback;
|
||||||
|
|
||||||
public class EventMultiregattaActivity extends AbstractEventActivity<AbstractMultiregattaEventPlace> implements EventMultiregattaView.Presenter {
|
public class EventMultiregattaActivity extends AbstractEventActivity<AbstractMultiregattaEventPlace> implements EventMultiregattaView.Presenter {
|
||||||
@@ -36,4 +37,10 @@ public class EventMultiregattaActivity extends AbstractEventActivity<AbstractMul
|
|||||||
public boolean showRegattaMetadata() {
|
public boolean showRegattaMetadata() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected EventView<AbstractMultiregattaEventPlace, ?> getView() {
|
||||||
|
return currentView;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+5
@@ -5,6 +5,7 @@ import com.google.gwt.uibinder.client.UiBinder;
|
|||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
import com.google.gwt.uibinder.client.UiHandler;
|
import com.google.gwt.uibinder.client.UiHandler;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
|
import com.google.gwt.user.client.ui.IsWidget;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanel;
|
import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanel;
|
||||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanelPlaceSelectionEvent;
|
import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanelPlaceSelectionEvent;
|
||||||
@@ -74,4 +75,8 @@ public class TabletAndDesktopEventView extends Composite implements EventMultire
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void showErrorInCurrentTab(IsWidget errorView) {
|
||||||
|
tabPanelUi.overrideCurrentContentInTab(errorView);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+6
@@ -9,6 +9,7 @@ import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
|
|||||||
import com.sap.sailing.gwt.home.client.place.event.regattaanalytics.RegattaAnalyticsDataManager;
|
import com.sap.sailing.gwt.home.client.place.event.regattaanalytics.RegattaAnalyticsDataManager;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.AbstractEventActivity;
|
import com.sap.sailing.gwt.home.client.place.event2.AbstractEventActivity;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.EventContext;
|
import com.sap.sailing.gwt.home.client.place.event2.EventContext;
|
||||||
|
import com.sap.sailing.gwt.home.client.place.event2.EventView;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.EventView.PlaceCallback;
|
import com.sap.sailing.gwt.home.client.place.event2.EventView.PlaceCallback;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.regatta.tabs.RegattaRacesPlace;
|
import com.sap.sailing.gwt.home.client.place.event2.regatta.tabs.RegattaRacesPlace;
|
||||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||||
@@ -95,4 +96,9 @@ public class EventRegattaActivity extends AbstractEventActivity<AbstractEventReg
|
|||||||
return autoRefreshTimer;
|
return autoRefreshTimer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected EventView<AbstractEventRegattaPlace, ?> getView() {
|
||||||
|
return currentView;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+6
@@ -5,6 +5,7 @@ import com.google.gwt.uibinder.client.UiBinder;
|
|||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
import com.google.gwt.uibinder.client.UiHandler;
|
import com.google.gwt.uibinder.client.UiHandler;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
|
import com.google.gwt.user.client.ui.IsWidget;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanel;
|
import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanel;
|
||||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanelPlaceSelectionEvent;
|
import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanelPlaceSelectionEvent;
|
||||||
@@ -83,4 +84,9 @@ public class TabletAndDesktopEventView extends Composite implements EventRegatta
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void showErrorInCurrentTab(IsWidget errorView) {
|
||||||
|
tabPanelUi.overrideCurrentContentInTab(errorView);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+1
-1
@@ -14,10 +14,10 @@ import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
|||||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
|
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
|
||||||
import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard;
|
import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard;
|
||||||
import com.sap.sailing.gwt.home.client.place.event.regattaanalytics.RegattaAnalyticsDataManager;
|
import com.sap.sailing.gwt.home.client.place.event.regattaanalytics.RegattaAnalyticsDataManager;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.EventParamUtils;
|
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.regatta.EventRegattaView;
|
import com.sap.sailing.gwt.home.client.place.event2.regatta.EventRegattaView;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.regatta.EventRegattaView.Presenter;
|
import com.sap.sailing.gwt.home.client.place.event2.regatta.EventRegattaView.Presenter;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.regatta.RegattaTabView;
|
import com.sap.sailing.gwt.home.client.place.event2.regatta.RegattaTabView;
|
||||||
|
import com.sap.sailing.gwt.home.client.place.event2.utils.EventParamUtils;
|
||||||
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
|
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
|
||||||
import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener;
|
import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener;
|
||||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
|
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.sap.sailing.gwt.home.client.place.event2;
|
package com.sap.sailing.gwt.home.client.place.event2.utils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.sap.sailing.gwt.home.client.place.event2;
|
package com.sap.sailing.gwt.home.client.place.event2.utils;
|
||||||
|
|
||||||
import com.google.gwt.user.client.Window;
|
import com.google.gwt.user.client.Window;
|
||||||
|
|
||||||
+1
-1
@@ -14,7 +14,7 @@ import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
|||||||
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
|
import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
|
||||||
import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard;
|
import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard;
|
||||||
import com.sap.sailing.gwt.home.client.place.event.seriesanalytics.EventSeriesAnalyticsDataManager;
|
import com.sap.sailing.gwt.home.client.place.event.seriesanalytics.EventSeriesAnalyticsDataManager;
|
||||||
import com.sap.sailing.gwt.home.client.place.event2.EventParamUtils;
|
import com.sap.sailing.gwt.home.client.place.event2.utils.EventParamUtils;
|
||||||
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView;
|
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView;
|
||||||
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView;
|
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView;
|
||||||
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
|
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
|
||||||
|
|||||||
+2
@@ -8,8 +8,10 @@
|
|||||||
}
|
}
|
||||||
.error_message_detail {
|
.error_message_detail {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
.reload_page_message {
|
.reload_page_message {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
+24
-5
@@ -6,6 +6,7 @@ import com.google.gwt.event.dom.client.ClickEvent;
|
|||||||
import com.google.gwt.uibinder.client.UiBinder;
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
import com.google.gwt.uibinder.client.UiHandler;
|
import com.google.gwt.uibinder.client.UiHandler;
|
||||||
|
import com.google.gwt.user.client.Command;
|
||||||
import com.google.gwt.user.client.Window;
|
import com.google.gwt.user.client.Window;
|
||||||
import com.google.gwt.user.client.ui.Anchor;
|
import com.google.gwt.user.client.ui.Anchor;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
@@ -22,19 +23,37 @@ public class ErrorMessage extends Composite {
|
|||||||
@UiField DivElement errorMessage;
|
@UiField DivElement errorMessage;
|
||||||
@UiField DivElement errorMessageDetail;
|
@UiField DivElement errorMessageDetail;
|
||||||
@UiField Anchor reloadPageAnchor;
|
@UiField Anchor reloadPageAnchor;
|
||||||
|
|
||||||
|
private Command reloadCommand;
|
||||||
|
|
||||||
|
public ErrorMessage(String errorMessageDetail, Throwable errorReason, Command reloadCommand) {
|
||||||
|
this(TextMessages.INSTANCE.errorMessageLoadingData(), errorMessageDetail, errorReason, reloadCommand);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public ErrorMessage(String detailMessage, Throwable errorReason) {
|
public ErrorMessage(String errorMessage, String errorMessageDetail, Throwable errorReason, Command reloadCommand) {
|
||||||
ErrorMessageResources.INSTANCE.css().ensureInjected();
|
ErrorMessageResources.INSTANCE.css().ensureInjected();
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
this.reloadCommand = reloadCommand;
|
||||||
this.setHeight(Window.getClientHeight() + "px");
|
this.setHeight(Window.getClientHeight() + "px");
|
||||||
errorMessage.setInnerText(TextMessages.INSTANCE.errorMessageLoadingData());
|
|
||||||
|
|
||||||
Window.setStatus(detailMessage);
|
if (errorMessage != null && !errorMessage.isEmpty()) {
|
||||||
|
this.errorMessage.setInnerText(errorMessage);
|
||||||
|
} else {
|
||||||
|
this.errorMessage.setInnerText(TextMessages.INSTANCE.errorMessageLoadingData());
|
||||||
|
}
|
||||||
|
|
||||||
|
this.errorMessageDetail.setInnerText(errorMessageDetail);
|
||||||
|
Window.setStatus(errorMessageDetail);
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("reloadPageAnchor")
|
@UiHandler("reloadPageAnchor")
|
||||||
void reloadPage(ClickEvent e) {
|
void reloadPage(ClickEvent e) {
|
||||||
Window.Location.reload();
|
if (reloadCommand != null) {
|
||||||
|
reloadCommand.execute();
|
||||||
|
} else {
|
||||||
|
Window.Location.reload();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -13,7 +13,7 @@
|
|||||||
<div ui:field="errorMessageDetail" class="{local_res.css.error_message_detail}"></div>
|
<div ui:field="errorMessageDetail" class="{local_res.css.error_message_detail}"></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span class="{local_res.css.reload_page_message}"><ui:text from='{i18n.pleaseTryAgain}'/></span>
|
<div class="{local_res.css.reload_page_message}"><ui:text from='{i18n.pleaseTryAgain}'/></div>
|
||||||
<g:Anchor ui:field="reloadPageAnchor" href="javascript:;" styleName="{res.mainCss.button}"><ui:text from='{i18n.reloadPage}'/></g:Anchor>
|
<g:Anchor ui:field="reloadPageAnchor" href="javascript:;" styleName="{res.mainCss.button}"><ui:text from='{i18n.reloadPage}'/></g:Anchor>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.sap.sse.gwt.client.mvp;
|
package com.sap.sse.gwt.client.mvp;
|
||||||
|
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.IsWidget;
|
||||||
|
|
||||||
|
public interface ErrorView extends IsWidget {
|
||||||
|
|
||||||
public interface ErrorView {
|
|
||||||
Widget asWidget();
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user