Mercurial > dive4elements > river
changeset 1935:5b51f5232661
Added handling of empty plots.
flys-artifacts/trunk@3316 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 25 Nov 2011 09:39:09 +0000 (2011-11-25) |
parents | e4a516ca2e86 |
children | 0ad05cb691fc |
files | flys-artifacts/ChangeLog flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java |
diffstat | 2 files changed, 48 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog Fri Nov 25 08:42:44 2011 +0000 +++ b/flys-artifacts/ChangeLog Fri Nov 25 09:39:09 2011 +0000 @@ -1,3 +1,12 @@ +2011-11-25 Felix Wolfsteller <felix.wolfsteller@intevation.de> + + Added handling of empty plots. + + * src/main/java/de/intevation/flys/exports/XYChartGenerator.java: + (createAxes, removeEmptyRangeAxes): Survive empty datasets map, create + primary axis. + (recoverEmptyPlot): New. + 2011-11-25 Felix Wolfsteller <felix.wolfsteller@intevation.de> Let first visible axis be always on the left.
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java Fri Nov 25 08:42:44 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java Fri Nov 25 09:39:09 2011 +0000 @@ -175,14 +175,16 @@ adjustPlot(plot); localizeAxes(plot); - removeEmptyRangeAxes(plot); createAxes(plot); adjustAxes(plot); + recoverEmptyPlot(plot); + preparePointRanges(plot); autoZoom(plot); applyThemes(plot); + removeEmptyRangeAxes(plot); return chart; } @@ -207,7 +209,8 @@ /** - * Add given series. + * Add given series if visible, if not visible adjust ranges (such that + * all points in data would be plotted once visible). * @param series the dataseries to include in plot. * @param index index of the series and of its axis. * @param visible whether or not the data should be plotted. @@ -290,22 +293,28 @@ public void createAxes(XYPlot plot) { logger.debug("XYChartGenerator.createAxes"); - Integer last = datasets.lastKey(); - int i = 0; - int firstVisible = 0; - - if (last != null) { - firstVisible = i = last; - for (; i >= 0; --i) { - if (datasets.containsKey(i)) { - plot.setRangeAxis(i, createYAxis(i)); - firstVisible = i; + if (datasets.isEmpty()) { + plot.setRangeAxis(0, createYAxis(0)); + } + else { + Integer last = datasets.lastKey(); + int i = 0; + int firstVisible = 0; + + if (last != null) { + firstVisible = i = last; + for (; i >= 0; --i) { + if (datasets.containsKey(i)) { + plot.setRangeAxis(i, createYAxis(i)); + firstVisible = i; + } } + plot.setRangeAxisLocation(firstVisible, AxisLocation.TOP_OR_LEFT); } - plot.setRangeAxisLocation(firstVisible, AxisLocation.TOP_OR_LEFT); } } + /** * Create Y (range) axis for given index. * Shall be overriden by subclasses. @@ -315,7 +324,24 @@ return axis; } + /** + * If no data is visible, draw at least empty axis. + */ + private void recoverEmptyPlot(XYPlot plot) { + if (plot.getRangeAxis() == null) { + logger.debug("debug: No range axis"); + plot.setRangeAxis(createYAxis(0)); + } + + } + + /** + * Remove Axes which do not have data on them. + */ private void removeEmptyRangeAxes(XYPlot plot) { + if (datasets.isEmpty()) { + return; + } Integer last = datasets.lastKey(); if (last != null) {