mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-27 16:06:39 +00:00
added Timer to rank chart
This commit is contained in:
+1
@@ -437,4 +437,5 @@ public interface StringMessages extends Messages {
|
||||
String loadingCompetitorData();
|
||||
String rankNAfterRace(long l, String string);
|
||||
String afterRace();
|
||||
String showRankChart();
|
||||
}
|
||||
|
||||
+2
-1
@@ -437,4 +437,5 @@ live=live
|
||||
errorFetchingRankingChartData=Error fetching ranking chart data: {0}
|
||||
loadingCompetitorData=Loading competitor data...
|
||||
rankNAfterRace=Rank {0} after race {1}
|
||||
afterRace=after race
|
||||
afterRace=after race
|
||||
showRankChart=Show rank chart
|
||||
+2
-1
@@ -438,4 +438,5 @@ live=live
|
||||
errorFetchingRankingChartData=Fehler beim Laden der Daten für das Ranglisten-Chart: {0}
|
||||
loadingCompetitorData=Lade Teilnehmer-Daten
|
||||
rankNAfterRace=Rang {0} nach Rennen {1}
|
||||
afterRace=nach Rennen
|
||||
afterRace=nach Rennen
|
||||
showRankChart=Rang-Diagramm anzeigen
|
||||
+4
-3
@@ -1232,6 +1232,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
}
|
||||
};
|
||||
ImageResource chartIcon = resources.chartIcon();
|
||||
ImageResource rankChartIcon = resources.rankChartIcon();
|
||||
ImageResource leaderboardSettingsIcon = resources.leaderboardSettingsIcon();
|
||||
pauseIcon = resources.pauseIcon();
|
||||
playIcon = resources.playIcon();
|
||||
@@ -1247,8 +1248,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
playPause.addClickHandler(playPauseHandler);
|
||||
playStateChanged(timer.getPlayState(), timer.getPlayMode());
|
||||
refreshPanel.add(playPause);
|
||||
Anchor rankChartsAnchor = new Anchor(AbstractImagePrototype.create(chartIcon).getSafeHtml());
|
||||
rankChartsAnchor.setTitle(stringMessages.showCharts());
|
||||
Anchor rankChartsAnchor = new Anchor(AbstractImagePrototype.create(rankChartIcon).getSafeHtml());
|
||||
rankChartsAnchor.setTitle(stringMessages.showRankChart());
|
||||
rankChartsAnchor.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
@@ -2096,7 +2097,7 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
|
||||
private void showRankChartDialog() {
|
||||
RankChartDialog chartDialog = new RankChartDialog(sailingService, leaderboardName, competitorSelectionProvider,
|
||||
stringMessages, errorReporter, /* compactChart */ false);
|
||||
timer, stringMessages, errorReporter, /* compactChart */ false);
|
||||
chartDialog.show();
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -28,6 +28,9 @@ interface LeaderboardResources extends ClientBundle {
|
||||
@Source("com/sap/sailing/gwt/ui/client/images/chart.png")
|
||||
ImageResource chartIcon();
|
||||
|
||||
@Source("com/sap/sailing/gwt/ui/client/images/rankchart.png")
|
||||
ImageResource rankChartIcon();
|
||||
|
||||
@Source("com/sap/sailing/gwt/ui/client/images/magnifier.png")
|
||||
ImageResource magnifierIcon();
|
||||
|
||||
|
||||
+4
-2
@@ -6,16 +6,18 @@ import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.Timer;
|
||||
import com.sap.sailing.gwt.ui.shared.charts.LeaderboardRankChart;
|
||||
|
||||
public class RankChartDialog extends DialogBoxExt {
|
||||
public RankChartDialog(SailingServiceAsync sailingService, String leaderboardName, CompetitorSelectionProvider competitorSelectionProvider,
|
||||
StringMessages stringMessages, ErrorReporter errorReporter, boolean compactChart) {
|
||||
Timer timer, StringMessages stringMessages, ErrorReporter errorReporter, boolean compactChart) {
|
||||
super(new Label(stringMessages.close()));
|
||||
this.setPopupPosition(15, 15);
|
||||
this.setHTML(stringMessages.compareCompetitors());
|
||||
this.setWidth(Window.getClientWidth() - 250 + "px");
|
||||
this.setAnimationEnabled(true);
|
||||
setWidget(new LeaderboardRankChart(sailingService, leaderboardName, competitorSelectionProvider, stringMessages, errorReporter, compactChart));
|
||||
setWidget(new LeaderboardRankChart(sailingService, leaderboardName, competitorSelectionProvider, timer,
|
||||
stringMessages, errorReporter, compactChart));
|
||||
}
|
||||
}
|
||||
|
||||
+34
-7
@@ -2,6 +2,7 @@ package com.sap.sailing.gwt.ui.shared.charts;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -11,6 +12,7 @@ import org.moxieapps.gwt.highcharts.client.Chart;
|
||||
import org.moxieapps.gwt.highcharts.client.ChartTitle;
|
||||
import org.moxieapps.gwt.highcharts.client.Color;
|
||||
import org.moxieapps.gwt.highcharts.client.Credits;
|
||||
import org.moxieapps.gwt.highcharts.client.Point;
|
||||
import org.moxieapps.gwt.highcharts.client.Series;
|
||||
import org.moxieapps.gwt.highcharts.client.ToolTip;
|
||||
import org.moxieapps.gwt.highcharts.client.ToolTipData;
|
||||
@@ -31,18 +33,33 @@ import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.TimeListener;
|
||||
import com.sap.sailing.gwt.ui.client.Timer;
|
||||
import com.sap.sailing.gwt.ui.client.Timer.PlayModes;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorDTO;
|
||||
|
||||
public class LeaderboardRankChart extends SimplePanel implements RequiresResize {
|
||||
public class LeaderboardRankChart extends SimplePanel implements RequiresResize, TimeListener {
|
||||
private static final int LINE_WIDTH = 1;
|
||||
private final CompetitorSelectionProvider competitorSelectionProvider;
|
||||
private final Map<CompetitorDTO, Series> competitorSeries;
|
||||
private final Chart chart;
|
||||
private final List<String> raceColumnNames;
|
||||
private final Timer timer;
|
||||
private final String leaderboardName;
|
||||
private final StringMessages stringMessages;
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final ErrorReporter errorReporter;
|
||||
|
||||
public LeaderboardRankChart(SailingServiceAsync sailingService, String leaderboardName,
|
||||
CompetitorSelectionProvider competitorSelectionProvider, final StringMessages stringMessages, ErrorReporter errorReporter, boolean compactChart) {
|
||||
CompetitorSelectionProvider competitorSelectionProvider, Timer timer,
|
||||
final StringMessages stringMessages, ErrorReporter errorReporter, boolean compactChart) {
|
||||
this.competitorSelectionProvider = competitorSelectionProvider;
|
||||
this.stringMessages = stringMessages;
|
||||
this.sailingService = sailingService;
|
||||
this.errorReporter = errorReporter;
|
||||
this.timer = timer;
|
||||
timer.addTimeListener(this);
|
||||
this.leaderboardName = leaderboardName;
|
||||
competitorSeries = new HashMap<CompetitorDTO, Series>();
|
||||
raceColumnNames = new ArrayList<String>();
|
||||
chart = new Chart()
|
||||
@@ -92,12 +109,12 @@ public class LeaderboardRankChart extends SimplePanel implements RequiresResize
|
||||
}
|
||||
setWidget(chart);
|
||||
setSize("100%", "100%");
|
||||
loadChartData(leaderboardName, stringMessages, errorReporter, sailingService);
|
||||
// show the loading message only upon initial load
|
||||
chart.showLoading(stringMessages.loadingCompetitorData());
|
||||
timeChanged(timer.getTime());
|
||||
}
|
||||
|
||||
private void loadChartData(String leaderboardName, final StringMessages stringMessages,
|
||||
final ErrorReporter errorReporter, SailingServiceAsync sailingService) {
|
||||
chart.showLoading(stringMessages.loadingCompetitorData());
|
||||
private void loadChartData(Date date) {
|
||||
sailingService.getRankedCompetitorsFromBestToWorstAfterEachRaceColumn(leaderboardName,
|
||||
/* date: null means "now" or "live" */ null, new AsyncCallback<List<Pair<String,List<CompetitorDTO>>>>() {
|
||||
@Override
|
||||
@@ -105,6 +122,11 @@ public class LeaderboardRankChart extends SimplePanel implements RequiresResize
|
||||
List<Series> chartSeries = new ArrayList<Series>(Arrays.asList(chart.getSeries()));
|
||||
chart.hideLoading();
|
||||
raceColumnNames.clear();
|
||||
for (Series series : competitorSeries.values()) {
|
||||
for (Point p : new ArrayList<Point>(Arrays.asList(series.getPoints()))) {
|
||||
series.removePoint(p, /* redraw */ false, /* animation */ false);
|
||||
}
|
||||
}
|
||||
int raceNumber = 0;
|
||||
int maxCompetitorCount = 0;
|
||||
for (Pair<String, List<CompetitorDTO>> entry : result) {
|
||||
@@ -117,7 +139,7 @@ public class LeaderboardRankChart extends SimplePanel implements RequiresResize
|
||||
chart.addSeries(series);
|
||||
chartSeries.add(series);
|
||||
}
|
||||
series.addPoint(raceNumber, -rank);
|
||||
series.addPoint(raceNumber, -rank, /* redraw */ false, /* shift */ false, /* animation */ false);
|
||||
rank++;
|
||||
}
|
||||
raceNumber++;
|
||||
@@ -160,4 +182,9 @@ public class LeaderboardRankChart extends SimplePanel implements RequiresResize
|
||||
chart.redraw();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void timeChanged(Date date) {
|
||||
loadChartData(timer.getPlayMode() == PlayModes.Live ? null : date);
|
||||
}
|
||||
}
|
||||
|
||||
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 318 B |
Reference in New Issue
Block a user