From 2cc70f3deff5b15e306f269bba1c22ffca84b879 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Dec 2011 15:24:59 +0100 Subject: [PATCH] Fixed problem with NPE/wrong display in the small overview chart. --- .../sailing/gwt/ui/client/ChartsPanel.java | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ChartsPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ChartsPanel.java index e7e869f10e8..a7840504ad2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ChartsPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ChartsPanel.java @@ -85,6 +85,7 @@ public class ChartsPanel extends FormPanel { private PlotWithOverviewModel model; private PlotOptions plotOptions; private HashMap seriesID; + private HashMap seriesIsUsed; private HashMap competitorID; private HashMap markSeriesID; private HashMap competitorLabels; @@ -102,6 +103,7 @@ public class ChartsPanel extends FormPanel { this.errorReporter = errorReporter; chartData = new CompetitorInRaceDAO(); seriesID = new HashMap(); + seriesIsUsed = new HashMap(); competitorID = new HashMap(); markSeriesID = new HashMap(); idColor = new HashMap(); @@ -320,11 +322,24 @@ public class ChartsPanel extends FormPanel { } private synchronized void updateTableData(CompetitorDAO[] competitorDAOs) { + List series = new ArrayList(); + for (SeriesHandler sh : seriesID.values()){ + series.add(sh); + } + for (SeriesHandler sh : markSeriesID.values()){ + series.add(sh); + } + CompetitorDAO firstCompetitor = null; if (competitorsAndTimePointsDAO != null && chartData != null) { for (CompetitorDAO competitor : competitorDAOs) { + if (firstCompetitor == null){ + firstCompetitor = competitor; + } competitorID.put(competitor, competitorNr++); SeriesHandler compSeries = getCompetitorSeries(competitor); + seriesIsUsed.put(compSeries, true); SeriesHandler markSeries = getCompetitorMarkPassingSeries(competitor); + seriesIsUsed.put(markSeries, true); compSeries.clear(); markSeries.clear(); if (isCompetitorVisible(competitor) && chartData.getRaceData(competitor) != null){ @@ -348,18 +363,28 @@ public class ChartsPanel extends FormPanel { } GWT.log("Update data time for " + competitor.name + ": " + (System.currentTimeMillis() - starttime)); } - else { - compSeries.add(new DataPoint(0,0)); - markSeries.add(new DataPoint(0,0)); - } setLegendVisible(competitor,isCompetitorVisible(competitor)); compSeries.setVisible(isCompetitorVisible(competitor)); markSeries.setVisible(isCompetitorVisible(competitor)); + series.remove(compSeries); + series.remove(markSeries); + } + for (SeriesHandler sh : series){ + if (seriesIsUsed.get(sh) == null || !seriesIsUsed.get(sh)){ + sh.clear(); + Double[] data = chartData.getRaceData(firstCompetitor); + long[] timepoints = competitorsAndTimePointsDAO.getTimePoints(); + for (int j = 0; j < stepsToLoad; j++) { + if (data[j] != null){ + sh.add(new DataPoint(timepoints[j], data[j])); + } + } + } } } if (plot != null && plot.isAttached()){ try { - plot.setLinearSelection(1, 2); + plot.setLinearSelection(0, 1); plot.redraw(); } catch (Exception e){ @@ -602,6 +627,7 @@ public class ChartsPanel extends FormPanel { private void clearChart(boolean clearCheckBoxes){ if (clearCheckBoxes){ selectCompetitors.clear(); + seriesIsUsed.clear(); } competitorID.clear(); competitorNr = 0;