implemented the competitor preselection for the competitor chart for series

fixed recalculation of competitor charts after a competior selection change in the leaderboard
This commit is contained in:
fmittag committed 2015-02-12 16:06:15 +01:00
1 parent ba71824cde
commit c5e8b67da0
7 files changed
+35 -3

No files matched your search

@@ -1,4 +1,4 @@
chartSelectionHint=Hint: To change the displayed competitors in the chart you can also use the leaderboard.
chartSelectionHint=Hint: You can also use the leaderboard (on the LEADERBOARD tab) to select the competitors displayed in the chart.
chooseALanguage=Choose a language
events=Events
home=Home
@@ -1,4 +1,4 @@
chartSelectionHint=Hinweis: Die im Diagramm angezeigten Teilnehmer können auch in der Ergebnisstabelle ausgewählt werden.
chartSelectionHint=Hinweis: Sie können auch Ergebnisstabelle (im Menü ERGEBNISSE) nutzen, um die im Diagramm angezeigten Teilnehmer auszuwählen.
chooseALanguage=Wähle eine Sprache
events=Veranstaltungen
home=Startseite
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -26,6 +27,7 @@ public class OldCompetitorCharts extends Composite {
@UiField HTMLPanel oldCompetitorChartsPanel;
@UiField ListBox chartTypeSelectionListBox;
// @UiField DivElement filterStateUi;
private final List<DetailType> availableDetailsTypes;
private MultiCompetitorLeaderboardChart multiCompetitorChart;
@@ -18,6 +18,11 @@
<div class="{res.mediaCss.column}" style="margin-bottom: 1em;">
<b><ui:text from="{i18n.chartSelectionHint}" /></b>
</div>
<!--
<div ui:field="filterStateUi" class="{res.mediaCss.column}" style="margin-bottom: 1em;">
<b>Filter: </b>
</div>
-->
<div class="{res.mediaCss.small12} {res.mediaCss.columns}">
<g:HTMLPanel ui:field="oldCompetitorChartsPanel">
</g:HTMLPanel>
@@ -102,6 +102,7 @@ public class RegattaAnalyticsDataManager {
multiCompetitorChart.updateSettings(settings);
multiCompetitorChart.setVisible(true);
timer.addTimeListener(multiCompetitorChart);
multiCompetitorChart.clearChart();
multiCompetitorChart.timeChanged(timer.getTime(), null);
}
@@ -1,7 +1,13 @@
package com.sap.sailing.gwt.home.client.place.event.seriesanalytics;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.sap.sailing.domain.common.DetailType;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener;
import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel;
import com.sap.sailing.gwt.ui.client.DebugIdHelper;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
@@ -13,6 +19,7 @@ import com.sap.sailing.gwt.ui.client.shared.components.SettingsDialog;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardSettings;
import com.sap.sailing.gwt.ui.leaderboard.MultiLeaderboardPanel;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
import com.sap.sse.gwt.client.player.Timer;
@@ -36,6 +43,7 @@ public class EventSeriesAnalyticsDataManager {
private final UserAgentDetails userAgent;
private final SailingServiceAsync sailingService;
private final Timer timer;
private final int MAX_COMPETITORS_IN_CHART = 30;
public EventSeriesAnalyticsDataManager(final SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor, Timer timer, ErrorReporter errorReporter, UserAgentDetails userAgent) {
this.competitorSelectionProvider = new CompetitorSelectionModel(/* hasMultiSelection */true);
@@ -93,11 +101,27 @@ public class EventSeriesAnalyticsDataManager {
}
public void showCompetitorChart(DetailType chartDetailType) {
// preselect the top N competitors in case there was no selection before and there too many competitors for a chart
int competitorsCount = Util.size(competitorSelectionProvider.getAllCompetitors());
int selectedCompetitorsCount = Util.size(competitorSelectionProvider.getSelectedCompetitors());
if(selectedCompetitorsCount == 0 && competitorsCount > MAX_COMPETITORS_IN_CHART) {
List<CompetitorDTO> selectedCompetitors = new ArrayList<CompetitorDTO>();
Iterator<CompetitorDTO> allCompetitorsIt = competitorSelectionProvider.getAllCompetitors().iterator();
int counter = 0;
while(counter < MAX_COMPETITORS_IN_CHART) {
selectedCompetitors.add(allCompetitorsIt.next());
counter++;
}
competitorSelectionProvider.setSelection(selectedCompetitors, (CompetitorSelectionChangeListener[]) null);
}
MultiCompetitorLeaderboardChart multiCompetitorChart = getMultiCompetitorChart();
MultiCompetitorLeaderboardChartSettings settings = new MultiCompetitorLeaderboardChartSettings(chartDetailType);
multiCompetitorChart.updateSettings(settings);
multiCompetitorChart.setVisible(true);
timer.addTimeListener(multiCompetitorChart);
multiCompetitorChart.clearChart();
multiCompetitorChart.timeChanged(timer.getTime(), null);
}
@@ -181,7 +181,7 @@ public abstract class AbstractCompetitorLeaderboardChart<SettingsType> extends A
}));
}
protected void clearChart() {
public void clearChart() {
competitorSeries.clear();
chart.removeAllSeries();
}