# HG changeset patch
# User gernotbelger
# Date 1518630301 -3600
# Node ID f87f435df856c2fe303480cc96cc30ab8ec77e6b
# Parent caa52aec08c0e5c3561117b8504ddf23e91ef7f3
Allow to configure lower and upper margin of a chart axis
diff -r caa52aec08c0 -r f87f435df856 artifacts/doc/conf/generators/longitudinal-diagram-defaults.xml
--- a/artifacts/doc/conf/generators/longitudinal-diagram-defaults.xml Wed Feb 14 18:16:03 2018 +0100
+++ b/artifacts/doc/conf/generators/longitudinal-diagram-defaults.xml Wed Feb 14 18:45:01 2018 +0100
@@ -15,7 +15,7 @@
-
+
diff -r caa52aec08c0 -r f87f435df856 artifacts/src/main/java/org/dive4elements/river/exports/DiagramAttributes.java
--- a/artifacts/src/main/java/org/dive4elements/river/exports/DiagramAttributes.java Wed Feb 14 18:16:03 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/DiagramAttributes.java Wed Feb 14 18:45:01 2018 +0100
@@ -109,16 +109,15 @@
} // class Instance
public static class AxisAttributes {
- private String name;
- private boolean isLeftAlign; // TODO: Remove!
- private boolean forceAlign; // TODO: Remove!
- private boolean includeZero; // TODO: Use Evaluator
+ private final String name;
+ private final boolean isLeftAlign; // TODO: Remove!
+ private final boolean forceAlign; // TODO: Remove!
+ private final boolean includeZero; // TODO: Use Evaluator
- private Evaluator isInverted;
- private Evaluator isLog;
-
- public AxisAttributes() {
- }
+ private final Evaluator isInverted;
+ private final Evaluator isLog;
+ private final double lowerMargin;
+ private final double upperMargin;
public AxisAttributes(
String name,
@@ -126,7 +125,9 @@
boolean forceAlign,
boolean includeZero,
Evaluator isInverted,
- Evaluator isLog
+ Evaluator isLog,
+ double lowerMargin,
+ double upperMargin
) {
this.name = name;
this.isLeftAlign = isLeftAlign;
@@ -134,6 +135,8 @@
this.includeZero = includeZero;
this.isInverted = isInverted;
this.isLog = isLog;
+ this.lowerMargin = lowerMargin;
+ this.upperMargin = upperMargin;
}
public String getName() {
@@ -159,15 +162,20 @@
public Evaluator isLog() {
return isLog;
}
+
+ public double getLowerMargin() {
+ return this.lowerMargin;
+ }
+
+ public double getUpperMargin() {
+ return this.upperMargin;
+ }
} // class AxisAttributes
public class DomainAxisAttributes extends AxisAttributes {
private Title title;
- public DomainAxisAttributes() {
- }
-
public DomainAxisAttributes(
String name,
boolean isLeftAlign,
@@ -178,7 +186,7 @@
Title title
) {
super(name, isLeftAlign, forceAlign, includeZero, isInverted,
- isLog);
+ isLog, 0.0, 0.0);
this.title = title;
}
@@ -375,6 +383,9 @@
String isInverted = axisElement.getAttribute("inverted");
String isLog = axisElement.getAttribute("logarithmic");
+ final double lowerMargin = parseDouble( axisElement.getAttribute("lowerMargin"), 0.0 );
+ final double upperMargin = parseDouble( axisElement.getAttribute("upperMargin"), 0.0 );
+
if (name.isEmpty()) {
continue;
}
@@ -394,7 +405,22 @@
axesAttrs.add(new AxisAttributes(
name, isleftAlign, forceAlign,
includeZero.equals("true"),
- isInvertedE, isLogE));
+ isInvertedE, isLogE,
+ lowerMargin,upperMargin));
+ }
+ }
+
+ private static double parseDouble( final String text, final double defaultValue ) {
+ if( text == null || text.isEmpty() )
+ return defaultValue;
+
+ try {
+ return Double.parseDouble(text);
+ }
+ catch (final NumberFormatException e) {
+ e.printStackTrace();
+ log.error(String.format("Invalid double attribute: ", text), e);
+ return defaultValue;
}
}
diff -r caa52aec08c0 -r f87f435df856 artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java
--- a/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java Wed Feb 14 18:16:03 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java Wed Feb 14 18:45:01 2018 +0100
@@ -36,7 +36,7 @@
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.artifacts.D4EArtifact;
-
+import org.dive4elements.river.exports.DiagramAttributes.AxisAttributes;
import org.dive4elements.river.exports.process.Processor;
import org.dive4elements.river.jfree.RiverAnnotation;
@@ -1270,19 +1270,25 @@
@Override
protected NumberAxis createYAxis(int index) {
+
+ final AxisAttributes axisAttributes = diagramAttributes.getAxesAttributes().get(index);
+
+ boolean logarithmic = (Boolean)axisAttributes.isLog().evaluate((D4EArtifact)getMaster(), context);
+
NumberAxis axis;
- boolean logarithmic = (Boolean)diagramAttributes.getAxesAttributes().
- get(index).isLog().evaluate((D4EArtifact)getMaster(), context);
-
if (logarithmic) {
axis = new LogarithmicAxis(getYAxisLabel(index));
} else {
axis = super.createYAxis(index);
}
- if (diagramAttributes.getAxesAttributes().get(index).includeZero()) {
+ if (axisAttributes.includeZero()) {
axis.setAutoRangeIncludesZero(true);
}
+
+ axis.setLowerMargin(axisAttributes.getLowerMargin());
+ axis.setUpperMargin(axisAttributes.getUpperMargin());
+
return axis;
}