# HG changeset patch # User Raimund Renkert # Date 1341329227 0 # Node ID b0eee4c1eaa021e804603e3300ed9a407791bc48 # Parent 07231dcd57555d2b285a0364624d45cdb2edb85b Implemented mergeRanges to combine y bounds in timeseries charts. flys-artifacts/trunk@4867 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 07231dcd5755 -r b0eee4c1eaa0 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Tue Jul 03 15:22:53 2012 +0000 +++ b/flys-artifacts/ChangeLog Tue Jul 03 15:27:07 2012 +0000 @@ -1,3 +1,8 @@ +2012-07-03 Raimund Renkert + + * src/main/java/de/intevation/flys/exports/TimeseriesChartGenerator.java: + Implemented mergeRanges to combine y bounds in timeseries charts. + 2012-07-03 Raimund Renkert * src/main/java/de/intevation/flys/exports/fixings/FixWQCurveInfoGenerator.java, diff -r 07231dcd5755 -r b0eee4c1eaa0 flys-artifacts/src/main/java/de/intevation/flys/exports/TimeseriesChartGenerator.java --- a/flys-artifacts/src/main/java/de/intevation/flys/exports/TimeseriesChartGenerator.java Tue Jul 03 15:22:53 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/TimeseriesChartGenerator.java Tue Jul 03 15:27:07 2012 +0000 @@ -143,13 +143,42 @@ protected void mergeRanges(TimeSeriesCollection dataset) { - logger.debug("Range after merging: " + range); + logger.debug("Range before merging: " + range); + Range subRange = null; - Bounds[] xyRanges = ChartHelper.getBounds(dataset); + // Determine min/max of range axis. + for (int i = 0; i < dataset.getSeriesCount(); i++) { + double min = 0; + double max = 0; + TimeSeries series = dataset.getSeries(i); + for (int j = 0; j < series.getItemCount(); j++) { + double tmp = series.getValue(j).doubleValue(); + min = tmp < min ? tmp : min; + max = tmp > max ? tmp : max; + } + if (subRange != null) { + subRange = new Range( + min < subRange.getLowerBound() ? + min : subRange.getLowerBound(), + max > subRange.getUpperBound() ? + max : subRange.getUpperBound()); + } + else { + subRange = new Range(min, max); + } + } - // TODO COMBINE BOUNDS! - - logger.debug("Range after merging: " + range); + // 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; + } + range = Range.combine(range, subRange); } } // end of TimeseriesAxisDataset class