Added quick finder to mini leaderboard

This commit is contained in:
Papick Garcia Taboada committed 2015-06-18 21:14:39 +02:00
1 parent 6a56e754ee
commit b05a40cc35
7 files changed
+43 -9

No files matched your search

@@ -17,7 +17,7 @@ import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.EventListener;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.mobile.places.event.EventView.Presenter;
import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider;
public class Quickfinder extends Widget implements HasSelectionHandlers<String> {
private static QuickfinderUiBinder uiBinder = GWT.create(QuickfinderUiBinder.class);
@@ -30,7 +30,7 @@ public class Quickfinder extends Widget implements HasSelectionHandlers<String>
@UiField
protected SelectElement selectUi;
public Quickfinder(final Presenter presenter) {
public Quickfinder(final RegattaLeaderboardNavigationProvider presenter) {
setElement(uiBinder.createAndBindUi(this));
Event.sinkEvents(selectUi, Event.ONCHANGE);
Event.setEventListener(selectUi, new EventListener() {
@@ -0,0 +1,7 @@
package com.sap.sailing.gwt.home.mobile.places;
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
public interface RegattaLeaderboardNavigationProvider {
PlaceNavigation<?> getRegattaLeaderboardNavigation(String leaderboardName);
}
@@ -6,6 +6,7 @@ import java.util.List;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.place.event.EventContext;
import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider;
import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider;
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
@@ -21,12 +22,11 @@ public interface EventView {
void setMediaForImpressions(int nrOfImages, int nrOfVideos, List<SailingImageDTO> images);
public interface Presenter extends NewsItemLinkProvider {
public interface Presenter extends NewsItemLinkProvider, RegattaLeaderboardNavigationProvider {
EventContext getCtx();
DispatchSystem getDispatch();
PlaceNavigation<?> getRegattaLeaderboardNavigation(String leaderboardName);
String getRaceViewerURL(String regattaName, String trackedRaceName);
@@ -11,6 +11,7 @@ import com.sap.sailing.gwt.home.client.place.event.EventContext;
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardView.Presenter;
import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction;
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
@@ -52,6 +53,7 @@ public class MiniLeaderboardActivity extends AbstractActivity implements Present
private void initUi(AcceptsOneWidget panel, EventBus eventBus) {
final MiniLeaderboardView view = new MiniLeaderboardViewImpl(this);
view.setQuickFinderValues(place.getCtx().getEventDTO().getRegattas());
panel.setWidget(view.asWidget());
}
@@ -60,6 +62,12 @@ public class MiniLeaderboardActivity extends AbstractActivity implements Present
return place.getCtx();
}
@Override
public PlaceNavigation<?> getRegattaLeaderboardNavigation(String leaderboardName) {
EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null);
return clientFactory.getNavigator().getEventNavigation(new RegattaLeaderboardPlace(ctx), null, false);
}
@Override
public DispatchSystem getDispatch() {
return clientFactory.getDispatch();
@@ -1,12 +1,16 @@
package com.sap.sailing.gwt.home.mobile.places.minileaderboard;
import java.util.Collection;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.place.event.EventContext;
import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider;
import com.sap.sailing.gwt.home.shared.dispatch.DispatchAsync;
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
public interface MiniLeaderboardView {
public interface Presenter {
public interface Presenter extends RegattaLeaderboardNavigationProvider {
DispatchAsync getDispatch();
@@ -15,5 +19,6 @@ public interface MiniLeaderboardView {
Widget asWidget();
void setQuickFinderValues(Collection<RegattaMetadataDTO> regattas);
}
@@ -1,5 +1,6 @@
package com.sap.sailing.gwt.home.mobile.places.minileaderboard;
import java.util.Collection;
import java.util.UUID;
import com.google.gwt.core.client.GWT;
@@ -16,12 +17,15 @@ import com.sap.sailing.gwt.home.client.place.event.EventContext;
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager;
import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader;
import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox;
import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction;
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboardView {
private static final boolean showLeaderboard = true;
private static final StringMessages MSG = StringMessages.INSTANCE;
private static MyBinder uiBinder = GWT.create(MyBinder.class);
interface MyBinder extends UiBinder<Widget, MiniLeaderboardViewImpl> {
@@ -34,6 +38,7 @@ public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboar
@UiField DivElement buttonsUi;
@UiField AnchorElement leaderboardLinkUi;
@UiField AnchorElement dektopLinkUi;
@UiField(provided = true) Quickfinder quickFinderUi;
public MiniLeaderboardViewImpl(Presenter presenter) {
this.currentPresenter = presenter;
@@ -41,7 +46,7 @@ public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboar
RegattaMetadataDTO regatta = presenter.getCtx().getRegatta();
// TODO check if regatta is valid!
eventHeaderUi = new EventHeader(presenter.getCtx().getEventDTO(), regatta.getDisplayName());
quickFinderUi = new Quickfinder(currentPresenter);
initWidget(uiBinder.createAndBindUi(this));
if(showLeaderboard) {
@@ -66,6 +71,13 @@ public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboar
}
}
@Override
public void setQuickFinderValues(Collection<RegattaMetadataDTO> regattaMetadatas) {
quickFinderUi.addPlaceholderItem(MSG.resultsQuickfinder(), null);
for (RegattaMetadataDTO regattaMetadata : regattaMetadatas) {
quickFinderUi.addItemToGroup(regattaMetadata.getBoatCategory(), regattaMetadata.getDisplayName(), regattaMetadata.getId());
}
}
private String constructExternalLeaderboardURL(String leaderboardId, String leaderboardDisplayName) {
return "Leaderboard.html?name="+ leaderboardId +"&displayName="+leaderboardDisplayName+"&embedded=true&hideToolbar=true&refreshIntervalMillis=3000&legDetail=AVERAGE_SPEED_OVER_GROUND_IN_KNOTS&legDetail=DISTANCE_TRAVELED&legDetail=RANK_GAIN&overallDetail=REGATTA_RANK&maneuverDetail=TACK&maneuverDetail=JIBE&maneuverDetail=PENALTY_CIRCLE&lastN=1&showAddedScores=false";
@@ -33,9 +33,11 @@
<g:HTMLPanel>
<div class="{style.headerWrapper}">
<mp:eventheader.EventHeader ui:field="eventHeaderUi" />
<mp:quickfinder.Quickfinder ui:field="quickFinderUi" />
<!-- TODO do we need this here? -->
<!-- <mp:quickfinder.Quickfinder ui:field="quickFinderUi" />
<mp:simpleinfoblock.SimpleInfoBlock ui:field="sailorInfoUi" /> -->
<!--
<mp:simpleinfoblock.SimpleInfoBlock ui:field="sailorInfoUi" />
-->
</div>
<div ui:field="buttonsUi" class="{style.holder}">
<a class="{res.mainCss.button} {res.mainCss.buttonprimary} {style.fullWidthButton}" ui:field="leaderboardLinkUi"><ui:text from="{i18n.openLeaderboard}" /></a>