diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java index 4c217afe271..59067d679c2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java @@ -10,6 +10,8 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.dom.client.Style.Visibility; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.logical.shared.AttachEvent; +import com.google.gwt.event.logical.shared.AttachEvent.Handler; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.uibinder.client.UiBinder; @@ -21,10 +23,13 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.dto.LeaderboardDTO; +import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.home.desktop.partials.old.EventRegattaLeaderboardResources; import com.sap.sailing.gwt.home.desktop.partials.old.LeaderboardDelegate; import com.sap.sailing.gwt.ui.client.DebugIdHelper; +import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; @@ -64,7 +69,7 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener this(null); } - public OldLeaderboard(OldLeaderboardDelegate delegate) { + public OldLeaderboard(final OldLeaderboardDelegate delegate) { this.leaderboardPanel = null; EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); @@ -73,6 +78,28 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener fullscreenAnchor.setTitle(StringMessages.INSTANCE.openFullscreenView()); this.delegate = delegate; this.setupFullscreenDelegate(); + + // adding handler on page loading + this.addAttachHandler(new Handler() { + @Override + public void onAttachOrDetach(AttachEvent event) { + if (event.isAttached() && leaderboardPanel != null) { + // waiting while leaderboard is loaded + leaderboardPanel.addLeaderboardUpdateListener(new LeaderboardUpdateListener() { + @Override + public void updatedLeaderboard(LeaderboardDTO leaderboard) { + // If race or regatta is live then check button by default + if (leaderboard.hasLiveRace(autoRefreshTimer.getLiveTimePointInMillis())) { + turnOnAutoPlay(); + } + } + + @Override + public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) { } + }); + } + } + }); } private void setupFullscreenDelegate() { @@ -105,6 +132,21 @@ public class OldLeaderboard extends Composite implements BusyStateChangeListener }, ClickEvent.getType()); } + /** + * This method turns on auto playing mode on leaderboard + */ + private void turnOnAutoPlay() { + if (autoRefreshTimer.getPlayState() != PlayStates.Playing) { + autoRefreshTimer.setPlayMode(PlayModes.Live); + } + + // Styles applied each time because of tabs switching. In this case play mode stays as Playing but styling is lost + autoRefreshAnchor.addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + if (delegate != null) { + delegate.getAutoRefreshControl().addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + } + } + @UiHandler("autoRefreshAnchor") void toogleAutoRefreshClicked(ClickEvent event) { autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_live()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java index 5b5f40d7503..c4c45c659a4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java @@ -107,6 +107,21 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar }, ClickEvent.getType()); } + /** + * This method turns on auto playing mode on leaderboard + */ + public void turnOnAutoPlay() { + if (autoRefreshTimer.getPlayState() != PlayStates.Playing) { + autoRefreshTimer.setPlayMode(PlayModes.Live); + } + + // Styles applied each time because of tabs switching. In this case play mode stays as Playing but styling is lost + autoRefreshAnchor.addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + if (delegate != null) { + delegate.getAutoRefreshControl().addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + } + } + @UiHandler("autoRefreshAnchor") void toogleAutoRefreshClicked(ClickEvent event) { if (autoRefreshTimer != null) { @@ -114,7 +129,8 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar autoRefreshAnchor.removeStyleName(local_res.css().regattaleaderboard_meta_reload_playing()); if (delegate != null) { delegate.getAutoRefreshControl().removeStyleName(local_res.css().regattaleaderboard_meta_reload_live()); - delegate.getAutoRefreshControl().removeStyleName(local_res.css().regattaleaderboard_meta_reload_playing()); + delegate.getAutoRefreshControl() + .removeStyleName(local_res.css().regattaleaderboard_meta_reload_playing()); } if (autoRefreshTimer.getPlayState() == PlayStates.Playing) { autoRefreshTimer.pause(); @@ -131,7 +147,8 @@ public class OldMultiLeaderboard extends Composite implements SelectedLeaderboar autoRefreshAnchor.addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); if (delegate != null) { // delegate.getAutoRefreshControl().getElement().getStyle().setBackgroundColor("red"); - delegate.getAutoRefreshControl().addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); + delegate.getAutoRefreshControl() + .addStyleName(local_res.css().regattaleaderboard_meta_reload_live()); } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java index b0b8a0af616..4e5ebfc8ad2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java @@ -83,7 +83,8 @@ public class EventSeriesLeaderboardsTabView extends Composite implements SeriesT if (currentPresenter.getSeriesDTO().getState() != EventSeriesState.RUNNING) { // TODO: this.leaderboard.hideRefresh(); } else { - // TODO: start autorefresh? + // Turn on auto refresh button at parent leaderboard + leaderboard.turnOnAutoPlay(); } regattaAnalyticsManager.hideCompetitorChart(); leaderboardPanel.setVisible(true); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardPanel.java index 9af7d681f54..7fd3729ff1e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiLeaderboardPanel.java @@ -281,4 +281,8 @@ public class MultiLeaderboardPanel extends AbstractLazyComponent