Initial mini leaderboard

This commit is contained in:
Papick Garcia Taboada committed 2015-06-17 19:57:23 +02:00
1 parent aac2dafd9a
commit 1d546fd54a
12 files changed
+269 -1

No files matched your search

@@ -5,8 +5,10 @@ import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
import com.sap.sailing.gwt.home.client.place.event.EventContext;
import com.sap.sailing.gwt.home.client.place.event.EventPrefixes;
import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace;
import com.sap.sailing.gwt.home.shared.app.HasLocationTitle;
import com.sap.sailing.gwt.home.shared.app.HasMobileVersion;
public class RegattaLeaderboardPlace extends AbstractEventRegattaPlace {
public class RegattaLeaderboardPlace extends AbstractEventRegattaPlace implements HasLocationTitle, HasMobileVersion {
public RegattaLeaderboardPlace(String id, String regattaId) {
super(id, regattaId);
}
@@ -4,12 +4,14 @@ import com.google.gwt.activity.shared.Activity;
import com.google.gwt.activity.shared.ActivityMapper;
import com.google.gwt.place.shared.Place;
import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
import com.sap.sailing.gwt.home.client.place.start.StartPlace;
import com.sap.sailing.gwt.home.mobile.places.event.EventActivityProxy;
import com.sap.sailing.gwt.home.mobile.places.events.EventsActivityProxy;
import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivityProxy;
import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace;
import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardActivity;
import com.sap.sailing.gwt.home.mobile.places.notmobile.NotMobileActivityProxy;
import com.sap.sailing.gwt.home.shared.app.HasMobileVersion;
@@ -39,6 +41,10 @@ public class MobileActivityMapper implements ActivityMapper {
lastVisitedPlace = place;
EventsPlace eventPlace = (EventsPlace) place;
return new EventsActivityProxy(eventPlace, clientFactory);
} else if (place instanceof RegattaLeaderboardPlace) {
lastVisitedPlace = place;
RegattaLeaderboardPlace eventPlace = (RegattaLeaderboardPlace) place;
return new MiniLeaderboardActivity(eventPlace, clientFactory);
} else if (place instanceof LatestNewsPlace) {
lastVisitedPlace = place;
LatestNewsPlace eventPlace = (LatestNewsPlace) place;
@@ -4,6 +4,7 @@ import com.google.gwt.place.shared.PlaceHistoryMapper;
import com.google.gwt.place.shared.WithTokenizers;
import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace;
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
import com.sap.sailing.gwt.home.client.place.start.StartPlace;
import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace;
@@ -13,6 +14,7 @@ EventPlace.Tokenizer.class,//
EventsPlace.Tokenizer.class,//
EventDefaultPlace.Tokenizer.class,//
LatestNewsPlace.Tokenizer.class,//
RegattaLeaderboardPlace.Tokenizer.class, //
StartPlace.Tokenizer.class
})
public interface MobileHistoryMapper extends PlaceHistoryMapper {
@@ -0,0 +1,43 @@
package com.sap.sailing.gwt.home.mobile.partials.minileaderboard;
import java.util.List;
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.regatta.tabs.reload.RefreshableWidget;
import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection;
import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent;
import com.sap.sailing.gwt.ui.shared.dispatch.ListResult;
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMobileLeaderbordAction.SimplifiedLeaderboardItemDTO;
public class MinileaderboardBox extends Composite implements RefreshableWidget<ListResult<SimplifiedLeaderboardItemDTO>> {
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
interface MyUiBinder extends UiBinder<Widget, MinileaderboardBox> {
}
@UiField
MobileSection itemContainerUi;
@UiField
SectionHeaderContent headerUi;
public MinileaderboardBox() {
initWidget(uiBinder.createAndBindUi(this));
}
@Override
public void setData(final ListResult<SimplifiedLeaderboardItemDTO> data, long nextUpdate, int updateNo) {
setData(data.getValues());
}
public void setData(final List<SimplifiedLeaderboardItemDTO> data) {
itemContainerUi.clearContent();
for (SimplifiedLeaderboardItemDTO item : data) {
itemContainerUi.addContent(new MinileaderboardBoxItem(item));
}
}
}
@@ -0,0 +1,16 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared"
xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.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" />
<mp:section.MobileSection ui:field="itemContainerUi" edgeToEdgeContent="true">
<mp:header>
<mp:sectionHeader.SectionHeaderContent sectionTitle="{i18n.leaderboard}" ui:field="headerUi" />
</mp:header>
</mp:section.MobileSection>
</ui:UiBinder>
@@ -0,0 +1,26 @@
package com.sap.sailing.gwt.home.mobile.partials.minileaderboard;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMobileLeaderbordAction.SimplifiedLeaderboardItemDTO;
public class MinileaderboardBoxItem extends Widget {
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
interface MyUiBinder extends UiBinder<Element, MinileaderboardBoxItem> {
}
@UiField
Element competitorNameUi;
public MinileaderboardBoxItem(SimplifiedLeaderboardItemDTO entry) {
setElement(uiBinder.createAndBindUi(this));
competitorNameUi.setInnerText(entry.getCompetitor().getName());
}
}
@@ -0,0 +1,10 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared">
<ui:with field="res" type="com.sap.sailing.gwt.common.client.SharedResources" />
<ui:with field="local_res" type="com.sap.sailing.gwt.home.mobile.partials.updatesBox.UpdatesBoxResources" />
<div>
<p ui:field="competitorNameUi">HELLO</p>
</div>
</ui:UiBinder>
@@ -0,0 +1,37 @@
package com.sap.sailing.gwt.home.mobile.places.minileaderboard;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
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.dispatch.DispatchSystem;
public class MiniLeaderboardActivity extends AbstractActivity implements Presenter {
private final MobileApplicationClientFactory clientFactory;
private final RegattaLeaderboardPlace place;
public MiniLeaderboardActivity(RegattaLeaderboardPlace place, MobileApplicationClientFactory clientFactory) {
this.clientFactory = clientFactory;
this.place = place;
}
@Override
public void start(final AcceptsOneWidget panel, EventBus eventBus) {
final MiniLeaderboardView view = new MiniLeaderboardViewImpl(this);
panel.setWidget(view.asWidget());
}
@Override
public EventContext getCtx() {
return place.getCtx();
}
@Override
public DispatchSystem getDispatch() {
return clientFactory.getDispatch();
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.gwt.home.mobile.places.minileaderboard;
import com.google.gwt.core.client.GWT;
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
public class MiniLeaderboardActivityProxy extends AbstractActivityProxy {
private final MobileApplicationClientFactory clientFactory;
private final RegattaLeaderboardPlace currentPlace;
public MiniLeaderboardActivityProxy(RegattaLeaderboardPlace place, MobileApplicationClientFactory clientFactory) {
this.currentPlace = place;
this.clientFactory = clientFactory;
}
@Override
protected void startAsync() {
GWT.runAsync(new AbstractRunAsyncCallback() {
@Override
public void onSuccess() {
super.onSuccess(new MiniLeaderboardActivity(currentPlace, clientFactory));
}
});
}
}
@@ -0,0 +1,19 @@
package com.sap.sailing.gwt.home.mobile.places.minileaderboard;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.home.client.place.event.EventContext;
import com.sap.sailing.gwt.home.shared.dispatch.DispatchAsync;
public interface MiniLeaderboardView {
public interface Presenter {
DispatchAsync getDispatch();
EventContext getCtx();
}
Widget asWidget();
}
@@ -0,0 +1,39 @@
package com.sap.sailing.gwt.home.mobile.places.minileaderboard;
import java.util.UUID;
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.EventContext;
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager;
import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox;
import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMobileLeaderbordAction;
public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboardView {
private static MyBinder uiBinder = GWT.create(MyBinder.class);
interface MyBinder extends UiBinder<Widget, MiniLeaderboardViewImpl> {
}
private Presenter currentPresenter;
@UiField
protected MinileaderboardBox minileaderboardUi;
public MiniLeaderboardViewImpl(Presenter presenter) {
this.currentPresenter = presenter;
initWidget(uiBinder.createAndBindUi(this));
RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch());
EventContext ctx = presenter.getCtx();
UUID uuid = UUID.fromString(ctx.getEventId());
refreshManager.add(minileaderboardUi, new GetMobileLeaderbordAction(uuid, ""));
}
}
@@ -0,0 +1,41 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared"
xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
>
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
<ui:with
field="res"
type="com.sap.sailing.gwt.home.mobile.resources.SharedResources" />
<ui:style>
.fullWidthButton {
width: 100%;
margin-bottom: 1rem;
text-align: center;
}
.holder {
padding: 1rem;
}
.notAvailableMessage {
font-size: 1.5em;
margin: 1em 0em;
line-height: 1.4em;
}
</ui:style>
<g:HTMLPanel>
<mp:minileaderboard.MinileaderboardBox ui:field="minileaderboardUi"/>
<div class="{style.holder}">
<a class="{res.mainCss.button} {res.mainCss.buttonprimary} {style.fullWidthButton}" ui:field="gotoDesktopUi"
><ui:text from="{i18n.gotoDesktop}" /></a>
</div>
</g:HTMLPanel>
</ui:UiBinder>