make computation of mean value optional
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
package org.lucares.pdb.plot.api;
|
||||||
|
|
||||||
|
public enum AggreateInternal {
|
||||||
|
NONE, MEAN
|
||||||
|
}
|
||||||
@@ -32,6 +32,8 @@ public class PlotSettings {
|
|||||||
|
|
||||||
private AxisScale yAxisScale;
|
private AxisScale yAxisScale;
|
||||||
|
|
||||||
|
private AggreateInternal aggregate;
|
||||||
|
|
||||||
public String getQuery() {
|
public String getQuery() {
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
@@ -156,6 +158,14 @@ public class PlotSettings {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return "PlotSettings [query=" + query + ", height=" + height + ", width=" + width + ", groupBy=" + groupBy
|
return "PlotSettings [query=" + query + ", height=" + height + ", width=" + width + ", groupBy=" + groupBy
|
||||||
+ ", limitBy=" + limitBy + ", limit=" + limit + ", dateFrom=" + dateFrom + ", dateRange=" + dateRange
|
+ ", limitBy=" + limitBy + ", limit=" + limit + ", dateFrom=" + dateFrom + ", dateRange=" + dateRange
|
||||||
+ ", axisScale=" + yAxisScale + "]";
|
+ ", axisScale=" + yAxisScale + ", aggregate="+aggregate+"]";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAggregate(AggreateInternal aggregate) {
|
||||||
|
this.aggregate = aggregate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AggreateInternal getAggregate() {
|
||||||
|
return aggregate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.lucares.recommind.logs;
|
|||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import org.lucares.pdb.plot.api.AggreateInternal;
|
||||||
import org.lucares.pdb.plot.api.AxisScale;
|
import org.lucares.pdb.plot.api.AxisScale;
|
||||||
|
|
||||||
public class GnuplotFileGenerator {
|
public class GnuplotFileGenerator {
|
||||||
@@ -13,7 +14,20 @@ public class GnuplotFileGenerator {
|
|||||||
appendfln(result, "set terminal %s noenhanced size %d,%d", settings.getTerminal(), settings.getWidth(),
|
appendfln(result, "set terminal %s noenhanced size %d,%d", settings.getTerminal(), settings.getWidth(),
|
||||||
settings.getHeight());
|
settings.getHeight());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
appendfln(result, "set datafile separator \"%s\"", settings.getDatafileSeparator());
|
appendfln(result, "set datafile separator \"%s\"", settings.getDatafileSeparator());
|
||||||
|
|
||||||
|
int count = 1;
|
||||||
|
if (settings.getAggregate() != AggreateInternal.NONE)
|
||||||
|
{
|
||||||
|
for (final DataSeries dataSerie : dataSeries) {
|
||||||
|
|
||||||
|
appendfln(result, "stats '%s' using 2 prefix \"A%d\"", dataSerie.getDataFile(),count);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
appendfln(result, "set timefmt '%s'", settings.getTimefmt());
|
appendfln(result, "set timefmt '%s'", settings.getTimefmt());
|
||||||
|
|
||||||
appendfln(result, "set xdata time");
|
appendfln(result, "set xdata time");
|
||||||
@@ -21,6 +35,7 @@ public class GnuplotFileGenerator {
|
|||||||
appendfln(result, "set xlabel \"%s\"", settings.getXlabel());
|
appendfln(result, "set xlabel \"%s\"", settings.getXlabel());
|
||||||
appendfln(result, "set xtics rotate by %d", settings.getRotateXAxisLabel());
|
appendfln(result, "set xtics rotate by %d", settings.getRotateXAxisLabel());
|
||||||
appendfln(result, "set xrange [\"%s\":\"%s\"]", settings.getDateFrom(), settings.getDateTo());
|
appendfln(result, "set xrange [\"%s\":\"%s\"]", settings.getDateFrom(), settings.getDateTo());
|
||||||
|
appendfln(result, "set yrange [\"1\":]");
|
||||||
|
|
||||||
appendfln(result, "set ylabel \"%s\"", settings.getYlabel());
|
appendfln(result, "set ylabel \"%s\"", settings.getYlabel());
|
||||||
if (settings.getYAxisScale() == AxisScale.LOG10) {
|
if (settings.getYAxisScale() == AxisScale.LOG10) {
|
||||||
@@ -29,12 +44,19 @@ public class GnuplotFileGenerator {
|
|||||||
appendfln(result, "set logscale y 2");
|
appendfln(result, "set logscale y 2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
appendfln(result, "set grid");
|
||||||
appendfln(result, "set output \"%s\"", settings.getOutput().toAbsolutePath().toString().replace("\\", "/"));
|
appendfln(result, "set output \"%s\"", settings.getOutput().toAbsolutePath().toString().replace("\\", "/"));
|
||||||
appendf(result, "plot ");
|
appendf(result, "plot ");
|
||||||
|
|
||||||
|
count = 1;
|
||||||
for (final DataSeries dataSerie : dataSeries) {
|
for (final DataSeries dataSerie : dataSeries) {
|
||||||
appendfln(result, "'%s' using 1:2 title '%s' with points, \\", dataSerie.getDataFile(),
|
appendfln(result, "'%s' using 1:2 title '%s' with points, \\", dataSerie.getDataFile(),
|
||||||
dataSerie.getTitle());
|
dataSerie.getTitle());
|
||||||
|
if (settings.getAggregate() == AggreateInternal.MEAN) {
|
||||||
|
appendfln(result, "A%d_mean title '%s Mean', \\", count, dataSerie.getTitle(),
|
||||||
|
dataSerie.getTitle());
|
||||||
|
}
|
||||||
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result.toString();
|
return result.toString();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.lucares.recommind.logs;
|
|||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
||||||
|
import org.lucares.pdb.plot.api.AggreateInternal;
|
||||||
import org.lucares.pdb.plot.api.AxisScale;
|
import org.lucares.pdb.plot.api.AxisScale;
|
||||||
|
|
||||||
public class GnuplotSettings {
|
public class GnuplotSettings {
|
||||||
@@ -30,6 +31,7 @@ public class GnuplotSettings {
|
|||||||
private AxisScale yAxisScale;
|
private AxisScale yAxisScale;
|
||||||
private String dateFrom;
|
private String dateFrom;
|
||||||
private String dateTo;
|
private String dateTo;
|
||||||
|
private AggreateInternal aggregate;
|
||||||
|
|
||||||
public GnuplotSettings(final Path output) {
|
public GnuplotSettings(final Path output) {
|
||||||
this.output = output;
|
this.output = output;
|
||||||
@@ -135,6 +137,14 @@ public class GnuplotSettings {
|
|||||||
return dateTo;
|
return dateTo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAggregate(AggreateInternal aggregate) {
|
||||||
|
this.aggregate = aggregate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AggreateInternal getAggregate() {
|
||||||
|
return aggregate;
|
||||||
|
}
|
||||||
|
|
||||||
// plot 'sample.txt' using 1:2 title 'Bytes' with linespoints 2
|
// plot 'sample.txt' using 1:2 title 'Bytes' with linespoints 2
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ public class Plotter {
|
|||||||
defineXAxis(gnuplotSettings, plotSettings.dateFrom(), plotSettings.dateTo());
|
defineXAxis(gnuplotSettings, plotSettings.dateFrom(), plotSettings.dateTo());
|
||||||
|
|
||||||
gnuplotSettings.setYAxisScale(plotSettings.getYAxisScale());
|
gnuplotSettings.setYAxisScale(plotSettings.getYAxisScale());
|
||||||
|
gnuplotSettings.setAggregate(plotSettings.getAggregate());
|
||||||
gnuplot.plot(gnuplotSettings, dataSeries);
|
gnuplot.plot(gnuplotSettings, dataSeries);
|
||||||
|
|
||||||
return new PlotResult(outputFile.getFileName(), dataSeries);
|
return new PlotResult(outputFile.getFileName(), dataSeries);
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package org.lucares.pdbui;
|
package org.lucares.pdbui;
|
||||||
|
|
||||||
|
import org.lucares.pdb.plot.api.AggreateInternal;
|
||||||
import org.lucares.pdb.plot.api.AxisScale;
|
import org.lucares.pdb.plot.api.AxisScale;
|
||||||
import org.lucares.pdb.plot.api.Limit;
|
import org.lucares.pdb.plot.api.Limit;
|
||||||
import org.lucares.pdb.plot.api.PlotSettings;
|
import org.lucares.pdb.plot.api.PlotSettings;
|
||||||
|
import org.lucares.pdbui.domain.Aggregate;
|
||||||
import org.lucares.pdbui.domain.LimitBy;
|
import org.lucares.pdbui.domain.LimitBy;
|
||||||
import org.lucares.pdbui.domain.PlotRequest;
|
import org.lucares.pdbui.domain.PlotRequest;
|
||||||
import org.lucares.pdbui.domain.YAxis;
|
import org.lucares.pdbui.domain.YAxis;
|
||||||
@@ -21,10 +23,19 @@ class PlotSettingsTransformer {
|
|||||||
result.setDateFrom(request.getDateFrom());
|
result.setDateFrom(request.getDateFrom());
|
||||||
result.setDateRange(request.getDateRange());
|
result.setDateRange(request.getDateRange());
|
||||||
result.setYAxisScale(toAxisScale(request.getAxisScale()));
|
result.setYAxisScale(toAxisScale(request.getAxisScale()));
|
||||||
|
result.setAggregate(toAggregateInternal(request.getAggregate()));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static AggreateInternal toAggregateInternal(Aggregate aggregate) {
|
||||||
|
switch (aggregate) {
|
||||||
|
case NONE:return AggreateInternal.NONE;
|
||||||
|
case MEAN:return AggreateInternal.MEAN;
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("unhandled enum: " + aggregate);
|
||||||
|
}
|
||||||
|
|
||||||
private static AxisScale toAxisScale(final YAxis yAxis) {
|
private static AxisScale toAxisScale(final YAxis yAxis) {
|
||||||
switch (yAxis) {
|
switch (yAxis) {
|
||||||
case LINEAR:
|
case LINEAR:
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package org.lucares.pdbui.domain;
|
||||||
|
|
||||||
|
public enum Aggregate {
|
||||||
|
NONE, MEAN
|
||||||
|
}
|
||||||
@@ -21,6 +21,8 @@ public class PlotRequest {
|
|||||||
|
|
||||||
private String dateRange;
|
private String dateRange;
|
||||||
|
|
||||||
|
private Aggregate aggregate = Aggregate.NONE;
|
||||||
|
|
||||||
public String getQuery() {
|
public String getQuery() {
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
@@ -100,4 +102,12 @@ public class PlotRequest {
|
|||||||
public void setAxisScale(final YAxis yAxis) {
|
public void setAxisScale(final YAxis yAxis) {
|
||||||
this.yAxis = yAxis;
|
this.yAxis = yAxis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAggregate(Aggregate aggregate) {
|
||||||
|
this.aggregate = aggregate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Aggregate getAggregate() {
|
||||||
|
return aggregate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ function plot(event){
|
|||||||
request['dateFrom'] = $('#search-date-from').val();
|
request['dateFrom'] = $('#search-date-from').val();
|
||||||
request['dateRange'] = $('#search-date-range').val();
|
request['dateRange'] = $('#search-date-range').val();
|
||||||
request['axisScale'] = $('#search-y-axis-scale').val();
|
request['axisScale'] = $('#search-y-axis-scale').val();
|
||||||
|
request['aggregate'] = $('#show-aggregate').val();
|
||||||
|
|
||||||
|
|
||||||
var success = function(response){
|
var success = function(response){
|
||||||
|
|||||||
@@ -47,13 +47,19 @@
|
|||||||
<option value="1 month">
|
<option value="1 month">
|
||||||
</datalist>
|
</datalist>
|
||||||
|
|
||||||
<label for="search-y-axis-scale">y-axis:</label>
|
<label for="search-y-axis-scale">Y-Axis:</label>
|
||||||
<select id="search-y-axis-scale">
|
<select id="search-y-axis-scale">
|
||||||
<option value="LINEAR" selected="selected">linear</option>
|
<option value="LINEAR" selected="selected">linear</option>
|
||||||
<option value="LOG10">log 10</option>
|
<option value="LOG10">log 10</option>
|
||||||
<option value="LOG2">log 2</option>
|
<option value="LOG2">log 2</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<label for="show-aggregate">Aggregate:</label>
|
||||||
|
<select id="show-aggregate">
|
||||||
|
<option value="NONE" selected="selected">-</option>
|
||||||
|
<option value="MEAN">Mean</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
<button id="search-submit"><i class="fa fa-area-chart" aria-hidden="true"></i> Plot</button>
|
<button id="search-submit"><i class="fa fa-area-chart" aria-hidden="true"></i> Plot</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user