context = new HashMap<>();
- if (DEFAULT_VISIBLE != visible)
- context.put("visible", visible);
- if (text != null)
- context.put("text", text);
- if (!DEFAULT_FONT.equals(font))
- context.put("font", font);
- if (width != null)
- context.put("width", width);
- if (height != null)
- context.put("height", height);
- if (opacity != DEFAULT_OPACITY)
- context.put("opacity", opacity);
- if (!DEFAULT_ALIGN.equals(align))
- context.put("align", align);
- if (!DEFAULT_VALIGN.equals(valign))
- context.put("valign", valign);
- if (!DEFAULT_BGCOLOR.equals(bgcolor))
- context.put("bgcolor", bgcolor);
- if (borderpad != DEFAULT_BORDERPAD)
- context.put("borderpad", borderpad);
- if (borderwidth != borderwidth)
- context.put("borderwidth", bordercolor);
- if (showarrow != DEFAULT_SHOWARROW)
- context.put("showarrow", showarrow);
- if (arrowcolor != null)
- context.put("arrowcolor", arrowcolor);
- if (arrowhead != DEFAULT_ARROWHEAD)
- context.put("arrowhead", arrowhead);
- if (startarrowhead != DEFAULT_STARTARROWHEAD)
- context.put("startarrowhead", startarrowhead);
- if (arrowwidth != DEFAULT_ARROWWIDTH)
- context.put("arrowwidth", arrowwidth);
- if (standoff != DEFAULT_STANDOFF)
- context.put("standoff", standoff);
- if (ax != null)
- context.put("ax", ax);
- if (ay != null)
- context.put("ay", ay);
- if (!DEFAULT_AXREF.equals(axref))
- context.put("axref", axref);
- if (!DEFAULT_AYREF.equals(ayref))
- context.put("ayref", ayref);
- if (!DEFAULT_XREF.equals(xref))
- context.put("xref", xref);
- if (x != null)
- context.put("x", x);
- if (!DEFAULT_XANCHOR.equals(xanchor))
- context.put("xanchor", xanchor);
- if (xshift != DEFAULT_XSHIFT)
- context.put("xshift", xshift);
- if (!DEFAULT_YREF.equals(yref))
- context.put("yref", yref);
- if (y != null)
- context.put("y", y);
- if (!DEFAULT_YANCHOR.equals(yanchor))
- context.put("yanchor", yanchor);
- if (yshift != DEFAULT_YSHIFT)
- context.put("yshift", yshift);
- if (!DEFAULT_CLICKTOSHOW.equals(clicktoshow))
- context.put("clicktoshow", clicktoshow);
- if (xclick != null)
- context.put("xclick", xclick);
- if (yclick != null)
- context.put("yclick", yclick);
- if (hoverlabel != null)
- context.put("hoverlabel", hoverlabel);
- if (captureevents != DEFAULT_CAPTUREEVENTS)
- context.put("captureevents", captureevents);
- if (name != null)
- context.put("name", name);
- if (templateitemname != null)
- context.put("templateitemname", templateitemname);
-
- return context;
- }
-
- public static AnnotationBuilder builder() {
- return new AnnotationBuilder();
- }
-
- public static class AnnotationBuilder {
- private boolean visible = DEFAULT_VISIBLE;
- private String text;
- private Font font = DEFAULT_FONT;
- private Double width;
- private Double height;
- private double opacity = DEFAULT_OPACITY;
- private Align align = DEFAULT_ALIGN;
- private Valign valign = DEFAULT_VALIGN;
- private String bgcolor = DEFAULT_BGCOLOR;
- private String bordercolor = DEFAULT_BORDERCOLOR;
- private double borderpad = DEFAULT_BORDERPAD;
- private double borderwidth = DEFAULT_BORDERWIDTH;
- private boolean showarrow = DEFAULT_SHOWARROW;
- private String arrowcolor;
- private int arrowhead = DEFAULT_ARROWHEAD;
- private int startarrowhead = DEFAULT_STARTARROWHEAD;
- private String arrowside = DEFAULT_ARROWSIDE;
- private double arrowsize = DEFAULT_ARROWSIZE;
- private double startarrowsize = DEFAULT_STARTARROWSIZE;
- private double arrowwidth = DEFAULT_ARROWWIDTH;
- private double standoff = DEFAULT_STANDOFF;
- private double startstandoff = DEFAULT_STARTSTANDOFF;
- private Double ax;
- private Double ay;
- private String axref = DEFAULT_AXREF;
- private String ayref = DEFAULT_AYREF;
- private String xref = DEFAULT_XREF;
- private Double x;
- private Xanchor xanchor = DEFAULT_XANCHOR;
- private double xshift = DEFAULT_XSHIFT;
- private String yref = DEFAULT_YREF;
- private Double y;
- private Yanchor yanchor = DEFAULT_YANCHOR;
- private double yshift = DEFAULT_YSHIFT;
- private ClicktoShow clicktoshow;
- private Double xclick;
- private Double yclick;
- private String hovertext;
- private HoverLabel hoverLabel;
- private boolean captureevents = DEFAULT_CAPTUREEVENTS;
- private String name;
- private String templateitemname;
-
- private AnnotationBuilder() {
- }
-
- public AnnotationBuilder visible(boolean visible) {
- this.visible = visible;
- return this;
- }
-
- public AnnotationBuilder text(String text) {
- this.text = text;
- return this;
- }
-
- public AnnotationBuilder font(Font font) {
- this.font = font;
- return this;
- }
-
- public AnnotationBuilder width(double width) {
- Preconditions.checkArgument(width >= 0);
- this.width = width;
- return this;
- }
-
- public AnnotationBuilder height(double height) {
- Preconditions.checkArgument(height >= 0);
- this.height = height;
- return this;
- }
-
- public AnnotationBuilder opacity(double opacity) {
- Preconditions.checkArgument(opacity >= 0 && opacity <= 1);
- this.opacity = opacity;
- return this;
- }
-
- public AnnotationBuilder align(Align align) {
- this.align = align;
- return this;
- }
-
- public AnnotationBuilder Valign(Valign valign) {
- this.valign = valign;
- return this;
- }
-
- public AnnotationBuilder bgcolor(String bgcolor) {
- this.bgcolor = bgcolor;
- return this;
- }
-
- public AnnotationBuilder bordercolor(String bordercolor) {
- this.bordercolor = bordercolor;
- return this;
- }
-
- public AnnotationBuilder borderpad(double borderpad) {
- Preconditions.checkArgument(borderpad >= 0);
- this.borderpad = borderpad;
- return this;
- }
-
- public AnnotationBuilder borderwidth(double borderwidth) {
- Preconditions.checkArgument(borderwidth >= 0);
- this.borderwidth = borderwidth;
- return this;
- }
-
- public AnnotationBuilder showarrow(boolean showarrow) {
- this.showarrow = showarrow;
- return this;
- }
-
- public AnnotationBuilder arrowcolor(String arrowcolor) {
- this.arrowcolor = arrowcolor;
- return this;
- }
-
- public AnnotationBuilder arrowhead(int arrowhead) {
- this.arrowhead = arrowhead;
- return this;
- }
-
- public AnnotationBuilder startarrowhead(int startarrowhead) {
- this.startarrowhead = startarrowhead;
- return this;
- }
-
- public AnnotationBuilder arrowside(String arrowside) {
- this.arrowside = arrowside;
- return this;
- }
-
- public AnnotationBuilder arrowsize(double arrowsize) {
- Preconditions.checkArgument(arrowsize >= 0.3);
- this.arrowsize = arrowsize;
- return this;
- }
-
- public AnnotationBuilder startarrowsize(double startarrowsize) {
- Preconditions.checkArgument(startarrowsize >= 0.3);
- this.startarrowsize = startarrowsize;
- return this;
- }
-
- public AnnotationBuilder arrowwidth(double arrowwidth) {
- Preconditions.checkArgument(arrowwidth >= 0.1);
- this.arrowwidth = arrowwidth;
- return this;
- }
-
- public AnnotationBuilder standoff(double standoff) {
- Preconditions.checkArgument(standoff >= 0);
- this.standoff = standoff;
- return this;
- }
-
- public AnnotationBuilder startstandoff(double startstandoff) {
- Preconditions.checkArgument(startstandoff >= 0);
- this.startstandoff = startstandoff;
- return this;
- }
-
- public AnnotationBuilder ax(double ax) {
- this.ax = ax;
- return this;
- }
-
- public AnnotationBuilder ay(double ay) {
- this.ay = ay;
- return this;
- }
-
- public AnnotationBuilder axref(String axref) {
- this.axref = axref;
- return this;
- }
-
- public AnnotationBuilder ayref(String ayref) {
- this.ayref = ayref;
- return this;
- }
-
- public AnnotationBuilder xref(String xref) {
- this.xref = xref;
- return this;
- }
-
- public AnnotationBuilder x(double x) {
- this.x = x;
- return this;
- }
-
- public AnnotationBuilder xanchor(Xanchor xanchor) {
- this.xanchor = xanchor;
- return this;
- }
-
- public AnnotationBuilder xshift(double xshift) {
- this.xshift = xshift;
- return this;
- }
-
- public AnnotationBuilder yref(String yref) {
- this.yref = yref;
- return this;
- }
-
- public AnnotationBuilder y(double y) {
- this.y = y;
- return this;
- }
-
- public AnnotationBuilder yanchor(Yanchor yanchor) {
- this.yanchor = yanchor;
- return this;
- }
-
- public AnnotationBuilder yshift(double yshift) {
- this.yshift = yshift;
- return this;
- }
-
- public AnnotationBuilder clicktoshow(ClicktoShow clicktoShow) {
- this.clicktoshow = clicktoShow;
- return this;
- }
-
- public AnnotationBuilder xclick(double xclick) {
- this.xclick = xclick;
- return this;
- }
-
- public AnnotationBuilder yclick(double yclick) {
- this.yclick = yclick;
- return this;
- }
-
- public AnnotationBuilder hovertext(String hovertext) {
- this.hovertext = hovertext;
- return this;
- }
-
- public AnnotationBuilder hoverlabel(HoverLabel hoverLabel) {
- this.hoverLabel = hoverLabel;
- return this;
- }
-
- public AnnotationBuilder captureevents(boolean captureevents) {
- this.captureevents = captureevents;
- return this;
- }
-
- public AnnotationBuilder name(String name) {
- this.name = name;
- return this;
- }
-
- public AnnotationBuilder templateitemname(String templateitemname) {
- this.templateitemname = templateitemname;
- return this;
- }
-
- public Annotation build() {
- return new Annotation(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Axis.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Axis.java
deleted file mode 100644
index 97b8cbe064..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Axis.java
+++ /dev/null
@@ -1,734 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import static tech.tablesaw.plotly.components.Axis.Spikes.SpikeSnap.DATA;
-
-import com.google.common.base.Preconditions;
-import java.util.HashMap;
-import java.util.Map;
-import tech.tablesaw.plotly.Utils;
-import tech.tablesaw.plotly.traces.ScatterTrace;
-
-public class Axis extends Component {
-
- public enum CategoryOrder {
- TRACE("trace"),
- CATEGORY_ASCENDING("category ascending"),
- CATEGORY_DESCENDING("category descending"),
- ARRAY("array");
-
- private final String value;
-
- CategoryOrder(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /**
- * Sets the axis type. By default, plotly attempts to determined the axis type by looking into the
- * data of the traces that referenced the axis in question.
- */
- public enum Type {
- LINEAR("linear"),
- LOG("log"),
- DATE("date"),
- CATEGORY("category"),
- DEFAULT("-");
-
- private final String value;
-
- Type(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /**
- * Determines whether or not the range of this axis is computed in relation to the input data. See
- * `rangemode` for more info. If `range` is provided, then `autorange` is set to "False".
- */
- public enum AutoRange {
- TRUE("true"),
- FALSE("false"),
- REVERSED("reversed");
-
- private final String value;
-
- AutoRange(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /**
- * If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or
- * those of the other axis), determines how that happens: by increasing the "range" (default), or
- * by decreasing the "domain".
- */
- public enum Constrain {
- RANGE("range"),
- DOMAIN("domain");
-
- private final String value;
-
- Constrain(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /**
- * If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or
- * those of the other axis), determines which direction we push the originally specified plot
- * area. Options are "left", "center" (default), and "right" for x axes, and "top", "middle"
- * (default), and "bottom" for y axes.
- */
- public enum ConstrainToward {
- LEFT("left"),
- CENTER("center"),
- RIGHT("right"),
- TOP("top"),
- MIDDLE("middle"),
- BOTTOM("bottom");
-
- private final String value;
-
- ConstrainToward(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /**
- * If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the
- * range of the corresponding axis such that the scale of pixels per unit is in a constant ratio.
- * Both axes are still zoomable, but when you zoom one, the other will zoom the same amount,
- * keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the
- * constraint. You can chain these, ie `yaxis: {scaleanchor: "x"}, xaxis2: {scaleanchor: "y"}` but
- * you can only link axes of the same `type`. The linked axis can have the opposite letter (to
- * constrain the aspect ratio) or the same letter (to match scales across subplots). Loops
- * (`yaxis: {scaleanchor: "x"}, xaxis: {scaleanchor: "y"}` or longer) are redundant and the last
- * constraint encountered will be ignored to avoid possible inconsistent constraints via
- * `scaleratio`.
- *
- * TODO: Just make this a string?
- */
- public enum ScaleAnchor {
- X("/^x([2-9]|[1-9][0-9]+)?$/"),
- Y("/^y([2-9]|[1-9][0-9]+)?$/");
-
- private final String value;
-
- ScaleAnchor(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /**
- * If "normal", the range is computed in relation to the extrema of the input data. If "tozero"`,
- * the range extends to 0, regardless of the input data If "nonnegative", the range is
- * non-negative, regardless of the input data.
- */
- public enum RangeMode {
- NORMAL("normal"),
- TO_ZERO("tozero"),
- NON_NEGATIVE("nonnegative");
- private final String value;
-
- RangeMode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /**
- * Determines whether an x (y) axis is positioned at the "bottom" ("left") or "top" ("right") of
- * the plotting area.
- */
- public enum Side {
- left("left"), // DEFAULT
- right("right"),
- top("top"),
- bottom("bottom");
-
- private final String value;
-
- Side(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- private static final String DEFAULT_COLOR = "#444";
- private static final String DEFAULT_ZERO_LINE_COLOR = "#444";
- private static final String DEFAULT_LINE_COLOR = "#444";
- private static final String DEFAULT_GRID_COLOR = "#eee";
- private static final int DEFAULT_LINE_WIDTH = 1;
-
- private static final int DEFAULT_ZERO_LINE_WIDTH = 1;
- private static final int DEFAULT_GRID_WIDTH = 1;
- private static final boolean DEFAULT_SHOW_LINE = true;
- private static final boolean DEFAULT_SHOW_GRID = true;
- private static final boolean DEFAULT_ZERO_LINE = false;
- private static final double DEFAULT_SCALE_RATIO = 1.0;
- private static final Constrain DEFAULT_CONSTRAIN_RANGE = Constrain.RANGE;
-
- private static final AutoRange DEFAULT_AUTO_RANGE = AutoRange.TRUE;
- private static final Type DEFAULT_TYPE = Type.DEFAULT;
- private static final boolean DEFAULT_VISIBLE = true;
-
- private final String title;
- private final boolean visible;
- private final String color;
- private final Font font;
- private final Font titleFont;
- private final Type type;
-
- private final RangeMode rangeMode;
- private final AutoRange autoRange;
- private final Object[] range;
- private final boolean fixedRange; // true means the axis cannot be zoomed
- private final Constrain constrain;
- private final ConstrainToward constrainToward;
- private final double scaleRatio;
-
- private final Spikes spikes;
-
- private final int lineWidth;
- private final int zeroLineWidth;
- private final int gridWidth;
-
- private final String lineColor;
- private final String zeroLineColor;
- private final String gridColor;
-
- private final boolean showLine;
- private final boolean zeroLine;
- private final boolean showGrid;
-
- private final Side side;
- private final ScatterTrace.YAxis overlaying;
-
- private final CategoryOrder categoryOrder;
-
- private final TickSettings tickSettings;
-
- private final float[] domain;
-
- private final String rangeSlider;
-
- public static AxisBuilder builder() {
- return new AxisBuilder();
- }
-
- private Axis(AxisBuilder builder) {
- title = builder.title;
- titleFont = builder.titleFont;
- type = builder.type;
- visible = builder.visible;
- color = builder.color;
- font = builder.font;
- autoRange = builder.autoRange;
- range = builder.range;
- rangeMode = builder.rangeMode;
- fixedRange = builder.fixedRange;
- tickSettings = builder.tickSettings;
- side = builder.side;
- overlaying = builder.overlaying;
- spikes = builder.spikes;
-
- showLine = builder.showLine;
- zeroLine = builder.zeroLine;
- showGrid = builder.showGrid;
-
- lineColor = builder.lineColor;
- zeroLineColor = builder.zeroLineColor;
- gridColor = builder.gridColor;
-
- lineWidth = builder.lineWidth;
- zeroLineWidth = builder.zeroLineWidth;
- gridWidth = builder.gridWidth;
-
- constrain = builder.constrain;
- constrainToward = builder.constrainToward;
- scaleRatio = builder.scaleRatio;
- categoryOrder = builder.categoryOrder;
- domain = builder.domain;
- rangeSlider = builder.rangeSlider;
- }
-
- @Override
- public String asJavascript() {
- return asJavascript("axis_template.html");
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("title", title);
- context.put("titleFont", titleFont);
- if (visible != DEFAULT_VISIBLE) context.put("visible", visible);
- if (!type.equals(DEFAULT_TYPE)) context.put("type", type);
- if (!color.equals(DEFAULT_COLOR)) context.put("color", color);
- if (font != null) {
- context.put("font", font);
- }
- if (side != null) {
- context.put("side", side);
- }
- if (overlaying != null) {
- context.put("overlaying", overlaying);
- }
- if (!autoRange.equals(DEFAULT_AUTO_RANGE)) context.put("autoRange", autoRange);
- context.put("rangeMode", rangeMode);
- if (range != null) {
- context.put("range", Utils.dataAsString(range));
- }
- context.put("fixedRange", fixedRange);
- if (scaleRatio != DEFAULT_SCALE_RATIO) context.put("scaleRatio", scaleRatio);
- if (!constrain.equals(DEFAULT_CONSTRAIN_RANGE)) context.put("constrain", constrain);
- if (constrainToward != null) {
- context.put("constrainToward", constrainToward);
- }
- if (spikes != null) {
- spikes.updateContext(context);
- }
-
- if (tickSettings != null) {
- tickSettings.updateContext(context);
- }
-
- if (categoryOrder != null) {
- context.put("categoryOrder", categoryOrder);
- }
-
- if (gridWidth != DEFAULT_GRID_WIDTH) context.put("gridWidth", gridWidth);
- if (lineWidth != DEFAULT_LINE_WIDTH) context.put("lineWidth", lineWidth);
- if (zeroLineWidth != DEFAULT_ZERO_LINE_WIDTH) context.put("zeroLineWidth", zeroLineWidth);
- if (!lineColor.equals(DEFAULT_LINE_COLOR)) context.put("lineColor", lineColor);
- if (!zeroLineColor.equals(DEFAULT_ZERO_LINE_COLOR)) context.put("zeroLineColor", zeroLineColor);
- if (!gridColor.equals(DEFAULT_GRID_COLOR)) context.put("gridColor", gridColor);
- if (showLine != DEFAULT_SHOW_LINE) context.put("showLine", showLine);
- if (zeroLine != DEFAULT_ZERO_LINE) context.put("zeroLine", zeroLine);
- if (showGrid != DEFAULT_SHOW_GRID) context.put("showGrid", showGrid);
- if (domain != null) {
- context.put("domain", String.format("[%.2f, %.2f]", domain[0], domain[1]));
- }
- if (rangeSlider != null) {
- context.put("rangeslider", rangeSlider);
- }
- return context;
- }
-
- public static class AxisBuilder {
-
- private Constrain constrain = DEFAULT_CONSTRAIN_RANGE;
- private ConstrainToward constrainToward;
- private double scaleRatio = DEFAULT_SCALE_RATIO;
-
- private Font titleFont;
- private String title = "";
- private boolean visible = DEFAULT_VISIBLE;
- private String color = DEFAULT_COLOR;
- private Font font;
- private Side side;
-
- private Type type = DEFAULT_TYPE;
- private RangeMode rangeMode = RangeMode.NORMAL;
- private AutoRange autoRange = DEFAULT_AUTO_RANGE;
- private Object[] range;
- private boolean fixedRange = true; // true means the axis cannot be zoomed
-
- private TickSettings tickSettings;
-
- private Spikes spikes = null;
-
- private boolean showLine = DEFAULT_SHOW_LINE;
- private String lineColor = DEFAULT_LINE_COLOR;
- private int lineWidth = DEFAULT_LINE_WIDTH;
-
- private boolean zeroLine = DEFAULT_ZERO_LINE;
- private String zeroLineColor = DEFAULT_ZERO_LINE_COLOR;
- private int zeroLineWidth = DEFAULT_ZERO_LINE_WIDTH;
-
- private boolean showGrid = DEFAULT_SHOW_GRID;
- private String gridColor = DEFAULT_GRID_COLOR;
- private int gridWidth = DEFAULT_GRID_WIDTH;
-
- private ScatterTrace.YAxis overlaying;
-
- private CategoryOrder categoryOrder;
-
- private float[] domain = null;
-
- private String rangeSlider = null;
-
- private AxisBuilder() {}
-
- public AxisBuilder title(String title) {
- this.title = title;
- return this;
- }
-
- public AxisBuilder titleFont(Font titleFont) {
- this.titleFont = titleFont;
- return this;
- }
-
- public AxisBuilder type(Type type) {
- this.type = type;
- return this;
- }
-
- public AxisBuilder categoryOrder(CategoryOrder categoryOrder) {
- this.categoryOrder = categoryOrder;
- return this;
- }
-
- public AxisBuilder domain(float start, float end) {
- this.domain = new float[] {start, end};
- return this;
- }
-
- public AxisBuilder visible(boolean visible) {
- this.visible = visible;
- return this;
- }
-
- public AxisBuilder side(Side side) {
- this.side = side;
- return this;
- }
-
- /**
- * Instructs plotly to overly the trace with this axis on top of a trace with another axis
- *
- * @param axisToOverlay The axis we want to overlay
- * @return this AxisBuilder
- */
- public AxisBuilder overlaying(ScatterTrace.YAxis axisToOverlay) {
- this.overlaying = axisToOverlay;
- return this;
- }
-
- /** Determines whether or not this axis is zoom-able. If True, then zoom is disabled. */
- public AxisBuilder fixedRange(boolean fixedRange) {
- this.fixedRange = fixedRange;
- return this;
- }
-
- public AxisBuilder color(String color) {
- this.color = color;
- return this;
- }
-
- public AxisBuilder font(Font font) {
- this.font = font;
- return this;
- }
-
- /**
- * If "normal", the range is computed in relation to the extrema of the input data. If
- * "tozero"`, the range extends to 0, regardless of the input data If "nonnegative", the range
- * is non-negative, regardless of the input data.
- *
- * The default is normal.
- */
- public AxisBuilder rangeMode(RangeMode rangeMode) {
- this.rangeMode = rangeMode;
- return this;
- }
-
- public AxisBuilder spikes(Spikes spikes) {
- this.spikes = spikes;
- return this;
- }
-
- /**
- * Determines whether or not the range of this axis is computed in relation to the input data.
- * See `rangemode` for more info. If `range` is provided, then `autorange` is set to "False".
- */
- public AxisBuilder autoRange(AutoRange autoRange) {
- this.autoRange = autoRange;
- if (range != null && autoRange != AutoRange.FALSE) {
- throw new IllegalArgumentException(
- "Can't set autoRange to anything but FALSE after specifying a range.");
- }
- return this;
- }
-
- /**
- * Sets the range of this axis. If the axis `type` is "log", then you must take the log of your
- * desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2).
- *
- *
If the axis `type` is "date", it should be date strings, like date data, though Date
- * objects and unix milliseconds will be accepted and converted to strings. If the axis `type`
- * is "category", it should be numbers, using the scale where each category is assigned a serial
- * number from zero in the order it appears.
- */
- public AxisBuilder range(Object[] range) {
- this.range = range;
- this.autoRange = AutoRange.FALSE;
- return this;
- }
-
- /**
- * Sets the range of this axis. If the axis `type` is "log", then you must take the log of your
- * desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2).
- *
- *
If the axis `type` is "date", it should be date strings, like date data, though Date
- * objects and unix milliseconds will be accepted and converted to strings. If the axis `type`
- * is "category", it should be numbers, using the scale where each category is assigned a serial
- * number from zero in the order it appears.
- */
- public AxisBuilder range(Object low, Object high) {
- Object[] range = new Object[2];
- range[0] = low;
- range[1] = high;
- this.range = range;
- this.autoRange = AutoRange.FALSE;
- return this;
- }
-
- public AxisBuilder constrain(Constrain constrain) {
- this.constrain = constrain;
- return this;
- }
-
- public AxisBuilder constrainToward(ConstrainToward constrainToward) {
- this.constrainToward = constrainToward;
- return this;
- }
-
- /**
- * If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale
- * ratio. For example, if this value is 10, then every unit on this axis spans 10 times the
- * number of pixels as a unit on the linked axis. Use this for example to create an elevation
- * profile where the vertical scale is exaggerated a fixed amount with respect to the
- * horizontal.
- *
- * @param scaleRatio a number >= 1
- * @return this AxisBuilder
- */
- public AxisBuilder scaleRatio(double scaleRatio) {
- Preconditions.checkArgument(scaleRatio >= 1.0);
- this.scaleRatio = scaleRatio;
- return this;
- }
-
- /** Defines all the settings related to the display of tick marks on this axis */
- public AxisBuilder tickSettings(TickSettings tickSettings) {
- this.tickSettings = tickSettings;
- return this;
- }
-
- public AxisBuilder lineWidth(int lineWidth) {
- Preconditions.checkArgument(lineWidth >= 0);
- this.lineWidth = lineWidth;
- return this;
- }
-
- public AxisBuilder zeroLineWidth(int zeroLineWidth) {
- Preconditions.checkArgument(zeroLineWidth >= 0);
- this.zeroLineWidth = zeroLineWidth;
- return this;
- }
-
- public AxisBuilder gridWidth(int width) {
- Preconditions.checkArgument(width >= 0);
- this.gridWidth = width;
- return this;
- }
-
- public AxisBuilder lineColor(String color) {
- this.lineColor = color;
- return this;
- }
-
- public AxisBuilder gridColor(String color) {
- this.gridColor = color;
- return this;
- }
-
- public AxisBuilder zeroLineColor(String color) {
- this.zeroLineColor = color;
- return this;
- }
-
- public AxisBuilder showLine(boolean showLine) {
- this.showLine = showLine;
- return this;
- }
-
- public AxisBuilder showGrid(boolean showGrid) {
- this.showGrid = showGrid;
- return this;
- }
-
- public AxisBuilder showZeroLine(boolean zeroLine) {
- this.zeroLine = zeroLine;
- return this;
- }
-
- public AxisBuilder rangeslider(String slider) {
- this.rangeSlider = slider;
- return this;
- }
-
- public Axis build() {
- return new Axis(this);
- }
- }
-
- public static class Spikes {
- private final String color;
- private final int thickness;
- private final String dash;
- private final SpikeMode mode;
- private final SpikeSnap snap;
-
- private Spikes(SpikesBuilder builder) {
- this.color = builder.color;
- this.thickness = builder.thickness;
- this.dash = builder.dash;
- this.mode = builder.mode;
- this.snap = builder.snap;
- }
-
- private void updateContext(Map context) {
- context.put("showSpikes", true);
- context.put("spikeMode", mode);
- context.put("spikeThickness", thickness);
- context.put("spikeDash", dash);
- context.put("spikeColor", color);
- context.put("spikeSnap", snap);
- }
-
- public enum SpikeSnap {
- DATA("data"),
- CURSOR("cursor");
-
- private final String value;
-
- SpikeSnap(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public enum SpikeMode {
- TO_AXIS("toaxis"),
- ACROSS("across"),
- MARKER("marker"),
- TO_AXIS_AND_ACROSS("toaxis+across"),
- TO_AXIS_AND_MARKER("toaxis+marker"),
- ACROSS_AND_MARKER("across+marker"),
- TO_AXIS_AND_ACROSS_AND_MARKER("toaxis+across+marker");
-
- private final String value;
-
- SpikeMode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public static SpikesBuilder builder() {
- return new SpikesBuilder();
- }
-
- public static class SpikesBuilder {
- private String color = null;
- private int thickness = 3;
- private String dash = "dash";
- private SpikeMode mode = SpikeMode.TO_AXIS;
- private SpikeSnap snap = DATA;
-
- private SpikesBuilder() {}
-
- public SpikesBuilder color(String color) {
- this.color = color;
- return this;
- }
-
- /**
- * Sets the dash style of lines. Set to a dash type string ("solid", "dot", "dash",
- * "longdash", "dashdot", or "longdashdot") or a dash length list in px (eg
- * "5px,10px,2px,2px").
- */
- public SpikesBuilder dash(String dash) {
- this.dash = dash;
- return this;
- }
-
- /**
- * Any combination of "toaxis", "across", "marker" examples: "toaxis", "across",
- * "toaxis+across", "toaxis+across+marker" default: "toaxis"
- */
- public SpikesBuilder mode(SpikeMode mode) {
- this.mode = mode;
- return this;
- }
-
- /**
- * Determines whether spikelines are stuck to the cursor or to the closest datapoints.
- * default: DATA
- */
- public SpikesBuilder snap(SpikeSnap snap) {
- this.snap = snap;
- return this;
- }
-
- /** Sets the width (in px) of the zero line. default: 3 */
- public SpikesBuilder thickness(int thickness) {
- this.thickness = thickness;
- return this;
- }
-
- public Spikes build() {
- return new Spikes(this);
- }
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/ColorBar.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/ColorBar.java
deleted file mode 100644
index 405e2e386e..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/ColorBar.java
+++ /dev/null
@@ -1,358 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import com.google.common.base.Preconditions;
-import java.util.HashMap;
-import java.util.Map;
-
-public class ColorBar extends Component {
-
- private static final ThicknessMode DEFAULT_THICKNESS_MODE = ThicknessMode.PIXELS;
- private static final double DEFAULT_THICKNESS = 30.0;
-
- private static final LenMode DEFAULT_LEN_MODE = LenMode.FRACTION;
- private static final double DEFAULT_LEN = 1.0;
-
- private static final double DEFAULT_X = 1.02;
- private static final double DEFAULT_Y = 0.5;
-
- private static final int DEFAULT_X_PAD = 10;
- private static final int DEFAULT_Y_PAD = 10;
-
- private static final Xanchor DEFAULT_X_ANCHOR = Xanchor.LEFT;
- private static final Yanchor DEFAULT_Y_ANCHOR = Yanchor.MIDDLE;
-
- private static final String DEFAULT_OUTLINE_COLOR = "444";
- private static final String DEFAULT_BORDER_COLOR = "444";
-
- private static final int DEFAULT_BORDER_WIDTH = 1;
- private static final int DEFAULT_OUTLINE_WIDTH = 0;
-
- private static final String DEFAULT_BG_COLOR = "rgba(0,0,0,0)";
-
- /**
- * Determines whether this color bar's thickness (i.e. the measure in the constant color
- * direction) is set in units of plot "fraction" or in "pixels". Use `thickness` to set the value.
- */
- public enum ThicknessMode {
- FRACTION("fraction"),
- PIXELS("pixels");
-
- private final String value;
-
- ThicknessMode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public enum LenMode {
- FRACTION("fraction"),
- PIXELS("pixels");
-
- private final String value;
-
- LenMode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public enum Xanchor {
- LEFT("left"),
- CENTER("center"),
- RIGHT("right");
-
- private final String value;
-
- Xanchor(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public enum Yanchor {
- TOP("top"),
- MIDDLE("middle"),
- BOTTOM("bottom");
-
- private final String value;
-
- Yanchor(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- private final ThicknessMode thicknessMode;
-
- private final double thickness;
-
- private final LenMode lenMode;
-
- private final double len;
-
- private final double x;
-
- private final int xPad;
-
- private final int yPad;
-
- private final double y;
-
- private final Xanchor xAnchor;
-
- private final Yanchor yAnchor;
-
- private final String outlineColor;
-
- private final int outlineWidth;
-
- private final String borderColor;
-
- private final int borderWidth;
-
- private final String bgColor;
-
- private final TickSettings tickSettings;
-
- private ColorBar(ColorBarBuilder builder) {
- this.thicknessMode = builder.thicknessMode;
- this.lenMode = builder.lenMode;
- this.thickness = builder.thickness;
- this.len = builder.len;
- this.x = builder.x;
- this.y = builder.y;
- this.xPad = builder.xPad;
- this.yPad = builder.yPad;
- this.xAnchor = builder.xAnchor;
- this.yAnchor = builder.yAnchor;
- this.outlineColor = builder.outlineColor;
- this.borderColor = builder.borderColor;
- this.bgColor = builder.bgColor;
- this.borderWidth = builder.borderWidth;
- this.outlineWidth = builder.outlineWidth;
- this.tickSettings = builder.tickSettings;
- }
-
- @Override
- public String asJavascript() {
- return asJavascript("colorbar_template.html");
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- if (!thicknessMode.equals(DEFAULT_THICKNESS_MODE)) context.put("thicknessMode", thicknessMode);
- if (!lenMode.equals(DEFAULT_LEN_MODE)) context.put("lenMode", lenMode);
-
- if (len != DEFAULT_LEN) context.put("len", len);
- if (thickness != DEFAULT_THICKNESS) context.put("thickness", thickness);
-
- if (x != DEFAULT_X) context.put("x", x);
- if (y != DEFAULT_Y) context.put("y", y);
-
- if (xPad != DEFAULT_X_PAD) context.put("xPad", xPad);
- if (yPad != DEFAULT_Y_PAD) context.put("yPad", yPad);
-
- if (borderWidth != DEFAULT_BORDER_WIDTH) context.put("borderWidth", borderWidth);
- if (outlineWidth != DEFAULT_OUTLINE_WIDTH) context.put("outlineWidth", outlineWidth);
-
- if (!xAnchor.equals(DEFAULT_X_ANCHOR)) context.put("xAnchor", xAnchor);
- if (!yAnchor.equals(DEFAULT_Y_ANCHOR)) context.put("yAnchor", yAnchor);
-
- if (!outlineColor.equals(DEFAULT_OUTLINE_COLOR)) context.put("outlineColor", outlineColor);
- if (!borderColor.equals(DEFAULT_BORDER_COLOR)) context.put("borderColor", borderColor);
- if (!bgColor.equals(DEFAULT_BG_COLOR)) context.put("bgColor", bgColor);
-
- if (tickSettings != null) tickSettings.updateContext(context);
- return context;
- }
-
- public static ColorBarBuilder builder() {
- return new ColorBarBuilder();
- }
-
- public static class ColorBarBuilder {
-
- private ThicknessMode thicknessMode = DEFAULT_THICKNESS_MODE;
-
- private double thickness = DEFAULT_THICKNESS; // (number greater than or equal to 0)
-
- private LenMode lenMode = DEFAULT_LEN_MODE;
-
- private double len = DEFAULT_LEN;
-
- private double x = DEFAULT_X;
-
- private int xPad = DEFAULT_X_PAD;
-
- private int yPad = DEFAULT_Y_PAD;
-
- private double y = DEFAULT_Y;
-
- private Xanchor xAnchor = DEFAULT_X_ANCHOR;
-
- private Yanchor yAnchor = DEFAULT_Y_ANCHOR;
-
- private String outlineColor = DEFAULT_OUTLINE_COLOR;
-
- private int outlineWidth = DEFAULT_OUTLINE_WIDTH;
-
- private String borderColor = DEFAULT_BORDER_COLOR;
-
- private int borderWidth = DEFAULT_BORDER_WIDTH;
-
- private String bgColor = DEFAULT_BG_COLOR;
-
- private TickSettings tickSettings;
-
- /**
- * Sets the thickness of the color bar, This measure excludes the size of the padding, ticks and
- * labels.
- *
- * @param thickness a double greater than 0
- * @return this ColorBar
- */
- public ColorBarBuilder thickness(double thickness) {
- Preconditions.checkArgument(thickness >= 0);
- this.thickness = thickness;
- return this;
- }
-
- /**
- * Sets the length of the color bar, This measure excludes the size of the padding, ticks and
- * labels.
- *
- * @param len a double greater than 0
- * @return this ColorBar
- */
- public ColorBarBuilder len(double len) {
- Preconditions.checkArgument(len >= 0);
- this.len = len;
- return this;
- }
-
- /**
- * Determines whether this color bar's length (i.e. the measure in the color variation
- * direction) is set in units of plot "fraction" or in "pixels. Use `len` to set the value.
- */
- public ColorBarBuilder lenMode(LenMode lenMode) {
- this.lenMode = lenMode;
- return this;
- }
-
- public ColorBarBuilder thicknessMode(ThicknessMode mode) {
- this.thicknessMode = mode;
- return this;
- }
-
- /**
- * A number between or equal to -2and 3) default:1.02 Sets the x position of the color bar(in
- * plot fraction).
- */
- public ColorBarBuilder x(double x) {
- Preconditions.checkArgument(x >= -2 && x <= 3);
- this.x = x;
- return this;
- }
-
- /**
- * A number between or equal to -2and 3) default:0.5 Sets the y position of the color bar (in
- * plot fraction).
- */
- public ColorBarBuilder y(double y) {
- Preconditions.checkArgument(y >= -2 && y <= 3);
- this.y = y;
- return this;
- }
-
- /**
- * Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the
- * "left", "center" or "right" of the color bar.
- */
- public ColorBarBuilder xAnchor(Xanchor xAnchor) {
- this.xAnchor = xAnchor;
- return this;
- }
-
- /**
- * Sets this color bar's vertical position anchor This anchor binds the `y` position to the
- * "top", "middle" or "bottom" of the color bar.
- */
- public ColorBarBuilder yAnchor(Yanchor yAnchor) {
- this.yAnchor = yAnchor;
- return this;
- }
-
- /** Sets the amount of paddng (in px) along the y direction. */
- public ColorBarBuilder yPad(int yPad) {
- Preconditions.checkArgument(yPad >= 0);
- this.yPad = yPad;
- return this;
- }
-
- /** Sets the amount of padding(in px) along the x direction. */
- public ColorBarBuilder xPad(int xPad) {
- Preconditions.checkArgument(y >= 0);
- this.xPad = xPad;
- return this;
- }
-
- /** Sets the axis line color. */
- public ColorBarBuilder outlineColor(String outlineColor) {
- this.outlineColor = outlineColor;
- return this;
- }
-
- /** Sets the color of the border enclosing this color bar. */
- public ColorBarBuilder borderColor(String color) {
- this.borderColor = color;
- return this;
- }
-
- /** Sets the color of padded area. */
- public ColorBarBuilder bgColor(String color) {
- this.bgColor = color;
- return this;
- }
-
- /** Sets the width (in px) or the border enclosing this color bar. */
- public ColorBarBuilder borderWidth(int width) {
- Preconditions.checkArgument(width >= 0);
- this.borderWidth = width;
- return this;
- }
-
- /** Sets the width (in px) of the axis line. */
- public ColorBarBuilder outlineWidth(int width) {
- Preconditions.checkArgument(width >= 0);
- this.outlineWidth = width;
- return this;
- }
-
- public ColorBarBuilder tickSettings(TickSettings tickSettings) {
- this.tickSettings = tickSettings;
- return this;
- }
-
- public ColorBar build() {
- return new ColorBar(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Component.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Component.java
deleted file mode 100644
index 62c720f448..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Component.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import com.fasterxml.jackson.annotation.JsonInclude.Include;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.mitchellbosecke.pebble.PebbleEngine;
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-
-public abstract class Component {
-
- protected static final ObjectMapper mapper = new ObjectMapper();
-
- {
- mapper.enable(SerializationFeature.INDENT_OUTPUT);
- mapper.setSerializationInclusion(Include.NON_NULL);
- mapper.enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS);
- }
-
- private final PebbleEngine engine = TemplateUtils.getNewEngine();
-
- protected PebbleEngine getEngine() {
- return engine;
- }
-
- @Deprecated
- public abstract String asJavascript();
-
- @Deprecated
- protected abstract Map getContext();
-
- protected Map getJSONContext() {
- return null;
- }
-
- public String asJSON() {
- StringWriter w = new StringWriter();
- try {
- mapper.writeValue(w, getJSONContext());
- } catch (IOException ioe) {
- throw new UncheckedIOException(ioe);
- }
- return w.toString();
- }
-
- protected String asJavascript(String filename) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = getEngine().getTemplate(filename);
- compiledTemplate.evaluate(writer, getContext());
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- @Override
- public String toString() {
- return asJavascript();
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Config.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Config.java
deleted file mode 100644
index 4ae413eb15..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Config.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class Config extends Component {
-
- private final Boolean displayModeBar;
- private final Boolean responsive;
-
- private Config(Builder builder) {
- this.displayModeBar = builder.displayModeBar;
- this.responsive = builder.responsive;
- }
-
- public static Builder builder() {
- return new Builder();
- }
-
- @Override
- public String asJavascript() {
- return "var config = " + asJSON();
- }
-
- @Override
- protected Map getJSONContext() {
- return getContext();
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("displayModeBar", displayModeBar);
- context.put("responsive", responsive);
- return context;
- }
-
- public static class Builder {
-
- Boolean displayModeBar;
- Boolean responsive;
-
- private Builder() {}
-
- public Builder displayModeBar(boolean displayModeBar) {
- this.displayModeBar = displayModeBar;
- return this;
- }
-
- public Builder responsive(boolean responsive) {
- this.responsive = responsive;
- return this;
- }
-
- public Config build() {
- return new Config(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Domain.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Domain.java
deleted file mode 100644
index 83e0aa6e0b..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Domain.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class Domain extends Component {
-
- private final Integer row;
- private final Integer column;
- private final double[] x;
- private final double[] y;
-
- private Domain(DomainBuilder builder) {
- this.x = builder.x;
- this.y = builder.y;
- this.row = builder.row;
- this.column = builder.column;
- }
-
- @Override
- public String asJavascript() {
- return asJSON();
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("column", column);
- context.put("row", row);
- context.put("x", x);
- context.put("y", y);
- return context;
- }
-
- @Override
- protected Map getJSONContext() {
- return getContext();
- }
-
- public static DomainBuilder builder() {
- return new DomainBuilder();
- }
-
- public static class DomainBuilder {
-
- private Integer row;
- private Integer column;
- private double[] x;
- private double[] y;
-
- public DomainBuilder row(int row) {
- this.row = row;
- return this;
- }
-
- public DomainBuilder column(int column) {
- this.column = column;
- return this;
- }
-
- public DomainBuilder x(double[] x) {
- this.x = x;
- return this;
- }
-
- public DomainBuilder y(double[] y) {
- this.y = y;
- return this;
- }
-
- public Domain build() {
- return new Domain(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Figure.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Figure.java
deleted file mode 100644
index 47aa3b9dda..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Figure.java
+++ /dev/null
@@ -1,245 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import com.google.common.base.Preconditions;
-import com.mitchellbosecke.pebble.PebbleEngine;
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import tech.tablesaw.plotly.event.EventHandler;
-import tech.tablesaw.plotly.traces.Trace;
-
-/**
- * Plotly's graph description places attributes into two categories: traces (objects that describe a
- * single series of data in a graph like Scatter or Heatmap) and layout attributes that apply to the
- * rest of the chart, like the title, xaxis, or annotations).
- *
- * Figure combines the two parts, associating one or more traces with a layout. If the layout is
- * null a default layout is provided.
- */
-public class Figure {
-
- private Trace[] data;
- private Layout layout;
- private Config config;
- private EventHandler[] eventHandlers;
-
- private final Map context = new HashMap<>();
-
- private final PebbleEngine engine = TemplateUtils.getNewEngine();
-
- public Figure(FigureBuilder builder) {
- this.data = builder.traces();
- this.layout = builder.layout;
- this.config = builder.config;
- this.eventHandlers = builder.eventHandlers();
- }
-
- public Figure(Trace... traces) {
- this((Layout) null, traces);
- }
-
- public Figure(Layout layout, Trace... traces) {
- this(layout, (Config) null, traces);
- }
-
- public Figure(Layout layout, Config config, Trace... traces) {
- this.data = traces;
- this.layout = layout;
- this.config = config;
- this.eventHandlers = null;
- }
-
- /** @deprecated Use the FigureBuilder instead */
- @Deprecated
- public Figure(Layout layout, EventHandler eventHandler, Trace... traces) {
- this(layout, new EventHandler[] {eventHandler}, traces);
- }
-
- /** @deprecated Use the FigureBuilder instead */
- @Deprecated
- public Figure(Layout layout, EventHandler[] eventHandlers, Trace... traces) {
- this.data = traces;
- this.layout = layout;
- this.config = null;
- this.eventHandlers = eventHandlers;
- }
-
- public String divString(String divName) {
- return String.format("" + System.lineSeparator(), divName);
- }
-
- public Layout getLayout() {
- return layout;
- }
-
- public void setLayout(Layout layout) {
- this.layout = layout;
- }
-
- public Config getConfig() {
- return config;
- }
-
- public void setConfig(Config config) {
- this.config = config;
- }
-
- public EventHandler[] getEventHandlers() {
- return eventHandlers;
- }
-
- public void setEventHandlers(EventHandler... handlers) {
- eventHandlers = handlers;
- }
-
- public Trace[] getTraces() {
- return data;
- }
-
- public void setTraces(Trace... data) {
- this.data = data;
- }
-
- public String asJavascript(String divName) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- buildContext(divName);
-
- try {
- compiledTemplate = engine.getTemplate("figure_template.html");
- compiledTemplate.evaluate(writer, getContext());
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- protected void buildContext(String divName) {
-
- String targetName = "target_" + divName;
- context.put("divName", divName);
- context.put("targetName", targetName);
-
- StringBuilder builder = new StringBuilder();
-
- if (layout != null) {
- builder.append(layout.asJavascript());
- }
- if (config != null) {
- builder.append(config.asJavascript());
- }
- builder.append(System.lineSeparator());
- for (int i = 0; i < data.length; i++) {
- Trace trace = data[i];
- builder.append(trace.asJavascript(i));
- builder.append(System.lineSeparator());
- }
- builder.append(System.lineSeparator());
- String figure = builder.toString();
- context.put("figure", figure);
- context.put("plotFunction", plotFunction(targetName));
- context.put("eventHandlerFunction", eventHandlerFunction(targetName, divName));
- }
-
- protected String plotFunction(String divName) {
- StringBuilder builder = new StringBuilder();
-
- builder.append("var data = [ ");
- for (int i = 0; i < data.length; i++) {
- builder.append("trace").append(i);
- if (i < data.length - 1) {
- builder.append(", ");
- }
- }
- builder.append("];").append(System.lineSeparator());
-
- builder.append("Plotly.newPlot(").append(divName).append(", ").append("data");
-
- if (layout != null) {
- builder.append(", ");
- builder.append("layout");
- }
- if (config != null) {
- builder.append(", ");
- builder.append("config");
- }
-
- builder.append(");");
-
- return builder.toString();
- }
-
- protected String eventHandlerFunction(String targetName, String divName) {
- StringBuilder builder = new StringBuilder();
-
- if (eventHandlers != null) {
- builder.append(System.lineSeparator());
- for (EventHandler eventHandler : eventHandlers) {
- builder.append(eventHandler.asJavascript(targetName, divName));
- }
- builder.append(System.lineSeparator());
- }
-
- return builder.toString();
- }
-
- public Map getContext() {
- return context;
- }
-
- public static FigureBuilder builder() {
- return new FigureBuilder();
- }
-
- public static class FigureBuilder {
-
- private Layout layout;
- private Config config;
- private List traces = new ArrayList<>();
- private List eventHandlers = new ArrayList<>();
-
- public FigureBuilder layout(Layout layout) {
- this.layout = layout;
- return this;
- }
-
- public FigureBuilder config(Config config) {
- this.config = config;
- return this;
- }
-
- public FigureBuilder addTraces(Trace... traces) {
- this.traces.addAll(Arrays.asList(traces));
- return this;
- }
-
- public FigureBuilder addEventHandlers(EventHandler... handlers) {
- this.eventHandlers.addAll(Arrays.asList(handlers));
- return this;
- }
-
- public Figure build() {
- Preconditions.checkState(!traces.isEmpty(), "A figure must have at least one trace");
- return new Figure(this);
- }
-
- private EventHandler[] eventHandlers() {
- return eventHandlers.toArray(new EventHandler[0]);
- }
-
- private Trace[] traces() {
- return traces.toArray(new Trace[0]);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Font.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Font.java
deleted file mode 100644
index 6ea12171af..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Font.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import com.fasterxml.jackson.annotation.JsonValue;
-import com.google.common.base.Preconditions;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-public class Font extends Component {
-
- /**
- * HTML font family - the typeface that will be applied by the web browser. The web browser will
- * only be able to apply a font if it is available on the system which it operates. Provide
- * multiple font families, separated by commas, to indicate the preference in which to apply fonts
- * if they aren't available on the system. The plotly service (at https://plot.ly or on-premise)
- * generates images on a server, where only a select number of fonts are installed and supported.
- * These include "Arial", "Balto", "Courier New", "Droid Sans",, "Droid Serif", "Droid Sans Mono",
- * "Gravitas One", "Old Standard TT", "Open Sans", "Overpass", "PT Sans Narrow", "Raleway", "Times
- * New Roman".
- */
- public enum Family {
- OPEN_SANS("Open Sans"),
- VERDANA("verdana"),
- ARIAL("arial"),
- SANS_SERIF("sans-serif");
-
- private final String value;
-
- Family(String value) {
- this.value = value;
- }
-
- @JsonValue
- @Override
- public String toString() {
- return value;
- }
- }
-
- private final Family fontFamily;
-
- private final int size; // number greater than or equal to 1
-
- private final String color;
-
- private Font(FontBuilder builder) {
- this.color = builder.color;
- this.fontFamily = builder.fontFamily;
- this.size = builder.size;
- }
-
- public static FontBuilder builder() {
- return new FontBuilder();
- }
-
- @Override
- public String asJavascript() {
- return asJSON();
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("size", size);
- context.put("family", fontFamily);
- context.put("color", color);
- return context;
- }
-
- @Override
- protected Map getJSONContext() {
- return getContext();
- }
-
- public static class FontBuilder {
-
- private Family fontFamily = Family.OPEN_SANS;
-
- private int size = 12; // number greater than or equal to 1
-
- private String color = "#444";
-
- private FontBuilder() {}
-
- public FontBuilder size(int size) {
- Preconditions.checkArgument(size >= 1);
- this.size = size;
- return this;
- }
-
- public FontBuilder color(String color) {
- this.color = color;
- return this;
- }
-
- public FontBuilder family(Family family) {
- this.fontFamily = family;
- return this;
- }
-
- public Font build() {
- return new Font(this);
- }
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Font font = (Font) o;
- return size == font.size && fontFamily == font.fontFamily && Objects.equals(color, font.color);
- }
-
- @Override
- public int hashCode() {
-
- return Objects.hash(fontFamily, size, color);
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Gradient.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Gradient.java
deleted file mode 100644
index 1542d8b110..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Gradient.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import com.fasterxml.jackson.annotation.JsonValue;
-import java.util.HashMap;
-import java.util.Map;
-
-public class Gradient extends Component {
-
- /** Defines the gradient type */
- public enum Type {
- RADIAL("radial"),
- HORIZONTAL("horizontal"),
- VERTICAL("vertical"),
- NONE("none");
-
- private final String value;
-
- Type(String value) {
- this.value = value;
- }
-
- @JsonValue
- @Override
- public String toString() {
- return value;
- }
- }
-
- private final Type type;
- private final String[] color;
-
- private Gradient(GradientBuilder builder) {
- this.type = builder.type;
- color = builder.color;
- }
-
- @Override
- public String asJavascript() {
- return asJSON();
- }
-
- @Override
- protected Map getJSONContext() {
- return getContext();
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("type", type);
- if (color != null && color.length > 0) {
- if (color.length > 1) {
- context.put("color", color);
- } else {
- context.put("color", color[0]);
- }
- }
-
- return context;
- }
-
- public static GradientBuilder builder() {
- return new GradientBuilder();
- }
-
- public static class GradientBuilder {
-
- private Type type = Type.NONE;
- private String[] color;
-
- public GradientBuilder type(Type type) {
- this.type = type;
- return this;
- }
-
- /** Sets the marker color to a single value */
- public GradientBuilder color(String color) {
- this.color = new String[1];
- this.color[0] = color;
- return this;
- }
- /** Sets the marker color to an array of color values */
- public GradientBuilder color(String[] color) {
- this.color = color;
- return this;
- }
-
- public Gradient build() {
- return new Gradient(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Grid.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Grid.java
deleted file mode 100644
index 75c57630f4..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Grid.java
+++ /dev/null
@@ -1,250 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import com.google.common.base.Preconditions;
-import java.util.HashMap;
-import java.util.Map;
-
-public class Grid extends Component {
-
- public enum RowOrder {
- ENUMERATED,
- TOP_TO_BOTTOM,
- BOTTOM_TO_TOP;
-
- @Override
- public String toString() {
- return this.name().toLowerCase().replaceAll("_", " ");
- }
- }
-
- public enum XSide {
- BOTTOM,
- BOTTOM_PLOT,
- TOP,
- TOP_PLOT;
-
- @Override
- public String toString() {
- return this.name().toLowerCase().replaceAll("_", " ");
- }
- }
-
- public enum YSide {
- LEFT,
- LEFT_PLOT,
- RIGHT,
- RIGHT_PLOT;
-
- @Override
- public String toString() {
- return this.name().toLowerCase().replaceAll("_", " ");
- }
- }
-
- public enum Pattern {
- INDEPENDENT,
- COUPLED;
-
- @Override
- public String toString() {
- return this.name().toLowerCase();
- }
- }
-
- /**
- * The number of rows in the grid. If you provide a 2D `subplots` array or a `yaxes` array, its
- * length is used as the default. But it's also possible to have a different length, if you want
- * to leave a row at the end for non-cartesian subplots.
- */
- private final int rows;
-
- /**
- * Is the first row the top or the bottom? Note that columns are always enumerated from left to
- * right.
- */
- private final RowOrder rowOrder;
-
- /**
- * If no `subplots`, `xaxes`, or `yaxes` are given but we do have `rows` and `columns`,', we can
- * generate defaults using consecutive axis IDs, in two ways:', '*coupled* gives one x axis per
- * column and one y axis per row.', '*independent* uses a new xy pair for each cell, left-to-right
- * across each row', 'then iterating rows according to `roworder`.
- */
- private final Pattern pattern;
-
- /**
- * The number of columns in the grid. If you provide a 2D `subplots` array, the length of its
- * longest row is used as the default. If you give an `xaxes` array, its length is used as the
- * default. But it's also possible to have a different length, if you want to leave a row at the
- * end for non-cartesian subplots.
- */
- private final int columns;
-
- /**
- * Horizontal space between grid cells, expressed as a fraction of the total width available to
- * one cell. Defaults to 0.1 for coupled-axes grids and 0.2 for independent grids.
- */
- private final double xGap; // number between or equal to 0 and 1
-
- /**
- * Vertical space between grid cells, expressed as a fraction of the total height available to one
- * cell. Defaults to 0.1 for coupled-axes grids and 0.3 for independent grids.
- */
- private final double yGap; // number between or equal to 0 and 1
-
- private final XSide xSide;
-
- private final YSide ySide;
-
- public Grid(GridBuilder gridBuilder) {
- this.rows = gridBuilder.rows;
- this.columns = gridBuilder.columns;
- this.rowOrder = gridBuilder.rowOrder;
- this.xGap = gridBuilder.xGap;
- this.yGap = gridBuilder.yGap;
- this.pattern = gridBuilder.pattern;
- this.xSide = gridBuilder.xSide;
- this.ySide = gridBuilder.ySide;
- }
-
- @Override
- public String asJavascript() {
- return asJavascript("grid_template.html");
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("xGap", xGap);
- context.put("yGap", yGap);
- context.put("rows", rows);
- context.put("columns", columns);
- context.put("rowOrder", rowOrder);
- context.put("pattern", pattern);
- context.put("xSide", xSide);
- context.put("ySide", ySide);
- return context;
- }
-
- public static GridBuilder builder() {
- return new GridBuilder();
- }
-
- public static class GridBuilder {
-
- private int rows = 80;
-
- private int columns = 80;
-
- private double xGap = 100;
-
- private double yGap = 80;
-
- private XSide xSide = XSide.BOTTOM;
-
- private YSide ySide = YSide.LEFT;
-
- private RowOrder rowOrder = RowOrder.TOP_TO_BOTTOM;
- private Pattern pattern = Pattern.COUPLED;
-
- private GridBuilder() {}
-
- /**
- * The number of rows in the grid. If you provide a 2D `subplots` array or a `yaxes` array, its
- * length is used as the default. But it's also possible to have a different length, if you want
- * to leave a row at the end for non-cartesian subplots.
- *
- * @param rows an integer greater than or equal to 1
- * @return this GridBuilder
- */
- public GridBuilder rows(int rows) {
- Preconditions.checkArgument(rows >= 1);
- this.rows = rows;
- return this;
- }
-
- /**
- * The number of columns in the grid. If you provide a 2D `subplots` array, the length of its
- * longest row is used as the default. If you give an `xaxes` array, its length is used as the
- * default. But it's also possible to have a different length, if you want to leave a row at the
- * end for non-cartesian subplots.
- *
- * @param columns an integer greater than or equal to 1
- * @return this GridBuilder
- */
- public GridBuilder columns(int columns) {
- Preconditions.checkArgument(rows >= 1);
- this.columns = columns;
- return this;
- }
-
- /**
- * Horizontal space between grid cells, expressed as a fraction of the total width available to
- * one cell. Defaults to 0.1 for coupled-axes grids and 0.2 for independent grids.
- *
- * @param xGap a double >= 0 && <= 1
- * @return this GridBuilder
- */
- public GridBuilder xGap(double xGap) {
- Preconditions.checkArgument(xGap >= 0 && xGap <= 1);
- this.xGap = xGap;
- return this;
- }
-
- /**
- * Vertical space between grid cells, expressed as a fraction of the total height available to
- * one cell. Defaults to 0.1 for coupled-axes grids and 0.3 for independent grids.
- *
- * @param yGap a double >= 0 && <= 1
- * @return this GridBuilder
- */
- public GridBuilder yGap(double yGap) {
- Preconditions.checkArgument(yGap >= 0 && yGap <= 1);
- this.yGap = yGap;
- return this;
- }
-
- /**
- * Sets where the y axis labels and titles go. "left" means the very left edge of the grid.
- * "left plot" is the leftmost plot that each y axis is used in. "right" and "right plot" are
- * similar.
- */
- public GridBuilder ySide(YSide ySide) {
- this.ySide = ySide;
- return this;
- }
-
- /**
- * Sets where the x axis labels and titles go. "bottom" means the very bottom of the grid.
- * "bottom plot" is the lowest plot that each x axis is used in. "top" and "top plot" are
- * similar.
- */
- public GridBuilder xSide(XSide xSide) {
- this.xSide = xSide;
- return this;
- }
-
- public GridBuilder rowOrder(RowOrder rowOrder) {
- this.rowOrder = rowOrder;
- return this;
- }
-
- /**
- * If no `subplots`, `xaxes`, or `yaxes` are given but we do have `rows` and `columns`,', we can
- * generate defaults using consecutive axis IDs, in two ways:', '*coupled* gives one x axis per
- * column and one y axis per row.', '*independent* uses a new xy pair for each cell,
- * left-to-right across each row', 'then iterating rows according to `roworder`.
- *
- * @param pattern defaults to COUPLED
- * @return this GridBuilder
- */
- public GridBuilder pattern(Pattern pattern) {
- this.pattern = pattern;
- return this;
- }
-
- public Grid build() {
- return new Grid(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/HoverLabel.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/HoverLabel.java
deleted file mode 100644
index 5ac1ae024d..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/HoverLabel.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class HoverLabel extends Component {
-
- /** Sets the background color of all hover labels on graph */
- private final String bgColor;
-
- /** Sets the border color of all hover labels on graph. */
- private final String borderColor;
-
- /** Sets the default hover label font used by all traces on the graph. */
- private final Font font;
-
- /**
- * Sets the default length (in number of characters) of the trace name in the hover labels for all
- * traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and
- * an integer >3 will show the whole name if it is less than that many characters, but if it is
- * longer, will truncate to `namelength - 3` characters and add an ellipsis.
- */
- private final int nameLength;
-
- HoverLabel(HoverLabelBuilder builder) {
- this.bgColor = builder.bgColor;
- this.borderColor = builder.borderColor;
- this.font = builder.font;
- this.nameLength = builder.nameLength;
- }
-
- public static HoverLabelBuilder builder() {
- return new HoverLabelBuilder();
- }
-
- @Override
- public String asJavascript() {
- return asJSON();
- }
-
- @Override
- protected Map getJSONContext() {
- Map context = new HashMap<>();
- context.put("bgcolor", bgColor);
- context.put("bordercolor", borderColor);
- context.put("namelength", nameLength);
- context.put("font", font.getJSONContext());
- return context;
- }
-
- @Override
- protected Map getContext() {
- return getJSONContext();
- }
-
- public static class HoverLabelBuilder {
-
- /** Sets the background color of all hover labels on graph */
- private String bgColor = "";
-
- /** Sets the border color of all hover labels on graph. */
- private String borderColor = "";
-
- /** Sets the default hover label font used by all traces on the graph. */
- private Font font;
-
- /**
- * Sets the default length (in number of characters) of the trace name in the hover labels for
- * all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters,
- * and an integer >3 will show the whole name if it is less than that many characters, but if it
- * is longer, will truncate to `namelength - 3` characters and add an ellipsis.
- */
- private int nameLength = 15;
-
- public HoverLabel build() {
- return new HoverLabel(this);
- }
-
- public HoverLabelBuilder nameLength(int nameLength) {
- this.nameLength = nameLength;
- return this;
- }
-
- public HoverLabelBuilder font(Font font) {
- this.font = font;
- return this;
- }
-
- public HoverLabelBuilder borderColor(String borderColor) {
- this.borderColor = borderColor;
- return this;
- }
-
- public HoverLabelBuilder bgColor(String bgColor) {
- this.bgColor = bgColor;
- return this;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Layout.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Layout.java
deleted file mode 100644
index fdc2571f5b..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Layout.java
+++ /dev/null
@@ -1,494 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import com.mitchellbosecke.pebble.PebbleEngine;
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.HashMap;
-import java.util.Map;
-import tech.tablesaw.plotly.components.threeD.Scene;
-
-public class Layout {
-
- private static final int DEFAULT_HEIGHT = 600;
- private static final int DEFAULT_WIDTH = 800;
- private static final String DEFAULT_TITLE = "";
- private static final String DEFAULT_PAPER_BG_COLOR = "#fff";
- private static final String DEFAULT_PLOT_BG_COLOR = "#fff";
- private static final String DEFAULT_DECIMAL_SEPARATOR = ".";
- private static final String DEFAULT_THOUSANDS_SEPARATOR = ",";
- private static final boolean DEFAULT_AUTO_SIZE = false;
- private static final HoverMode DEFAULT_HOVER_MODE = HoverMode.FALSE;
- private static final DragMode DEFAULT_DRAG_MODE = DragMode.ZOOM;
- private static final int DEFAULT_HOVER_DISTANCE = 20;
- private static final BarMode DEFAULT_BAR_MODE = BarMode.GROUP;
- private static final Font DEFAULT_TITLE_FONT = Font.builder().build();
- private static final Font DEFAULT_FONT = Font.builder().build();
-
- private final PebbleEngine engine = TemplateUtils.getNewEngine();
- private final Scene scene;
-
- /** Determines the mode of hover interactions. */
- public enum HoverMode {
- X("x"),
- Y("y"),
- CLOSEST("closest"),
- FALSE("false");
-
- private final String value;
-
- HoverMode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /**
- * Determines the display mode for bars when you have multiple bar traces. This also applies to
- * histogram bars. Group is the default.
- *
- * With "stack", the bars are stacked on top of one another. With "relative", the bars are
- * stacked on top of one another, but with negative values below the axis, positive values above.
- * With "group", the bars are plotted next to one another centered around the shared location.
- * With "overlay", the bars are plotted over one another, provide an "opacity" to see through the
- * overlaid bars.
- */
- public enum BarMode {
- STACK("stack"),
- GROUP("group"),
- OVERLAY("overlay"),
- RELATIVE("relative");
-
- private final String value;
-
- BarMode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /**
- * Determines the mode of drag interactions. "select" and "lasso" apply only to scatter traces
- * with markers or text. "orbit" and "turntable" apply only to 3D scenes.
- */
- public enum DragMode {
- ZOOM("zoom"),
- PAN("pan"),
- SELECT("select"),
- LASSO("lasso"),
- ORBIT("orbit"),
- TURNTABLE("turntable");
-
- private final String value;
-
- DragMode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /** The global font */
- private final Font font;
-
- /*
- * The plot title
- */
- private final String title;
-
- /** Sets the title font */
- private final Font titleFont;
-
- /**
- * Determines whether or not a layout width or height that has been left undefined by the user is
- * initialized on each re-layout. Note that, regardless of this attribute, an undefined layout
- * width or height is always initialized on the first call to plot.
- */
- private final boolean autoSize;
-
- private final boolean heightSet;
- private final boolean widthSet;
-
- /** The width of the plot in pixels */
- private final int width;
-
- /** The height of the plot in pixels */
- private final int height;
-
- /** Sets the margins around the plot */
- private final Margin margin;
-
- /** Sets the color of paper where the graph is drawn. */
- private final String paperBgColor;
-
- /** Sets the color of plotting area in-between x and y axes. */
- private final String plotBgColor;
-
- /** Sets the decimal. For example, "." puts a '.' before decimals */
- private final String decimalSeparator;
-
- /** Sets the separator. For example, a " " puts a space between thousands. */
- private final String thousandsSeparator;
-
- /** Determines whether or not a legend is drawn. */
- private final Boolean showLegend;
-
- /** Determines the mode of hover interactions. */
- private final HoverMode hoverMode;
-
- /**
- * Determines the mode of drag interactions. "select" and "lasso" apply only to scatter traces
- * with markers or text. "orbit" and "turntable" apply only to 3D scenes.
- */
- private final DragMode dragMode;
-
- /**
- * Sets the default distance (in pixels) to look for data to add hover labels (-1 means no cutoff,
- * 0 means no looking for data). This is only a real distance for hovering on point-like objects,
- * like scatter points. For area-like objects (bars, scatter fills, etc) hovering is on inside the
- * area and off outside, but these objects will not supersede hover on point-like objects in case
- * of conflict.
- */
- private final int hoverDistance;
-
- private final Axis xAxis;
-
- private final Axis yAxis;
-
- private final Axis yAxis2;
- private final Axis yAxis3;
- private final Axis yAxis4;
-
- private final Axis zAxis;
-
- private final Grid grid;
-
- private final BarMode barMode;
-
- private Layout(LayoutBuilder builder) {
- this.title = builder.title;
- this.autoSize = builder.autoSize;
- this.widthSet = builder.widthSet;
- this.heightSet = builder.heightSet;
- this.decimalSeparator = builder.decimalSeparator;
- this.thousandsSeparator = builder.thousandsSeparator;
- this.dragMode = builder.dragMode;
- this.font = builder.font;
- this.titleFont = builder.titleFont;
- this.hoverDistance = builder.hoverDistance;
- this.hoverMode = builder.hoverMode;
- this.margin = builder.margin;
- this.height = builder.height;
- this.width = builder.width;
- this.xAxis = builder.xAxis;
- this.yAxis = builder.yAxis;
- this.zAxis = builder.zAxis;
- this.yAxis2 = builder.yAxis2;
- this.yAxis3 = builder.yAxis3;
- this.yAxis4 = builder.yAxis4;
- this.paperBgColor = builder.paperBgColor;
- this.plotBgColor = builder.plotBgColor;
- this.showLegend = builder.showLegend;
- this.barMode = builder.barMode;
- this.scene = builder.scene;
- this.grid = builder.grid;
- }
-
- public String getTitle() {
- return title;
- }
-
- public String asJavascript() {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
- try {
- compiledTemplate = engine.getTemplate("layout_template.html");
- compiledTemplate.evaluate(writer, getContext());
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- protected Map getContext() {
- Map context = new HashMap<>();
- if (!title.equals(DEFAULT_TITLE)) context.put("title", title);
- if (!titleFont.equals(DEFAULT_TITLE_FONT)) context.put("titlefont", titleFont);
- if (!font.equals(DEFAULT_FONT)) context.put("font", font);
- if (autoSize != DEFAULT_AUTO_SIZE) {
- context.put("autosize", autoSize);
- // since autosize is true, we assume the default width / height values are not wanted, not
- // serialize them, and let Plotly compute them
- if (widthSet) {
- context.put("width", width);
- }
- if (heightSet) {
- context.put("height", height);
- }
- } else {
- context.put("width", width);
- context.put("height", height);
- }
- if (hoverDistance != DEFAULT_HOVER_DISTANCE) context.put("hoverdistance", hoverDistance);
- if (!hoverMode.equals(DEFAULT_HOVER_MODE)) context.put("hoverMode", hoverMode);
- if (margin != null) {
- context.put("margin", margin);
- }
- if (!decimalSeparator.equals(DEFAULT_DECIMAL_SEPARATOR))
- context.put("decimalSeparator", decimalSeparator);
- if (!thousandsSeparator.equals(DEFAULT_THOUSANDS_SEPARATOR))
- context.put("thousandsSeparator", thousandsSeparator);
- if (!dragMode.equals(DEFAULT_DRAG_MODE)) context.put("dragmode", dragMode);
- if (showLegend != null) {
- context.put("showlegend", showLegend);
- }
- if (!plotBgColor.equals(DEFAULT_PLOT_BG_COLOR)) context.put("plotbgcolor", plotBgColor);
- if (!paperBgColor.equals(DEFAULT_PAPER_BG_COLOR)) context.put("paperbgcolor", paperBgColor);
- if (!barMode.equals(DEFAULT_BAR_MODE)) context.put("barMode", barMode);
- if (scene != null) context.put("scene", scene);
-
- if (xAxis != null) {
- context.put("xAxis", xAxis);
- }
- if (yAxis != null) {
- context.put("yAxis", yAxis);
- }
- if (yAxis2 != null) {
- context.put("yAxis2", yAxis2);
- }
- if (yAxis3 != null) {
- context.put("yAxis3", yAxis3);
- }
- if (yAxis4 != null) {
- context.put("yAxis4", yAxis4);
- }
- if (zAxis != null) { // TODO: remove? It's in scene for 3d scatters at least.
- context.put("zAxis", zAxis);
- }
- if (grid != null) {
- context.put("grid", grid);
- }
- return context;
- }
-
- public static LayoutBuilder builder() {
- return new LayoutBuilder();
- }
-
- public static LayoutBuilder builder(String title) {
- return Layout.builder().title(title).height(DEFAULT_HEIGHT).width(DEFAULT_WIDTH);
- }
-
- public static LayoutBuilder builder(String title, String xTitle) {
- return Layout.builder(title).xAxis(Axis.builder().title(xTitle).build());
- }
-
- public static LayoutBuilder builder(String title, String xTitle, String yTitle) {
- return Layout.builder(title, xTitle).yAxis(Axis.builder().title(yTitle).build());
- }
-
- public static class LayoutBuilder {
-
- /** The global font */
- private final Font font = DEFAULT_FONT;
-
- /** The plot title */
- private String title = "";
-
- /** Sets the title font */
- private Font titleFont = DEFAULT_TITLE_FONT;
-
- /**
- * Determines whether or not a layout width or height that has been left undefined by the user
- * is initialized on each relayout. Note that, regardless of this attribute, an undefined layout
- * width or height is always initialized on the first call to plot.
- */
- private boolean autoSize = false;
-
- private boolean widthSet = false;
- private boolean heightSet = false;
-
- /** The width of the plot in pixels */
- private int width = 700;
-
- /** The height of the plot in pixels */
- private int height = 450;
-
- /** Sets the margins around the plot */
- private Margin margin;
-
- /** Sets the color of paper where the graph is drawn. */
- private String paperBgColor = DEFAULT_PAPER_BG_COLOR;
-
- /** Sets the color of plotting area in-between x and y axes. */
- private String plotBgColor = DEFAULT_PLOT_BG_COLOR;
-
- /** Sets the decimal. For example, "." puts a '.' before decimals */
- private final String decimalSeparator = DEFAULT_DECIMAL_SEPARATOR;
-
- /** Sets the separator. For example, a " " puts a space between thousands. */
- private final String thousandsSeparator = DEFAULT_THOUSANDS_SEPARATOR;
-
- /** Determines whether or not a legend is drawn. */
- private Boolean showLegend = null;
-
- /** Determines the mode of hover interactions. */
- private HoverMode hoverMode = DEFAULT_HOVER_MODE;
-
- /**
- * Determines the mode of drag interactions. "select" and "lasso" apply only to scatter traces
- * with markers or text. "orbit" and "turntable" apply only to 3D scenes.
- */
- private final DragMode dragMode = DEFAULT_DRAG_MODE;
-
- /**
- * Sets the default distance (in pixels) to look for data to add hover labels (-1 means no
- * cutoff, 0 means no looking for data). This is only a real distance for hovering on point-like
- * objects, like scatter points. For area-like objects (bars, scatter fills, etc) hovering is on
- * inside the area and off outside, but these objects will not supersede hover on point-like
- * objects in case of conflict.
- */
- private int hoverDistance = DEFAULT_HOVER_DISTANCE; // greater than or equal to -1
-
- private Axis xAxis;
-
- private Axis yAxis;
-
- private Axis yAxis2;
- private Axis yAxis3;
- private Axis yAxis4;
-
- private Axis zAxis;
-
- private BarMode barMode = DEFAULT_BAR_MODE;
-
- private Scene scene;
-
- /** Define grid to use when creating subplots */
- private Grid grid;
-
- public Layout build() {
- return new Layout(this);
- }
-
- private LayoutBuilder() {}
-
- public LayoutBuilder title(String title) {
- this.title = title;
- return this;
- }
-
- public LayoutBuilder titleFont(Font titleFont) {
- this.titleFont = titleFont;
- return this;
- }
-
- public LayoutBuilder barMode(BarMode barMode) {
- this.barMode = barMode;
- return this;
- }
-
- public LayoutBuilder margin(Margin margin) {
- this.margin = margin;
- return this;
- }
-
- public LayoutBuilder scene(Scene scene) {
- this.scene = scene;
- return this;
- }
-
- public LayoutBuilder hoverMode(HoverMode hoverMode) {
- this.hoverMode = hoverMode;
- return this;
- }
-
- public LayoutBuilder hoverDistance(int distance) {
- this.hoverDistance = distance;
- return this;
- }
-
- public LayoutBuilder showLegend(boolean showLegend) {
- this.showLegend = showLegend;
- return this;
- }
-
- public LayoutBuilder height(int height) {
- this.height = height;
- this.heightSet = true;
- return this;
- }
-
- public LayoutBuilder width(int width) {
- this.width = width;
- this.widthSet = true;
- return this;
- }
-
- public LayoutBuilder autosize(boolean autosize) {
- this.autoSize = autosize;
- return this;
- }
-
- public LayoutBuilder xAxis(Axis axis) {
- this.xAxis = axis;
- return this;
- }
-
- public LayoutBuilder yAxis(Axis axis) {
- this.yAxis = axis;
- return this;
- }
-
- public LayoutBuilder yAxis2(Axis axis) {
- this.yAxis2 = axis;
- return this;
- }
-
- public LayoutBuilder yAxis3(Axis axis) {
- this.yAxis3 = axis;
- return this;
- }
-
- public LayoutBuilder yAxis4(Axis axis) {
- this.yAxis4 = axis;
- return this;
- }
-
- public LayoutBuilder zAxis(Axis axis) {
- this.zAxis = axis;
- return this;
- }
-
- public LayoutBuilder plotBgColor(String color) {
- this.plotBgColor = color;
- return this;
- }
-
- public LayoutBuilder paperBgColor(String color) {
- this.paperBgColor = color;
- return this;
- }
-
- public LayoutBuilder grid(Grid grid) {
- this.grid = grid;
- return this;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Line.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Line.java
deleted file mode 100644
index 2b1f331f1a..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Line.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import com.fasterxml.jackson.annotation.JsonValue;
-import com.google.common.base.Preconditions;
-import java.util.HashMap;
-import java.util.Map;
-
-public class Line extends Component {
-
- public enum Dash {
- SOLID("solid"),
- DASH("dash"),
- DOT("dot"),
- LONG_DASH("longdash"),
- LONG_DASH_DOT("longdashdot"),
- DASH_DOT("dashdot");
-
- private final String value;
-
- Dash(String value) {
- this.value = value;
- }
-
- @JsonValue
- @Override
- public String toString() {
- return value;
- }
- }
-
- private final String color;
- private final double width;
- private final double smoothing;
- private final Shape shape;
- private final Dash dash;
- private final boolean simplify;
-
- private Line(LineBuilder builder) {
- this.color = builder.color;
- this.shape = builder.shape;
- this.smoothing = builder.smoothing;
- this.dash = builder.dash;
- this.simplify = builder.simplify;
- this.width = builder.width;
- }
-
- @Override
- public Map getContext() {
- Map context = new HashMap<>();
- context.put("color", color);
- context.put("width", width);
- context.put("shape", shape);
- context.put("smoothing", smoothing);
- context.put("dash", dash);
- context.put("simplify", simplify);
- return context;
- }
-
- @Override
- protected Map getJSONContext() {
- return getContext();
- }
-
- @Override
- public String asJavascript() {
- return asJSON();
- }
-
- /**
- * Determines the shape of the line Linear (i.e. straight lines) is the default. With "spline" the
- * lines are drawn using spline interpolation. The other available values correspond to step-wise
- * line shapes.
- */
- public enum Shape {
- LINEAR("linear"),
- SPLINE("spline"),
- HV("hv"),
- VH("vh"),
- HVH("hvh"),
- VHV("vhv");
-
- private final String value;
-
- Shape(String value) {
- this.value = value;
- }
-
- @JsonValue
- @Override
- public String toString() {
- return value;
- }
- }
-
- public static LineBuilder builder() {
- return new LineBuilder();
- }
-
- public static class LineBuilder {
- private String color;
- private double width = 2;
- private double smoothing = 1;
- private Shape shape = Shape.LINEAR;
- private Dash dash = Dash.SOLID;
- private boolean simplify = true;
-
- /** Sets the line color */
- public LineBuilder color(String color) {
- this.color = color;
- return this;
- }
-
- public LineBuilder width(double width) {
- Preconditions.checkArgument(width >= 0, "Line width must be >= 0.");
- this.width = width;
- return this;
- }
-
- /**
- * Sets the smoothing parameter
- *
- * @param smoothing a value between 0 and 1.3, inclusive
- */
- public LineBuilder smoothing(double smoothing) {
- Preconditions.checkArgument(
- smoothing >= 0 && smoothing <= 1.3,
- "Smoothing parameter must be between 0 and 1.3, inclusive.");
- this.smoothing = smoothing;
- return this;
- }
-
- public LineBuilder dash(Dash dash) {
- this.dash = dash;
- return this;
- }
-
- /**
- * Simplifies lines by removing nearly-collinear points. When transitioning lines, it may be
- * desirable to disable this so that the number of points along the resulting SVG path is
- * unaffected.
- *
- * @param b true if you want to simplify. True is the default
- */
- public LineBuilder simplify(boolean b) {
- this.simplify = b;
- return this;
- }
-
- public LineBuilder shape(Shape shape) {
- this.shape = shape;
- return this;
- }
-
- public Line build() {
- return new Line(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Margin.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Margin.java
deleted file mode 100644
index 8bcfdfecc1..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Margin.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/** The margin for the plot */
-public class Margin extends Component {
-
- /** The left margin, in px */
- private final int left;
-
- /** The right margin, in px */
- private final int right;
-
- /** The top margin, in px */
- private final int top;
-
- /** The bottom margin, in px */
- private final int bottom;
-
- /** The amount of padding between the plotting area and the axis lines, in px */
- private final int pad;
-
- private final boolean autoExpand;
-
- public static MarginBuilder builder() {
- return new MarginBuilder();
- }
-
- private Margin(MarginBuilder builder) {
- this.left = builder.left;
- this.right = builder.right;
- this.top = builder.top;
- this.bottom = builder.bottom;
- this.pad = builder.pad;
- this.autoExpand = builder.autoExpand;
- }
-
- @Override
- public String asJavascript() {
- return asJSON();
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("t", top);
- context.put("b", bottom);
- context.put("r", right);
- context.put("l", left);
- context.put("pad", pad);
- context.put("autoexpand", autoExpand);
- return context;
- }
-
- @Override
- protected Map getJSONContext() {
- return getContext();
- }
-
- public static class MarginBuilder {
- /** The left margin, in px */
- private int left = 80;
-
- /** The right margin, in px */
- private int right = 80;
-
- /** The top margin, in px */
- private int top = 100;
-
- /** The bottom margin, in px */
- private int bottom = 80;
-
- /** The amount of padding between the plotting area and the axis lines, in px */
- private int pad = 0;
-
- private boolean autoExpand = true;
-
- private MarginBuilder() {}
-
- public MarginBuilder top(int top) {
- this.top = top;
- return this;
- }
-
- public MarginBuilder bottom(int bottom) {
- this.bottom = bottom;
- return this;
- }
-
- public MarginBuilder left(int left) {
- this.left = left;
- return this;
- }
-
- public MarginBuilder right(int right) {
- this.right = right;
- return this;
- }
-
- public MarginBuilder padding(int padding) {
- this.pad = padding;
- return this;
- }
-
- public MarginBuilder autoExpand(boolean autoExpand) {
- this.autoExpand = autoExpand;
- return this;
- }
-
- public Margin build() {
- return new Margin(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Marker.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Marker.java
deleted file mode 100644
index 69e0b906c7..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Marker.java
+++ /dev/null
@@ -1,317 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import static tech.tablesaw.plotly.components.Marker.SizeMode.DIAMETER;
-
-import com.google.common.base.Preconditions;
-import java.util.HashMap;
-import java.util.Map;
-import tech.tablesaw.plotly.Utils;
-
-public class Marker extends Component {
-
- public enum SizeMode {
- AREA("area"),
- DIAMETER("diameter");
-
- private final String value;
-
- SizeMode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /** Predefined palettes */
- public enum Palette {
- GREYS("Greys"),
- GREENS("Greens"),
- YL_GN_BU("YlGnBu"),
- YL_OR_RD("YlOrRd"),
- BLUE_RED("Bluered"),
- RD_BU("RdBu"),
- REDS("Reds"),
- BLUES("Blues"),
- PICNIC("Picnic"),
- RAINBOW("Rainbow"),
- PORTLAND("Portland"),
- JET("Jet"),
- HOT("Hot"),
- BLACKBODY("Blackbody"),
- EARTH("Earth"),
- ELECTRIC("Electric"),
- VIRIDIS("Viridis"),
- CIVIDIS("Cividis");
-
- private final String value;
-
- Palette(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- private static final boolean DEFAULT_C_AUTO = true;
- private static final boolean DEFAULT_AUTO_COLOR_SCALE = true;
- private static final boolean DEFAULT_SHOW_SCALE = false;
- private static final boolean DEFAULT_REVERSE_SCALE = false;
- private static final double DEFAULT_OPACITY = 1.0;
- private static final SizeMode DEFAULT_SIZE_MODE = DIAMETER;
-
- private final double[] size;
- private final Line line;
- private final String[] color;
- private final Palette colorScalePalette;
- private final boolean cAuto;
- private final double cMin;
- private final double cMax;
- private final boolean autoColorScale;
- private final boolean showScale;
- private final boolean reverseScale;
- private final double opacity;
- private final Symbol symbol;
- private final SizeMode sizeMode;
- private final Gradient gradient;
- private final double[] colorArray;
- private final ColorBar colorBar;
-
- public static MarkerBuilder builder() {
- return new MarkerBuilder();
- }
-
- private Marker(MarkerBuilder builder) {
- symbol = builder.symbol;
- line = builder.line;
- size = builder.size;
- color = builder.color;
- colorArray = builder.colorArray;
- gradient = builder.gradient;
- colorScalePalette = builder.colorScalePalette;
- cAuto = builder.cAuto;
- cMin = builder.cMin;
- cMax = builder.cMax;
- autoColorScale = builder.autoColorScale;
- showScale = builder.showScale;
- reverseScale = builder.reverseScale;
- opacity = builder.opacity;
- sizeMode = builder.sizeMode;
- colorBar = builder.colorBar;
- }
-
- @Override
- public String asJavascript() {
- return asJavascript("marker_template.html");
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("size", size.length == 1 ? size[0] : Utils.dataAsString(size));
- if (colorScalePalette != null) {
- context.put("colorScale", colorScalePalette);
- }
- if (cAuto != DEFAULT_C_AUTO) context.put("cAuto", cAuto);
- if (color != null && color.length > 0) {
- if (color.length > 1) {
- context.put("color", Utils.dataAsString(color));
- context.put("cMin", cMin);
- context.put("cMax", cMax);
- } else {
- context.put("color", Utils.quote(color[0]));
- }
- } else if (colorArray != null) {
- context.put("color", Utils.dataAsString(colorArray));
- }
- if (line != null) context.put("line", line.asJavascript());
- if (autoColorScale != DEFAULT_AUTO_COLOR_SCALE) context.put("autoColorScale", autoColorScale);
- if (showScale != DEFAULT_SHOW_SCALE) context.put("showScale", showScale);
- if (reverseScale != DEFAULT_REVERSE_SCALE) context.put("reverseScale", reverseScale);
- if (opacity != DEFAULT_OPACITY) context.put("opacity", opacity);
- if (sizeMode != DEFAULT_SIZE_MODE) context.put("sizeMode", sizeMode);
- if (gradient != null) context.put("gradient", gradient);
- if (colorBar != null) context.put("colorBar", colorBar.asJavascript());
- context.put("symbol", symbol);
- return context;
- }
-
- public static class MarkerBuilder {
-
- private double[] size = {6};
-
- // Note, a marker can have a color, or color array, but not both
- private String[] color;
- private double[] colorArray;
-
- private Gradient gradient;
- private Palette colorScalePalette;
- private boolean cAuto = DEFAULT_C_AUTO;
- private double cMin;
- private double cMax;
- private Line line;
- private boolean autoColorScale = DEFAULT_AUTO_COLOR_SCALE;
- private boolean showScale = DEFAULT_SHOW_SCALE;
- private boolean reverseScale = DEFAULT_REVERSE_SCALE;
- private double opacity = DEFAULT_OPACITY;
- private Symbol symbol;
- private SizeMode sizeMode = DEFAULT_SIZE_MODE;
- private ColorBar colorBar;
-
- public MarkerBuilder size(double... size) {
- String errorMessage = "All sizes in size array must be greater than 0.";
- for (double d : size) {
- Preconditions.checkArgument(d > 0, errorMessage);
- }
- this.size = size;
- return this;
- }
-
- /**
- * Has an effect only if `marker.color` is set to a numerical array and `cmin`, `cmax` are also
- * set. In this case, it controls whether the range of colors in `colorscale` is mapped to the
- * range of values in the `color` array (`cauto: True`), or the `cmin`/`cmax` values (`cauto:
- * False`).
- *
- * Defaults to `False` when `cmin`, `cmax` are set by the user.
- */
- public MarkerBuilder cAuto(boolean b) {
- this.cAuto = b;
- return this;
- }
-
- /**
- * Has an effect only if `marker.color` is set to a numerical array. Reverses the color mapping
- * if True (`cmin` will correspond to the last color in the array and `cmax` will correspond to
- * the first color).
- */
- public MarkerBuilder reverseScale(boolean b) {
- this.reverseScale = b;
- return this;
- }
-
- /** Sets an outline around the marker */
- public MarkerBuilder line(Line line) {
- this.line = line;
- return this;
- }
-
- /** Sets a gradient for the marker */
- public MarkerBuilder gradient(Gradient gradient) {
- this.gradient = gradient;
- return this;
- }
-
- /** Sets the ColorBar to display the scale for the marker */
- public MarkerBuilder colorBar(ColorBar colorBar) {
- this.colorBar = colorBar;
- return this;
- }
-
- /**
- * Has an effect only if `marker.color` is set to a numerical array. Determines whether the
- * colorscale is a default palette (`autocolorscale: True`) or the palette determined by
- * `marker.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is True, the
- * default palette will be chosen according to whether numbers in the `color` array are all
- * positive, all negative or mixed.
- *
- *
Defaults to true
- */
- public MarkerBuilder autoColorScale(boolean b) {
- this.autoColorScale = b;
- return this;
- }
-
- /**
- * Has an effect only if `marker.color` is set to a numerical array. Sets the lower and upper
- * bound of the color domain. Values should be associated to the `marker.color` array index
- */
- public MarkerBuilder cMinAndMax(double min, double max) {
- this.cMin = min;
- this.cMax = max;
- return this;
- }
-
- /**
- * Has an effect only if `marker.color` is set to a numerical array. Determines whether or not a
- * colorbar is displayed.
- */
- public MarkerBuilder showScale(boolean b) {
- this.showScale = b;
- return this;
- }
-
- /**
- * Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The
- * colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba,
- * hex, hsl, hsv, or named color string.
- *
- *
At minimum, a mapping for the lowest (0) and highest (1) values are required. For example,
- * `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`.
- *
- *
To control the bounds of the colorscale in color space, use `marker.cmin` and
- * `marker.cmax`.
- */
- public MarkerBuilder colorScale(Palette palette) {
- this.colorScalePalette = palette;
- return this;
- }
-
- /** Sets the opacity. Value must be between 0 and 1 inclusive */
- public MarkerBuilder opacity(double opacity) {
- Preconditions.checkArgument(opacity >= 0 && opacity <= 1);
- this.opacity = opacity;
- return this;
- }
-
- /** Sets the marker color to a single value */
- public MarkerBuilder color(String color) {
- this.color = new String[1];
- this.color[0] = color;
- this.colorArray = null;
- return this;
- }
-
- /** Sets the marker color to an array of color values */
- public MarkerBuilder color(String[] color) {
- this.color = color;
- this.colorArray = null;
- return this;
- }
-
- /**
- * Sets the marker color to an array of numeric values for use when a color scale is provided
- */
- public MarkerBuilder color(double[] color) {
- this.colorArray = color;
- this.color = null;
- return this;
- }
-
- /** Sets the symbol for the marker */
- public MarkerBuilder symbol(Symbol symbol) {
- this.symbol = symbol;
- return this;
- }
-
- /**
- * Sets the size mode for the marker
- *
- *
Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which
- * the data in `size` is converted to pixels, either as area or the diameter
- */
- public MarkerBuilder sizeMode(SizeMode sizeMode) {
- this.sizeMode = sizeMode;
- return this;
- }
-
- public Marker build() {
- return new Marker(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Page.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Page.java
deleted file mode 100644
index 77d5183066..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Page.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/** Represents an entire html page that contains a figure */
-public class Page extends Component {
-
- private final Figure figure;
- private final String divName;
-
- private final String plotlyJsLocation;
-
- private Page(PageBuilder builder) {
- this.figure = builder.figure;
- this.divName = builder.divName;
- this.plotlyJsLocation = builder.plotlyJsLocation;
- }
-
- @Override
- public String asJavascript() {
- return asJavascript("page_template.html");
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("figureScript", figure.asJavascript(divName));
- context.put("targetDiv", figure.divString(divName));
- context.put("figureTitle", figure.getLayout() != null ? figure.getLayout().getTitle() : null);
- context.put("plotlyJsLocation", plotlyJsLocation);
- return context;
- }
-
- public static PageBuilder pageBuilder(Figure figure, String divName) {
- return new PageBuilder(figure, divName);
- }
-
- public static class PageBuilder {
-
- private final Figure figure;
- private final String divName;
-
- private String plotlyJsLocation = null;
-
- public PageBuilder(Figure figure, String divName) {
- this.figure = figure;
- this.divName = divName;
- }
-
- public Page build() {
- return new Page(this);
- }
-
- public PageBuilder plotlyJsLocation(String location) {
- this.plotlyJsLocation = location;
- return this;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Symbol.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Symbol.java
deleted file mode 100644
index 7186c4dd0b..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Symbol.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-/**
- * symbol ( "circle-open" | "circle-dot" | "circle-open-dot" "square-open" | "square-dot" |
- * "square-open-dot" "diamond-open" | "diamond-dot" | "diamond-open-dot" "cross-open" | "cross-dot"
- * | "cross-open-dot" "x-open" | "x-dot" | "x-open-dot" "triangle-up-open" | "triangle-up-dot" |
- * "triangle-up-open-dot" "triangle-down-open" | "triangle-down-dot" | "triangle-down-open-dot"
- * "triangle-left-open" | "triangle-left-dot" | "triangle-left-open-dot" "triangle-right-open" |
- * "triangle-right-dot" | "triangle-right-open-dot" "triangle-ne-open" | "triangle-ne-dot" |
- * "triangle-ne-open-dot" "triangle-se-open" | "triangle-se-dot" | "triangle-se-open-dot"
- * "triangle-sw-open" | "triangle-sw-dot" | "triangle-sw-open-dot" "triangle-nw-open" |
- * "triangle-nw-dot" | "triangle-nw-open-dot"
- *
- * "pentagon-open" | "pentagon-dot | "pentagon-open-dot" "hexagon-open" | "hexagon-dot" |
- * "hexagon-open-dot" "hexagon2-open" | "hexagon2-dot" | "hexagon2-open-dot" "octagon-open" |
- * "octagon-dot" | "octagon-open-dot" "star-open" | "star-dot" | "star-open-dot" "hexagram-open" |
- * "hexagram-dot" | "hexagram-open-dot" "star-triangle-up-open" | "star-triangle-up-dot" |
- * "star-triangle-up-open-dot" "star-triangle-down-open" | "star-triangle-down-dot" |
- * "star-triangle-down-open-dot" "star-square-open" | "star-square-dot" | "star-square-open-dot"
- * "star-diamond-open" | "star-diamond-dot" | "star-diamond-open-dot"
- *
- *
"diamond-tall-open" | "diamond-tall-dot" | "diamond-tall-open-dot" "diamond-wide-open" |
- * "diamond-wide-dot" | "diamond-wide-open-dot" "hourglass-open" "bowtie-open" "circle-cross-open"
- * "circle-x-open" "square-cross-open" "square-x-open" "diamond-cross-open" "diamond-x-open"
- *
- *
"cross-thin-open" "x-thin-open" "asterisk-open" "hash-open" "hash-dot" "hash-open-dot"
- *
- *
"y-up-open" "y-down-open" "y-left-open" "y-right-open"
- *
- *
"line-ew-open" "line-ns-open" "line-ne-open" "line-nw-open"
- *
- *
default: "circle"
- *
- *
Sets the marker symbol type. Adding 100 is equivalent to appending "-open" to a symbol name.
- * Adding 200 is equivalent to appending "-dot" to a symbol name. Adding 300 is equivalent to
- * appending "-open-dot" or "dot-open" to a symbol name.
- */
-public enum Symbol {
- CIRCLE("circle"),
- SQUARE("square"),
- DIAMOND("diamond"),
- CROSS("cross"),
- X("x"),
- TRIANGLE_UP("triangle-up"),
- TRIANGLE_DOWN("triangle-down"),
- TRIANGLE_LEFT("triangle-left"),
- TRIANGLE_RIGHT("triangle-right"),
- TRIANGLE_NE("triangle-ne"),
- TRIANGLE_SE("triangle-se"),
- TRIANGEL_SW("triangle-sw"),
- TRIANGLE_NW("triangle-nw"),
-
- PENTAGON("pentagon"),
- HEXAGON("hexagon"),
- HEXAGON2("hexagon2"),
- OCTAGON("octagon"),
- STAR("star"),
- HEXAGRAM("hexagram"),
-
- STAR_TRIANGLE_UP("star-triangle-up"),
- STAR_TRIANGLE_DOWN("star-triangle-down"),
- STAR_SQUARE("star-square"),
- STAR_DIAMOND("star-diamond"),
-
- DIAMOND_TALL("diamond-tall"),
- DIAMOND_WIDE("diamond-wide"),
- HOURGLASS("hourglass"),
- BOWTIE("bowtie"),
-
- CIRCLE_CROSS("circle-cross"),
- CIRCLE_X("circle-x"),
- SQUARE_CROSS("square-cross"),
- SQUARE_X("square-x"),
- DIAMOND_CROSS("diamond-cross"),
- DIAMOND_X("diamond-x"),
-
- CROSS_THIN("cross-thin"),
- X_THIN("x-thin"),
- ASTERISK("asterisk"),
- HASH("hash"),
-
- Y_UP("y-up"),
- Y_DOWN("y-down"),
- Y_LEFT("y-left"),
- Y_RIGHT("y-right"),
-
- LINE_EW("line-ew"),
- LINE_NS("line-ns"),
- LINE_NE("line-ne"),
- LINE_NW("line-sw");
-
- private final String value;
-
- Symbol(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/TemplateUtils.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/TemplateUtils.java
deleted file mode 100644
index 7a85336e4f..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/TemplateUtils.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import com.mitchellbosecke.pebble.PebbleEngine;
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.loader.ClasspathLoader;
-import com.mitchellbosecke.pebble.loader.DelegatingLoader;
-import com.mitchellbosecke.pebble.loader.FileLoader;
-import com.mitchellbosecke.pebble.loader.Loader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-public class TemplateUtils {
-
- private TemplateUtils() {}
-
- private static Collection templateLocations = new ArrayList<>();
-
- public static void setTemplateLocations(String... locations) {
- templateLocations = Arrays.asList(locations);
- }
-
- public static PebbleEngine getNewEngine() {
- PebbleEngine engine;
- try {
- Loader> loader = new ClasspathLoader();
- if (templateLocations != null && !templateLocations.isEmpty()) {
- List> loaders = new ArrayList<>();
- for (String templateLocation : templateLocations) {
- FileLoader fileLoader = new FileLoader();
- fileLoader.setPrefix(templateLocation);
- loaders.add(fileLoader);
- }
- // add this one last, so it is shadowed
- loaders.add(loader);
- loader = new DelegatingLoader(loaders);
- }
- engine = new PebbleEngine.Builder().loader(loader).strictVariables(false).build();
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- }
- return engine;
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/TickSettings.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/TickSettings.java
deleted file mode 100644
index c39c2bf248..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/TickSettings.java
+++ /dev/null
@@ -1,454 +0,0 @@
-package tech.tablesaw.plotly.components;
-
-import static tech.tablesaw.plotly.components.TickSettings.DisplayRules.ALL;
-import static tech.tablesaw.plotly.components.TickSettings.ExponentFormat.B;
-
-import com.google.common.base.Preconditions;
-import java.util.Map;
-import tech.tablesaw.plotly.Utils;
-
-public class TickSettings {
-
- /**
- * Sets the tick mode for this axis. If "auto", the number of ticks is set via `nticks`. If
- * "linear", the placement of the ticks is determined by a starting position `tick0` and a tick
- * step `dtick` If "array", the placement of the ticks is set via `tickvals` and the tick text is
- * `ticktext`.
- */
- public enum TickMode {
- AUTO("auto"),
- LINEAR("linear"),
- ARRAY("array");
-
- private final String value;
-
- TickMode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /** Determines whether and where ticks are drawn */
- public enum TickPlacement {
- OUTSIDE("outside"),
- INSIDE("inside"),
- NONE("");
- private final String value;
-
- TickPlacement(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /** Controls the display of prefixes, suffixes, and exponents on ticks */
- public enum DisplayRules {
- ALL("outside"),
- FIRST("first"),
- LAST("last"),
- NONE("none");
- private final String value;
-
- DisplayRules(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /** Controls the display of prefixes on ticks */
- public enum Mirror {
- TRUE("true"),
- FALSE("false"),
- TICKS("ticks"),
- ALL("all"),
- ALL_TICKS("allticks");
- private final String value;
-
- Mirror(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- /** Controls the display of prefixes on ticks */
- public enum ExponentFormat {
- NONE("none"),
- e("e"),
- E("E"),
- POWER("power"),
- SI("SI"),
- B("B");
- private final String value;
-
- ExponentFormat(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- private final TickMode tickMode;
-
- private final int nTicks; // >= 0
-
- private final Object tick0;
- private final Object dTick;
-
- private final int
- length; // (number greater than or equal to 0) default: 5 Sets the tick length (in px).
- private final int
- width; // (number greater than or equal to 0) default: 1 , Sets the tick width (in px).
- private final String color; // (color) default: "#444" Sets the tick color.
- private final boolean
- showLabels; // (boolean) default: True Determines whether or not the tick labels are drawn.
-
- private final TickPlacement placement;
- private final Font tickFont;
-
- // the values and labels to use when TickMode is ARRAY
- private final Object[] tickText;
- private final double[] tickValues;
-
- private final Mirror mirror;
- private final int angle;
- private final String prefix;
- private final String suffix;
- private final boolean autoMargin;
- private final DisplayRules showPrefix;
- private final DisplayRules showSuffix;
- private final DisplayRules showExponent;
- private final ExponentFormat exponentFormat;
-
- private final boolean separateThousands;
-
- private TickSettings(TickSettingsBuilder builder) {
- this.tickMode = builder.tickMode;
- this.nTicks = builder.nTicks;
-
- this.color = builder.tickColor;
- this.length = builder.tickLength;
- this.width = builder.tickWidth;
- this.showLabels = builder.showTickLabels;
- this.tickFont = builder.font;
- this.placement = builder.placement;
-
- tickText = builder.tickText;
- tickValues = builder.tickValues;
-
- tick0 = builder.tick0;
- dTick = builder.dTick;
-
- showPrefix = builder.showPrefix;
- showSuffix = builder.showSuffix;
- showExponent = builder.showExponent;
- exponentFormat = builder.exponentFormat;
-
- autoMargin = builder.autoMargin;
-
- angle = builder.angle;
- prefix = builder.prefix;
- suffix = builder.suffix;
- mirror = builder.mirror;
- separateThousands = builder.separateThousands;
- }
-
- protected void updateContext(Map context) {
- context.put("showTickLabels", showLabels);
- context.put("tickLength", length);
- context.put("tickWidth", width);
- context.put("tickColor", color);
- context.put("tickFont", tickFont);
- context.put("ticks", placement);
- if (tickText != null) {
- context.put("tickText", Utils.dataAsString(tickText));
- }
- if (nTicks != 0) {
- context.put("nTicks", nTicks);
- }
- if (dTick != null) {
- context.put("dTick", dTick);
- }
- if (tick0 != null) {
- context.put("tick0", tick0);
- }
- if (showExponent != ALL) {
- context.put("showExponent", showExponent);
- }
- if (exponentFormat != B) {
- context.put("exponentFormat", exponentFormat);
- }
- if (tickValues != null) {
- context.put("tickValues", Utils.dataAsString(tickValues));
- }
- context.put("mirror", mirror);
- context.put("prefix", prefix);
- context.put("suffix", suffix);
- context.put("showPrefix", showPrefix);
- context.put("showSuffix", showSuffix);
- context.put("angle", angle);
- context.put("autoMargin", autoMargin);
- context.put("tickMode", tickMode);
- context.put("separateThousands", separateThousands);
- }
-
- public static TickSettingsBuilder builder() {
- return new TickSettingsBuilder();
- }
-
- public static class TickSettingsBuilder {
-
- private DisplayRules showExponent = ALL;
- private ExponentFormat exponentFormat = B;
- private Object tick0;
- private Object dTick;
-
- private TickMode tickMode = TickMode.LINEAR;
- private Object[] tickText;
- private double[] tickValues;
-
- private int tickLength = 5;
- private int tickWidth = 1;
- private String tickColor = "#444";
- private boolean showTickLabels = true;
- private Font font;
- private TickPlacement placement = TickPlacement.INSIDE;
- private int nTicks = 0;
-
- private int angle = 0;
- private String prefix;
- private String suffix;
- private boolean autoMargin = true;
- private DisplayRules showPrefix = ALL;
- private DisplayRules showSuffix = ALL;
- private Mirror mirror;
- private boolean separateThousands;
-
- private TickSettingsBuilder() {}
-
- /**
- * @param tickValues Sets the values at which ticks on this axis appear. Only has an effect if
- * `tickmode` is set to "array". Used with `ticktext`.
- * @param tickText Sets the text displayed at the ticks position via `tickvals`. Only has an
- * effect if `tickmode` is set to "array". Used with `tickvals`.
- */
- public TickSettings.TickSettingsBuilder arrayTicks(double[] tickValues, String[] tickText) {
- this.tickValues = tickValues;
- this.tickText = tickText;
- return this;
- }
-
- public TickSettings.TickSettingsBuilder arrayTicks(double[] tickValues) {
- this.tickValues = tickValues;
- return this;
- }
-
- public TickSettings.TickSettingsBuilder placement(TickPlacement placement) {
- this.placement = placement;
- return this;
- }
-
- /**
- * Specifies the maximum number of ticks for the particular axis. The actual number of ticks
- * will be chosen automatically to be less than or equal to `nticks`. Has an effect only if
- * `tickmode` is set to "auto".
- *
- * @param nTicks a non-negative int
- * @return this builder
- */
- public TickSettings.TickSettingsBuilder nTicks(int nTicks) {
- Preconditions.checkArgument(nTicks >= 0);
- this.nTicks = nTicks;
- return this;
- }
-
- public TickSettings.TickSettingsBuilder tickMode(TickMode tickMode) {
- this.tickMode = tickMode;
- return this;
- }
-
- /** Determines whether or not the tick labels are drawn. */
- public TickSettings.TickSettingsBuilder showTickLabels(boolean showTickLabels) {
- this.showTickLabels = showTickLabels;
- return this;
- }
-
- /** Sets the tick color */
- public TickSettings.TickSettingsBuilder color(String tickColor) {
- this.tickColor = tickColor;
- return this;
- }
-
- /** Sets the tick font */
- public TickSettings.TickSettingsBuilder font(Font font) {
- this.font = font;
- return this;
- }
-
- /**
- * Sets the tick width (in px).
- *
- * @param tickWidth number greater than or equal to 0
- */
- public TickSettings.TickSettingsBuilder width(int tickWidth) {
- Preconditions.checkArgument(tickWidth >= 0);
- this.tickWidth = tickWidth;
- return this;
- }
-
- /**
- * Sets the tick length (in px).
- *
- * @param tickLength number greater than or equal to 0
- */
- public TickSettings.TickSettingsBuilder length(int tickLength) {
- Preconditions.checkArgument(tickLength >= 0);
- this.tickLength = tickLength;
- return this;
- }
-
- /** Determines whether long tick labels automatically grow the figure margins. */
- public TickSettings.TickSettingsBuilder autoMargin(boolean adjust) {
- this.autoMargin = adjust;
- return this;
- }
-
- public TickSettings.TickSettingsBuilder separateThousands(boolean separate) {
- this.separateThousands = separate;
- return this;
- }
-
- /** */
- public TickSettings.TickSettingsBuilder showSuffix(DisplayRules showSuffix) {
- this.showSuffix = showSuffix;
- return this;
- }
-
- /** */
- public TickSettings.TickSettingsBuilder showExponent(DisplayRules showExponent) {
- this.showExponent = showExponent;
- return this;
- }
-
- /**
- * If "all", all exponents are shown besides their significands. If "first", only the exponent
- * of the first tick is shown. If "last", only the exponent of the last tick is shown. If
- * "none", no exponents appear.
- */
- public TickSettings.TickSettingsBuilder exponentFormat(ExponentFormat format) {
- this.exponentFormat = format;
- return this;
- }
-
- /**
- * If "all", all tick labels are displayed with a prefix. If "first", only the first tick is
- * displayed with a prefix. If "last", only the last tick is displayed with a prefix. If "none",
- * tick prefixes are hidden.
- */
- public TickSettings.TickSettingsBuilder showPrefix(DisplayRules showPrefix) {
- this.showPrefix = showPrefix;
- return this;
- }
-
- /**
- * Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting
- * area. If "True", the axis lines are mirrored. If "ticks", the axis lines and ticks are
- * mirrored. If "False", mirroring is disable. If "all", axis lines are mirrored on all
- * shared-axes subplots. If "allticks", axis lines and ticks are mirrored on all shared-axes
- * subplots.
- */
- public TickSettings.TickSettingsBuilder mirror(Mirror mirror) {
- this.mirror = mirror;
- return this;
- }
-
- /**
- * Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle`
- * of -90 draws the tick labels vertically.
- */
- public TickSettings.TickSettingsBuilder angle(int angle) {
- this.angle = angle;
- return this;
- }
-
- public TickSettings.TickSettingsBuilder prefix(String prefix) {
- this.prefix = prefix;
- return this;
- }
-
- public TickSettings.TickSettingsBuilder suffix(String suffix) {
- this.suffix = suffix;
- return this;
- }
-
- /**
- * TODO: this is pretty hack-y. Add a separate method for dealing with dates and maybe clean up
- * logs too
- *
- * Sets the placement of the first tick on this axis. Use with `dtick`.
- *
- *
If the axis `type` is "log", then you must take the log of your starting tick (e.g. to set
- * the starting tick to 100, set the `tick0` to 2) except when `dtick`="L<f>" (see `dtick`
- * for more info).
- *
- *
If the axis `type` is "date", it should be a date string, like date data.
- *
- *
If the axis `type` is "category", it should be a number, using the scale where each
- * category is assigned a serial number from zero in the order it appears.
- */
- public TickSettings.TickSettingsBuilder tick0(Object tick0) {
- this.tick0 = tick0;
- return this;
- }
-
- /**
- * TODO: this is pretty hack-y. Add a separate method for dealing with dates and maybe clean up
- * logs too
- *
- *
Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number,
- * or special strings available to "log" and "date" axes.
- *
- *
If the axis `type` is "log", then ticks are set every 10^(n"dtick) where n is the tick
- * number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick
- * marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125,
- * ... set dtick to log_10(5), or 0.69897000433. "log" has several special values; "L<f>",
- * where `f` is a positive number, gives ticks linearly spaced in value (but not position).
- *
- *
For example `tick0` = 0.1, `dtick` = "L0.5" will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To
- * show powers of 10 plus small digits between, use "D1" (all digits) or "D2" (only 2 and 5).
- * `tick0` is ignored for "D1" and "D2".
- *
- *
If the axis `type` is "date", then you must convert the time to milliseconds. For example,
- * to set the interval between ticks to one day, set `dtick` to 86400000.0. "date" also has
- * special values "M<n>" gives ticks spaced by a number of months. `n` must be a positive
- * integer. To set ticks on the 15th of every third month, set `tick0` to "2000-01-15" and
- * `dtick` to "M3". To set ticks every 4 years, set `dtick` to "M48"
- */
- public TickSettings.TickSettingsBuilder dTick(Object dTick) {
- this.dTick = dTick;
- return this;
- }
-
- public TickSettings build() {
- return new TickSettings(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/Change.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/Change.java
deleted file mode 100644
index 737e86a2ce..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/Change.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package tech.tablesaw.plotly.components.change;
-
-import java.util.HashMap;
-import java.util.Map;
-import tech.tablesaw.plotly.components.Component;
-
-public abstract class Change extends Component {
-
- // private static final ChangeLine DEFAULT_CHANGE_LINE = new LineBuilder().build();
-
- private final ChangeLine changeLine;
- private final String fillColor;
-
- @Override
- public String asJavascript() {
- return asJSON();
- }
-
- Change(ChangeBuilder builder) {
- this.changeLine = builder.changeLine;
- this.fillColor = builder.fillColor;
- }
-
- @Override
- protected Map getJSONContext() {
- Map context = new HashMap<>();
- if (changeLine != null) context.put("line", changeLine.getJSONContext());
- if (fillColor != null) context.put("fillcolor", fillColor);
- return context;
- }
-
- @Override
- protected Map getContext() {
- return getJSONContext();
- }
-
- public static class ChangeBuilder {
-
- protected String fillColor;
- protected ChangeLine changeLine;
-
- public ChangeBuilder fillColor(String color) {
- this.fillColor = color;
- return this;
- }
-
- public ChangeBuilder changeLine(ChangeLine line) {
- this.changeLine = line;
- return this;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/ChangeLine.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/ChangeLine.java
deleted file mode 100644
index 672caaf7d5..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/ChangeLine.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package tech.tablesaw.plotly.components.change;
-
-import com.google.common.base.Preconditions;
-import java.util.HashMap;
-import java.util.Map;
-import tech.tablesaw.plotly.components.Component;
-
-public class ChangeLine extends Component {
-
- private static final int DEFAULT_WIDTH = 2;
- private static final String DEFAULT_COLOR = "#3D9970";
-
- private final String color;
- private final int width;
-
- private ChangeLine(LineBuilder lineBuilder) {
- color = lineBuilder.color;
- width = lineBuilder.width;
- }
-
- @Override
- public String asJavascript() {
- return asJSON();
- }
-
- @Override
- protected Map getJSONContext() {
- Map context = new HashMap<>();
- if (!color.equals(DEFAULT_COLOR)) context.put("color", color);
- if (width != DEFAULT_WIDTH) context.put("width", width);
- return context;
- }
-
- @Override
- protected Map getContext() {
- return getJSONContext();
- }
-
- public static LineBuilder builder() {
- return new LineBuilder();
- }
-
- public static class LineBuilder {
-
- private String color = DEFAULT_COLOR;
- private int width = DEFAULT_WIDTH;
-
- /** Sets the color of line bounding the box(es). */
- public LineBuilder color(String color) {
- this.color = color;
- return this;
- }
-
- /**
- * Sets the width (in px) of line bounding the box(es).
- *
- * @param width greater than or equal to 0
- */
- public LineBuilder width(int width) {
- Preconditions.checkArgument(width >= 0);
- this.width = width;
- return this;
- }
-
- public ChangeLine build() {
- return new ChangeLine(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/Decreasing.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/Decreasing.java
deleted file mode 100644
index d6035a719a..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/Decreasing.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package tech.tablesaw.plotly.components.change;
-
-public class Decreasing extends Change {
-
- private Decreasing(DecreasingBuilder builder) {
- super(builder);
- }
-
- public static DecreasingBuilder builder() {
- return new DecreasingBuilder();
- }
-
- public static class DecreasingBuilder extends ChangeBuilder {
-
- @Override
- public DecreasingBuilder fillColor(String color) {
- this.fillColor = color;
- return this;
- }
-
- @Override
- public DecreasingBuilder changeLine(ChangeLine line) {
- this.changeLine = line;
- return this;
- }
-
- public Decreasing build() {
- return new Decreasing(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/Increasing.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/Increasing.java
deleted file mode 100644
index 4f0b5e6d57..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/change/Increasing.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package tech.tablesaw.plotly.components.change;
-
-public class Increasing extends Change {
-
- private Increasing(IncreasingBuilder builder) {
- super(builder);
- }
-
- public static IncreasingBuilder builder() {
- return new IncreasingBuilder();
- }
-
- public static class IncreasingBuilder extends ChangeBuilder {
-
- @Override
- public Increasing.IncreasingBuilder fillColor(String color) {
- this.fillColor = color;
- return this;
- }
-
- @Override
- public Increasing.IncreasingBuilder changeLine(ChangeLine line) {
- this.changeLine = line;
- return this;
- }
-
- public Increasing build() {
- return new Increasing(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Camera.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Camera.java
deleted file mode 100644
index bb66d3d793..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Camera.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package tech.tablesaw.plotly.components.threeD;
-
-import java.util.HashMap;
-import java.util.Map;
-import tech.tablesaw.plotly.components.Component;
-
-public class Camera extends Component {
-
- private final Center center;
- private final Up up;
- private final Eye eye;
-
- private Camera(CameraBuilder builder) {
- this.eye = builder.eye;
- this.up = builder.up;
- this.center = builder.center;
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("up", up);
- context.put("eye", eye);
- context.put("center", center);
- return context;
- }
-
- @Override
- public String asJavascript() {
- return asJavascript("camera_template.html");
- }
-
- public CameraBuilder cameraBuilder() {
- return new CameraBuilder();
- }
-
- public static class CameraBuilder {
-
- private Center center;
- private Up up;
- private Eye eye;
-
- public CameraBuilder xAxis(Center center) {
- this.center = center;
- return this;
- }
-
- public CameraBuilder yAxis(Up up) {
- this.up = up;
- return this;
- }
-
- public CameraBuilder zAxis(Eye eye) {
- this.eye = eye;
- return this;
- }
-
- public Camera build() {
- return new Camera(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/CameraComponent.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/CameraComponent.java
deleted file mode 100644
index 9c872eed19..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/CameraComponent.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package tech.tablesaw.plotly.components.threeD;
-
-import java.util.HashMap;
-import java.util.Map;
-import tech.tablesaw.plotly.components.Component;
-
-class CameraComponent extends Component {
-
- private final double x;
- private final double y;
- private final double z;
-
- CameraComponent(double x, double y, double z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- @Override
- public String asJavascript() {
- return asJSON();
- }
-
- @Override
- protected Map getJSONContext() {
- return getContext();
- }
-
- @Override
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("x", x);
- context.put("y", y);
- context.put("z", z);
- return context;
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Center.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Center.java
deleted file mode 100644
index 5b8be49b29..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Center.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package tech.tablesaw.plotly.components.threeD;
-
-class Center extends CameraComponent {
-
- private Center(CenterBuilder builder) {
- super(builder.x, builder.y, builder.z);
- }
-
- public static CenterBuilder centerBuilder(double x, double y, double z) {
- return new CenterBuilder(x, y, z);
- }
-
- public static class CenterBuilder {
-
- private final double x;
- private final double y;
- private final double z;
-
- private CenterBuilder(double x, double y, double z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- public Center build() {
- return new Center(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Eye.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Eye.java
deleted file mode 100644
index 48194ee68b..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Eye.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package tech.tablesaw.plotly.components.threeD;
-
-public class Eye extends CameraComponent {
-
- private Eye(EyeBuilder builder) {
- super(builder.x, builder.y, builder.z);
- }
-
- public static EyeBuilder eyeBuilder(double x, double y, double z) {
- return new EyeBuilder(x, y, z);
- }
-
- public static class EyeBuilder {
-
- private final double x;
- private final double y;
- private final double z;
-
- private EyeBuilder(double x, double y, double z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- public Eye build() {
- return new Eye(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Scene.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Scene.java
deleted file mode 100644
index 9041853e32..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Scene.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package tech.tablesaw.plotly.components.threeD;
-
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.HashMap;
-import java.util.Map;
-import tech.tablesaw.plotly.components.Axis;
-import tech.tablesaw.plotly.components.Component;
-
-public class Scene extends Component {
-
- private final Axis xAxis;
-
- private final Axis yAxis;
-
- private final Axis zAxis;
-
- private final Camera camera;
-
- private Scene(SceneBuilder builder) {
- this.xAxis = builder.xAxis;
- this.yAxis = builder.yAxis;
- this.zAxis = builder.zAxis;
- this.camera = builder.camera;
- }
-
- protected Map getContext() {
- Map context = new HashMap<>();
- if (xAxis != null) {
- context.put("xAxis", xAxis);
- }
- if (yAxis != null) {
- context.put("yAxis", yAxis);
- }
- if (zAxis != null) {
- context.put("zAxis", zAxis);
- }
- if (camera != null) {
- context.put("camera", camera);
- }
- return context;
- }
-
- public static Scene.SceneBuilder sceneBuilder() {
- return new Scene.SceneBuilder();
- }
-
- @Override
- public String asJavascript() {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
- try {
- compiledTemplate = getEngine().getTemplate("scene_template.html");
- compiledTemplate.evaluate(writer, getContext());
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- public static class SceneBuilder {
-
- private Axis xAxis;
-
- private Axis yAxis;
-
- private Axis zAxis;
-
- private Camera camera;
-
- public SceneBuilder xAxis(Axis axis) {
- this.xAxis = axis;
- return this;
- }
-
- public SceneBuilder yAxis(Axis axis) {
- this.yAxis = axis;
- return this;
- }
-
- public SceneBuilder zAxis(Axis axis) {
- this.zAxis = axis;
- return this;
- }
-
- public SceneBuilder camera(Camera camera) {
- this.camera = camera;
- return this;
- }
-
- public Scene build() {
- return new Scene(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Up.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Up.java
deleted file mode 100644
index a58ec56005..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/threeD/Up.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package tech.tablesaw.plotly.components.threeD;
-
-public class Up extends CameraComponent {
-
- public static final Up DEFAULT = Up.upBuilder(0, 0, 1).build();
-
- private Up(UpBuilder builder) {
- super(builder.x, builder.y, builder.z);
- }
-
- public static UpBuilder upBuilder(double x, double y, double z) {
- return new UpBuilder(x, y, z);
- }
-
- public static class UpBuilder {
-
- private final double x;
- private final double y;
- private final double z;
-
- private UpBuilder(double x, double y, double z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- public Up build() {
- return new Up(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/EventHandler.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/EventHandler.java
deleted file mode 100644
index 835797c2cb..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/EventHandler.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package tech.tablesaw.plotly.event;
-
-public interface EventHandler {
-
- /**
- * Returns a string of Javascript code that implements a plotly event handler
- *
- * @param targetName name of the target document
- * @param divName target document id
- * @return A string that can be rendered in javascript
- */
- String asJavascript(String targetName, String divName);
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/EventHandlerBody.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/EventHandlerBody.java
deleted file mode 100644
index 5d2567ecb7..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/EventHandlerBody.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package tech.tablesaw.plotly.event;
-
-public interface EventHandlerBody {
-
- /**
- * Returns a string of Javascript code that implements a plotly event handler
- *
- * @param targetName name of the target document
- * @param divName target document id
- * @param eventData name of the event data variable
- * @return A string that can be rendered in javascript
- */
- String asJavascript(String targetName, String divName, String eventData);
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/HoverBroadcastBody.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/HoverBroadcastBody.java
deleted file mode 100644
index 2d8580b315..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/HoverBroadcastBody.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package tech.tablesaw.plotly.event;
-
-public class HoverBroadcastBody implements EventHandlerBody {
-
- private final String[] subPlots;
- private final int nTraces;
-
- public static HoverBroadcastBuilder builder() {
- return new HoverBroadcastBuilder();
- }
-
- private HoverBroadcastBody(HoverBroadcastBuilder builder) {
- this.subPlots = builder.subPlots;
- this.nTraces = builder.nTraces;
- }
-
- @Override
- public String asJavascript(String targetName, String divName, String eventData) {
- StringBuilder builder = new StringBuilder();
-
- builder.append(String.format("\tvar pointIndex = %s.points[0].pointNumber;", eventData));
- builder.append(System.lineSeparator());
- builder.append(String.format("\tPlotly.Fx.hover('%s',[ ", divName));
- builder.append(System.lineSeparator());
-
- for (int i = 0; i < nTraces; i++) {
- builder.append(String.format("\t\t{ curveNumber: %d, pointNumber: pointIndex }", i));
- if (i < nTraces - 1) {
- builder.append(", ");
- }
- builder.append(System.lineSeparator());
- }
- builder.append("\t\t]");
-
- if (subPlots.length > 0) {
- builder.append(", [");
- for (int i = 0; i < subPlots.length; i++) {
- builder.append(String.format("'%s'", subPlots[i]));
- if (i < subPlots.length - 1) {
- builder.append(", ");
- }
- }
- builder.append("]");
- builder.append(System.lineSeparator());
- }
- builder.append("\t);");
- builder.append(System.lineSeparator());
- return builder.toString();
- }
-
- public static class HoverBroadcastBuilder {
- private String[] subPlots;
- private int nTraces;
-
- public HoverBroadcastBuilder subPlots(String[] subPlots) {
- this.subPlots = subPlots;
- return this;
- }
-
- public HoverBroadcastBuilder numTraces(int nTraces) {
- this.nTraces = nTraces;
- return this;
- }
-
- public HoverBroadcastBody build() {
- return new HoverBroadcastBody(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/HoverEventHandler.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/HoverEventHandler.java
deleted file mode 100644
index a03ef2b80e..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/event/HoverEventHandler.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package tech.tablesaw.plotly.event;
-
-public class HoverEventHandler implements EventHandler {
-
- private final EventHandlerBody body;
- private final String eventDataVarName = "eventData";
-
- public static HoverEventHanlderBuilder builder() {
- return new HoverEventHanlderBuilder();
- }
-
- private HoverEventHandler(HoverEventHanlderBuilder builder) {
- this.body = builder.body;
- }
-
- /**
- * Returns a string of Javascript code that implements a plotly hover event handler
- *
- * @param targetName name of the target document
- * @param divName target document id
- * @return A string that can be rendered in javascript
- */
- @Override
- public String asJavascript(String targetName, String divName) {
- StringBuilder builder = new StringBuilder();
-
- builder.append(
- String.format("%s.on('plotly_hover', function(%s){", targetName, eventDataVarName));
- builder.append(System.lineSeparator());
-
- builder.append(body.asJavascript(targetName, divName, eventDataVarName));
-
- builder.append("});");
- builder.append(System.lineSeparator());
-
- return builder.toString();
- }
-
- public static class HoverEventHanlderBuilder {
- private EventHandlerBody body;
-
- public HoverEventHanlderBuilder body(EventHandlerBody body) {
- this.body = body;
- return this;
- }
-
- public HoverEventHandler build() {
- return new HoverEventHandler(this);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/AbstractTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/AbstractTrace.java
deleted file mode 100644
index 0c4baebbd2..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/AbstractTrace.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import com.mitchellbosecke.pebble.PebbleEngine;
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.HashMap;
-import java.util.Map;
-import tech.tablesaw.plotly.components.HoverLabel;
-import tech.tablesaw.plotly.components.TemplateUtils;
-
-public abstract class AbstractTrace implements Trace {
-
- protected static final double DEFAULT_OPACITY = 1.0;
- protected static final Visibility DEFAULT_VISIBILITY = Visibility.TRUE;
-
- protected final PebbleEngine engine = TemplateUtils.getNewEngine();
-
- public enum Visibility {
- TRUE("True"),
- FALSE("False"),
- LEGEND_ONLY("legendonly");
-
- private final String value;
-
- Visibility(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- protected final String type;
-
- private final Visibility visible;
-
- /** Determines whether or not an item corresponding to this trace is shown in the legend. */
- private final Boolean showLegend;
-
- /**
- * Sets the legend group for this trace. Traces part of the same legend group hide/show at the
- * same time when toggling legend items.
- */
- private final String legendGroup;
-
- /** Sets the opacity of the trace. */
- private final double opacity; // number between or equal to 0 and 1
-
- /** Sets the trace name. The trace name appear as the legend item and on hover. */
- private final String name;
-
- /**
- * Assigns id labels to each datum. These ids for object constancy of data points during
- * animation. Should be an array of strings, not numbers or any other type.
- */
- private final String[] ids;
-
- /**
- * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* , the x
- * coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and
- * so on.
- */
- private final String xAxis;
- /**
- * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* , the y
- * coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and
- * so on.
- */
- private final String yAxis;
-
- private final HoverLabel hoverLabel;
-
- public AbstractTrace(TraceBuilder builder) {
- this.type = builder.getType();
- this.name = builder.name;
- this.showLegend = builder.showLegend;
- this.legendGroup = builder.legendGroup;
- this.visible = builder.visible;
- this.ids = builder.ids;
- this.hoverLabel = builder.hoverLabel;
- this.opacity = builder.opacity;
- this.xAxis = builder.xAxis;
- this.yAxis = builder.yAxis;
- }
-
- @Override
- public String name() {
- return name;
- }
-
- @Override
- public String toString() {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- compiledTemplate.evaluate(writer, getContext());
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- protected Map getContext() {
- Map context = new HashMap<>();
- context.put("type", type);
- context.put("name", name);
- if (showLegend != null) {
- context.put("showLegend", showLegend);
- }
-
- context.put("legendGroup", legendGroup);
-
- if (!visible.equals(DEFAULT_VISIBILITY)) {
- context.put("visible", visible);
- }
- context.put("ids", ids);
- context.put("hoverLable", hoverLabel);
- if (opacity != DEFAULT_OPACITY) {
- context.put("opacity", opacity);
- }
- context.put("xAxis", xAxis);
- context.put("yAxis", yAxis);
- return context;
- }
-
- public HoverLabel hoverLabel() {
- return hoverLabel;
- }
-
- public boolean showLegend() {
- return showLegend;
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/BarTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/BarTrace.java
deleted file mode 100644
index e2e1e1cd29..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/BarTrace.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import static tech.tablesaw.plotly.Utils.dataAsString;
-
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-import tech.tablesaw.plotly.components.Marker;
-
-public class BarTrace extends AbstractTrace {
-
- private final Object[] x;
- private final double[] y;
- private final Orientation orientation;
- private final Marker marker;
-
- private BarTrace(BarBuilder builder) {
- super(builder);
- this.orientation = builder.orientation;
- this.x = builder.x;
- this.y = builder.y;
- this.marker = builder.marker;
- }
-
- public static BarBuilder builder(Object[] x, double[] y) {
- return new BarBuilder(x, y);
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- compiledTemplate.evaluate(writer, getContext(i));
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- private Map getContext(int i) {
-
- Map context = super.getContext();
- context.put("variableName", "trace" + i);
- if (orientation == Orientation.HORIZONTAL) {
- context.put("x", dataAsString(y));
- context.put("y", dataAsString(x));
- } else {
- context.put("y", dataAsString(y));
- context.put("x", dataAsString(x));
- }
- context.put("orientation", orientation.value);
- if (marker != null) {
- context.put("marker", marker);
- }
- return context;
- }
-
- public enum Orientation {
- VERTICAL("v"),
- HORIZONTAL("h");
-
- private final String value;
-
- Orientation(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public static class BarBuilder extends TraceBuilder {
-
- private final String type = "bar";
- private final Object[] x;
- private final double[] y;
- private Orientation orientation = Orientation.VERTICAL;
- private Marker marker;
-
- BarBuilder(Object[] x, double[] y) {
- this.x = x;
- this.y = y;
- }
-
- public BarTrace build() {
- return new BarTrace(this);
- }
-
- /**
- * Sets the orientation of the bars. With "v" ("h"), the value of the each bar spans along the
- * vertical (horizontal).
- */
- public BarBuilder orientation(Orientation orientation) {
- this.orientation = orientation;
- return this;
- }
-
- @Override
- public BarBuilder opacity(double opacity) {
- super.opacity(opacity);
- return this;
- }
-
- @Override
- public BarBuilder name(String name) {
- super.name(name);
- return this;
- }
-
- @Override
- public BarBuilder showLegend(boolean b) {
- super.showLegend(b);
- return this;
- }
-
- public BarBuilder marker(Marker marker) {
- this.marker = marker;
- return this;
- }
-
- @Override
- public BarBuilder xAxis(String xAxis) {
- super.xAxis(xAxis);
- return this;
- }
-
- @Override
- public BarBuilder yAxis(String yAxis) {
- super.yAxis(yAxis);
- return this;
- }
-
- @Override
- protected String getType() {
- return type;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/BoxTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/BoxTrace.java
deleted file mode 100644
index b795de75e5..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/BoxTrace.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import static tech.tablesaw.plotly.Utils.dataAsString;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-
-public class BoxTrace extends AbstractTrace {
-
- private final Object[] x;
- private final double[] y;
-
- private BoxTrace(BoxBuilder builder) {
- super(builder);
- this.x = builder.x;
- this.y = builder.y;
- }
-
- public static BoxBuilder builder(Object[] x, double[] y) {
- return new BoxBuilder(x, y);
- }
-
- // public static BoxBuilder builder(CategoricalColumn> x, NumericColumn extends Number> y) {
- // return new BoxBuilder(x, y);
- // }
-
- public static BoxBuilder builder(double[] x, double[] y) {
- Double[] xObjs = new Double[x.length];
- for (int i = 0; i < x.length; i++) {
- xObjs[i] = x[i];
- }
- return new BoxBuilder(xObjs, y);
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- compiledTemplate.evaluate(writer, getContext(i));
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- private Map getContext(int i) {
-
- Map context = super.getContext();
- context.put("variableName", "trace" + i);
- context.put("y", dataAsString(y));
- if (x != null) { // axkr 20211010: if inserted:
- context.put("x", dataAsString(x));
- }
- return context;
- }
-
- public static class BoxBuilder extends TraceBuilder {
-
- private static final String type = "box";
- private final Object[] x;
- private final double[] y;
-
- BoxBuilder(Object[] x, double[] y) {
- this.x = x;
- this.y = y;
- }
-
- @Override
- public BoxBuilder name(String name) {
- super.name(name);
- return this;
- }
-
- // BoxBuilder(CategoricalColumn> x, NumericColumn extends Number> y) {
- // this.x = columnToStringArray(x);
- // this.y = y.asDoubleArray();
- // }
-
- public BoxTrace build() {
- return new BoxTrace(this);
- }
-
- @Override
- public BoxBuilder xAxis(String xAxis) {
- super.xAxis(xAxis);
- return this;
- }
-
- @Override
- public BoxBuilder yAxis(String yAxis) {
- super.yAxis(yAxis);
- return this;
- }
-
- @Override
- protected String getType() {
- return type;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/ContourTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/ContourTrace.java
deleted file mode 100644
index aebee67c14..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/ContourTrace.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-
-import static tech.tablesaw.plotly.Utils.dataAsString;
-
-public class ContourTrace extends AbstractTrace {
-
- private final Object[] x;
- private final Object[] y;
- private final double[][] z;
- private final String type;
-
- public ContourTrace(ContourBuilder builder) {
- super(builder);
- this.x = builder.x;
- this.y = builder.y;
- this.z = builder.z;
- this.type = builder.getType();
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- compiledTemplate.evaluate(writer, getContext());
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- @Override
- protected Map getContext() {
-
- Map context = super.getContext();
- context.put("variableName", "trace0");
- context.put("x", dataAsString(x));
- context.put("y", dataAsString(y));
- context.put("z", dataAsString(z));
- context.put("type", type);
- return context;
- }
-
- public static ContourTrace.ContourBuilder builder(Object[] x, Object[] y, double[][] z) {
- return new ContourTrace.ContourBuilder(x, y, z);
- }
-
- public static class ContourBuilder extends TraceBuilder {
-
- private static final String type = "contour";
- private final Object[] x;
- private final Object[] y;
- private final double[][] z;
-
- ContourBuilder(Object[] x, Object[] y, double[][] z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- @Override
- public ContourTrace.ContourBuilder xAxis(String xAxis) {
- super.xAxis(xAxis);
- return this;
- }
-
- @Override
- public ContourTrace.ContourBuilder yAxis(String yAxis) {
- super.yAxis(yAxis);
- return this;
- }
-
- public ContourTrace build() {
- return new ContourTrace(this);
- }
-
- @Override
- protected String getType() {
- return type;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/HeatmapTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/HeatmapTrace.java
deleted file mode 100644
index 6aea6b76ae..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/HeatmapTrace.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import static tech.tablesaw.plotly.Utils.dataAsString;
-
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-
-public class HeatmapTrace extends AbstractTrace {
-
- private final Object[] x;
- private final Object[] y;
- private final double[][] z;
- private final String type;
-
- private HeatmapTrace(HeatmapBuilder builder) {
- super(builder);
- this.x = builder.x;
- this.y = builder.y;
- this.z = builder.z;
- this.type = builder.getType();
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- compiledTemplate.evaluate(writer, getContext());
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- @Override
- protected Map getContext() {
-
- Map context = super.getContext();
- context.put("variableName", "trace0");
- context.put("x", dataAsString(x));
- context.put("y", dataAsString(y));
- context.put("z", dataAsString(z));
- context.put("type", type);
- return context;
- }
-
- public static HeatmapBuilder builder(Object[] x, Object[] y, double[][] z) {
- return new HeatmapBuilder(x, y, z);
- }
-
- public static class HeatmapBuilder extends TraceBuilder {
-
- private static final String type = "heatmap";
- private final Object[] x;
- private final Object[] y;
- private final double[][] z;
-
- HeatmapBuilder(Object[] x, Object[] y, double[][] z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- @Override
- public HeatmapBuilder xAxis(String xAxis) {
- super.xAxis(xAxis);
- return this;
- }
-
- @Override
- public HeatmapBuilder yAxis(String yAxis) {
- super.yAxis(yAxis);
- return this;
- }
-
- public HeatmapTrace build() {
- return new HeatmapTrace(this);
- }
-
- @Override
- protected String getType() {
- return type;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/Histogram2DTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/Histogram2DTrace.java
deleted file mode 100644
index ecca01cc9b..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/Histogram2DTrace.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-import tech.tablesaw.plotly.Utils;
-
-public class Histogram2DTrace extends AbstractTrace {
-
- private final double[] x;
- private final double[] y;
-
- public static Histogram2DBuilder builder(double[] x, double[] y) {
- return new Histogram2DBuilder(x, y);
- }
-
- // public static Histogram2DBuilder builder(
- // NumericColumn extends Number> x, NumericColumn extends Number> y) {
- // return new Histogram2DBuilder(x.asDoubleArray(), y.asDoubleArray());
- // }
-
- private Histogram2DTrace(Histogram2DBuilder builder) {
- super(builder);
- this.x = builder.x;
- this.y = builder.y;
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- compiledTemplate.evaluate(writer, getContext(i));
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- private Map getContext(int i) {
-
- Map context = super.getContext();
- context.put("variableName", "trace" + i);
- context.put("x", Utils.dataAsString(x));
- context.put("y", Utils.dataAsString(y));
- return context;
- }
-
- public static class Histogram2DBuilder extends TraceBuilder {
-
- private final String type = "histogram2d";
- /*
- private int bins;
- private String barMode;
- private String histFunction;
- private String histNorm;
- */
- private final double[] x;
- private final double[] y;
-
- private Histogram2DBuilder(double[] x, double[] y) {
- this.x = x;
- this.y = y;
- }
-
- /*
- public Histogram2DBuilder setBins(int bins) {
- this.bins = bins;
- return this;
- }
-
- public Histogram2DBuilder barMode(String barMode) {
- this.barMode = barMode;
- return this;
- }
-
- public Histogram2DBuilder histFunction(String histFunction) {
- this.histFunction = histFunction;
- return this;
- }
-
- public Histogram2DBuilder histNorm(String histNorm) {
- this.histNorm = histNorm;
- return this;
- }
- */
- public Histogram2DTrace build() {
- return new Histogram2DTrace(this);
- }
-
- @Override
- protected String getType() {
- return type;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/HistogramTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/HistogramTrace.java
deleted file mode 100644
index f01ff2c78d..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/HistogramTrace.java
+++ /dev/null
@@ -1,291 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-import tech.tablesaw.plotly.Utils;
-import tech.tablesaw.plotly.components.Marker;
-
-public class HistogramTrace extends AbstractTrace {
-
- private final Object[] x;
- private final Object[] y;
- private final double opacity;
- private final int nBinsX;
- private final int nBinsY;
- private final boolean autoBinX;
- private final boolean autoBinY;
- private final Marker marker;
- private final HistNorm histNorm;
- private final HistFunc histFunc;
-
- public enum HistNorm {
- NONE(""),
- PERCENT("percent"),
- PROBABILITY("probability"),
- DENSITY("density"),
- PROBABILITY_DENSITY("probability density");
-
- private final String value;
-
- HistNorm(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public enum HistFunc {
- COUNT("count"),
- SUM("sum"),
- AVG("avg"),
- MIN("min"),
- MAX("max");
-
- private final String value;
-
- HistFunc(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public static HistogramBuilder builder(double[] values) {
- return new HistogramBuilder(values);
- }
-
- // public static HistogramBuilder builder(NumericColumn extends Number> values) {
- // return new HistogramBuilder(values.asDoubleArray());
- // }
-
- // public static HistogramBuilder builder(
- // Column> xValues, NumericColumn extends Number> values) {
- // return new HistogramBuilder(xValues.asObjectArray(), values.asDoubleArray());
- // }
-
- private HistogramTrace(HistogramBuilder builder) {
- super(builder);
- if (builder.horizontal) {
- this.x = builder.y;
- this.y = builder.x;
- } else {
- this.x = builder.x;
- this.y = builder.y;
- }
- this.histNorm = builder.histNorm;
- this.histFunc = builder.histFunc;
- this.nBinsX = builder.nBinsX;
- this.nBinsY = builder.nBinsY;
- this.autoBinX = builder.autoBinX;
- this.autoBinY = builder.autoBinY;
- this.opacity = builder.opacity;
- this.marker = builder.marker;
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- compiledTemplate.evaluate(writer, getContext(i));
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- private Map getContext(int i) {
-
- Map context = super.getContext();
- context.put("variableName", "trace" + i);
- if (x != null) {
- context.put("x", Utils.dataAsString(x));
- }
- if (y != null) {
- context.put("y", Utils.dataAsString(y));
- }
- context.put("opacity", opacity);
- context.put("nBinsX", nBinsX);
- context.put("nBinsY", nBinsY);
- context.put("autoBinX", autoBinX);
- context.put("autoBinY", autoBinY);
- context.put("histnorm", histNorm);
- context.put("histfunc", histFunc);
- if (marker != null) {
- context.put("marker", marker);
- }
-
- return context;
- }
-
- public static class HistogramBuilder extends TraceBuilder {
-
- private final String type = "histogram";
- private int nBinsX;
- private int nBinsY;
- private boolean autoBinX;
- private boolean autoBinY;
- private boolean horizontal = false;
- private Object[] x;
- private Object[] y;
- private Marker marker;
- private HistNorm histNorm = HistNorm.NONE;
- private HistFunc histFunc = HistFunc.COUNT;
-
- private HistogramBuilder(double[] values) {
- this.x = doublesToObjects(values);
- }
-
- private HistogramBuilder(Object[] xValues, double[] yValues) {
- this.x = xValues;
- this.y = doublesToObjects(yValues);
- }
-
- /**
- * Specifies the maximum number of desired bins. This value will be used in an algorithm that
- * will decide the optimal bin size such that the histogram best visualizes the distribution of
- * the data.
- */
- public HistogramBuilder nBinsX(int bins) {
- this.nBinsX = bins;
- return this;
- }
-
- public HistogramBuilder nBinsY(int bins) {
- this.nBinsY = bins;
- return this;
- }
-
- /**
- * Determines whether or not the x axis bin attributes are picked by an algorithm. Note that
- * this should be set to False if you want to manually set the number of bins using the
- * attributes in xbins.
- *
- * Note also that this should be true (default) to use nbinsx to suggest a bin count
- */
- public HistogramBuilder autoBinX(boolean autoBinX) {
- this.autoBinX = autoBinX;
- return this;
- }
-
- public HistogramBuilder autoBinY(boolean autoBinY) {
- this.autoBinY = autoBinY;
- return this;
- }
-
- public HistogramBuilder marker(Marker marker) {
- this.marker = marker;
- return this;
- }
-
- @Override
- public HistogramBuilder opacity(double opacity) {
- super.opacity(opacity);
- return this;
- }
-
- public HistogramBuilder horizontal(boolean horizontal) {
- this.horizontal = horizontal;
- return this;
- }
-
- @Override
- public HistogramBuilder showLegend(boolean b) {
- super.showLegend(b);
- return this;
- }
-
- /**
- * Specifies the type of normalization used for this histogram trace. If "", the span of each
- * bar corresponds to the number of occurrences (i.e. the number of data points lying inside the
- * bins). If "percent" / "probability", the span of each bar corresponds to the percentage /
- * fraction of occurrences with respect to the total number of sample points (here, the sum of
- * all bin HEIGHTS equals 100% / 1). If "density", the span of each bar corresponds to the
- * number of occurrences in a bin divided by the size of the bin interval (here, the sum of all
- * bin AREAS equals the total number of sample points). If "probability density", the area of
- * each bar corresponds to the probability that an event will fall into the corresponding bin
- * (here, the sum of all bin AREAS equals 1).
- *
- * @param histNorm The normalization type for the histogram
- * @return This HistogramBuilder
- */
- public HistogramBuilder histNorm(HistNorm histNorm) {
- this.histNorm = histNorm;
- return this;
- }
-
- /**
- * Specifies the binning function used for this histogram trace. If "count", the histogram
- * values are computed by counting the number of values lying inside each bin. If "sum", "avg",
- * "min", "max", the histogram values are computed using the sum, the average, the minimum or
- * the maximum of the values lying inside each bin respectively.
- *
- * @param histFunc The function type
- * @return This HistogramBuilder
- */
- public HistogramBuilder histFunc(HistFunc histFunc) {
- this.histFunc = histFunc;
- return this;
- }
-
- @Override
- public HistogramBuilder name(String name) {
- super.name(name);
- return this;
- }
-
- @Override
- public HistogramBuilder xAxis(String xAxis) {
- super.xAxis(xAxis);
- return this;
- }
-
- @Override
- public HistogramBuilder yAxis(String yAxis) {
- super.yAxis(yAxis);
- return this;
- }
-
- public HistogramBuilder y(double[] y) {
- this.y = doublesToObjects(y);
- return this;
- }
-
- // public HistogramBuilder y(NumericColumn extends Number> values) {
- // this.y = values.asObjectArray();
- // return this;
- // }
-
- public HistogramTrace build() {
- return new HistogramTrace(this);
- }
-
- @Override
- protected String getType() {
- return type;
- }
- }
-
- private static Object[] doublesToObjects(double[] doubles) {
- Object[] objects = new Object[doubles.length];
- for (int i = 0; i < doubles.length; i++) {
- objects[i] = doubles[i];
- }
- return objects;
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/PieTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/PieTrace.java
deleted file mode 100644
index cf730f3675..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/PieTrace.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-import tech.tablesaw.plotly.Utils;
-import tech.tablesaw.plotly.components.Domain;
-
-public class PieTrace extends AbstractTrace {
-
- private final double[] values;
- private final Object[] labels;
- private final Domain domain;
-
- private PieTrace(PieBuilder builder) {
- super(builder);
- this.values = builder.values;
- this.labels = builder.labels;
- this.domain = builder.domain;
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("pie_trace_template.html");
- compiledTemplate.evaluate(writer, getContext(i));
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- private Map getContext(int i) {
-
- Map context = super.getContext();
- context.put("variableName", "trace" + i);
- context.put("values", Utils.dataAsString(values));
- if (labels != null) {
- context.put("labels", Utils.dataAsString(labels));
- }
- if (domain != null) {
- context.put("domain", domain.asJavascript());
- }
- return context;
- }
-
- public static PieBuilder builder(Object[] labels, double[] values) {
- return new PieBuilder(labels, values);
- }
-
- // public static PieBuilder builder(Column> labels, NumericColumn extends Number> values) {
- // return new PieBuilder(TraceBuilder.columnToStringArray(labels), values.asDoubleArray());
- // }
-
- public static class PieBuilder extends TraceBuilder {
-
- private final String type = "pie";
- private final double[] values;
- private final Object[] labels;
- private Domain domain;
-
- private PieBuilder(Object[] labels, double[] values) {
- this.labels = labels;
- this.values = values;
- }
-
- public PieBuilder domain(Domain domain) {
- this.domain = domain;
- return this;
- }
-
- public PieTrace build() {
- return new PieTrace(this);
- }
-
- @Override
- protected String getType() {
- return type;
- }
-
- @Override
- public PieTrace.PieBuilder showLegend(boolean b) {
- super.showLegend(b);
- return this;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/Scatter3DTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/Scatter3DTrace.java
deleted file mode 100644
index f29e3b5e0f..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/Scatter3DTrace.java
+++ /dev/null
@@ -1,191 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import static tech.tablesaw.plotly.Utils.dataAsString;
-
-import com.google.common.base.Preconditions;
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-import tech.tablesaw.plotly.components.HoverLabel;
-import tech.tablesaw.plotly.components.Marker;
-
-public class Scatter3DTrace extends AbstractTrace {
-
- private final double[] y;
- private final double[] x;
- private final double[] z;
- private final String[] text;
- private final Mode mode;
- private final HoverLabel hoverLabel;
- private final Marker marker;
-
- public static Scatter3DBuilder builder(double[] x, double[] y, double[] z) {
- return new Scatter3DBuilder(x, y, z);
- }
-
- // public static Scatter3DBuilder builder(
- // NumericColumn extends Number> x,
- // NumericColumn extends Number> y,
- // NumericColumn extends Number> z) {
- // return new Scatter3DBuilder(x, y, z);
- // }
-
- private Scatter3DTrace(Scatter3DBuilder builder) {
- super(builder);
- this.mode = builder.mode;
- this.y = builder.y;
- this.x = builder.x;
- this.z = builder.z;
- this.text = builder.text;
- this.hoverLabel = builder.hoverLabel;
- this.marker = builder.marker;
- }
-
- private Map getContext(int i) {
-
- Map context = super.getContext();
- context.put("variableName", "trace" + i);
- context.put("mode", mode);
- context.put("y", dataAsString(y));
- context.put("x", dataAsString(x));
- context.put("z", dataAsString(z));
- if (marker != null) {
- context.put("marker", marker);
- }
- if (hoverLabel != null) {
- context.put("hoverlabel", hoverLabel.asJavascript());
- }
- if (text != null) {
- context.put("text", dataAsString(text));
- }
- return context;
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- Map context = getContext(i);
- compiledTemplate.evaluate(writer, context);
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- public enum Mode {
- LINE("line"),
- MARKERS("markers"),
- LINE_AND_MARKERS("line + markers"),
- LINE_AND_TEXT("line + text"),
- TEXT_AND_MARKERS("text + text"),
- LINE_TEXT_AND_MARKERS("line + text + markers"),
- TEXT("text"),
- NONE("none");
-
- final String value;
-
- Mode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public static class Scatter3DBuilder extends TraceBuilder {
-
- private String type = "scatter3d";
- private Mode mode = Mode.MARKERS;
- private final double[] x;
- private final double[] y;
- private final double[] z;
- private String[] text;
- private Marker marker;
-
- private Scatter3DBuilder(double[] x, double[] y, double[] z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- // private Scatter3DBuilder(
- // NumericColumn extends Number> x,
- // NumericColumn extends Number> y,
- // NumericColumn extends Number> z) {
- // this.x = x.asDoubleArray();
- // this.y = y.asDoubleArray();
- // this.z = z.asDoubleArray();
- // }
-
- public Scatter3DBuilder mode(Mode mode) {
- this.mode = mode;
- return this;
- }
-
- public Scatter3DBuilder type(String kind) {
- this.type = kind;
- return this;
- }
-
- public Scatter3DBuilder text(String[] text) {
- this.text = text;
- return this;
- }
-
- public Scatter3DTrace build() {
- return new Scatter3DTrace(this);
- }
-
- protected String getType() {
- return type;
- }
-
- @Override
- public Scatter3DBuilder name(String name) {
- return (Scatter3DBuilder) super.name(name);
- }
-
- @Override
- public Scatter3DBuilder opacity(double n) {
- Preconditions.checkArgument(n >= 0 && n <= 1);
- return (Scatter3DBuilder) super.opacity(n);
- }
-
- @Override
- public Scatter3DBuilder legendGroup(String group) {
- return (Scatter3DBuilder) super.legendGroup(group);
- }
-
- public Scatter3DBuilder marker(Marker marker) {
- this.marker = marker;
- return this;
- }
-
- @Override
- public Scatter3DBuilder showLegend(boolean showLegend) {
- return (Scatter3DBuilder) super.showLegend(showLegend);
- }
-
- @Override
- public Scatter3DBuilder visible(Visibility visibility) {
- return (Scatter3DBuilder) super.visible(visibility);
- }
-
- @Override
- public Scatter3DBuilder hoverLabel(HoverLabel hoverLabel) {
- return (Scatter3DBuilder) super.hoverLabel(hoverLabel);
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/ScatterTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/ScatterTrace.java
deleted file mode 100644
index 212b596ea8..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/ScatterTrace.java
+++ /dev/null
@@ -1,409 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import static tech.tablesaw.plotly.Utils.dataAsString;
-
-import com.google.common.base.Preconditions;
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-import tech.tablesaw.plotly.components.HoverLabel;
-import tech.tablesaw.plotly.components.Line;
-import tech.tablesaw.plotly.components.Marker;
-import tech.tablesaw.plotly.components.change.Decreasing;
-import tech.tablesaw.plotly.components.change.Increasing;
-
-public class ScatterTrace extends AbstractTrace {
-
- private static final Fill DEFAULT_FILL = Fill.NONE;
- private static final double DEFAULT_WHISKER_WIDTH = 0;
-
- public enum Fill {
- NONE("none"),
- TO_ZERO_Y("tozeroy"),
- TO_ZERO_X("tozerox"),
- TO_NEXT_Y("tonexty"),
- TO_NEXT_X("tonextx"),
- TO_SELF("toself"),
- TO_NEXT("tonext");
-
- private final String value;
-
- Fill(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public enum YAxis {
- Y("y"), // DEFAULT
- Y2("y2"),
- Y3("y3"),
- Y4("y4");
-
- private final String value;
-
- YAxis(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- private final Fill fill;
- private final String fillColor;
- private final Object[] y;
- private final Object[] x;
- private final String[] text;
- private final Mode mode;
- private final HoverLabel hoverLabel;
- private final Marker marker;
- private final Line line;
- private final YAxis yAxis;
-
- private final double[] open;
- private final double[] high;
- private final double[] low;
- private final double[] close;
- private final double whiskerWidth;
- private final Increasing increasing;
- private final Decreasing decreasing;
-
- public static ScatterBuilder builder(double[] x, double[] y) {
- return new ScatterBuilder(x, y);
- }
-
- // public static ScatterBuilder builder(Column> x, Column> y) {
- // return new ScatterBuilder(x, y);
- // }
- //
- // public static ScatterBuilder builder(
- // Column> x,
- // NumericColumn extends Number> open,
- // NumericColumn extends Number> high,
- // NumericColumn extends Number> low,
- // NumericColumn extends Number> close) {
- // return new ScatterBuilder(x, open, high, low, close);
- // }
-
- private ScatterTrace(ScatterBuilder builder) {
- super(builder);
- this.mode = builder.mode;
- this.y = builder.y;
- this.x = builder.x;
- this.text = builder.text;
- this.marker = builder.marker;
- this.hoverLabel = builder.hoverLabel;
- this.line = builder.line;
- this.fill = builder.fill;
- this.fillColor = builder.fillColor;
- this.yAxis = builder.yAxis;
- this.open = builder.open;
- this.high = builder.high;
- this.low = builder.low;
- this.close = builder.close;
- this.whiskerWidth = builder.whiskerWidth;
- this.increasing = builder.increasing;
- this.decreasing = builder.decreasing;
- }
-
- private Map getContext(int i) {
-
- Map context = super.getContext();
- context.put("variableName", "trace" + i);
- context.put("mode", mode);
- if (x != null) {
- context.put("x", dataAsString(x));
- }
- if (y != null) {
- context.put("y", dataAsString(y));
- }
-
- // for pricing data (candlesticks and OHLC)
- if (open != null) {
- context.put("open", dataAsString(open));
- }
- if (high != null) {
- context.put("high", dataAsString(high));
- }
- if (low != null) {
- context.put("low", dataAsString(low));
- }
- if (close != null) {
- context.put("close", dataAsString(close));
- }
- if (whiskerWidth != DEFAULT_WHISKER_WIDTH) {
- context.put("whiskerWidth", whiskerWidth);
- }
- if (increasing != null) {
- context.put("increasing", increasing);
- }
- if (decreasing != null) {
- context.put("decreasing", decreasing);
- }
- if (yAxis != null) {
- context.put("yAxis", yAxis);
- }
-
- context.put("marker", marker);
-
- if (!fill.equals(DEFAULT_FILL)) {
- context.put("fill", fill);
- }
- if (fillColor != null) {
- context.put("fillColor", fillColor);
- }
- if (hoverLabel != null) {
- context.put("hoverlabel", hoverLabel.asJavascript());
- }
- if (line != null) {
- context.put("line", line.asJavascript());
- }
- if (text != null) {
- context.put("text", dataAsString(text));
- }
- return context;
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- Map context = getContext(i);
- compiledTemplate.evaluate(writer, context);
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- public enum Mode {
- LINE("lines"),
- MARKERS("markers"),
- LINE_AND_MARKERS("lines+markers"),
- LINE_AND_TEXT("lines+text"),
- TEXT_AND_MARKERS("markers+text"),
- LINE_TEXT_AND_MARKERS("lines+markers+text"),
- TEXT("text"),
- NONE("none");
-
- final String value;
-
- Mode(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
- }
- }
-
- public static class ScatterBuilder extends TraceBuilder {
-
- private String type = "scatter";
- private Mode mode = Mode.MARKERS;
- private final Object[] x;
- private Object[] y;
- private String[] text;
- private Marker marker;
- private YAxis yAxis;
- private Line line;
- private double[] open;
- private double[] close;
- private double[] high;
- private double[] low;
- private Increasing increasing;
- private Decreasing decreasing;
-
- /**
- * Sets the area to fill with a solid color. Use with `fillcolor` if not "none". "tozerox" and
- * "tozeroy" fill to x=0 and y=0 respectively. "tonextx" and "tonexty" fill between the
- * endpoints of this trace and the endpoints of the trace before it, connecting those endpoints
- * with straight lines (to make a stacked area graph); if there is no trace before it, they
- * behave like "tozerox" and "tozeroy". "toself" connects the endpoints of the trace (or each
- * segment of the trace if it has gaps) into a closed shape. "tonext" fills the space between
- * two traces if one completely encloses the other (eg consecutive contour lines), and behaves
- * like "toself" if there is no trace before it. "tonext" should not be used if one trace does
- * not enclose the other.
- */
- private ScatterTrace.Fill fill = DEFAULT_FILL;
-
- /**
- * Sets the fill color. Defaults to a half-transparent variant of the line color, marker color,
- * or marker line color, whichever is available.
- */
- private String fillColor;
-
- /**
- * Sets the width of the whiskers relative to the box' width. For example, with 1, the whiskers
- * are as wide as the box(es).
- */
- private double whiskerWidth = DEFAULT_WHISKER_WIDTH;
-
- private ScatterBuilder(double[] x, double[] y) {
- Double[] x1 = new Double[x.length];
- Double[] y1 = new Double[y.length];
- for (int i = 0; i < x1.length; i++) {
- x1[i] = x[i];
- y1[i] = y[i];
- }
- this.x = x1;
- this.y = y1;
- }
-
- // private ScatterBuilder(Column> x, Column> y) {
- // this.x = x.asObjectArray();
- // this.y = y.asObjectArray();
- // }
- //
- // private ScatterBuilder(
- // Column> x,
- // NumericColumn extends Number> open,
- // NumericColumn extends Number> high,
- // NumericColumn extends Number> low,
- // NumericColumn extends Number> close) {
- // this.x = x.asObjectArray();
- // this.open = open.asDoubleArray();
- // this.high = high.asDoubleArray();
- // this.low = low.asDoubleArray();
- // this.close = close.asDoubleArray();
- // }
-
- public ScatterBuilder mode(Mode mode) {
- this.mode = mode;
- return this;
- }
-
- /**
- * Sets a specific yAxis to this trace when you want to display more than one yAxis in a plot.
- * This can be ignored if only one y axis is desired for the whole plot, and need not be set if
- * this trace should get the default y-axis.
- *
- * There must be a corresponding Y Axis defined in the layout, e.g., if you specify YAxis.Y2
- * here, you must provide a value for yAxis2 in the layout
- *
- * @param axis The Axis to use for this trace
- * @return this ScatterBuilder
- */
- public ScatterBuilder yAxis(YAxis axis) {
- this.yAxis = axis;
- return this;
- }
-
- public ScatterBuilder line(Line line) {
- this.line = line;
- return this;
- }
-
- /** For candlestick plots */
- public ScatterBuilder whiskerWidth(double width) {
- Preconditions.checkArgument(width >= 0 && width <= 1);
- this.whiskerWidth = width;
- return this;
- }
-
- public ScatterBuilder marker(Marker marker) {
- this.marker = marker;
- return this;
- }
-
- public ScatterBuilder type(String kind) {
- this.type = kind;
- return this;
- }
-
- public ScatterBuilder text(String[] text) {
- this.text = text;
- return this;
- }
-
- /** For candlestick plots */
- public ScatterBuilder increasing(Increasing increasing) {
- this.increasing = increasing;
- return this;
- }
-
- /** For candlestick plots */
- public ScatterBuilder decreasing(Decreasing decreasing) {
- this.decreasing = decreasing;
- return this;
- }
-
- public ScatterBuilder fill(ScatterTrace.Fill fill) {
- this.fill = fill;
- return this;
- }
-
- public ScatterBuilder fillColor(String fillColor) {
- this.fillColor = fillColor;
- return this;
- }
-
- public ScatterTrace build() {
- return new ScatterTrace(this);
- }
-
- protected String getType() {
- return type;
- }
-
- @Override
- public ScatterBuilder name(String name) {
- return (ScatterBuilder) super.name(name);
- }
-
- @Override
- public ScatterBuilder opacity(double n) {
- Preconditions.checkArgument(n >= 0 && n <= 1);
- return (ScatterBuilder) super.opacity(n);
- }
-
- @Override
- public ScatterBuilder legendGroup(String group) {
- return (ScatterBuilder) super.legendGroup(group);
- }
-
- @Override
- public ScatterBuilder showLegend(boolean showLegend) {
- return (ScatterBuilder) super.showLegend(showLegend);
- }
-
- @Override
- public ScatterBuilder visible(Visibility visibility) {
- return (ScatterBuilder) super.visible(visibility);
- }
-
- @Override
- public ScatterBuilder hoverLabel(HoverLabel hoverLabel) {
- return (ScatterBuilder) super.hoverLabel(hoverLabel);
- }
-
- @Override
- public ScatterBuilder xAxis(String xAxis) {
- super.xAxis(xAxis);
- return this;
- }
-
- @Override
- public ScatterBuilder yAxis(String yAxis) {
- super.yAxis(yAxis);
- return this;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/Trace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/Trace.java
deleted file mode 100644
index aade7efd92..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/Trace.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import tech.tablesaw.plotly.components.HoverLabel;
-
-public interface Trace {
-
- /**
- * Returns a string of Javascript code that can be used to display the trace in a browser
- *
- * @param i A unique number for this trace in the enclosing figure
- * @return A string that can be rendered in javascript
- */
- String asJavascript(int i);
-
- String name();
-
- HoverLabel hoverLabel();
-
- boolean showLegend();
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/TraceBuilder.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/TraceBuilder.java
deleted file mode 100644
index d2ea63e740..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/TraceBuilder.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import com.google.common.base.Preconditions;
-import tech.tablesaw.plotly.components.HoverLabel;
-
-public abstract class TraceBuilder {
-
- protected AbstractTrace.Visibility visible = AbstractTrace.DEFAULT_VISIBILITY;
-
- /** Determines whether or not an item corresponding to this trace is shown in the legend. */
- protected Boolean showLegend = null;
-
- /**
- * Sets the legend group for this trace. Traces part of the same legend group hide/show at the
- * same time when toggling legend items.
- */
- protected String legendGroup = "";
-
- /** Sets the opacity of the trace. */
- protected double opacity = AbstractTrace.DEFAULT_OPACITY; // number between or equal to 0 and 1
-
- /** Sets the trace name. The trace name appear as the legend item and on hover. */
- protected String name;
-
- /**
- * Assigns id labels to each datum. These ids for object constancy of data points during
- * animation. Should be an array of strings, not numbers or any other type.
- */
- protected String[] ids;
-
- protected HoverLabel hoverLabel;
-
- /**
- * Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the
- * default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to
- * `layout.xaxis2`, and so on.
- */
- protected String xAxis = "x";
- /**
- * Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the
- * default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to
- * `layout.yaxis2`, and so on.
- */
- protected String yAxis = "y";
-
- TraceBuilder() {}
-
- protected abstract String getType();
-
- public TraceBuilder name(String name) {
- this.name = name;
- return this;
- }
-
- public TraceBuilder opacity(double n) {
- Preconditions.checkArgument(n >= 0 && n <= 1);
- this.opacity = n;
- return this;
- }
-
- public TraceBuilder legendGroup(String group) {
- this.legendGroup = group;
- return this;
- }
-
- protected TraceBuilder showLegend(boolean showLegend) {
- this.showLegend = showLegend;
- return this;
- }
-
- protected TraceBuilder visible(AbstractTrace.Visibility visibility) {
- this.visible = visibility;
- return this;
- }
-
- protected TraceBuilder hoverLabel(HoverLabel hoverLabel) {
- this.hoverLabel = hoverLabel;
- return this;
- }
-
- // protected static String[] columnToStringArray(Column> column) {
- // String[] x = new String[column.size()];
- // for (int i = 0; i < column.size(); i++) {
- // x[i] = column.getString(i);
- // }
- // return x;
- // }
-
- public TraceBuilder xAxis(String xAxis) {
- Preconditions.checkArgument(xAxis.matches("^x[0-9]*$"));
- this.xAxis = xAxis;
- return this;
- }
-
- public TraceBuilder yAxis(String yAxis) {
- Preconditions.checkArgument(yAxis.matches("^y[0-9]*$"));
- this.yAxis = yAxis;
- return this;
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/ViolinTrace.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/ViolinTrace.java
deleted file mode 100644
index efa06542c0..0000000000
--- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/traces/ViolinTrace.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package tech.tablesaw.plotly.traces;
-
-import static tech.tablesaw.plotly.Utils.dataAsString;
-
-import com.mitchellbosecke.pebble.error.PebbleException;
-import com.mitchellbosecke.pebble.template.PebbleTemplate;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UncheckedIOException;
-import java.io.Writer;
-import java.util.Map;
-//import tech.tablesaw.api.CategoricalColumn;
-//import tech.tablesaw.api.NumericColumn;
-
-public class ViolinTrace extends AbstractTrace {
-
- private final Object[] x;
- private final double[] y;
- private final boolean showBoxPlot;
- private final boolean showMeanLine;
-
- private ViolinTrace(ViolinBuilder builder) {
- super(builder);
- this.x = builder.x;
- this.y = builder.y;
- this.showMeanLine = builder.showMeanLine;
- this.showBoxPlot = builder.showBoxPlot;
- }
-
- public static ViolinBuilder builder(Object[] x, double[] y) {
- return new ViolinBuilder(x, y);
- }
-
-// public static ViolinBuilder builder(CategoricalColumn> x, NumericColumn extends Number> y) {
-// return new ViolinBuilder(x, y);
-// }
-
- public static ViolinBuilder builder(double[] x, double[] y) {
- Double[] xObjs = new Double[x.length];
- for (int i = 0; i < x.length; i++) {
- xObjs[i] = x[i];
- }
- return new ViolinBuilder(xObjs, y);
- }
-
- @Override
- public String asJavascript(int i) {
- Writer writer = new StringWriter();
- PebbleTemplate compiledTemplate;
-
- try {
- compiledTemplate = engine.getTemplate("trace_template.html");
- compiledTemplate.evaluate(writer, getContext(i));
- } catch (PebbleException e) {
- throw new IllegalStateException(e);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return writer.toString();
- }
-
- private Map getContext(int i) {
-
- Map context = super.getContext();
- context.put("variableName", "trace" + i);
- context.put("y", dataAsString(y));
- context.put("x", dataAsString(x));
- if (showBoxPlot){
- context.put("box", "{visible: true}");
- }
- if (showMeanLine){
- context.put("meanLine", "{visible: true}");
- }
- return context;
- }
-
- public static class ViolinBuilder extends TraceBuilder {
-
- private static final String type = "violin";
- private final Object[] x;
- private final double[] y;
- private boolean showBoxPlot;
- private boolean showMeanLine;
-
- ViolinBuilder(Object[] x, double[] y) {
- this.x = x;
- this.y = y;
- }
-
- @Override
- public ViolinBuilder name(String name) {
- super.name(name);
- return this;
- }
-
-// ViolinBuilder(CategoricalColumn> x, NumericColumn extends Number> y) {
-// this.x = columnToStringArray(x);
-// this.y = y.asDoubleArray();
-// }
-
- public ViolinBuilder boxPlot(boolean show) {
- this.showBoxPlot = show;
- return this;
- }
-
- public ViolinBuilder meanLine(boolean show) {
- this.showMeanLine = show;
- return this;
- }
-
- public ViolinTrace build() {
- return new ViolinTrace(this);
- }
-
- @Override
- public ViolinBuilder xAxis(String xAxis) {
- super.xAxis(xAxis);
- return this;
- }
-
- @Override
- public ViolinBuilder yAxis(String yAxis) {
- super.yAxis(yAxis);
- return this;
- }
-
- @Override
- protected String getType() {
- return type;
- }
- }
-}
diff --git a/symja_android_library/matheclipse-external/src/main/resources/axis_template.html b/symja_android_library/matheclipse-external/src/main/resources/axis_template.html
deleted file mode 100644
index 4091b88bf2..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/axis_template.html
+++ /dev/null
@@ -1,105 +0,0 @@
-{
- title: '{{title}}',
-{% if titleFont is not null %}
- titlefont: {{titleFont.asJavascript() | raw}},
-{% endif %}
-{% if tickMode is not null %}
- tickmode: '{{tickMode}}',
- tickcolor: '{{tickColor}}',
- ticklen: {{tickLength}},
- tickwidth: {{tickWidth}},
- showticklabels: {{showTickLabels}},
-{% endif %}
-{% if tickFont is not null %}
- tickfont: {{tickFont | raw}},
-{% endif %}
-{% if tickText is not null %}
- ticktext: {{tickText | raw}},
-{% endif %}
-{% if tickValues is not null %}
- tickvals: {{tickValues}},
-{% endif %}
-{% if dTick is not null %}
- dtick: '{{dTick}}',
-{% endif %}
-{% if nTicks is not null %}
- nticks: '{{nTicks}}',
-{% endif %}
-{% if tick0 is not null %}
- tick0: '{{tick0}}',
-{% endif %}
-{% if showExponent is not null %}
- showExponent: '{{showExponent}}',
-{% endif %}
-{% if exponentFormat is not null %}
- exponentformat: '{{exponentFormat}}',
-{% endif %}
-{% if autoRange is not null %}
- autorange: '{{autoRange}}',
-{% endif %}
-{% if showSpikes is not null %}
- showspike: {{showSpikes}},
- spikemode: '{{spikeMode}}',
- spikethickness: {{spikeThickness}},
- spikesnap: '{{spikeSnap}}',
- spikecolor: '{{spikeColor}}',
- spikedash: '{{spikeDash}}',
-{% endif %}
-{% if lineColor is not null %}
- linecolor: '{{lineColor}}',
-{% endif %}
-{% if lineWidth is not null %}
- linewidth: {{lineWidth}},
-{% endif %}
-{% if showLine is not null %}
- showline: {{showLine}},
-{% endif %}
-{% if gridColor is not null %}
- gridcolor: '{{gridColor}}',
-{% endif %}
-{% if gridWidth is not null %}
- gridwidth: {{gridWidth}},
-{% endif %}
-{% if showGrid is not null %}
- showgrid: {{showGrid}},
-{% endif %}
-{% if zeroLineColor is not null %}
- zerolinecolor: '{{zeroLineColor}}',
-{% endif %}
-{% if zeroLineWidth is not null %}
- zerolinewidth: {{zeroLineWidth}},
-{% endif %}
-{% if zeroLine is not null %}
- zeroline: {{zeroLine}},
-{% endif %}
-{% if scaleRatio is not null %}
- scaleratio: '{{scaleRatio}}',
-{% endif %}
-{% if constrain is not null %}
- constrain: '{{constrain}}',
-{% endif %}
-{% if constrainToward is not null %}
- constraintoward: '{{constrainToward}}',
-{% endif %}
-{% if type is not null %}
- type: '{{type}}',
-{% endif %}
-{% if range is not null %}
- range: {{range | raw}}
-{% endif %}
-{% if visible is not null %}
- visible: {{visible}},
-{% endif %}
-{% if side is not null %}
- side: '{{side}}',
-{% endif %}
-{% if overlaying is not null %}
- overlaying: '{{overlaying}}'
-{% endif %}
-{% if categoryOrder is not null %}
- categoryorder: '{{categoryOrder}}'
-{% endif %}
-{% if domain is not null %}
- domain: {{domain}},
-{% endif %}
- }
\ No newline at end of file
diff --git a/symja_android_library/matheclipse-external/src/main/resources/camera_template.html b/symja_android_library/matheclipse-external/src/main/resources/camera_template.html
deleted file mode 100644
index 60ca31c0b4..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/camera_template.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-{% if eye is not null %}
- eye: {{eye | raw}},
-{% endif %}
-{% if center is not null %}
- center: {{center | raw}},
-{% endif %}
-{% if up is not null %}
- up: {{up | raw}},
-{% endif %}
-}
diff --git a/symja_android_library/matheclipse-external/src/main/resources/colorbar_template.html b/symja_android_library/matheclipse-external/src/main/resources/colorbar_template.html
deleted file mode 100644
index 7b84354892..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/colorbar_template.html
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-{% if thicknessMode is not null %}
- thicknessmode: '{{thicknessMode | raw}}',
-{% endif %}
-{% if lenMode is not null %}
- lenmode: '{{lenMode | raw}}',
-{% endif %}
-{% if borderWidth is not null %}
- borderwidth: {{borderWidth}},
-{% endif %}
-{% if outlineWidth is not null %}
- outlinewidth: {{outlinerWidth}},
-{% endif %}
-{% if x is not null %}
- x: {{x}},
-{% endif %}
-{% if y is not null %}
- y: {{y}},
-{% endif %}
-{% if xPad is not null %}
- xpad: {{xPad}},
-{% endif %}
-{% if yPad is not null %}
- ypad: {{yPad}},
-{% endif %}
-{% if borderColor is not null %}
- bordercolor: '{{borderColor}}',
-{% endif %}
-{% if bgColor is not null %}
- bgcolor: '{{bgColor}}',
-{% endif %}
-{% if outlineColor is not null %}
- outlinecolor: '{{outlineColor}}',
-{% endif %}
-{% if tickSettings is not null %}
- ticksettings: '{{tickSettings}}',
-{% endif %}
-{% if thickness is not null %}
- thickness: {{thickness}},
-{% endif %}
-{% if len is not null %}
- len: {{len}},
-{% endif %}
-{% if xAnchor is not null %}
- xanchor: '{{xAnchor | raw}}',
-{% endif %}
-{% if yAnchor is not null %}
- yanchor: '{{yAnchor | raw}}',
-{% endif %}
-{% if tickMode is not null %}
- tickmode: '{{tickMode}}',
- tickcolor: '{{tickColor}}',
- ticklen: {{tickLength}},
- tickwidth: {{tickWidth}},
- showticklabels: {{showTickLabels}},
-{% endif %}
-{% if tickFont is not null %}
- tickfont: {{tickFont | raw}},
-{% endif %}
-{% if tickText is not null %}
- ticktext: {{tickText | raw}},
-{% endif %}
-{% if tickValues is not null %}
- tickvals: {{tickValues}},
-{% endif %}
-{% if dTick is not null %}
- dtick: '{{dTick}}',
-{% endif %}
-{% if nTicks is not null %}
- nticks: '{{nTicks}}',
-{% endif %}
-{% if tick0 is not null %}
- tick0: '{{tick0}}',
-{% endif %}
-}
diff --git a/symja_android_library/matheclipse-external/src/main/resources/colors.txt b/symja_android_library/matheclipse-external/src/main/resources/colors.txt
deleted file mode 100644
index a2aaa63768..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/colors.txt
+++ /dev/null
@@ -1,369 +0,0 @@
-N 9/0 #e9e8e7
-N 8/0 #cacaca
-N 7/0 #b5b6b5
-N 6/0 #a3a2a2
-N 5/0 #888987
-N 4/0 #6b6c6b
-N 3/0 #525251
-N 2/0 #3b3a3a
-N 1/0 #222221
-2.5R 9/2 #f2e2e2, 2.5R 9/4 #ffdada, 2.5R 9/6 #ffd3d2
-2.5R 8/2 #d7c6c6, 2.5R 8/4 #ecc0bf, 2.5R 8/6 #fdb9b9, 2.5R 8/8 #ffb1b3, 2.5R 8/10 #ffa9ad
-2.5R 7/2 #bfabab, 2.5R 7/4 #d0a5a5, 2.5R 7/6 #e09ea0, 2.5R 7/8 #f0979a, 2.5R 7/10 #fe8f95, 2.5R 7/12 #ff858f, 2.5R 7/14 #ff7b8a, 2.5R 7/16 #ff6e85
-2.5R 6/2 #a59090, 2.5R 6/4 #b68a8b, 2.5R 6/6 #c68486, 2.5R 6/8 #d37d81, 2.5R 6/10 #e1757c, 2.5R 6/12 #ee6b77, 2.5R 6/14 #f96174, 2.5R 6/16 #ff526f, 2.5R 6/18 ff406c
-2.5R 5/2 #8b7677, 2.5R 5/4 #9c7072, 2.5R 5/6 #ab696d, 2.5R 5/8 #b86168, 2.5R 5/10 #c55864, 2.5R 5/12 #d24c60, 2.5R 5/14 #dc405d, 2.5R 5/16 #e82d5a
-2.5R 4/2 #735b5d, 2.5R 4/4 #825558, 2.5R 4/6 #904e54, 2.5R 4/8 #9c4551, 2.5R 4/10 #a83b4d, 2.5R 4/12 #b32d4a, 2.5R 4/14 #be1547
-2.5R 3/2 #5b4244, 2.5R 3/4 #6a3b40, 2.5R 3/6 #75333d, 2.5R 3/8 #82283a, 2.5R 3/10 #8d1737
-2.5R 2/2 #422c30, 2.5R 2/4 #4d252f, 2.5R 2/6 #571d2e, 2.5R 2/8 #620e2e
-2.5R 1/2 #2d161e, 2.5R 1/4 #360e1f, 2.5R 1/6 #3e0020
-5R 9/2 #f4e2df, 5R 9/4 #ffdad5, 5R 9/6 #ffd3cb
-5R 8/2 #d8c6c4, 5R 8/4 #edc0bb, 5R 8/6 #feb9b3, 5R 8/8 #ffb1aa, 5R 8/10 #ffa9a1
-5R 7/2 #c0aba9, 5R 7/4 #d1a5a1, 5R 7/6 #e29e99, 5R 7/8 #f19792, 5R 7/10 #ff8f8a, 5R 7/12 #ff8682, 5R 7/14 #ff7c7a
-5R 6/2 #a6908f, 5R 6/4 #b78a87, 5R 6/6 #c7847f, 5R 6/8 #d47d79, 5R 6/10 #e27571, 5R 6/12 #ef6b6a, 5R 6/14 #fb6163, 5R 6/16 #ff545c, 5R 6/18 #ff4455
-5R 5/2 #8c7675, 5R 5/4 #9d706d, 5R 5/6 #ac6966, 5R 5/8 #b9615f, 5R 5/10 #c65857, 5R 5/12 #d34d51, 5R 5/14 #dd414b, 5R 5/16 #e82f44, 5R 5/18 #f4083d
-5R 4/2 #745b5a, 5R 4/4 #835553, 5R 4/6 #914e4d, 5R 4/8 #9d4646, 5R 4/10 #a83c40, 5R 4/12 #b3303a, 5R 4/14 #be1a34
-5R 3/2 #5c4242, 5R 3/4 #6a3b3c, 5R 3/6 #763436, 5R 3/8 #822930, 5R 3/10 #8d192b
-5R 2/2 #422c2e, 5R 2/4 #4e252b, 5R 2/6 #581d28, 5R 2/8 #630e26
-5R 1/2 #2d161b, 5R 1/4 #370e1b
-7.5R 9/2 #f5e1dd, 7.5R 9/4 #ffdacf, 7.5R 9/6 #ffd3c2
-7.5R 8/2 #d9c6c2, 7.5R 8/4 #efbfb6, 7.5R 8/6 #ffb9ab, 7.5R 8/8 #ffb29e, 7.5R 8/10 #ffaa92
-7.5R 7/2 #c1aba7, 7.5R 7/4 #d3a59c, 7.5R 7/6 #e29f92, 7.5R 7/8 #f39887, 7.5R 7/10 #ff917c, 7.5R 7/12 #ff8870, 7.5R 7/14 #ff7f64, 7.5R 7/16 #ff7457
-7.5R 6/2 #a7908c, 7.5R 6/4 #b88a82, 7.5R 6/6 #c78479, 7.5R 6/8 #d57d6f, 7.5R 6/10 #e37564, 7.5R 6/12 #ef6d59, 7.5R 6/14 #fa644d, 7.5R 6/16 #ff5841, 7.5R 6/18 #ff4b33 'ff4b33'
-7.5R 5/2 #8c7673, 7.5R 5/4 #9d7069, 7.5R 5/6 #ac695f, 7.5R 5/8 #ba6255, 7.5R 5/10 #c6594b, 7.5R 5/12 #d24f40, 7.5R 5/14 #dc4436, 7.5R 5/16 #e7352a, 7.5R 5/18 #f0201e 'f0201e'
-7.5R 4/2 #745b59, 7.5R 4/4 #845550, 7.5R 4/6 #914e47, 7.5R 4/8 #9d463d, 7.5R 4/10 #a83e35, 7.5R 4/12 #b2322b, 7.5R 4/14 #bc2221
-7.5R 3/2 #5c4240, 7.5R 3/4 #6a3c37, 7.5R 3/6 #763530, 7.5R 3/8 #812b27, 7.5R 3/10 #8c1d1e
-7.5R 2/2 #422c2c, 7.5R 2/4 #4e2527, 7.5R 2/6 #581e22, 7.5R 2/8 #63101d
-7.5R 1/2 #2e1619, 7.5R 1/4 #380e17
-10R 9/2 #f5e1db, 10R 9/4 #ffdac9 'ffdac9', 10R 9/6 #ffd4b9 'ffd4b9'
-10R 8/2 #dac6c0, 10R 8/4 #efc0b0 'efc0b0', 10R 8/6 #ffbaa1 'ffbaa1', 10R 8/8 #ffb392 'ffb392', 10R 8/10 #ffad83 'ffad83'
-10R 7/2 #c1aba4, 10R 7/4 #d3a597 'd3a597', 10R 7/6 #e3a089 'e3a089', 10R 7/8 #f2997b 'f2997b', 10R 7/10 #fe936d 'fe936d', 10R 7/12 #ff8c5b 'ff8c5b', 10R 7/14 #ff8449 'ff8449', 10R 7/16 #ff7c31 'ff7c31'
-10R 6/2 #a7908a, 10R 6/4 #b88b7c 'b88b7c', 10R 6/6 #c78570 'c78570', 10R 6/8 #d47f63 'd47f63', 10R 6/10 #e17853 'e17853', 10R 6/12 #ec7143 'ec7143', 10R 6/14 #f7692f 'f7692f', 10R 6/16 #ff6114 'ff6114'
-10R 5/2 #8d7670, 10R 5/4 #9d7063 '9d7063', 10R 5/6 #ac6a56 'ac6a56', 10R 5/8 #b96449 'b96449', 10R 5/10 #c45c39 'c45c39', 10R 5/12 #cf5428 'cf5428', 10R 5/14 #d74d12 'd74d12'
-10R 4/2 #745c56, 10R 4/4 #84564a '84564a', 10R 4/6 #90503f '90503f', 10R 4/8 #9c4932 '9c4932', 10R 4/10 #a64124 'a64124', 10R 4/12 #af3812 'af3812'
-10R 3/2 #5b433e, 10R 3/4 #693d34 '693d34', 10R 3/6 #753629 '753629', 10R 3/8 #802d1e '802d1e', 10R 3/10 #892211 '892211'
-10R 2/2 #422c2a, 10R 2/4 #4e2622 '4e2622', 10R 2/6 #581f1a '581f1a', 10R 2/8 #621312 '621312'
-10R 1/2 #2e1617, 10R 1/4 #380e12 '380e12'
-2.5YR 9/2 #f7e1d7 'f7e1d7', 2.5YR 9/4 #ffdbc2 'ffdbc2', 2.5YR 9/6 #ffd6af 'ffd6af'
-2.5YR 8/2 #dbc6bd 'dbc6bd', 2.5YR 8/4 #efc1aa 'efc1aa', 2.5YR 8/6 #febc99 'febc99', 2.5YR 8/8 #ffb687 'ffb687', 2.5YR 8/10 #ffb174 'ffb174', 2.5YR 8/12 #ffab5f 'ffab5f'
-2.5YR 7/2 #c1aba1 'c1aba1', 2.5YR 7/4 #d2a691 'd2a691', 2.5YR 7/6 #e1a180 'e1a180', 2.5YR 7/8 #ef9c70 'ef9c70', 2.5YR 7/10 #fa965f 'fa965f', 2.5YR 7/12 #ff9148 'ff9148', 2.5YR 7/14 #ff8b2c 'ff8b2c'
-2.5YR 6/2 #a89086 'a89086', 2.5YR 6/4 #b78c78 'b78c78', 2.5YR 6/6 #c58668 'c58668', 2.5YR 6/8 #d28158 'd28158', 2.5YR 6/10 #dd7c45 'dd7c45', 2.5YR 6/12 #e6762f 'e6762f', 2.5YR 6/14 #ee710a 'ee710a'
-2.5YR 5/2 #8d766d '8d766d', 2.5YR 5/4 #9c715f '9c715f', 2.5YR 5/6 #aa6c4f 'aa6c4f', 2.5YR 5/8 #b6663d 'b6663d', 2.5YR 5/10 #bf612a 'bf612a', 2.5YR 5/12 #c75c0f 'c75c0f'
-2.5YR 4/2 #745c53 '745c53', 2.5YR 4/4 #825745 '825745', 2.5YR 4/6 #8e5237 '8e5237', 2.5YR 4/8 #984c26 '984c26', 2.5YR 4/10 #a0470f 'a0470f'
-2.5YR 3/2 #5b433b '5b433b', 2.5YR 3/4 #673e2f '673e2f', 2.5YR 3/6 #723820 '723820', 2.5YR 3/8 #7b320e '7b320e'
-2.5YR 2/2 #412d27 '412d27', 2.5YR 2/4 #4d271d '4d271d', 2.5YR 2/6 #572111 '572111'
-2.5YR 1/2 #2d1714 '2d1714', 2.5YR 1/4 #380f0a '380f0a', 2.5YR 1/6 #410302 '410302'
-5YR 9/2 #f7e2d2 'f7e2d2', 5YR 9/4 #ffddbb 'ffddbb', 5YR 9/6 #ffd9a7 'ffd9a7'
-5YR 8/2 #dbc6b8 'dbc6b8', 5YR 8/4 #ecc2a4 'ecc2a4', 5YR 8/6 #fabe91 'fabe91', 5YR 8/8 #ffba7b 'ffba7b', 5YR 8/10 #ffb666 'ffb666', 5YR 8/12 #ffb24d 'ffb24d', 5YR 8/14 #ffae2b 'ffae2b'
-5YR 7/2 #c1ab9e 'c1ab9e', 5YR 7/4 #d0a78b 'd0a78b', 5YR 7/6 #dea378 'dea378', 5YR 7/8 #e99f65 'e99f65', 5YR 7/10 #f39b4f 'f39b4f', 5YR 7/12 #fd9734 'fd9734'
-5YR 6/2 #a79183 'a79183', 5YR 6/4 #b58d72 'b58d72', 5YR 6/6 #c2895f 'c2895f', 5YR 6/8 #cd844b 'cd844b', 5YR 6/10 #d68035 'd68035', 5YR 6/12 #dd7d15 'dd7d15'
-5YR 5/2 #8c776a '8c776a', 5YR 5/4 #9a7359 '9a7359', 5YR 5/6 #a66e46 'a66e46', 5YR 5/8 #b06a32 'b06a32', 5YR 5/10 #b86619 'b86619'
-5YR 4/2 #735d50 '735d50', 5YR 4/4 #805840 '805840', 5YR 4/6 #8a542f '8a542f', 5YR 4/8 #92501b '92501b'
-5YR 3/2 #594439 '594439', 5YR 3/4 #65402a '65402a', 5YR 3/6 #6e3b19 '6e3b19'
-5YR 2/2 #402d25 '402d25', 5YR 2/4 #4b2917 '4b2917', 5YR 2/6 #542401 '542401'
-5YR 1/2 #2c1810 '2c1810'
-7.5YR 9/2 #f6e2ce 'f6e2ce', 7.5YR 9/4 #ffdfb6 'ffdfb6', 7.5YR 9/6 #ffdc9f 'ffdc9f', 7.5YR 9/8 #ffd988 'ffd988'
-7.5YR 8/2 #dac7b5 'dac7b5', 7.5YR 8/4 #e9c49f 'e9c49f', 7.5YR 8/6 #f6c08a 'f6c08a', 7.5YR 8/8 #ffbd72 'ffbd72', 7.5YR 8/10 #ffba5a 'ffba5a', 7.5YR 8/12 #ffb73c 'ffb73c'
-7.5YR 7/2 #c0ac9b 'c0ac9b', 7.5YR 7/4 #cea986 'cea986', 7.5YR 7/6 #daa671 'daa671', 7.5YR 7/8 #e3a35b 'e3a35b', 7.5YR 7/10 #eca042 'eca042', 7.5YR 7/12 #f39d1c 'f39d1c'
-7.5YR 6/2 #a69281 'a69281', 7.5YR 6/4 #b38e6e 'b38e6e', 7.5YR 6/6 #be8b58 'be8b58', 7.5YR 6/8 #c78841 'c78841', 7.5YR 6/10 #cf8524 'cf8524'
-7.5YR 5/2 #8b7768 '8b7768', 7.5YR 5/4 #987455 '987455', 7.5YR 5/6 #a3713f 'a3713f', 7.5YR 5/8 #ab6d27 'ab6d27'
-7.5YR 4/2 #725d4e '725d4e', 7.5YR 4/4 #7e5a3b '7e5a3b', 7.5YR 4/6 #865728 '865728', 7.5YR 4/8 #8c540e '8c540e'
-7.5YR 3/2 #584537 '584537', 7.5YR 3/4 #624226 '624226', 7.5YR 3/6 #693f11 '693f11'
-7.5YR 2/2 #3f2e23 '3f2e23', 7.5YR 2/4 #482b12 '482b12'
-7.5YR 1/2 #2b190d '2b190d'
-10YR 9/2 #f4e3ca 'f4e3ca', 10YR 9/4 #ffe1b0 'ffe1b0', 10YR 9/6 #ffdf98 'ffdf98', 10YR 9/8 #ffdd7e 'ffdd7e'
-10YR 8/2 #d8c8b1 'd8c8b1', 10YR 8/4 #e4c69a 'e4c69a', 10YR 8/6 #efc482 'efc482', 10YR 8/8 #f8c168 'f8c168', 10YR 8/10 #ffbf4d 'ffbf4d', 10YR 8/12 #ffbd28 'ffbd28'
-10YR 7/2 #bead97 'bead97', 10YR 7/4 #caab80 'caab80', 10YR 7/6 #d4a969 'd4a969', 10YR 7/8 #dca650 'dca650', 10YR 7/10 #e3a433 'e3a433'
-10YR 6/2 #a3937e 'a3937e', 10YR 6/4 #ae9068 'ae9068', 10YR 6/6 #b88e50 'b88e50', 10YR 6/8 #c08c36 'c08c36', 10YR 6/10 #c68a10 'c68a10'
-10YR 5/2 #897865 '897865', 10YR 5/4 #94764f '94764f', 10YR 5/6 #9d7337 '9d7337', 10YR 5/8 #a4711b 'a4711b'
-10YR 4/2 #6f5f4c '6f5f4c', 10YR 4/4 #7a5c36 '7a5c36', 10YR 4/6 #815a21 '815a21'
-10YR 3/2 #554636 '554636', 10YR 3/4 #5e4423 '5e4423', 10YR 3/6 #644108 '644108'
-10YR 2/2 #3d2f21 '3d2f21', 10YR 2/4 #452d0d '452d0d'
-10YR 1/2 #291a0a '291a0a'
-2.5Y 9/2 #f1e5c7 'f1e5c7', 2.5Y 9/4 #fbe4ac 'fbe4ac', 2.5Y 9/6 #ffe292 'ffe292', 2.5Y 9/8 #ffe177 'ffe177', 2.5Y 9/10 #ffe05a 'ffe05a', 2.5Y 9/12 #ffde34 'ffde34'
-2.5Y 8/2 #d6c9ae 'd6c9ae', 2.5Y 8/4 #dfc896 'dfc896', 2.5Y 8/6 #e8c77c 'e8c77c', 2.5Y 8/8 #efc561 'efc561', 2.5Y 8/10 #f6c442 'f6c442', 2.5Y 8/12 #fbc30a 'fbc30a'
-2.5Y 7/2 #bbae95 'bbae95', 2.5Y 7/4 #c5ad7d 'c5ad7d', 2.5Y 7/6 #cdab63 'cdab63', 2.5Y 7/8 #d4aa48 'd4aa48', 2.5Y 7/10 #d9a923 'd9a923'
-2.5Y 6/2 #a0947c 'a0947c', 2.5Y 6/4 #aa9264 'aa9264', 2.5Y 6/6 #b2914a 'b2914a', 2.5Y 6/8 #b88f2c 'b88f2c'
-2.5Y 5/2 #867964 '867964', 2.5Y 5/4 #8f784b '8f784b', 2.5Y 5/6 #977630 '977630', 2.5Y 5/8 #9c750d '9c750d'
-2.5Y 4/2 #6c604a '6c604a', 2.5Y 4/4 #755e33 '755e33', 2.5Y 4/6 #7b5d1a '7b5d1a'
-2.5Y 3/2 #524734 '524734', 2.5Y 3/4 #5a461f '5a461f'
-2.5Y 2/2 #3a3020 '3a3020', 2.5Y 2/4 #412e07 '412e07'
-2.5Y 1/2 #261b07 '261b07'
-5Y 9/2 #eee6c5 'eee6c5', 5Y 9/4 #f5e6a9 'f5e6a9', 5Y 9/6 #fbe68d 'fbe68d', 5Y 9/8 #ffe670 'ffe670', 5Y 9/10 #ffe550 'ffe550', 5Y 9/12 #ffe51d 'ffe51d'
-5Y 8/2 #d3caac 'd3caac', 5Y 8/4 #d9ca92 'd9ca92', 5Y 8/6 #dfca77 'dfca77', 5Y 8/8 #e4ca5a 'e4ca5a', 5Y 8/10 #e9c936 'e9c936'
-5Y 7/2 #b8af94 'b8af94', 5Y 7/4 #beaf79 'beaf79', 5Y 7/6 #c5af5e 'c5af5e', 5Y 7/8 #caae41 'caae41', 5Y 7/10 #ceae0f 'ceae0f'
-5Y 6/2 #9d957a '9d957a', 5Y 6/4 #a49561 'a49561', 5Y 6/6 #aa9445 'aa9445', 5Y 6/8 #af9323 'af9323'
-5Y 5/2 #837b62 '837b62', 5Y 5/4 #8a7a49 '8a7a49', 5Y 5/6 #90792b '90792b'
-5Y 4/2 #696149 '696149', 5Y 4/4 #706031 '706031', 5Y 4/6 #745f15 '745f15'
-5Y 3/2 #504834 '504834', 5Y 3/4 #55471e '55471e'
-5Y 2/2 #383120 '383120', 5Y 2/4 #3e3002 '3e3002'
-5Y 1/2 #241c07 '241c07'
-7.5Y 9/2 #ece7c4 'ece7c4', 7.5Y 9/4 #f0e8a8 'f0e8a8', 7.5Y 9/6 #f4e88c 'f4e88c', 7.5Y 9/8 #f8e86d 'f8e86d', 7.5Y 9/10 #fbe94c 'fbe94c', 7.5Y 9/12 #fee90c 'fee90c'
-7.5Y 8/2 #d0cbac 'd0cbac', 7.5Y 8/4 #d5cc91 'd5cc91', 7.5Y 8/6 #d9cc75 'd9cc75', 7.5Y 8/8 #dccd56 'dccd56', 7.5Y 8/10 #dfcd30 'dfcd30'
-7.5Y 7/2 #b5b093 'b5b093', 7.5Y 7/4 #bab178 'bab178', 7.5Y 7/6 #beb15d 'beb15d', 7.5Y 7/8 #c1b13d 'c1b13d'
-7.5Y 6/2 #9b967a '9b967a', 7.5Y 6/4 #9f9660 '9f9660', 7.5Y 6/6 #a39743 'a39743', 7.5Y 6/8 #a6971d 'a6971d'
-7.5Y 5/2 #817c62 '817c62', 7.5Y 5/4 #857c48 '857c48', 7.5Y 5/6 #897c29 '897c29'
-7.5Y 4/2 #676249 '676249', 7.5Y 4/4 #6b6230 '6b6230', 7.5Y 4/6 #6e6211 '6e6211'
-7.5Y 3/2 #4d4934 '4d4934', 7.5Y 3/4 #51491d '51491d'
-7.5Y 2/2 #363220 '363220', 7.5Y 2/4 #3a3200 '3a3200'
-7.5Y 1/2 #211d09 '211d09'
-10Y 9/2 #e9e7c4 'e9e7c4', 10Y 9/4 #ece9a8 'ece9a8', 10Y 9/6 #eeea8c 'eeea8c', 10Y 9/8 #f0eb6c 'f0eb6c', 10Y 9/10 #f2ec4a 'f2ec4a'
-10Y 8/2 #ceccab 'ceccab', 10Y 8/4 #d0cd91 'd0cd91', 10Y 8/6 #d2ce75 'd2ce75', 10Y 8/8 #d4cf56 'd4cf56', 10Y 8/10 #d6d02f 'd6d02f'
-10Y 7/2 #b3b193 'b3b193', 10Y 7/4 #b5b279 'b5b279', 10Y 7/6 #b7b35d 'b7b35d', 10Y 7/8 #b9b43d 'b9b43d')>&nbsnbsp
-10Y 6/2 #98977a '98977a', 10Y 6/4 #9a9861 '9a9861', 10Y 6/6 #9c9943 '9c9943', 10Y 6/8 #9e991d '9e991d'
-10Y 5/2 #7e7c63 '7e7c63', 10Y 5/4 #807e48 '807e48', 10Y 5/6 #827e2a '827e2a'
-10Y 4/2 #62634b '62634b', 10Y 4/4 #666430 '666430', 10Y 4/6 #676411 '676411'
-10Y 3/2 #4a4a35 '4a4a35', 10Y 3/4 #4c4a1d '4c4a1d'
-10Y 2/2 #333222 '333222', 10Y 2/4 #353304 '353304'
-10Y 1/2 #1e1e0c '1e1e0c'
-2.5GY 9/2 #e6e8c5 'e6e8c5', 2.5GY 9/4 #e6eba9 'e6eba9', 2.5GY 9/6 #e5ed8e 'e5ed8e', 2.5GY 9/8 #e4ee6f 'e4ee6f', 2.5GY 9/10 #e3f04e 'e3f04e', 2.5GY 9/12 #e2f10d 'e2f10d'
-2.5GY 8/2 #cbcdac 'cbcdac', 2.5GY 8/4 #cacf93 'cacf93', 2.5GY 8/6 #c9d178 'c9d178', 2.5GY 8/8 #c8d35c 'c8d35c', 2.5GY 8/10 #c7d435 'c7d435'
-2.5GY 7/2 #afb294 'afb294', 2.5GY 7/4 #aeb47b 'aeb47b', 2.5GY 7/6 #aeb662 'aeb662', 2.5GY 7/8 #adb743 'adb743', 2.5GY 7/10 #acb90b 'acb90b'
-2.5GY 6/2 #94987c '94987c', 2.5GY 6/4 #949a63 '949a63', 2.5GY 6/6 #939b48 '939b48', 2.5GY 6/8 #929d24 '929d24'
-2.5GY 5/2 #7a7d64 '7a7d64', 2.5GY 5/4 #797f4c '797f4c', 2.5GY 5/6 #788130 '788130'
-2.5GY 4/2 #60644c '60644c', 2.5GY 4/4 #5f6534 '5f6534', 2.5GY 4/6 #5e6717 '5e6717'
-2.5GY 3/2 #474a36 '474a36', 2.5GY 3/4 #464c20 '464c20'
-2.5GY 2/2 #303324 '303324', 2.5GY 2/4 #2f350c '2f350c'
-2.5GY 1/2 #1b1e0f '1b1e0f'
-5GY 9/2 #e3e9c6 'e3e9c6', 5GY 9/4 #e0ecac 'e0ecac', 5GY 9/6 #dcef92 'dcef92', 5GY 9/8 #d8f276 'd8f276', 5GY 9/10 #d4f457 'd4f457', 5GY 9/12 #d0f629 'd0f629'
-5GY 8/2 #c7ceae 'c7ceae', 5GY 8/4 #c4d097 'c4d097', 5GY 8/6 #c0d37e 'c0d37e', 5GY 8/8 #bcd564 'bcd564', 5GY 8/10 #b8d844 'b8d844'
-5GY 7/2 #acb396 'acb396', 5GY 7/4 #a8b67f 'a8b67f', 5GY 7/6 #a4b868 'a4b868', 5GY 7/8 #a0ba4d 'a0ba4d', 5GY 7/10 #9cbc27 '9cbc27'
-5GY 6/2 #91987e '91987e', 5GY 6/4 #8d9b67 '8d9b67', 5GY 6/6 #899e50 '899e50', 5GY 6/8 #84a032 '84a032'
-5GY 5/2 #777e67 '777e67', 5GY 5/4 #738151 '738151', 5GY 5/6 #6e8338 '6e8338', 5GY 5/8 #6a8517 '6a8517'
-5GY 4/2 #5d644e '5d644e', 5GY 4/4 #596738 '596738', 5GY 4/6 #546920 '546920'
-5GY 3/2 #454b38 '454b38', 5GY 3/4 #404d25 '404d25', 5GY 3/6 #3b4f0b '3b4f0b'
-5GY 2/2 #2e3426 '2e3426', 5GY 2/4 #293613 '293613'
-5GY 1/2 #191f12 '191f12'
-7.5GY 9/2 #dbebcb 'dbebcb', 7.5GY 9/4 #d2efb6 'd2efb6', 7.5GY 9/6 #c9f39f 'c9f39f', 7.5GY 9/8 #c0f688 'c0f688', 7.5GY 9/10 #b6fa6f 'b6fa6f', 7.5GY 9/12 #acfc53 'acfc53', 7.5GY 9/14 #a1ff2c 'a1ff2c'
-7.5GY 8/2 #c0cfb3 'c0cfb3', 7.5GY 8/4 #b7d39f 'b7d39f', 7.5GY 8/6 #afd78b 'afd78b', 7.5GY 8/8 #a6da75 'a6da75', 7.5GY 8/10 #9cdd5e '9cdd5e', 7.5GY 8/12 #92e03f '92e03f'
-7.5GY 7/2 #a6b49b 'a6b49b', 7.5GY 7/4 #9db888 '9db888', 7.5GY 7/6 #95bb75 '95bb75', 7.5GY 7/8 #8cbe60 '8cbe60', 7.5GY 7/10 #81c146 '81c146', 7.5GY 7/12 #76c425 '76c425'
-7.5GY 6/2 #8c9a81 '8c9a81', 7.5GY 6/4 #839d70 '839d70', 7.5GY 6/6 #7aa05d '7aa05d', 7.5GY 6/8 #70a346 '70a346', 7.5GY 6/10 #65a62b '65a62b'
-7.5GY 5/2 #727f6a '727f6a', 7.5GY 5/4 #6a8259 '6a8259', 7.5GY 5/6 #608645 '608645', 7.5GY 5/8 #56882f '56882f', 7.5GY 5/10 #4a8b0a '4a8b0a'
-7.5GY 4/2 #596552 '596552', 7.5GY 4/4 #4f6841 '4f6841', 7.5GY 4/6 #456b2e '456b2e', 7.5GY 4/8 #3a6e13 '3a6e13'
-7.5GY 3/2 #414c3c '414c3c', 7.5GY 3/4 #384f2c '384f2c', 7.5GY 3/6 #2d511b '2d511b'
-7.5GY 2/2 #2b3428 '2b3428', 7.5GY 2/4 #22371a '22371a', 7.5GY 2/6 #153907 '153907'
-7.5GY 1/2 #161f15 '161f15', 7.5GY 1/4 #062302 '062302'
-10GY 9/2 #d5ecd1 'd5ecd1', 10GY 9/4 #c8f1bf 'c8f1bf', 10GY 9/6 #b7f6ac 'b7f6ac', 10GY 9/8 #a9fa9c 'a9fa9c', 10GY 9/10 #98fe89 '98fe89', 10GY 9/12 #86ff78 '86ff78', 10GY 9/14 #6fff63 '6fff63', 10GY 9/16 #50ff4b '50ff4b', 10GY 9/18 #10ff29 '10ff29'
-10GY 8/2 #bbd0b7 'bbd0b7', 10GY 8/4 #aed5a8 'aed5a8', 10GY 8/6 #a0d997 'a0d997', 10GY 8/8 #92dd88 '92dd88', 10GY 8/10 #81e076 '81e076', 10GY 8/12 #6ee463 '6ee463', 10GY 8/14 #55e74f '55e74f', 10GY 8/16 #2fea36 '2fea36'
-10GY 7/2 #a1b59f 'a1b59f', 10GY 7/4 #95b98f '95b98f', 10GY 7/6 #88bd81 '88bd81', 10GY 7/8 #79c171 '79c171', 10GY 7/10 #67c460 '67c460', 10GY 7/12 #51c84d '51c84d', 10GY 7/14 #33ca37 '33ca37'
-10GY 6/2 #879a86 '879a86', 10GY 6/4 #7b9e77 '7b9e77', 10GY 6/6 #6da268 '6da268', 10GY 6/8 #5da658 '5da658', 10GY 6/10 #4aa948 '4aa948', 10GY 6/12 #2eac34 '2eac34'
-10GY 5/2 #6f806e '6f806e', 10GY 5/4 #628460 '628460', 10GY 5/6 #548751 '548751', 10GY 5/8 #428b41 '428b41', 10GY 5/10 #298e30 '298e30'
-10GY 4/2 #566555 '566555', 10GY 4/4 #496948 '496948', 10GY 4/6 #386d39 '386d39', 10GY 4/8 #227029 '227029'
-10GY 3/2 #3e4c3f '3e4c3f', 10GY 3/4 #315033 '315033', 10GY 3/6 #205326 '205326'
-10GY 2/2 #29342a '29342a', 10GY 2/4 #1c3820 '1c3820', 10GY 2/6 #033a16 '033a16'
-10GY 1/2 #141f17 '141f17'
-2.5G 9/2 #d0edd6 'd0edd6', 2.5G 9/4 #bef2ca 'bef2ca', 2.5G 9/6 #a7f8bc 'a7f8bc', 2.5G 9/8 #91fcb1 '91fcb1', 2.5G 9/10 #76ffa6 '76ffa6', 2.5G 9/12 #54ff9b '54ff9b'
-2.5G 8/2 #b7d1bd 'b7d1bd', 2.5G 8/4 #a6d6b2 'a6d6b2', 2.5G 8/6 #91dba6 '91dba6', 2.5G 8/8 #7cdf9c '7cdf9c', 2.5G 8/10 #62e391 '62e391', 2.5G 8/12 #35e786 '35e786'
-2.5G 7/2 #9db6a3 '9db6a3', 2.5G 7/4 #8cba99 '8cba99', 2.5G 7/6 #7abf8f '7abf8f', 2.5G 7/8 #63c385 '63c385', 2.5G 7/10 #43c77a '43c77a'
-2.5G 6/2 #849b8a '849b8a', 2.5G 6/4 #72a080 '72a080', 2.5G 6/6 #5fa476 '5fa476', 2.5G 6/8 #45a86d '45a86d', 2.5G 6/10 #14ab64 '14ab64'
-2.5G 5/2 #6b8071 '6b8071', 2.5G 5/4 #5a8568 '5a8568', 2.5G 5/6 #45895f '45895f', 2.5G 5/8 #228c56 '228c56'
-2.5G 4/2 #536659 '536659', 2.5G 4/4 #406a50 '406a50', 2.5G 4/6 #246e48 '246e48'
-2.5G 3/2 #3c4c41 '3c4c41', 2.5G 3/4 #29503a '29503a', 2.5G 3/6 #065433 '065433'
-2.5G 2/2 #27352c '27352c', 2.5G 2/4 #153826 '153826'
-2.5G 1/2 #132018 '132018'
-5G 9/2 #ceedda 'ceedda', 5G 9/4 #b8f3d2 'b8f3d2', 5G 9/6 #9cf9ca '9cf9ca', 5G 9/8 #7efec3 '7efec3', 5G 9/10 #59ffbd '59ffbd'
-5G 8/2 #b4d1c0 'b4d1c0', 5G 8/4 #a0d6b9 'a0d6b9', 5G 8/6 #87dcb2 '87dcb2', 5G 8/8 #6be0ab '6be0ab', 5G 8/10 #43e4a6 '43e4a6'
-5G 7/2 #9bb6a7 '9bb6a7', 5G 7/4 #87bba0 '87bba0', 5G 7/6 #71bf99 '71bf99', 5G 7/8 #54c494 '54c494', 5G 7/10 #19c88e '19c88e'
-5G 6/2 #829b8d '829b8d', 5G 6/4 #6ca086 '6ca086', 5G 6/6 #55a480 '55a480', 5G 6/8 #31a87b '31a87b'
-5G 5/2 #698074 '698074', 5G 5/4 #55856e '55856e', 5G 5/6 #3b8968 '3b8968'
-5G 4/2 #51665b '51665b', 5G 4/4 #3b6b55 '3b6b55', 5G 4/6 #186f50 '186f50'
-5G 3/2 #3a4d43 '3a4d43', 5G 3/4 #24513e '24513e'
-5G 2/2 #26352e '26352e', 5G 2/4 #113829 '113829'
-5G 1/2 #112019 '112019'
-7.5G 9/2 #ccedde 'ccedde', 7.5G 9/4 #b4f3d8 'b4f3d8', 7.5G 9/6 #96f9d2 '96f9d2', 7.5G 9/8 #75fecd '75fecd', 7.5G 9/10 #48ffc9 '48ffc9'
-7.5G 8/2 #b3d1c3 'b3d1c3', 7.5G 8/4 #9dd6be '9dd6be', 7.5G 8/6 #82dcb9 '82dcb9', 7.5G 8/8 #64e0b5 '64e0b5', 7.5G 8/10 #2fe4b1 '2fe4b1'
-7.5G 7/2 #9ab6a9 '9ab6a9', 7.5G 7/4 #84bba4 '84bba4', 7.5G 7/6 #6cbfa0 '6cbfa0', 7.5G 7/8 #4ac49c '4ac49c'
-7.5G 6/2 #819b8f '819b8f', 7.5G 6/4 #69a08a '69a08a', 7.5G 6/6 #4fa587 '4fa587', 7.5G 6/8 #23a883 '23a883'
-7.5G 5/2 #688076 '688076', 7.5G 5/4 #528572 '528572', 7.5G 5/6 #34896e '34896e'
-7.5G 4/2 #50665d '50665d', 7.5G 4/4 #386b59 '386b59', 7.5G 4/6 #056f56 '056f56'
-7.5G 3/2 #394d45 '394d45', 7.5G 3/4 #205142 '205142'
-7.5G 2/2 #25352f '25352f', 7.5G 2/4 #0d382c '0d382c'
-7.5G 1/2 #10201b '10201b'
-10G 9/2 #cbede0 'cbede0', 10G 9/4 #b2f3dd 'b2f3dd', 10G 9/6 #92f9d9 '92f9d9', 10G 9/8 #6cfed6 '6cfed6', 10G 9/10 #33ffd4 '33ffd4'
-10G 8/2 #b2d1c6 'b2d1c6', 10G 8/4 #9bd7c2 '9bd7c2', 10G 8/6 #7edcc0 '7edcc0', 10G 8/8 #5ce0bd '5ce0bd', 10G 8/10 #14e4bb '14e4bb'
-10G 7/2 #99b6ac '99b6ac', 10G 7/4 #82bba9 '82bba9', 10G 7/6 #67c0a6 '67c0a6', 10G 7/8 #40c4a4 '40c4a4'
-10G 6/2 #809b92 '809b92', 10G 6/4 #66a08f '66a08f', 10G 6/6 #4aa58d '4aa58d', 10G 6/8 #0ba98b '0ba98b'
-10G 5/2 #678078 '678078', 10G 5/4 #4f8576 '4f8576', 10G 5/6 #2f8974 '2f8974'
-10G 4/2 #4f665f '4f665f', 10G 4/4 #356b5d '356b5d'
-10G 3/2 #384d47 '384d47', 10G 3/4 #1b5145 '1b5145'
-10G 2/2 #243530 '243530', 10G 2/4 #07392f '07392f'
-10G 1/2 #0f201c '0f201c'
-2.5BG 9/2 #cbede3 'cbede3', 2.5BG 9/4 #b0f3e1 'b0f3e1', 2.5BG 9/6 #8ef9e0 '8ef9e0', 2.5BG 9/8 #64fedf '64fedf', 2.5BG 9/10 #0fffdf '0fffdf'
-2.5BG 8/2 #b1d1c8 'b1d1c8', 2.5BG 8/4 #98d7c6 '98d7c6', 2.5BG 8/6 #7cdbc6 '7cdbc6', 2.5BG 8/8 #55e0c5 '55e0c5'
-2.5BG 7/2 #98b6ad '98b6ad', 2.5BG 7/4 #80bbad '80bbad', 2.5BG 7/6 #64bfac '64bfac', 2.5BG 7/8 #36c4ac '36c4ac'
-2.5BG 6/2 #7f9b94 '7f9b94', 2.5BG 6/4 #64a093 '64a093', 2.5BG 6/6 #46a593 '46a593'
-2.5BG 5/2 #66807a '66807a', 2.5BG 5/4 #4d857a '4d857a', 2.5BG 5/6 #2a897a '2a897a'
-2.5BG 4/2 #4e6661 '4e6661', 2.5BG 4/4 #316b62 '316b62'
-2.5BG 3/2 #374d49 '374d49', 2.5BG 3/4 #17514a '17514a'
-2.5BG 2/2 #233532 '233532', 2.5BG 2/4 #003833 '003833'
-2.5BG 1/2 #0e201e '0e201e'
-5BG 9/2 #cbede5 'cbede5', 5BG 9/4 #aef3e6 'aef3e6', 5BG 9/6 #8bf9e8 '8bf9e8', 5BG 9/8 #5afee9 '5afee9'
-5BG 8/2 #b1d1cb 'b1d1cb', 5BG 8/4 #97d6cc '97d6cc', 5BG 8/6 #79dbcd '79dbcd', 5BG 8/8 #4be0d0 '4be0d0'
-5BG 7/2 #97b6b0 '97b6b0', 5BG 7/4 #7ebbb2 '7ebbb2', 5BG 7/6 #61bfb4 '61bfb4', 5BG 7/8 #29c4b6 '29c4b6'
-5BG 6/2 #7e9b97 '7e9b97', 5BG 6/4 #63a099 '63a099', 5BG 6/6 #3fa49b '3fa49b'
-5BG 5/2 #66807d '66807d', 5BG 5/4 #4b8580 '4b8580', 5BG 5/6 #228982 '228982'
-5BG 4/2 #4d6664 '4d6664', 5BG 4/4 #2f6b67 '2f6b67'
-5BG 3/2 #364d4b '364d4b', 5BG 3/4 #11514f '11514f'
-5BG 2/2 #223534 '223534'
-5BG 1/2 #0c2020 '0c2020'
-7.5BG 9/2 #cbece9 'cbece9', 7.5BG 9/4 #aef2ed 'aef2ed', 7.5BG 9/6 #88f8f1 '88f8f1', 7.5BG 9/8 #4ffdf6 '4ffdf6'
-7.5BG 8/2 #b2d0ce 'b2d0ce', 7.5BG 8/4 #97d6d1 '97d6d1', 7.5BG 8/6 #75dbd6 '75dbd6', 7.5BG 8/8 #45dfda '45dfda'
-7.5BG 7/2 #98b5b3 '98b5b3', 7.5BG 7/4 #7dbab7 '7dbab7', 7.5BG 7/6 #5fbfbb '5fbfbb', 7.5BG 7/8 #22c3c0 '22c3c0'
-7.5BG 6/2 #7e9b99 '7e9b99', 7.5BG 6/4 #62a09e '62a09e', 7.5BG 6/6 #3da4a3 '3da4a3'
-7.5BG 5/2 #658080 '658080', 7.5BG 5/4 #4b8484 '4b8484', 7.5BG 5/6 #1b8989 '1b8989'
-7.5BG 4/2 #4c6666 '4c6666', 7.5BG 4/4 #2e6a6b '2e6a6b'
-7.5BG 3/2 #354d4d '354d4d', 7.5BG 3/4 #0d5153 '0d5153'
-7.5BG 2/2 #223536 '223536'
-7.5BG 1/2 #0b2022 '0b2022'
-10BG 9/2 #cdeceb 'cdeceb', 10BG 9/4 #aef2f2 'aef2f2', 10BG 9/6 #87f7f9 '87f7f9'
-10BG 8/2 #b3d0d0 'b3d0d0', 10BG 8/4 #97d5d6 '97d5d6', 10BG 8/6 #76dadd '76dadd', 10BG 8/8 #42dee4 '42dee4'
-10BG 7/2 #99b5b6 '99b5b6', 10BG 7/4 #7ebabc '7ebabc', 10BG 7/6 #5fbec3 '5fbec3', 10BG 7/8 #1dc2ca '1dc2ca'
-10BG 6/2 #7f9a9b '7f9a9b', 10BG 6/4 #649fa3 '649fa3', 10BG 6/6 #3ca3aa '3ca3aa'
-10BG 5/2 #668082 '668082', 10BG 5/4 #4b8489 '4b8489', 10BG 5/6 #1a8891 '1a8891'
-10BG 4/2 #4d6668 '4d6668', 10BG 4/4 #2e6a70 '2e6a70'
-10BG 3/2 #354c50 '354c50', 10BG 3/4 #0d5058 '0d5058'
-10BG 2/2 #213538 '213538'
-10BG 1/2 #0a2024 '0a2024'
-2.5B 9/2 #cfebed 'cfebed', 2.5B 9/4 #b0f1f8 'b0f1f8'
-2.5B 8/2 #b5cfd2 'b5cfd2', 2.5B 8/4 #99d4db '99d4db', 2.5B 8/6 #78d9e4 '78d9e4', 2.5B 8/8 #45ddee '45ddee'
-2.5B 7/2 #9ab4b7 '9ab4b7', 2.5B 7/4 #80b9c0 '80b9c0', 2.5B 7/6 #62bdc9 '62bdc9', 2.5B 7/8 #28c0d3 '28c0d3'
-2.5B 6/2 #809a9d '809a9d', 2.5B 6/4 #679ea6 '679ea6', 2.5B 6/6 #40a2b0 '40a2b0'
-2.5B 5/2 #677f83 '677f83', 2.5B 5/4 #4d838d '4d838d', 2.5B 5/6 #208796 '208796'
-2.5B 4/2 #4d656a '4d656a', 2.5B 4/4 #306974 '306974'
-2.5B 3/2 #354c52 '354c52', 2.5B 3/4 #0e505c '0e505c'
-2.5B 2/2 #213439 '213439'
-2.5B 1/2 #0a2025 '0a2025'
-5B 9/2 #d2eaef 'd2eaef', 5B 9/4 #b4effd 'b4effd'
-5B 8/2 #b8ced3 'b8ced3', 5B 8/4 #9ed3df '9ed3df', 5B 8/6 #80d7eb '80d7eb', 5B 8/8 #50dbf9 '50dbf9'
-5B 7/2 #9db3b9 '9db3b9', 5B 7/4 #85b7c4 '85b7c4', 5B 7/6 #68bbcf '68bbcf', 5B 7/8 #3cbedb '3cbedb'
-5B 6/2 #83999f '83999f', 5B 6/4 #6c9da9 '6c9da9', 5B 6/6 #4ba0b6 '4ba0b6'
-5B 5/2 #697f85 '697f85', 5B 5/4 #518290 '518290', 5B 5/6 #2d859c '2d859c'
-5B 4/2 #4f656c '4f656c', 5B 4/4 #356877 '356877'
-5B 3/2 #364c53 '364c53', 5B 3/4 #144f5f '144f5f'
-5B 2/2 #22343b '22343b'
-5B 1/2 #0a1f27 '0a1f27'
-7.5B 9/2 #d6e9ef 'd6e9ef', 7.5B 9/4 #baeeff 'baeeff'
-7.5B 8/2 #bbcdd4 'bbcdd4', 7.5B 8/4 #a4d1e1 'a4d1e1', 7.5B 8/6 #89d5ef '89d5ef', 7.5B 8/8 #60d8ff '60d8ff'
-7.5B 7/2 #a0b3ba 'a0b3ba', 7.5B 7/4 #8ab6c6 '8ab6c6', 7.5B 7/6 #72b9d3 '72b9d3', 7.5B 7/8 #4fbce1 '4fbce1'
-7.5B 6/2 #8598a0 '8598a0', 7.5B 6/4 #729bac '729bac', 7.5B 6/6 #579eb9 '579eb9', 7.5B 6/8 #2ea0c6 '2ea0c6'
-7.5B 5/2 #6b7e86 '6b7e86', 7.5B 5/4 #578193 '578193', 7.5B 5/6 #3b839f '3b839f'
-7.5B 4/2 #51646d '51646d', 7.5B 4/4 #3c677a '3c677a', 7.5B 4/6 #186986 '186986'
-7.5B 3/2 #374b55 '374b55', 7.5B 3/4 #1d4e62 '1d4e62'
-7.5B 2/2 #23343c '23343c', 7.5B 2/4 #043648 '043648'
-7.5B 1/2 #0c1f28 '0c1f28'
-10B 9/2 #d8e8f0 'd8e8f0', 10B 9/4 #c0ecff 'c0ecff'
-10B 8/2 #beccd4 'beccd4', 10B 8/4 #abcfe4 'abcfe4', 10B 8/6 #95d2f3 '95d2f3', 10B 8/8 #75d5ff '75d5ff'
-10B 7/2 #a3b2ba 'a3b2ba', 10B 7/4 #92b4c8 '92b4c8', 10B 7/6 #7eb7d6 '7eb7d6', 10B 7/8 #63b9e4 '63b9e4', 10B 7/10 #35bbf4 '35bbf4'
-10B 6/2 #8897a0 '8897a0', 10B 6/4 #789aad '789aad', 10B 6/6 #639cbc '639cbc', 10B 6/8 #479ec9 '479ec9'
-10B 5/2 #6e7d87 '6e7d87', 10B 5/4 #5d7f94 '5d7f94', 10B 5/6 #4881a1 '4881a1', 10B 5/8 #2383af '2383af'
-10B 4/2 #54636e '54636e', 10B 4/4 #42657b '42657b', 10B 4/6 #2a6788 '2a6788'
-10B 3/2 #3a4b56 '3a4b56', 10B 3/4 #264c64 '264c64'
-10B 2/2 #25333e '25333e', 10B 2/4 #0f354a '0f354a'
-10B 1/2 #0f1e2a '0f1e2a'
-2.5PB 9/2 #dce7f0 'dce7f0'
-2.5PB 8/2 #c1cbd5 'c1cbd5', 2.5PB 8/4 #b3cde5 'b3cde5', 2.5PB 8/6 #a2cff5 'a2cff5'
-2.5PB 7/2 #a6b1bb 'a6b1bb', 2.5PB 7/4 #99b2c9 '99b2c9', 2.5PB 7/6 #8bb4d8 '8bb4d8', 2.5PB 7/8 #78b5e7 '78b5e7', 2.5PB 7/10 #5eb7f8 '5eb7f8'
-2.5PB 6/2 #8b96a1 '8b96a1', 2.5PB 6/4 #8098ae '8098ae', 2.5PB 6/6 #7099bd '7099bd', 2.5PB 6/8 #5f9acc '5f9acc', 2.5PB 6/10 #459bda '459bda'
-2.5PB 5/2 #717c88 '717c88', 2.5PB 5/4 #657e95 '657e95', 2.5PB 5/6 #557fa3 '557fa3', 2.5PB 5/8 #4180b1 '4180b1', 2.5PB 5/10 #1c81bf '1c81bf'
-2.5PB 4/2 #57626f '57626f', 2.5PB 4/4 #4a647c '4a647c', 2.5PB 4/6 #3a6489 '3a6489', 2.5PB 4/8 #1c6597 '1c6597'
-2.5PB 3/2 #3d4a57 '3d4a57', 2.5PB 3/4 #2f4b65 '2f4b65', 2.5PB 3/6 #184b72 '184b72'
-2.5PB 2/2 #28323f '28323f', 2.5PB 2/4 #19334b '19334b'
-2.5PB 1/2 #121e2a '121e2a'
-5PB 9/2 #dfe6f0 'dfe6f0'
-5PB 8/2 #c4cbd5 'c4cbd5', 5PB 8/4 #bacce5 'bacce5', 5PB 8/6 #adccf7 'adccf7'
-5PB 7/2 #a9b0bb 'a9b0bb', 5PB 7/4 #a0b1c9 'a0b1c9', 5PB 7/6 #95b1d8 '95b1d8', 5PB 7/8 #89b2e8 '89b2e8', 5PB 7/10 #78b2f9 '78b2f9'
-5PB 6/2 #8e95a1 '8e95a1', 5PB 6/4 #8696af '8696af', 5PB 6/6 #7c96be '7c96be', 5PB 6/8 #7097cd '7097cd', 5PB 6/10 #6097db '6097db', 5PB 6/12 #4898eb '4898eb', 5PB 6/14 #1798fb '1798fb'
-5PB 5/2 #757b88 '757b88', 5PB 5/4 #6c7c96 '6c7c96', 5PB 5/6 #627ca4 '627ca4', 5PB 5/8 #557cb2 '557cb2', 5PB 5/10 #437dc0 '437dc0', 5PB 5/12 #267dce '267dce'
-5PB 4/2 #5b616f '5b616f', 5PB 4/4 #52627d '52627d', 5PB 4/6 #47628a '47628a', 5PB 4/8 #376298 '376298', 5PB 4/10 #2062a5 '2062a5'
-5PB 3/2 #414958 '414958', 5PB 3/4 #384966 '384966', 5PB 3/6 #2a4973 '2a4973', 5PB 3/8 #15497f '15497f'
-5PB 2/2 #2b313f '2b313f', 5PB 2/4 #22324c '22324c', 5PB 2/6 #113259 '113259'
-5PB 1/2 #161d2b '161d2b', 5PB 1/4 #0b1d36 '0b1d36'
-7.5PB 9/2 #e2e5f0 'e2e5f0'
-7.5PB 8/2 #c7cad5 'c7cad5', 7.5PB 8/4 #c2c9e5 'c2c9e5', 7.5PB 8/6 #bcc9f6 'bcc9f6'
-7.5PB 7/2 #acafbb 'acafbb', 7.5PB 7/4 #a8aec9 'a8aec9', 7.5PB 7/6 #a3aed9 'a3aed9', 7.5PB 7/8 #9eade8 '9eade8', 7.5PB 7/10 #98abf9 '98abf9'
-7.5PB 6/2 #9294a1 '9294a1', 7.5PB 6/4 #8e94af '8e94af', 7.5PB 6/6 #8a93be '8a93be', 7.5PB 6/8 #8592cb '8592cb', 7.5PB 6/10 #8091d9 '8091d9', 7.5PB 6/12 #798fe9 '798fe9', 7.5PB 6/14 #728ef9 '728ef9'
-7.5PB 5/2 #787a88 '787a88', 7.5PB 5/4 #747a95 '747a95', 7.5PB 5/6 #7079a4 '7079a4', 7.5PB 5/8 #6c77b1 '6c77b1', 7.5PB 5/10 #6776be '6776be', 7.5PB 5/12 #6175cc '6175cc', 7.5PB 5/14 #5a73da '5a73da', 7.5PB 5/16 #5371e8 '5371e8', 7.5PB 5/18 #4d6df7 '4d6df7', 7.5PB 5/20 #486aff '486aff'
-7.5PB 4/2 #5e6070 '5e6070', 7.5PB 4/4 #5b5f7d '5b5f7d', 7.5PB 4/6 #575e8a '575e8a', 7.5PB 4/8 #535d97 '535d97', 7.5PB 4/10 #4d5ba4 '4d5ba4', 7.5PB 4/12 #485ab1 '485ab1', 7.5PB 4/14 #4457bd '4457bd', 7.5PB 4/16 #4054ca '4054ca', 7.5PB 4/18 #3e50d7 '3e50d7', 7.5PB 4/20 #3d4ae5 '3d4ae5', 7.5PB 4/22 #3e46ee '3e46ee', 7.5PB 4/24 #3f3ffa '3f3ffa', 7.5PB 4/26 #4137ff '4137ff'
-7.5PB 3/2 #464758 '464758', 7.5PB 3/4 #424666 '424666', 7.5PB 3/6 #3e4573 '3e4573', 7.5PB 3/8 #3a437f '3a437f', 7.5PB 3/10 #36418b '36418b', 7.5PB 3/12 #333e97 '333e97', 7.5PB 3/14 #323aa3 '323aa3', 7.5PB 3/16 #3235af '3235af', 7.5PB 3/18 #332fb9 '332fb9', 7.5PB 3/20 #3529c2 '3529c2', 7.5PB 3/22 #381fcd '381fcd', 7.5PB 3/24 #3b0ed7 '3b0ed7'
-7.5PB 2/2 #2f3040 '2f3040', 7.5PB 2/4 #2c2f4c '2c2f4c', 7.5PB 2/6 #292d58 '292d58', 7.5PB 2/8 #262b64 '262b64', 7.5PB 2/10 #242870 '242870', 7.5PB 2/12 #25247a '25247a', 7.5PB 2/14 #261e84 '261e84', 7.5PB 2/16 #29168d '29168d', 7.5PB 2/18 #2c0897 '2c0897'
-7.5PB 1/2 #1b1b2b '1b1b2b', 7.5PB 1/4 #181a36 '181a36', 7.5PB 1/6 #161741 '161741', 7.5PB 1/8 #17134b '17134b', 7.5PB 1/10 #190e54 '190e54', 7.5PB 1/12 #1c055c '1c055c'
-10PB 9/2 #e5e4ef 'e5e4ef', 10PB 9/4 #e3e3ff 'e3e3ff'
-10PB 8/2 #cac9d4 'cac9d4', 10PB 8/4 #c9c8e3 'c9c8e3', 10PB 8/6 #c8c5f4 'c8c5f4', 10PB 8/8 #c7c3ff 'c7c3ff'
-10PB 7/2 #afaeba 'afaeba', 10PB 7/4 #aeadc9 'aeadc9', 10PB 7/6 #aeabd7 'aeabd7', 10PB 7/8 #ada9e5 'ada9e5', 10PB 7/10 #ada6f5 'ada6f5', 10PB 7/12 #ada3ff 'ada3ff'
-10PB 6/2 #9594a1 '9594a1', 10PB 6/4 #9592ae '9592ae', 10PB 6/6 #9490bc '9490bc', 10PB 6/8 #948ec8 '948ec8', 10PB 6/10 #948cd5 '948cd5', 10PB 6/12 #9489e4 '9489e4', 10PB 6/14 #9586f2 '9586f2', 10PB 6/16 #9681ff '9681ff'
-10PB 5/2 #7b7988 '7b7988', 10PB 5/4 #7b7894 '7b7894', 10PB 5/6 #7c75a2 '7c75a2', 10PB 5/8 #7c73af '7c73af', 10PB 5/10 #7c70ba '7c70ba', 10PB 5/12 #7d6dc7 '7d6dc7', 10PB 5/14 #7e6ad4 '7e6ad4', 10PB 5/16 #7f66e0 '7f66e0', 10PB 5/18 #8162eb '8162eb', 10PB 5/20 #835df7 '835df7', 10PB 5/22 #8756ff '8756ff'
-10PB 4/2 #625f70 '625f70', 10PB 4/4 #625d7c '625d7c', 10PB 4/6 #635b88 '635b88', 10PB 4/8 #645894 '645894', 10PB 4/10 #6456a0 '6456a0', 10PB 4/12 #6652ac '6652ac', 10PB 4/14 #674eb7 '674eb7', 10PB 4/16 #6a49c1 '6a49c1', 10PB 4/18 #6d43cc '6d43cc', 10PB 4/20 #713cd8 '713cd8', 10PB 4/22 #7434e0 '7434e0', 10PB 4/24 #782aea '782aea', 10PB 4/26 #7c17f4 '7c17f4'
-10PB 3/2 #4a4658 '4a4658', 10PB 3/4 #4a4465 '4a4465', 10PB 3/6 #4c4170 '4c4170', 10PB 3/8 #4d3e7b '4d3e7b', 10PB 3/10 #4f3a87 '4f3a87', 10PB 3/12 #513691 '513691', 10PB 3/14 #54309c '54309c', 10PB 3/16 #5828a6 '5828a6', 10PB 3/18 #5b1faf '5b1faf', 10PB 3/20 #5f10b8 '5f10b8'
-10PB 2/2 #332f3f '332f3f', 10PB 2/4 #342d4b '342d4b', 10PB 2/6 #362a55 '362a55', 10PB 2/8 #382660 '382660', 10PB 2/10 #3a216a '3a216a', 10PB 2/12 #3d1b73 '3d1b73', 10PB 2/14 #41127c '41127c'
-10PB 1/2 #1f1a2b '1f1a2b', 10PB 1/4 #211735 '211735', 10PB 1/6 #23143e '23143e', 10PB 1/8 #250f46 '250f46', 10PB 1/10 #29064f '29064f'
-2.5P 9/2 #e7e4ef 'e7e4ef', 2.5P 9/4 #e9e1ff 'e9e1ff'
-2.5P 8/2 #ccc9d3 'ccc9d3', 2.5P 8/4 #cec6e2 'cec6e2', 2.5P 8/6 #d1c3f0 'd1c3f0', 2.5P 8/8 #d4c0ff 'd4c0ff'
-2.5P 7/2 #b1aeba 'b1aeba', 2.5P 7/4 #b4abc7 'b4abc7', 2.5P 7/6 #b7a8d3 'b7a8d3', 2.5P 7/8 #baa5e0 'baa5e0', 2.5P 7/10 #bea1ee 'bea1ee', 2.5P 7/12 #c29dfb 'c29dfb'
-2.5P 6/2 #9793a0 '9793a0', 2.5P 6/4 #9a90ac '9a90ac', 2.5P 6/6 #9d8eb9 '9d8eb9', 2.5P 6/8 #a18ac5 'a18ac5', 2.5P 6/10 #a487d1 'a487d1', 2.5P 6/12 #a983dc 'a983dc', 2.5P 6/14 #ad7ee8 'ad7ee8', 2.5P 6/16 #b379f4 'b379f4', 2.5P 6/18 #b773fe 'b773fe'
-2.5P 5/2 #7e7987 '7e7987', 2.5P 5/4 #817693 '817693', 2.5P 5/6 #84739f '84739f', 2.5P 5/8 #886fab '886fab', 2.5P 5/10 #8c6cb5 '8c6cb5', 2.5P 5/12 #9068c0 '9068c0', 2.5P 5/14 #9563ca '9563ca', 2.5P 5/16 #995dd4 '995dd4', 2.5P 5/18 #9e57de '9e57de', 2.5P 5/20 #a350e9 'a350e9', 2.5P 5/22 #a847f3 'a847f3', 2.5P 5/24 #ad3bfe 'ad3bfe', 2.5P 5/26 #b32cff 'b32cff'
-2.5P 4/2 #655e6f '655e6f', 2.5P 4/4 #685b7a '685b7a', 2.5P 4/6 #6c5985 '6c5985', 2.5P 4/8 #70558f '70558f', 2.5P 4/10 #74519a '74519a', 2.5P 4/12 #784ca4 '784ca4', 2.5P 4/14 #7d46ae '7d46ae', 2.5P 4/16 #823fb7 '823fb7', 2.5P 4/18 #8737c1 '8737c1', 2.5P 4/20 #8c2bcb '8c2bcb', 2.5P 4/22 #901ed3 '901ed3'
-2.5P 3/2 #4d4557 '4d4557', 2.5P 3/4 #514263 '514263', 2.5P 3/6 #553e6d '553e6d', 2.5P 3/8 #593a77 '593a77', 2.5P 3/10 #5e3481 '5e3481', 2.5P 3/12 #622e8a '622e8a', 2.5P 3/14 #672693 '672693', 2.5P 3/16 #6c1a9c '6c1a9c', 2.5P 3/18 #7104a5 '7104a5'
-2.5P 2/2 #362e3e '362e3e', 2.5P 2/4 #392b48 '392b48', 2.5P 2/6 #3d2851 '3d2851', 2.5P 2/8 #42225b '42225b', 2.5P 2/10 #471c64 '471c64', 2.5P 2/12 #4c126c '4c126c'
-2.5P 1/2 #22192a '22192a', 2.5P 1/4 #261533 '261533', 2.5P 1/6 #2a113a '2a113a', 2.5P 1/8 #2e0942 '2e0942'
-5P 9/2 #e8e4ee 'e8e4ee', 5P 9/4 #eee0fd 'eee0fd'
-5P 8/2 #cdc8d2 'cdc8d2', 5P 8/4 #d3c5df 'd3c5df', 5P 8/6 #d8c1ec 'd8c1ec', 5P 8/8 #dfbdf9 'dfbdf9', 5P 8/10 #e5b8ff 'e5b8ff'
-5P 7/2 #b4adb9 'b4adb9', 5P 7/4 #b9aac4 'b9aac4', 5P 7/6 #bea6cf 'bea6cf', 5P 7/8 #c4a3db 'c4a3db', 5P 7/10 #ca9ee7 'ca9ee7', 5P 7/12 #d099f2 'd099f2', 5P 7/14 #d794fd 'd794fd'
-5P 6/2 #9a929f '9a929f', 5P 6/4 #9f8faa '9f8faa', 5P 6/6 #a58bb5 'a58bb5', 5P 6/8 #aa88bf 'aa88bf', 5P 6/10 #b083ca 'b083ca', 5P 6/12 #b67fd4 'b67fd4', 5P 6/14 #bc79df 'bc79df', 5P 6/16 #c273e9 'c273e9', 5P 6/18 #c86cf3 'c86cf3', 5P 6/20 #cf64fe 'cf64fe'
-5P 5/2 #807885 '807885', 5P 5/4 #867590 '867590', 5P 5/6 #8c719b '8c719b', 5P 5/8 #926da5 '926da5', 5P 5/10 #9768af '9768af', 5P 5/12 #9d63b9 '9d63b9', 5P 5/14 #a35dc2 'a35dc2', 5P 5/16 #a957cb 'a957cb', 5P 5/18 #af4fd4 'af4fd4', 5P 5/20 #b546dd 'b546dd', 5P 5/22 #bb39e7 'bb39e7', 5P 5/24 #c228f0 'c228f0', 5P 5/26 #c801f9 'c801f9'
-5P 4/2 #685e6d '685e6d', 5P 4/4 #6d5a78 '6d5a78', 5P 4/6 #735681 '735681', 5P 4/8 #78528a '78528a', 5P 4/10 #7e4d94 '7e4d94', 5P 4/12 #84479d '84479d', 5P 4/14 #8a40a6 '8a40a6', 5P 4/16 #9037af '9037af', 5P 4/18 #962cb8 '962cb8', 5P 4/20 #9c1ac1 '9c1ac1'
-5P 3/2 #504456 '504456', 5P 3/4 #564060 '564060', 5P 3/6 #5b3c69 '5b3c69', 5P 3/8 #613772 '613772', 5P 3/10 #67307b '67307b', 5P 3/12 #6d2884 '6d2884', 5P 3/14 #731d8c '731d8c', 5P 3/16 #790894 '790894'
-5P 2/2 #382e3d '382e3d', 5P 2/4 #3e2a46 '3e2a46', 5P 2/6 #42264d '42264d', 5P 2/8 #491f57 '491f57', 5P 2/10 #4e175f '4e175f', 5P 2/12 #540967 '540967'
-5P 1/2 #241829 '241829', 5P 1/4 #291431 '291431', 5P 1/6 #2e0e38 '2e0e38', 5P 1/8 #33043f '33043f'
-7.5P 9/2 #ece3eb 'ece3eb', 7.5P 9/4 #f8def6 'f8def6', 7.5P 9/6 #ffd8ff 'ffd8ff'
-7.5P 8/2 #d0c7d0 'd0c7d0', 7.5P 8/4 #dbc3d9 'dbc3d9', 7.5P 8/6 #e3bfe2 'e3bfe2', 7.5P 8/8 #eeb8ed 'eeb8ed', 7.5P 8/10 #f8b3f7 'f8b3f7', 7.5P 8/12 #ffacff 'ffacff'
-7.5P 7/2 #b7acb6 'b7acb6', 7.5P 7/4 #c0a8bf 'c0a8bf', 7.5P 7/6 #c8a4c8 'c8a4c8', 7.5P 7/8 #d19fd1 'd19fd1', 7.5P 7/10 #da99db 'da99db', 7.5P 7/12 #e293e3 'e293e3', 7.5P 7/14 #eb8ced 'eb8ced', 7.5P 7/16 #f485f6 'f485f6', 7.5P 7/18 #fd7cff 'fd7cff'
-7.5P 6/2 #9d919d '9d919d', 7.5P 6/4 #a58ea5 'a58ea5', 7.5P 6/6 #ae89af 'ae89af', 7.5P 6/8 #b684b7 'b684b7', 7.5P 6/10 #be7fc0 'be7fc0', 7.5P 6/12 #c679c8 'c679c8', 7.5P 6/14 #ce72d1 'ce72d1', 7.5P 6/16 #d66bd9 'd66bd9', 7.5P 6/18 #dd62e2 'dd62e2', 7.5P 6/20 #e656ec 'e656ec', 7.5P 6/22 #ef47f5 'ef47f5', 7.5P 6/24 #f734fe 'f734fe'
-7.5P 5/2 #837783 '837783', 7.5P 5/4 #8b738c '8b738c', 7.5P 5/6 #946e95 '946e95', 7.5P 5/8 #9c699e '9c699e', 7.5P 5/10 #a364a6 'a364a6', 7.5P 5/12 #aa5dae 'aa5dae', 7.5P 5/14 #b256b6 'b256b6', 7.5P 5/16 #b94ebe 'b94ebe', 7.5P 5/18 #c043c7 'c043c7', 7.5P 5/20 #c836cf 'c836cf', 7.5P 5/22 #d020d8 'd020d8'
-7.5P 4/2 #6b5d6b '6b5d6b', 7.5P 4/4 #725974 '725974', 7.5P 4/6 #7a547c '7a547c', 7.5P 4/8 #814f84 '814f84', 7.5P 4/10 #88498c '88498c', 7.5P 4/12 #8f4294 '8f4294', 7.5P 4/14 #96399c '96399c', 7.5P 4/16 #9e2ca5 '9e2ca5', 7.5P 4/18 #a51aad 'a51aad'
-7.5P 3/2 #534454 '534454', 7.5P 3/4 #5a3f5c '5a3f5c', 7.5P 3/6 #613a64 '613a64', 7.5P 3/8 #69336d '69336d', 7.5P 3/10 #6f2c75 '6f2c75', 7.5P 3/12 #76217d '76217d', 7.5P 3/14 #7d0f85 '7d0f85'
-7.5P 2/2 #3a2d3c '3a2d3c', 7.5P 2/4 #412943 '412943', 7.5P 2/6 #47244a '47244a', 7.5P 2/8 #4e1c53 '4e1c53', 7.5P 2/10 #54125a '54125a'
-7.5P 1/2 #261828 '261828', 7.5P 1/4 #2c132f '2c132f', 7.5P 1/6 #310c35 '310c35'
-10P 9/2 #ede3e9 'ede3e9', 10P 9/4 #fcddf1 'fcddf1', 10P 9/6 #ffd7f9 'ffd7f9'
-10P 8/2 #d2c7ce 'd2c7ce', 10P 8/4 #dec2d5 'dec2d5', 10P 8/6 #eabddd 'eabddd', 10P 8/8 #f7b6e5 'f7b6e5', 10P 8/10 #ffb0ec 'ffb0ec', 10P 8/12 #ffa9f4 'ffa9f4', 10P 8/14 #ffa0fd 'ffa0fd'
-10P 7/2 #b9acb4 'b9acb4', 10P 7/4 #c4a7bb 'c4a7bb', 10P 7/6 #cfa2c2 'cfa2c2', 10P 7/8 #da9cc9 'da9cc9', 10P 7/10 #e496d1 'e496d1', 10P 7/12 #ed90d7 'ed90d7', 10P 7/14 #f888df 'f888df', 10P 7/16 #ff7ee7 'ff7ee7', 10P 7/18 #ff74ee 'ff74ee', 10P 7/20 #ff68f6 'ff68f6', 10P 7/22 #ff58ff 'ff58ff'
-10P 6/2 #9f919b '9f919b', 10P 6/4 #a98da2 'a98da2', 10P 6/6 #b487a9 'b487a9', 10P 6/8 #bd82af 'bd82af', 10P 6/10 #c77cb6 'c77cb6', 10P 6/12 #d075bd 'd075bd', 10P 6/14 #da6cc4 'da6cc4', 10P 6/16 #e364cb 'e364cb', 10P 6/18 #eb5ad2 'eb5ad2', 10P 6/20 #f54bda 'f54bda', 10P 6/22 #fe39e1 'fe39e1', 10P 6/24 #ff1de8 'ff1de8'
-10P 5/2 #857781 '857781', 10P 5/4 #8f7288 '8f7288', 10P 5/6 #9a6d8f '9a6d8f', 10P 5/8 #a46696 'a46696', 10P 5/10 #ac609d 'ac609d', 10P 5/12 #b559a4 'b559a4', 10P 5/14 #bd50aa 'bd50aa', 10P 5/16 #c646b1 'c646b1', 10P 5/18 #ce39b8 'ce39b8', 10P 5/20 #d724bf 'd724bf'
-10P 4/2 #6d5c69 '6d5c69', 10P 4/4 #775770 '775770', 10P 4/6 #805277 '805277', 10P 4/8 #884c7d '884c7d', 10P 4/10 #904584 '904584', 10P 4/12 #983d8b '983d8b', 10P 4/14 #a03291 'a03291', 10P 4/16 #a82398 'a82398'
-10P 3/2 #554351 '554351', 10P 3/4 #5e3e59 '5e3e59', 10P 3/6 #663860 '663860', 10P 3/8 #6f3067 '6f3067', 10P 3/10 #76276e '76276e', 10P 3/12 #7f1875 '7f1875'
-10P 2/2 #3c2d3a '3c2d3a', 10P 2/4 #432841 '432841', 10P 2/6 #4a2347 '4a2347', 10P 2/8 #521a4e '521a4e', 10P 2/10 #590d55 '590d55'
-10P 1/2 #271727 '271727', 10P 1/4 #2e122d '2e122d', 10P 1/6 #330b33 '330b33'
-2.5RP 9/2 #efe2e8 'efe2e8', 2.5RP 9/4 #ffdcec 'ffdcec', 2.5RP 9/6 #ffd5f1 'ffd5f1'
-2.5RP 8/2 #d3c7cc 'd3c7cc', 2.5RP 8/4 #e2c1d1 'e2c1d1', 2.5RP 8/6 #f1bbd5 'f1bbd5', 2.5RP 8/8 #ffb4da 'ffb4da', 2.5RP 8/10 #ffaddf 'ffaddf', 2.5RP 8/12 #ffa4e4 'ffa4e4', 2.5RP 8/14 #ff9bea 'ff9bea'
-2.5RP 7/2 #baacb2 'baacb2', 2.5RP 7/4 #c7a6b6 'c7a6b6', 2.5RP 7/6 #d5a0bb 'd5a0bb', 2.5RP 7/8 #e19ac0 'e19ac0', 2.5RP 7/10 #ec93c4 'ec93c4', 2.5RP 7/12 #f88cca 'f88cca', 2.5RP 7/14 #ff83ce 'ff83ce', 2.5RP 7/16 #ff78d4 'ff78d4', 2.5RP 7/18 #ff6bda 'ff6bda', 2.5RP 7/20 #ff5be0 'ff5be0'
-2.5RP 6/2 #a19199 'a19199', 2.5RP 6/4 #ad8c9d 'ad8c9d', 2.5RP 6/6 #b986a2 'b986a2', 2.5RP 6/8 #c480a6 'c480a6', 2.5RP 6/10 #cf79ab 'cf79ab', 2.5RP 6/12 #da71b0 'da71b0', 2.5RP 6/14 #e568b5 'e568b5', 2.5RP 6/16 #ef5dba 'ef5dba', 2.5RP 6/18 #f951bf 'f951bf', 2.5RP 6/20 #ff3fc4 'ff3fc4', 2.5RP 6/22 #ff29c9 'ff29c9'
-2.5RP 5/2 #87777f '87777f', 2.5RP 5/4 #937184 '937184', 2.5RP 5/6 #9f6b89 '9f6b89', 2.5RP 5/8 #ab648e 'ab648e', 2.5RP 5/10 #b45d92 'b45d92', 2.5RP 5/12 #be5497 'be5497', 2.5RP 5/14 #c84a9c 'c84a9c', 2.5RP 5/16 #d13ea1 'd13ea1', 2.5RP 5/18 #da2ca6 'da2ca6', 2.5RP 5/20 #e307ab 'e307ab'
-2.5RP 4/2 #6f5c66 '6f5c66', 2.5RP 4/4 #7a576b '7a576b', 2.5RP 4/6 #855070 '855070', 2.5RP 4/8 #8f4975 '8f4975', 2.5RP 4/10 #98417a '98417a', 2.5RP 4/12 #a1377f 'a1377f', 2.5RP 4/14 #aa2a84 'aa2a84', 2.5RP 4/16 #b31489 'b31489'
-2.5RP 3/2 #57434e '57434e', 2.5RP 3/4 #623d54 '623d54', 2.5RP 3/6 #6b3659 '6b3659', 2.5RP 3/8 #752d5e '752d5e', 2.5RP 3/10 #7e2263 '7e2263', 2.5RP 3/12 #870e69 '870e69'
-2.5RP 2/2 #3e2c38 '3e2c38', 2.5RP 2/4 #46273d '46273d', 2.5RP 2/6 #4e2142 '4e2142', 2.5RP 2/8 #571648 '571648', 2.5RP 2/10 #5f034d '5f034d'
-2.5RP 1/2 #291726 '291726', 2.5RP 1/4 #30112b '30112b', 2.5RP 1/6 #360931 '360931'
-5RP 9/2 #f0e2e6 'f0e2e6', 5RP 9/4 #ffdbe7 'ffdbe7', 5RP 9/6 #ffd4e8 'ffd4e8'
-5RP 8/2 #d5c7cb 'd5c7cb', 5RP 8/4 #e5c1cb 'e5c1cb', 5RP 8/6 #f6bacd 'f6bacd', 5RP 8/8 #ffb2ce 'ffb2ce', 5RP 8/10 #ffabd0 'ffabd0', 5RP 8/12 #ffa0d2 'ffa0d2'
-5RP 7/2 #bcabb0 'bcabb0', 5RP 7/4 #caa6b1 'caa6b1', 5RP 7/6 #da9fb3 'da9fb3', 5RP 7/8 #e898b4 'e898b4', 5RP 7/10 #f491b6 'f491b6', 5RP 7/12 #ff88b8 'ff88b8', 5RP 7/14 #ff7eba 'ff7eba', 5RP 7/16 #ff72bd 'ff72bd', 5RP 7/18 #ff64c0 'ff64c0'
-5RP 6/2 #a39096 'a39096', 5RP 6/4 #b08b97 'b08b97', 5RP 6/6 #bf8499 'bf8499', 5RP 6/8 #cb7e9b 'cb7e9b', 5RP 6/10 #d6779c 'd6779c', 5RP 6/12 #e26e9f 'e26e9f', 5RP 6/14 #ee64a1 'ee64a1', 5RP 6/16 #f958a4 'f958a4', 5RP 6/18 #ff49a6 'ff49a6', 5RP 6/20 #ff2faa 'ff2faa', 5RP 6/22 #ff04ac 'ff04ac'
-5RP 5/2 #89767c '89767c', 5RP 5/4 #97707e '97707e', 5RP 5/6 #a46a80 'a46a80', 5RP 5/8 #b16282 'b16282', 5RP 5/10 #bc5a84 'bc5a84', 5RP 5/12 #c75087 'c75087', 5RP 5/14 #d24489 'd24489', 5RP 5/16 #dc358c 'dc358c', 5RP 5/18 #e61c8e 'e61c8e'
-5RP 4/2 #715c63 '715c63', 5RP 4/4 #7d5665 '7d5665', 5RP 4/6 #8a4f68 '8a4f68', 5RP 4/8 #95476a '95476a', 5RP 4/10 #9e3f6d '9e3f6d', 5RP 4/12 #a93270 'a93270', 5RP 4/14 #b22273 'b22273'
-5RP 3/2 #58424b '58424b', 5RP 3/4 #653c4e '653c4e', 5RP 3/6 #703451 '703451', 5RP 3/8 #7a2b55 '7a2b55', 5RP 3/10 #841d58 '841d58'
-5RP 2/2 #402c36 '402c36', 5RP 2/4 #492639 '492639', 5RP 2/6 #51203d '51203d', 5RP 2/8 #5b1442 '5b1442'
-5RP 1/2 #2a1624 '2a1624', 5RP 1/4 #321028 '321028', 5RP 1/6 #38072d '38072d'
-7.5RP 9/2 #f1e2e4 'f1e2e4', 7.5RP 9/4 #ffdbe2 'ffdbe2', 7.5RP 9/6 #ffd3e1 'ffd3e1'
-7.5RP 8/2 #d6c6c9 'd6c6c9', 7.5RP 8/4 #e8c0c7 'e8c0c7', 7.5RP 8/6 #f9b9c6 'f9b9c6', 7.5RP 8/8 #ffb1c6 'ffb1c6', 7.5RP 8/10 #ffa9c5 'ffa9c5', 7.5RP 8/12 #ff9fc5 'ff9fc5'
-7.5RP 7/2 #bdabae 'bdabae', 7.5RP 7/4 #cca6ad 'cca6ad', 7.5RP 7/6 #dc9fac 'dc9fac', 7.5RP 7/8 #eb98ac 'eb98ac', 7.5RP 7/10 #f890ab 'f890ab', 7.5RP 7/12 #ff87ab 'ff87ab', 7.5RP 7/14 #ff7cab 'ff7cab', 7.5RP 7/16 #ff6fac 'ff6fac'
-7.5RP 6/2 #a39094 'a39094', 7.5RP 6/4 #b28b93 'b28b93', 7.5RP 6/6 #c28492 'c28492', 7.5RP 6/8 #ce7e92 'ce7e92', 7.5RP 6/10 #db7692 'db7692', 7.5RP 6/12 #e76d92 'e76d92', 7.5RP 6/14 #f36293 'f36293', 7.5RP 6/16 #ff5493 'ff5493', 7.5RP 6/18 #ff4494 'ff4494', 7.5RP 6/20 #ff2896 'ff2896'
-7.5RP 5/2 #8a767a '8a767a', 7.5RP 5/4 #997079 '997079', 7.5RP 5/6 #a76979 'a76979', 7.5RP 5/8 #b46179 'b46179', 7.5RP 5/10 #c05979 'c05979', 7.5RP 5/12 #cc4d7a 'cc4d7a', 7.5RP 5/14 #d6427b 'd6427b', 7.5RP 5/16 #e1307c 'e1307c', 7.5RP 5/18 #eb117d 'eb117d'
-7.5RP 4/2 #725b61 '725b61', 7.5RP 4/4 #805561 '805561', 7.5RP 4/6 #8d4e61 '8d4e61', 7.5RP 4/8 #994661 '994661', 7.5RP 4/10 #a33d62 'a33d62', 7.5RP 4/12 #ad3063 'ad3063', 7.5RP 4/14 #b81c64 'b81c64'
-7.5RP 3/2 #5a4249 '5a4249', 7.5RP 3/4 #673b4a '673b4a', 7.5RP 3/6 #72344b '72344b', 7.5RP 3/8 #7e294c '7e294c', 7.5RP 3/10 #881a4e '881a4e'
-7.5RP 2/2 #402c34 '402c34', 7.5RP 2/4 #4a2636 '4a2636', 7.5RP 2/6 #531f39 '531f39', 7.5RP 2/8 #5d123c '5d123c'
-7.5RP 1/2 #2b1622 '2b1622', 7.5RP 1/4 #330f26 '330f26', 7.5RP 1/6 #3b0429 '3b0429'
-10RP 9/2 #f2e2e3 'f2e2e3', 10RP 9/4 #ffdbde 'ffdbde', 10RP 9/6 #ffd3d9 'ffd3d9'
-10RP 8/2 #d7c6c8 'd7c6c8', 10RP 8/4 #eac0c3 'eac0c3', 10RP 8/6 #fbb9c0 'fbb9c0', 10RP 8/8 #ffb1bc 'ffb1bc', 10RP 8/10 #ffa9b8 'ffa9b8'
-10RP 7/2 #beabac 'beabac', 10RP 7/4 #cea5a9 'cea5a9', 10RP 7/6 #de9fa6 'de9fa6', 10RP 7/8 #ee97a2 'ee97a2', 10RP 7/10 #fc909f 'fc909f', 10RP 7/12 #ff859c 'ff859c', 10RP 7/14 #ff7b9a 'ff7b9a', 10RP 7/16 #ff6e97 'ff6e97'
-10RP 6/2 #a49092 'a49092', 10RP 6/4 #b48a8f 'b48a8f', 10RP 6/6 #c4848c 'c4848c', 10RP 6/8 #d07d89 'd07d89', 10RP 6/10 #de7587 'de7587', 10RP 6/12 #eb6b84 'eb6b84', 10RP 6/14 #f76183 'f76183', 10RP 6/16 #ff5280 'ff5280', 10RP 6/18 #ff417f 'ff417f'
-10RP 5/2 #8b7678 '8b7678', 10RP 5/4 #9b7075 '9b7075', 10RP 5/6 #a96973 'a96973', 10RP 5/8 #b76170 'b76170', 10RP 5/10 #c3586e 'c3586e', 10RP 5/12 #d04c6d 'd04c6d', 10RP 5/14 #da406c 'da406c'title=10RP 5/16 #e62d6a 'e62d6a'
-10RP 4/2 #735b5f '735b5f', 10RP 4/4 #81555c '81555c', 10RP 4/6 #8e4e5a '8e4e5a', 10RP 4/8 #9b4559 '9b4559', 10RP 4/10 #a63b58 'a63b58', 10RP 4/12 #b12d57 'b12d57', 10RP 4/14 #bc1756 'bc1756'
-10RP 3/2 #5b4246 '5b4246', 10RP 3/4 #683b45 '683b45', 10RP 3/6 #743343 '743343', 10RP 3/8 #802843 '802843', 10RP 3/10 #8b1742 '8b1742'
-10RP 2/2 #412c32 '412c32', 10RP 2/4 #4c2533 '4c2533', 10RP 2/6 #551e34 '551e34', 10RP 2/8 #5f1036 '5f1036'
-10RP 1/2 #2c1620 '2c1620', 10RP 1/4 #350f23 '350f23', 10RP 1/6 #3c0325 '3c0325'
\ No newline at end of file
diff --git a/symja_android_library/matheclipse-external/src/main/resources/figure_template.html b/symja_android_library/matheclipse-external/src/main/resources/figure_template.html
deleted file mode 100644
index 225ac172f3..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/figure_template.html
+++ /dev/null
@@ -1,4 +0,0 @@
- var {{targetName}} = document.getElementById('{{divName}}');
- {{figure | raw}}
- {{plotFunction}}
- {{eventHandlerFunction | raw}}
diff --git a/symja_android_library/matheclipse-external/src/main/resources/grid_template.html b/symja_android_library/matheclipse-external/src/main/resources/grid_template.html
deleted file mode 100644
index e1616366f7..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/grid_template.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-{% if rows > 0 %}
- rows: {{rows}},
-{% endif %}
-{% if columns > 0 %}
- columns: {{columns}},
-{% endif %}
-{% if xGap is not null %}
- xgap: {{xGap}},
-{% endif %}
-{% if yGap is not null %}
- ygap: {{yGap}},
-{% endif %}
-{% if rowOrder is not null %}
- roworder: '{{rowOrder}}',
-{% endif %}
-{% if xSide is not null %}
- xside: '{{xSide}}',
-{% endif %}
-{% if ySide is not null %}
- yside: '{{ySide}}',
-{% endif %}
-{% if pattern is not null %}
- pattern: '{{pattern}}'
-{% endif %}
-}
\ No newline at end of file
diff --git a/symja_android_library/matheclipse-external/src/main/resources/layout_template.html b/symja_android_library/matheclipse-external/src/main/resources/layout_template.html
deleted file mode 100644
index 526b164dde..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/layout_template.html
+++ /dev/null
@@ -1,76 +0,0 @@
-var layout = {
-{% if title is not null %}
- title: '{{title}}',
-{% endif %}
-{% if titlefont is not null %}
- titlefont: {{titlefont | raw}},
-{% endif %}
-{% if height is not null %}
- height: {{height}},
-{% endif %}
-{% if width is not null %}
- width: {{width}},
-{% endif %}
-{% if showlegend is not null %}
- showlegend: {{showlegend}},
-{% endif %}
-{% if autosize is not null %}
- autosize: {{autosize}},
-{% endif %}
-{% if plot_bgcolor is not null %}
- plot_bgcolor: '{{plotbgcolor}}',
-{% endif %}
-{% if paper_bgcolor is not null %}
- paper_bgcolor: '{{paperbgcolor}}',
-{% endif %}
-{% if font is not null %}
- font: {{font | raw}},
-{% endif %}
-{% if margin is not null %}
- margin: {{margin | raw}},
-{% endif %}
-{% if hoverMode is not null %}
- hovermode: '{{hoverMode}}',
-{% endif %}
-{% if hoverdistance is not null %}
- hoverdistance: {{hoverdistance}},
-{% endif %}
-{% if scene is not null %}
- scene: {{scene | raw}},
-{% endif %}
-{% if xAxis is not null %}
- xaxis: {{xAxis | raw}},
-{% endif %}
-
-{% if yAxis is not null %}
- yaxis: {{yAxis | raw}},
-{% endif %}
-{% if yAxis1 is not null %}
- yaxis1: {{yAxis1 | raw}},
-{% endif %}
-{% if yAxis2 is not null %}
- yaxis2: {{yAxis2 | raw}},
-{% endif %}
-{% if yAxis3 is not null %}
- yaxis3: {{yAxis3 | raw}},
-{% endif %}
-
-{% if zAxis is not null %}
- zaxis: {{zAxis | raw}},
-{% endif %}
-{% if dragmode is not null %}
- dragmode: '{{dragmode}}',
-{% endif %}
-{% if decimalSeparator is not null %}
- decimalseparator: '{{decimalSeparator}}',
-{% endif %}
-{% if thousandsSeparator is not null %}
- thousandsseparator: '{{thousandsSeparator}}',
-{% endif %}
-{% if barMode is not null %}
- barmode: '{{barMode}}',
-{% endif %}
-{% if grid is not null %}
- grid: {{grid | raw}}
-{% endif %}
-};
diff --git a/symja_android_library/matheclipse-external/src/main/resources/marker_template.html b/symja_android_library/matheclipse-external/src/main/resources/marker_template.html
deleted file mode 100644
index 81eee5d99d..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/marker_template.html
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-{% if size is not null %}
- size: {{size}},
-{% endif %}
-{% if color is not null %}
- color: {{color | raw}},
-{% endif %}
-{% if colorArray is not null %}
- color: {{colorArray | raw}},
-{% endif %}
-{% if colorScale is not null %}
- colorscale: '{{colorScale | raw}}',
-{% endif %}
-{% if colorBar is not null %}
- colorbar: {{colorBar | raw}},
-{% endif %}
-{% if gradient is not null %}
- gradient: {{gradient | raw}},
-{% endif %}
-{% if cMax is not null %}
- cmax: {{cMax}},
-{% endif %}
-{% if cMin is not null %}
- cmin: {{cMin}},
-{% endif %}
-{% if symbol is not null %}
- symbol: '{{symbol | raw}}',
-{% endif %}
-{% if line is not null %}
- line: {{line | raw}},
-{% endif %}
-{% if cAuto is not null %}
- cauto: {{cAuto}},
-{% endif %}
-{% if autoColorScale is not null %}
- autocolorscale: {{autoColorScale}},
-{% endif %}
-{% if showScale is not null %}
- showscale: {{showScale}},
-{% endif %}
-{% if reverseScale is not null %}
- reversescale: {{reverseScale}},
-{% endif %}
-{% if opacity is not null %}
- opacity: {{opacity}},
-{% endif %}
-{% if sizeMode is not null %}
- sizemode: '{{sizeMode}}',
-{% endif %}
-}
\ No newline at end of file
diff --git a/symja_android_library/matheclipse-external/src/main/resources/page_template.html b/symja_android_library/matheclipse-external/src/main/resources/page_template.html
deleted file mode 100644
index 06cf697872..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/page_template.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- {{figureTitle}}
-{% if plotlyJsLocation is not null %}
-
-{% else %}
-
-{% endif %}
-
-
-{% if targetDiv is not null %}
- {{targetDiv | raw}}
-{% endif %}
-{% if figureScript is not null %}
- {{figureScript | raw}}
-{% endif %}
-
-
-
\ No newline at end of file
diff --git a/symja_android_library/matheclipse-external/src/main/resources/pie_trace_template.html b/symja_android_library/matheclipse-external/src/main/resources/pie_trace_template.html
deleted file mode 100644
index ed8f4c04d1..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/pie_trace_template.html
+++ /dev/null
@@ -1,14 +0,0 @@
-var {{variableName}} =
- {
-{% if labels is not null %}
- labels: {{labels | raw}},
-{% endif %}
-{% if values is not null %}
- values: {{values | raw}},
-{% endif %}
-{% if domain is not null %}
- domain: {{domain | raw}},
-{% endif %}
- type: '{{type}}',
- name: '{{name}}',
- }
\ No newline at end of file
diff --git a/symja_android_library/matheclipse-external/src/main/resources/scene_template.html b/symja_android_library/matheclipse-external/src/main/resources/scene_template.html
deleted file mode 100644
index 813a9e96bd..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/scene_template.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-{% if xAxis is not null %}
- xaxis: {{xAxis | raw}},
-{% endif %}
-{% if yAxis is not null %}
- yaxis: {{yAxis | raw}},
-{% endif %}
-{% if zAxis is not null %}
- zaxis: {{zAxis | raw}},
-{% endif %}
-{% if camera is not null %}
- camera: {{camera | raw}},
-{% endif %}
-}
diff --git a/symja_android_library/matheclipse-external/src/main/resources/trace_template.html b/symja_android_library/matheclipse-external/src/main/resources/trace_template.html
deleted file mode 100644
index 703c7f7234..0000000000
--- a/symja_android_library/matheclipse-external/src/main/resources/trace_template.html
+++ /dev/null
@@ -1,89 +0,0 @@
-var {{variableName}} =
-{
-{% if x is not null %}
-x: {{x | raw}},
-{% endif %}
-{% if y is not null %}
-y: {{y | raw}},
-{% endif %}
-{% if open is not null %}
-open: {{open | raw}},
-{% endif %}
-{% if high is not null %}
-high: {{high | raw}},
-{% endif %}
-{% if low is not null %}
-low: {{low | raw}},
-{% endif %}
-{% if close is not null %}
-close: {{close | raw}},
-{% endif %}
-{% if increasing is not null %}
-increasing: {{increasing | raw}},
-{% endif %}
-{% if decreasing is not null %}
-decreasing: {{decreasing | raw}},
-{% endif %}
-{% if z is not null %}
-z: {{z | raw}},
-{% endif %}
-{% if showLegend is not null %}
-showlegend: {{showLegend}},
-{% endif %}
-{% if hoverlabel is not null %}
-hoverlabel: {{hoverlabel | raw }},
-{% endif %}
-{% if marker is not null %}
-marker: {{marker | raw }},
-{% endif %}
-{% if text is not null %}
-text: {{text | raw }},
-{% endif %}
-{% if mode is not null %}
-mode: '{{mode}}',
-{% endif %}
-{% if line is not null %}
-line: {{line | raw }},
-{% endif %}
-{% if orientation is not null %}
-orientation: '{{orientation}}',
-{% endif %}
-{% if opacity is not null %}
-opacity: '{{opacity}}',
-{% endif %}
-{% if nBinsX is not null %}
-nbinsx: {{nBinsX}},
-{% endif %}
-{% if autoBinX is not null %}
-autobinx: {{autoBinX}},
-{% endif %}
-{% if nBinsY is not null %}
-nbinsy: {{nBinsY}},
-{% endif %}
-{% if autoBinY is not null %}
-autobiny: {{autoBinY}},
-{% endif %}
-{% if histnorm is not null %}
- histnorm: '{{histnorm}}',
-{% endif %}
-{% if histfunc is not null %}
- histfunc: '{{histfunc}}',
-{% endif %}
-{% if visible is not null %}
-visible: '{{visible}}',
-{% endif %}
-{% if fill is not null %}
-fill: '{{fill}}',
-{% endif %}
-{% if xAxis is not null %}
-xaxis: '{{xAxis}}',
-{% endif %}
-{% if yAxis is not null %}
-yaxis: '{{yAxis}}',
-{% endif %}
-{% if fillColor is not null %}
-fillcolor: '{{fillColor}}',
-{% endif %}
-type: '{{type}}',
-name: '{{name}}',
-};
\ No newline at end of file
diff --git a/symja_android_library/pom.xml b/symja_android_library/pom.xml
index 98f0110f8c..bc48ca0470 100644
--- a/symja_android_library/pom.xml
+++ b/symja_android_library/pom.xml
@@ -343,6 +343,13 @@
Paguro
3.8.0