Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java @ 3811:1558ef7b0e7b
Picked rev3357, rev3359 and rev3360 from trunk.
flys-artifacts/tags/pre2.6-2011-12-05@3362 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 07 Dec 2011 13:36:36 +0000 |
parents | 65f9d707caff |
children | b7b8e625ec82 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java Mon Dec 05 10:51:15 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java Wed Dec 07 13:36:36 2011 +0000 @@ -78,6 +78,12 @@ /** Merge (or create given range with range so far (if any). */ private void mergeRanges(Range subRange) { + // Avoid merging NaNs, as they take min/max place forever. + if (subRange == null || + Double.isNaN(subRange.getLowerBound()) || + Double.isNaN(subRange.getUpperBound())) { + return; + } if (range == null) { range = subRange; return; @@ -88,11 +94,11 @@ /** Add a dataset, include its range. */ public void addDataset(XYSeries dataset) { this.datasets.add(new XYSeriesCollection(dataset)); - includeRange(dataset); + includeYRange(dataset); } /** Adjust range to include given dataset. */ - public void includeRange(XYSeries dataset) { + public void includeYRange(XYSeries dataset) { mergeRanges(new Range(dataset.getMinY(), dataset.getMaxY())); } @@ -258,6 +264,11 @@ continue; } logger.debug("Dataset #" + i + ":" + plot.getDataset(i)); + XYSeriesCollection series = (XYSeriesCollection) plot.getDataset(i); + logger.debug("X-Extend of Dataset: " + series.getSeries(0).getMinX() + + " " + series.getSeries(0).getMaxX()); + logger.debug("Y-Extend of Dataset: " + series.getSeries(0).getMinY() + + " " + series.getSeries(0).getMaxY()); } } @@ -335,13 +346,16 @@ datasets.put(index, axisDataset); } + logger.debug("Series-extent x " + series.getMinX() + " : " + series.getMaxX() + + " extend y " + series.getMinY() + " : " + series.getMaxY()); + if (visible) { axisDataset.addDataset(series); } else { // Do this also when not visible to have axis scaled by default such // that every data-point could be seen (except for annotations). - axisDataset.includeRange(series); + axisDataset.includeYRange(series); } combineXRanges(new Range(series.getMinX(), series.getMaxX()), 0); @@ -355,6 +369,12 @@ */ private void combineXRanges(Range range, int index) { + if (range == null + || Double.isNaN(range.getLowerBound()) + || Double.isNaN(range.getUpperBound())) { + return; + } + Range old = xRanges.get(index); if (old != null) { @@ -491,10 +511,10 @@ /** * Zooms the x axis to the range specified in the attribute document. * - * @param plot The XYPlot. - * @param axis The axis the shoud be modified. + * @param plot The XYPlot. + * @param axis The axis the shoud be modified. * @param range The whole range specified by a dataset. - * @param x A user defined range (null permitted). + * @param x A user defined range (null permitted). * * @return true, if a zoom range was specified, otherwise false. */