mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-15 08:41:01 +00:00
Initial implementation of regatta leaderboards for fakeseries
This commit is contained in:
1 parent
e1462316e5
commit
150c4b67c1
5 files changed
+243
-58
No files matched your search
+2
@@ -16,6 +16,7 @@ import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesCompetitorAnalyticsPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderboardPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesRegattaLeaderboardPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesMediaPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.regatta.RegattaPlace;
|
||||
@@ -47,6 +48,7 @@ import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace;
|
||||
SeriesEventsPlace.Tokenizer.class,
|
||||
EventSeriesCompetitorAnalyticsPlace.Tokenizer.class,
|
||||
EventSeriesLeaderboardPlace.Tokenizer.class,
|
||||
EventSeriesRegattaLeaderboardPlace.Tokenizer.class,
|
||||
SeriesMediaPlace.Tokenizer.class
|
||||
|
||||
})
|
||||
|
||||
+60
-58
@@ -1,67 +1,69 @@
|
||||
<!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:c="urn:import:com.sap.sailing.gwt.common.client.controls.tabbar"
|
||||
xmlns:tabs="urn:import:com.sap.sailing.gwt.home.client.place.fakeseries.tabs"
|
||||
xmlns:h="urn:import:com.sap.sailing.gwt.home.client.place.fakeseries.partials.header">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
|
||||
<ui:with field="tm" type="com.sap.sailing.gwt.common.client.i18n.TextMessages" />
|
||||
<ui:style>
|
||||
.header {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||
xmlns:c="urn:import:com.sap.sailing.gwt.common.client.controls.tabbar"
|
||||
xmlns:tabs="urn:import:com.sap.sailing.gwt.home.client.place.fakeseries.tabs"
|
||||
xmlns:h="urn:import:com.sap.sailing.gwt.home.client.place.fakeseries.partials.header">
|
||||
<ui:with field="i18n" type="com.sap.sailing.gwt.ui.client.StringMessages" />
|
||||
<ui:with field="tm" type="com.sap.sailing.gwt.common.client.i18n.TextMessages" />
|
||||
<ui:style>
|
||||
.header {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.mainHeader {
|
||||
width: 66.6666666666667%;
|
||||
}
|
||||
.mainHeader {
|
||||
width: 66.6666666666667%;
|
||||
}
|
||||
|
||||
.sharingHeader {
|
||||
width: 33.3333333333333%;
|
||||
float: right;
|
||||
padding: 0 1rem;
|
||||
position:
|
||||
relative;
|
||||
padding: 1.333333333333333em 0;
|
||||
text-align: right;
|
||||
.sharingHeader {
|
||||
width: 33.3333333333333%;
|
||||
float: right;
|
||||
padding: 0 1rem;
|
||||
position: relative;
|
||||
padding: 1.333333333333333em 0;
|
||||
text-align: right;
|
||||
|
||||
background-color: maroon;
|
||||
height: 2rem;
|
||||
}
|
||||
background-color: maroon;
|
||||
height: 2rem;
|
||||
}
|
||||
|
||||
.breadcrumb, .intro {
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
.breadcrumb, .intro {
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
font-size: 0.866666666666667em;
|
||||
font-weight: 600;
|
||||
}
|
||||
.breadcrumb {
|
||||
font-size: 0.866666666666667em;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.intro {
|
||||
height: 5em;
|
||||
}
|
||||
</ui:style>
|
||||
<g:HTMLPanel>
|
||||
<c:TabPanel ui:field="tabPanelUi">
|
||||
<c:header>
|
||||
<h:SeriesHeader ui:field="seriesHeader" />
|
||||
</c:header>
|
||||
<c:tabcontent title="{i18n.events}">
|
||||
<tabs:SeriesEventsTabView />
|
||||
</c:tabcontent>
|
||||
<c:tabcontent title="{tm.overallLeaderboard}">
|
||||
<tabs:EventSeriesLeaderboardTabView />
|
||||
</c:tabcontent>
|
||||
<c:tabcontent title="{i18n.competitorsAnalytics}">
|
||||
<tabs:EventSeriesCompetitorAnalyticsTabView />
|
||||
</c:tabcontent>
|
||||
<c:tabcontent title="{i18n.media}">
|
||||
<tabs:SeriesMediaTabView />
|
||||
</c:tabcontent>
|
||||
</c:TabPanel>
|
||||
</g:HTMLPanel>
|
||||
.intro {
|
||||
height: 5em;
|
||||
}
|
||||
</ui:style>
|
||||
<g:HTMLPanel>
|
||||
<c:TabPanel ui:field="tabPanelUi">
|
||||
<c:header>
|
||||
<h:SeriesHeader ui:field="seriesHeader" />
|
||||
</c:header>
|
||||
<c:tabcontent title="{i18n.events}">
|
||||
<tabs:SeriesEventsTabView />
|
||||
</c:tabcontent>
|
||||
<c:tabcontent title="{tm.overallLeaderboard}">
|
||||
<tabs:EventSeriesLeaderboardTabView />
|
||||
</c:tabcontent>
|
||||
<c:tabcontent title="{tm.regattaLeaderboards}">
|
||||
<tabs:EventSeriesRegattaLeaderboardTabView />
|
||||
</c:tabcontent>
|
||||
<c:tabcontent title="{i18n.competitorsAnalytics}">
|
||||
<tabs:EventSeriesCompetitorAnalyticsTabView />
|
||||
</c:tabcontent>
|
||||
<c:tabcontent title="{i18n.media}">
|
||||
<tabs:SeriesMediaTabView />
|
||||
</c:tabcontent>
|
||||
</c:TabPanel>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.sap.sailing.gwt.home.client.place.fakeseries.tabs;
|
||||
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace;
|
||||
import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext;
|
||||
|
||||
public class EventSeriesRegattaLeaderboardPlace extends AbstractSeriesTabPlace {
|
||||
public EventSeriesRegattaLeaderboardPlace(String id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
public EventSeriesRegattaLeaderboardPlace(SeriesContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public static class Tokenizer extends AbstractSeriesPlace.Tokenizer<EventSeriesRegattaLeaderboardPlace> {
|
||||
@Override
|
||||
protected EventSeriesRegattaLeaderboardPlace getRealPlace(SeriesContext context) {
|
||||
return new EventSeriesRegattaLeaderboardPlace(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
package com.sap.sailing.gwt.home.client.place.fakeseries.tabs;
|
||||
|
||||
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.Window;
|
||||
import com.google.gwt.user.client.ui.AcceptsOneWidget;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
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.common.client.controls.tabbar.TabView;
|
||||
import com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard.OldMultiLeaderboard;
|
||||
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.fakeseries.SeriesTabView;
|
||||
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.ui.client.LeaderboardUpdateListener;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardUrlSettings;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.MultiLeaderboardPanel;
|
||||
import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO.EventSeriesState;
|
||||
import com.sap.sse.gwt.shared.GwtHttpRequestUtils;
|
||||
|
||||
public class EventSeriesRegattaLeaderboardTabView extends Composite implements SeriesTabView<EventSeriesRegattaLeaderboardPlace>,
|
||||
LeaderboardUpdateListener {
|
||||
|
||||
private SeriesView.Presenter currentPresenter;
|
||||
|
||||
@UiField
|
||||
protected OldMultiLeaderboard leaderboard;
|
||||
|
||||
|
||||
public EventSeriesRegattaLeaderboardTabView() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<EventSeriesRegattaLeaderboardPlace> getPlaceClassForActivation() {
|
||||
return EventSeriesRegattaLeaderboardPlace.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPresenter(SeriesView.Presenter currentPresenter) {
|
||||
this.currentPresenter = currentPresenter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TabView.State getState() {
|
||||
return TabView.State.VISIBLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(final EventSeriesRegattaLeaderboardPlace myPlace, final AcceptsOneWidget contentArea) {
|
||||
|
||||
contentArea.setWidget(new Placeholder());
|
||||
|
||||
String leaderboardName = myPlace.getCtx().getSeriesDTO().getLeaderboardId();
|
||||
|
||||
if (leaderboardName != null && !leaderboardName.isEmpty()) {
|
||||
|
||||
EventSeriesAnalyticsDataManager regattaAnalyticsManager = currentPresenter.getCtx()
|
||||
.getAnalyticsManager();
|
||||
|
||||
|
||||
boolean autoExpandLastRaceColumn = GwtHttpRequestUtils.getBooleanParameter(
|
||||
LeaderboardUrlSettings.PARAM_AUTO_EXPAND_LAST_RACE_COLUMN, false);
|
||||
|
||||
final LeaderboardSettings leaderboardSettings = EventParamUtils
|
||||
.createLeaderboardSettingsFromURLParameters(Window.Location
|
||||
.getParameterMap());
|
||||
|
||||
final RaceIdentifier preselectedRace = EventParamUtils
|
||||
.getPreselectedRace(Window.Location.getParameterMap());
|
||||
|
||||
MultiLeaderboardPanel leaderboardPanel = regattaAnalyticsManager.createMultiLeaderboardPanel(leaderboardSettings,
|
||||
null, // TODO: preselectedLeaderboardName
|
||||
preselectedRace,
|
||||
"leaderboardGroupName", // TODO: keep using magic string? ask frank!
|
||||
currentPresenter.getCtx().getSeriesDTO().getLeaderboardId(),
|
||||
true, // this information came from place, now hard coded. check with frank
|
||||
autoExpandLastRaceColumn);
|
||||
|
||||
initWidget(ourUiBinder.createAndBindUi(this));
|
||||
|
||||
leaderboard.setMultiLeaderboard(leaderboardPanel,
|
||||
currentPresenter.getAutoRefreshTimer());
|
||||
|
||||
leaderboardPanel.addLeaderboardUpdateListener(this);
|
||||
|
||||
if (currentPresenter.getCtx().getSeriesDTO().getState() != EventSeriesState.RUNNING) {
|
||||
// TODO: this.leaderboard.hideRefresh();
|
||||
} else {
|
||||
// TODO: start autorefresh?
|
||||
}
|
||||
|
||||
|
||||
regattaAnalyticsManager.hideCompetitorChart();
|
||||
|
||||
contentArea.setWidget(this);
|
||||
} else {
|
||||
contentArea.setWidget(new Label("No leaderboard specified, cannot proceed to leaderboardpage"));
|
||||
new com.google.gwt.user.client.Timer() {
|
||||
@Override
|
||||
public void run() {
|
||||
currentPresenter.getHomeNavigation().goToPlace();
|
||||
}
|
||||
}.schedule(3000);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updatedLeaderboard(LeaderboardDTO leaderboard) {
|
||||
this.leaderboard.updatedMultiLeaderboard(leaderboard, true); // TODO hard coded
|
||||
}
|
||||
|
||||
@Override
|
||||
public void currentRaceSelected(RaceIdentifier raceIdentifier, RaceColumnDTO raceColumn) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
|
||||
}
|
||||
|
||||
interface MyBinder extends UiBinder<HTMLPanel, EventSeriesRegattaLeaderboardTabView> {
|
||||
}
|
||||
|
||||
private static MyBinder ourUiBinder = GWT.create(MyBinder.class);
|
||||
|
||||
@Override
|
||||
public EventSeriesRegattaLeaderboardPlace placeToFire() {
|
||||
return new EventSeriesRegattaLeaderboardPlace(currentPresenter.getCtx());
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
|
||||
xmlns:s="urn:import:com.sap.sailing.gwt.home.client.place.event"
|
||||
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
|
||||
<ui:style>
|
||||
|
||||
.outerBox {
|
||||
padding-top: 10px;
|
||||
|
||||
}
|
||||
|
||||
</ui:style>
|
||||
<g:HTMLPanel styleName="{style.outerBox}">
|
||||
<s:oldmultileaderboard.OldMultiLeaderboard ui:field='leaderboard'/>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
||||
Reference in new issue
Block a user