diff --git a/symja_android_library/matheclipse-core/pom.xml b/symja_android_library/matheclipse-core/pom.xml index dbfe2b58d0..73a054f3f5 100644 --- a/symja_android_library/matheclipse-core/pom.xml +++ b/symja_android_library/matheclipse-core/pom.xml @@ -117,6 +117,11 @@ Paguro + + tech.tablesaw + tablesaw-jsplot + + diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/Utils.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/Utils.java deleted file mode 100644 index e72d4efc0c..0000000000 --- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/Utils.java +++ /dev/null @@ -1,56 +0,0 @@ -package tech.tablesaw.plotly; - -import com.fasterxml.jackson.core.io.JsonStringEncoder; -import java.util.Arrays; - -public class Utils { - - private Utils() {} - - public static String dataAsString(double[] data) { - return Arrays.toString(data); - } - - /** @return un-escaped quote of argument */ - public static String quote(String string) { - return "'" + string + "'"; - } - - /** - * Escapes string for Javascript, assuming but without surrounding it with doublequotes (") and - * saves to output to the given StringBuilder. - */ - private static void escape(String s, StringBuilder sb) { - JsonStringEncoder.getInstance().quoteAsString(s, sb); - } - - /** @return a Javascript array of strings (escaped if needed) */ - public static String dataAsString(Object[] data) { - StringBuilder builder = new StringBuilder("["); - for (int i = 0; i < data.length; i++) { - Object o = data[i]; - builder.append("\""); - escape(String.valueOf(o), builder); - builder.append("\""); - if (i < data.length - 1) { - builder.append(","); - } - } - builder.append("]"); - return builder.toString(); - } - - public static String dataAsString(double[][] data) { - StringBuilder builder = new StringBuilder("["); - for (double[] row : data) { - builder.append("["); - for (double value : row) { - builder.append(value); - builder.append(","); - } - builder.append("],"); - } - builder.append("]"); - return builder.toString(); - } -} diff --git a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Annotation.java b/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Annotation.java deleted file mode 100644 index 561a3cc171..0000000000 --- a/symja_android_library/matheclipse-external/src/main/java/tech/tablesaw/plotly/components/Annotation.java +++ /dev/null @@ -1,582 +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 Annotation extends Component { - - /** - * This is to supply annotation in Plot.ly reference to - * https://plotly.com/javascript/reference/layout/annotations/. Support most of - * apis there. - */ - - /** - * The horizontal alignment of the 'text' within the box. - */ - public enum Align { - LEFT("left"), CENTER("center"), RIGHT("right"); - - private final String value; - - Align(String value) { - this.value = value; - } - - @JsonValue - @Override - public String toString() { - return value; - } - } - - /* - * The vertical alignment of the 'text' within the box. - */ - public enum Valign { - TOP("top"), MIDDLE("middle"), BOTTOM("bottom"); - - private final String value; - - Valign(String value) { - this.value = value; - } - - @JsonValue - @Override - public String toString() { - return value; - } - } - - public enum Xanchor { - AUTO("auto"), LEFT("left"), CENTER("center"), RIGHT("right"); - - private final String value; - - Xanchor(String value) { - this.value = value; - } - - @JsonValue - @Override - public String toString() { - return value; - } - } - - public enum Yanchor { - AUTO("auto"), TOP("top"), MIDDLE("center"), BOTTOM("right"); - - private final String value; - - Yanchor(String value) { - this.value = value; - } - - @JsonValue - @Override - public String toString() { - return value; - } - } - - public enum ClicktoShow { - FALSE(), ONOFF("onoff"), ONOUT("onout"); - - private final String value; - - ClicktoShow(String value) { - this.value = value; - } - - ClicktoShow() { - this.value = "false"; - } - - @JsonValue - @Override - public String toString() { - return value; - } - } - - private static final boolean DEFAULT_VISIBLE = true; - private static final Font DEFAULT_FONT = Font.builder().build(); - private static final double DEFAULT_OPACITY = 1; - private static final Align DEFAULT_ALIGN = Align.CENTER; - private static final Valign DEFAULT_VALIGN = Valign.MIDDLE; - private static final String DEFAULT_BGCOLOR = "rgba(0,0,0,0)"; - private static final String DEFAULT_BORDERCOLOR = "rgba(0,0,0,0)"; - private static final double DEFAULT_BORDERPAD = 1; - private static final double DEFAULT_BORDERWIDTH = 1; - private static final boolean DEFAULT_SHOWARROW = true; - private static final int DEFAULT_ARROWHEAD = 1; - private static final int DEFAULT_STARTARROWHEAD = 1; - private static final String DEFAULT_ARROWSIDE = "END"; - private static final double DEFAULT_ARROWSIZE = 1; - private static final double DEFAULT_STARTARROWSIZE = 1; - private static final double DEFAULT_ARROWWIDTH = 1; - private static final double DEFAULT_STANDOFF = 0; - private static final double DEFAULT_STARTSTANDOFF = 0; - private static final String DEFAULT_AXREF = "paper"; - private static final String DEFAULT_AYREF = "paper"; - private static final String DEFAULT_XREF = "paper"; - private static final Xanchor DEFAULT_XANCHOR = Xanchor.AUTO; - private static final double DEFAULT_XSHIFT = 0; - private static final String DEFAULT_YREF = "paper"; - private static final Yanchor DEFAULT_YANCHOR = Yanchor.AUTO; - private static final double DEFAULT_YSHIFT = 0; - private static final ClicktoShow DEFAULT_CLICKTOSHOW = ClicktoShow.FALSE; - private static final boolean DEFAULT_CAPTUREEVENTS = true; - - private final boolean visible; - private final String text; - private final Font font; - private final Double width; - private final Double height; - private final double opacity; - private final Align align; - private final Valign valign; - private final String bgcolor; - private final String bordercolor; - private final double borderpad; - private final double borderwidth; - private final boolean showarrow; - private final String arrowcolor; - private final int arrowhead; - private final int startarrowhead; - private final String arrowside; - private final double arrowsize; - private final double startarrowsize; - private final double arrowwidth; - private final double standoff; - private final double startstandoff; - private final Double ax; - private final Double ay; - private final String axref; - private final String ayref; - private final String xref; - private final Double x; - private final Xanchor xanchor; - private final double xshift; - private final String yref; - private final Double y; - private final Yanchor yanchor; - private final double yshift; - private final ClicktoShow clicktoshow; - private final Double xclick; - private final Double yclick; - private final String hovertext; - private final HoverLabel hoverlabel; - private final boolean captureevents; - private final String name; - private final String templateitemname; - - private Annotation(AnnotationBuilder builder) { - this.visible = builder.visible; - this.text = builder.text; - this.font = builder.font; - this.width = builder.width; - this.height = builder.height; - this.opacity = builder.opacity; - this.align = builder.align; - this.valign = builder.valign; - this.bgcolor = builder.bgcolor; - this.bordercolor = builder.bordercolor; - this.borderpad = builder.borderpad; - this.borderwidth = builder.borderwidth; - this.showarrow = builder.showarrow; - this.arrowcolor = builder.arrowcolor; - this.arrowhead = builder.arrowhead; - this.startarrowhead = builder.startarrowhead; - this.arrowside = builder.arrowside; - this.arrowsize = builder.arrowsize; - this.startarrowsize = builder.startarrowsize; - this.arrowwidth = builder.arrowwidth; - this.standoff = builder.standoff; - this.startstandoff = builder.startstandoff; - this.ax = builder.ax; - this.ay = builder.ay; - this.axref = builder.axref; - this.ayref = builder.ayref; - this.xref = builder.xref; - this.x = builder.x; - this.xanchor = builder.xanchor; - this.xshift = builder.xshift; - this.yref = builder.yref; - this.y = builder.y; - this.yanchor = builder.yanchor; - this.yshift = builder.yshift; - this.clicktoshow = builder.clicktoshow; - this.xclick = builder.xclick; - this.yclick = builder.yclick; - this.hovertext = builder.hovertext; - this.hoverlabel = builder.hoverLabel; - this.captureevents = builder.captureevents; - this.name = builder.name; - this.templateitemname = builder.templateitemname; - } - - @Override - public String asJavascript() { - return asJavascript("annotation_template.html"); - } - - @Override - protected Map getContext() { - Map 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 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 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 x, NumericColumn 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 values) { - // return new HistogramBuilder(values.asDoubleArray()); - // } - - // public static HistogramBuilder builder( - // Column xValues, NumericColumn 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 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 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 x, - // NumericColumn y, - // NumericColumn 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 x, - // NumericColumn y, - // NumericColumn 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 open, - // NumericColumn high, - // NumericColumn low, - // NumericColumn 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 open, - // NumericColumn high, - // NumericColumn low, - // NumericColumn 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 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 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 + + + tech.tablesaw + tablesaw-jsplot + 0.42.0 + +