From b18ecc8eacbc0aa2578a0aef19aeb49cc24e256a Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Jan 2013 21:28:27 +0000 Subject: [PATCH 1/3] Added colorization option + gnuplot styling --- src/graph/Plot.java | 34 ++++++++++++++++++++++++++++++++-- src/tsd/GraphHandler.java | 3 +++ src/tsd/client/QueryUi.java | 8 ++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/graph/Plot.java b/src/graph/Plot.java index bee660df6c..9833edf6ea 100644 --- a/src/graph/Plot.java +++ b/src/graph/Plot.java @@ -236,11 +236,12 @@ private void writeGnuplotScript(final String basepath, final PrintWriter gp = new PrintWriter(script_path); try { // XXX don't hardcode all those settings. At least not like that. - gp.append("set term png small size ") + gp.append("set term pngcairo enhanced rounded size ") // Why the fuck didn't they also add methods for numbers? .append(Short.toString(width)).append(",") .append(Short.toString(height)); final String smooth = params.remove("smooth"); + final String brewer = params.remove("brewer"); final String fgcolor = params.remove("fgcolor"); String bgcolor = params.remove("bgcolor"); if (fgcolor != null && bgcolor == null) { @@ -259,6 +260,15 @@ private void writeGnuplotScript(final String basepath, if (fgcolor != null) { gp.append(' ').append(fgcolor); } + // Beautifications - Jeremy + gp.append("\n" + + "set font \"Sans,14\"\n" + + "set style line 80 lt rgb \"#808080\"\n" + + "set style line 81 lt 0\n" + + "set style line 81 lt rgb \"#808080\"\n" + + "set border 3 back linestyle 80\n" + + "set xtics nomirror\n" + + "set ytics nomirror\n"); gp.append("\n" + "set xdata time\n" @@ -275,7 +285,7 @@ private void writeGnuplotScript(final String basepath, } final int nseries = datapoints.size(); if (nseries > 0) { - gp.write("set grid\n" + gp.write("set grid back linestyle 81\n" + "set style data linespoints\n"); if (!params.containsKey("key")) { gp.write("set key right box\n"); @@ -306,6 +316,26 @@ private void writeGnuplotScript(final String basepath, break; } } + if (brewer != null) { + gp.append("set style line 1 linecolor rgbcolor \"#7297E6\" linewidth 1 pt 7\n"); + gp.append("set style line 2 linecolor rgbcolor \"#67EB84\" linewidth 1 pt 5\n"); + gp.append("set style line 3 linecolor rgbcolor \"#F97A6D\" linewidth 1 pt 9\n"); + gp.append("set style line 4 linecolor rgbcolor \"#F9C96D\" linewidth 1 pt 13\n"); + gp.append("set style line 5 linecolor rgbcolor \"#1D4599\" linewidth 1 pt 11\n"); + gp.append("set style line 6 linecolor rgbcolor \"#11AD34\" linewidth 1 pt 7\n"); + gp.append("set style line 7 linecolor rgbcolor \"#E62B17\" linewidth 1 pt 5\n"); + gp.append("set style line 8 linecolor rgbcolor \"#E69F17\" linewidth 1 pt 9\n"); + gp.append("set style line 9 linecolor rgbcolor \"#2F3F60\" linewidth 1 pt 13\n"); + gp.append("set style line 10 linecolor rgbcolor \"#2F6C3D\" linewidth 1 pt 11\n"); + gp.append("set style line 11 linecolor rgbcolor \"#8F463F\" linewidth 1 pt 7\n"); + gp.append("set style line 12 linecolor rgbcolor \"#8F743F\" linewidth 1 pt 5\n"); + gp.append("set style line 13 linecolor rgbcolor \"#031A49\" linewidth 1 pt 9\n"); + gp.append("set style line 14 linecolor rgbcolor \"#025214\" linewidth 1 pt 13\n"); + gp.append("set style line 15 linecolor rgbcolor \"#6D0D03\" linewidth 1 pt 11\n"); + gp.append("set style line 16 linecolor rgbcolor \"#6D4903\" linewidth 1 pt 7\n"); + gp.append("set style line 17 linecolor rgbcolor \"#224499\" linewidth 1 pt 5\n"); + gp.append("set style increment user\n"); + } gp.write("plot "); for (int i = 0; i < nseries; i++) { diff --git a/src/tsd/GraphHandler.java b/src/tsd/GraphHandler.java index 8b461786fc..ec87ec24ec 100644 --- a/src/tsd/GraphHandler.java +++ b/src/tsd/GraphHandler.java @@ -689,6 +689,9 @@ static void setPlotParams(final HttpQuery query, final Plot plot) { if ((value = popParam(querystring, "smooth")) != null) { params.put("smooth", value); } + if ((value = popParam(querystring, "brewer")) != null) { + params.put("brewer", value); + } // This must remain after the previous `if' in order to properly override // any previous `key' parameter if a `nokey' parameter is given. if ((value = popParam(querystring, "nokey")) != null) { diff --git a/src/tsd/client/QueryUi.java b/src/tsd/client/QueryUi.java index 535f1562be..baac988ef0 100644 --- a/src/tsd/client/QueryUi.java +++ b/src/tsd/client/QueryUi.java @@ -120,6 +120,7 @@ public class QueryUi implements EntryPoint, HistoryListener { // Styling options. private final CheckBox smooth = new CheckBox(); + private final CheckBox brewer = new CheckBox(); /** * Handles every change to the query form and gets a new graph. @@ -255,6 +256,7 @@ public void onValueChange(final ValueChangeEvent event) { keybox.addClickHandler(refreshgraph); nokey.addClickHandler(refreshgraph); smooth.addClickHandler(refreshgraph); + brewer.addClickHandler(refreshgraph); yrange.setValidationRegexp("^(" // Nothing or + "|\\[([-+.0-9eE]+|\\*)?" // "[start @@ -441,6 +443,8 @@ private Grid makeStylePanel() { final Grid grid = new Grid(5, 3); grid.setText(0, 1, "Smooth"); grid.setWidget(0, 2, smooth); + grid.setText(1, 1, "Brewer"); + grid.setWidget(1, 2, brewer); return grid; } @@ -793,6 +797,7 @@ private void refreshFromQueryString() { } nokey.setValue(qs.containsKey("nokey")); smooth.setValue(qs.containsKey("smooth")); + brewer.setValue(qs.containsKey("brewer")); } private void refreshGraph() { @@ -848,6 +853,9 @@ private void refreshGraph() { if (smooth.getValue()) { url.append("&smooth=csplines"); } + if (brewer.getValue()) { + url.append("&brewer=true"); + } final String uri = url.toString(); if (uri.equals(lastgraphuri)) { return; // Don't re-request the same graph. From d9d874dc7da7ff0088395719b8612d49b00c761e Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Jan 2013 22:05:31 +0000 Subject: [PATCH 2/3] Added Cairo as an option instead of hard-coded --- src/graph/Plot.java | 47 +++++++++++++++++++++++-------------- src/tsd/GraphHandler.java | 3 +++ src/tsd/client/QueryUi.java | 8 +++++++ 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/graph/Plot.java b/src/graph/Plot.java index 9833edf6ea..31523932b1 100644 --- a/src/graph/Plot.java +++ b/src/graph/Plot.java @@ -235,15 +235,23 @@ private void writeGnuplotScript(final String basepath, final String script_path = basepath + ".gnuplot"; final PrintWriter gp = new PrintWriter(script_path); try { - // XXX don't hardcode all those settings. At least not like that. - gp.append("set term pngcairo enhanced rounded size ") - // Why the fuck didn't they also add methods for numbers? - .append(Short.toString(width)).append(",") - .append(Short.toString(height)); final String smooth = params.remove("smooth"); final String brewer = params.remove("brewer"); final String fgcolor = params.remove("fgcolor"); String bgcolor = params.remove("bgcolor"); + String cairo = params.remove("cairo"); + if (cairo != null) { + // XXX don't hardcode all those settings. At least not like that. + gp.append("set term pngcairo enhanced rounded size ") + // Why the fuck didn't they also add methods for numbers? + .append(Short.toString(width)).append(",") + .append(Short.toString(height)); + } else { + gp.append("set term png small size ") + .append(Short.toString(width)).append(",") + .append(Short.toString(height)); + } + if (fgcolor != null && bgcolor == null) { // We can't specify a fgcolor without specifying a bgcolor. bgcolor = "xFFFFFF"; // So use a default. @@ -260,16 +268,17 @@ private void writeGnuplotScript(final String basepath, if (fgcolor != null) { gp.append(' ').append(fgcolor); } - // Beautifications - Jeremy - gp.append("\n" - + "set font \"Sans,14\"\n" - + "set style line 80 lt rgb \"#808080\"\n" - + "set style line 81 lt 0\n" - + "set style line 81 lt rgb \"#808080\"\n" - + "set border 3 back linestyle 80\n" - + "set xtics nomirror\n" - + "set ytics nomirror\n"); - + if (cairo != null) { + // Beautifications - Jeremy + gp.append("\n" + + "set font \"Sans,14\"\n" + + "set style line 80 lt rgb \"#808080\"\n" + + "set style line 81 lt 0\n" + + "set style line 81 lt rgb \"#808080\"\n" + + "set border 3 back linestyle 80\n" + + "set xtics nomirror\n" + + "set ytics nomirror\n"); + } gp.append("\n" + "set xdata time\n" + "set timefmt \"%s\"\n" @@ -285,8 +294,12 @@ private void writeGnuplotScript(final String basepath, } final int nseries = datapoints.size(); if (nseries > 0) { - gp.write("set grid back linestyle 81\n" - + "set style data linespoints\n"); + if (cairo != null) { + gp.write("set grid back linestyle 81\n"); + } else { + gp.write("set grid\n"); + } + gp.write("set style data linespoints\n"); if (!params.containsKey("key")) { gp.write("set key right box\n"); } diff --git a/src/tsd/GraphHandler.java b/src/tsd/GraphHandler.java index ec87ec24ec..dc0228b5d4 100644 --- a/src/tsd/GraphHandler.java +++ b/src/tsd/GraphHandler.java @@ -692,6 +692,9 @@ static void setPlotParams(final HttpQuery query, final Plot plot) { if ((value = popParam(querystring, "brewer")) != null) { params.put("brewer", value); } + if ((value = popParam(querystring, "cairo")) != null) { + params.put("cairo", value); + } // This must remain after the previous `if' in order to properly override // any previous `key' parameter if a `nokey' parameter is given. if ((value = popParam(querystring, "nokey")) != null) { diff --git a/src/tsd/client/QueryUi.java b/src/tsd/client/QueryUi.java index baac988ef0..bb0d3c7886 100644 --- a/src/tsd/client/QueryUi.java +++ b/src/tsd/client/QueryUi.java @@ -121,6 +121,7 @@ public class QueryUi implements EntryPoint, HistoryListener { // Styling options. private final CheckBox smooth = new CheckBox(); private final CheckBox brewer = new CheckBox(); + private final CheckBox cairo = new CheckBox(); /** * Handles every change to the query form and gets a new graph. @@ -257,6 +258,7 @@ public void onValueChange(final ValueChangeEvent event) { nokey.addClickHandler(refreshgraph); smooth.addClickHandler(refreshgraph); brewer.addClickHandler(refreshgraph); + cairo.addClickHandler(refreshgraph); yrange.setValidationRegexp("^(" // Nothing or + "|\\[([-+.0-9eE]+|\\*)?" // "[start @@ -445,6 +447,8 @@ private Grid makeStylePanel() { grid.setWidget(0, 2, smooth); grid.setText(1, 1, "Brewer"); grid.setWidget(1, 2, brewer); + grid.setText(2, 1, "Cairo"); + grid.setWidget(2, 2, cairo); return grid; } @@ -798,6 +802,7 @@ private void refreshFromQueryString() { nokey.setValue(qs.containsKey("nokey")); smooth.setValue(qs.containsKey("smooth")); brewer.setValue(qs.containsKey("brewer")); + cairo.setValue(qs.containsKey("cairo")); } private void refreshGraph() { @@ -856,6 +861,9 @@ private void refreshGraph() { if (brewer.getValue()) { url.append("&brewer=true"); } + if (cairo.getValue()) { + url.append("&cairo=true"); + } final String uri = url.toString(); if (uri.equals(lastgraphuri)) { return; // Don't re-request the same graph. From 1708e220ef644e78622e576b7a95d92bbaa08d2a Mon Sep 17 00:00:00 2001 From: root Date: Tue, 22 Jan 2013 00:20:14 +0000 Subject: [PATCH 3/3] Added fontscale, removed enhanced --- src/graph/Plot.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/graph/Plot.java b/src/graph/Plot.java index 31523932b1..39dc0cb6f8 100644 --- a/src/graph/Plot.java +++ b/src/graph/Plot.java @@ -242,7 +242,7 @@ private void writeGnuplotScript(final String basepath, String cairo = params.remove("cairo"); if (cairo != null) { // XXX don't hardcode all those settings. At least not like that. - gp.append("set term pngcairo enhanced rounded size ") + gp.append("set term pngcairo fontscale 0.5 rounded size ") // Why the fuck didn't they also add methods for numbers? .append(Short.toString(width)).append(",") .append(Short.toString(height));