mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-07 11:32:16 +00:00
Implemented a chart for the benchmark results
This commit is contained in:
1 parent
95954b7cdd
commit
1922407a82
2 files changed
+90
-26
No files matched your search
+9
-1
@@ -31,6 +31,8 @@ public class DataMiningEntryPoint extends AbstractEntryPoint {
|
||||
private double overallTimeSum = 0;
|
||||
private double serverTimeSum = 0;
|
||||
|
||||
private QueryBenchmarkResultsChart resultsChart;
|
||||
|
||||
@Override
|
||||
protected void doOnModuleLoad() {
|
||||
super.doOnModuleLoad();
|
||||
@@ -45,11 +47,14 @@ public class DataMiningEntryPoint extends AbstractEntryPoint {
|
||||
dataMiningElementsPanel.add(resultsPanel);
|
||||
resultsPanel.add(createOverallTimePanel());
|
||||
resultsPanel.add(createServerTimePanel());
|
||||
resultsChart = new QueryBenchmarkResultsChart();
|
||||
resultsPanel.add(resultsChart);
|
||||
resultsPanel.add(createResultsTable());
|
||||
}
|
||||
|
||||
private void run() {
|
||||
benchmarkStatusLabel.setText(" | Running");
|
||||
resultsChart.reset();
|
||||
resetResults();
|
||||
final int times = numberOfQueriesBox.getValue() == null ? 1 : numberOfQueriesBox.getValue();
|
||||
String[] selectionIdentifiers = new String[] {"KW 2013 International (STR)", "KW 2013 International (H-Boat)", "KW 2013 International (29ER)",
|
||||
@@ -72,11 +77,14 @@ public class DataMiningEntryPoint extends AbstractEntryPoint {
|
||||
public void onSuccess(Pair<Double, Double> result) {
|
||||
long endTime = System.currentTimeMillis();
|
||||
double overallTime = (endTime - startTimesMap.get(number)) / 1000.0;
|
||||
updateResults(new QueryBenchmarkResult("Run " + number, result.getB().intValue(), result.getA(), overallTime));
|
||||
QueryBenchmarkResult newResult = new QueryBenchmarkResult("Run " + number, result.getB().intValue(), result.getA(), overallTime);
|
||||
updateResults(newResult);
|
||||
resultsChart.addResult(newResult);
|
||||
|
||||
synchronized (resultsDataProvider) {
|
||||
if (resultsDataProvider.getList().size() == times) {
|
||||
benchmarkStatusLabel.setText(" | Done");
|
||||
resultsChart.showResults();
|
||||
} else {
|
||||
benchmarkStatusLabel.setText(" | Running (last finished: " + number + ")");
|
||||
}
|
||||
|
||||
+81
-25
@@ -1,14 +1,23 @@
|
||||
package com.sap.sailing.gwt.ui.datamining;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.moxieapps.gwt.highcharts.client.Axis;
|
||||
import org.moxieapps.gwt.highcharts.client.Chart;
|
||||
import org.moxieapps.gwt.highcharts.client.ChartSubtitle;
|
||||
import org.moxieapps.gwt.highcharts.client.ChartTitle;
|
||||
import org.moxieapps.gwt.highcharts.client.Credits;
|
||||
import org.moxieapps.gwt.highcharts.client.PlotLine;
|
||||
import org.moxieapps.gwt.highcharts.client.PlotLine.DashStyle;
|
||||
import org.moxieapps.gwt.highcharts.client.Point;
|
||||
import org.moxieapps.gwt.highcharts.client.Series;
|
||||
import org.moxieapps.gwt.highcharts.client.ToolTip;
|
||||
import org.moxieapps.gwt.highcharts.client.labels.AxisLabelsData;
|
||||
import org.moxieapps.gwt.highcharts.client.labels.AxisLabelsFormatter;
|
||||
import org.moxieapps.gwt.highcharts.client.labels.YAxisLabels;
|
||||
import org.moxieapps.gwt.highcharts.client.plotOptions.LinePlotOptions;
|
||||
import org.moxieapps.gwt.highcharts.client.plotOptions.Marker;
|
||||
|
||||
import com.google.gwt.user.client.ui.RequiresResize;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
@@ -19,61 +28,108 @@ public class QueryBenchmarkResultsChart extends SimplePanel implements RequiresR
|
||||
private Series serverTimeSeries;
|
||||
private double serverTimeSum = 0;
|
||||
private PlotLine averageServerTimePlotLine;
|
||||
// private Series overallTimeSeries;
|
||||
// private Series gpsFixAmountSeries;
|
||||
|
||||
private Series overallTimeSeries;
|
||||
private double overallTimeSum = 0;
|
||||
private PlotLine averageOverallTimePlotLine;
|
||||
|
||||
private List<QueryBenchmarkResult> results;
|
||||
|
||||
public QueryBenchmarkResultsChart() {
|
||||
results = new ArrayList<QueryBenchmarkResult>();
|
||||
chart = new Chart()
|
||||
.setMarginLeft(100)
|
||||
.setMarginRight(100)
|
||||
.setMarginRight(45)
|
||||
.setWidth100()
|
||||
.setHeight100()
|
||||
.setCredits(new Credits().setEnabled(false))
|
||||
.setChartTitle(new ChartTitle().setText("Query Benchmark Results"));
|
||||
|
||||
chart.getXAxis().setType(Axis.Type.LINEAR);
|
||||
chart.getXAxis().setType(Axis.Type.LINEAR).setAllowDecimals(false);
|
||||
|
||||
chart.getYAxis(0).setAxisTitleText("Time").setLabels(new YAxisLabels().setFormatter(new AxisLabelsFormatter() {
|
||||
chart.getYAxis().setAxisTitleText("Time").setLabels(new YAxisLabels().setFormatter(new AxisLabelsFormatter() {
|
||||
@Override
|
||||
public String format(AxisLabelsData axisLabelsData) {
|
||||
return axisLabelsData.getValueAsDouble() + "s";
|
||||
try {
|
||||
return axisLabelsData.getValueAsDouble() + "s";
|
||||
} catch (Exception e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}));
|
||||
averageServerTimePlotLine = chart.getYAxis(0).createPlotLine().setWidth(1);
|
||||
// chart.getYAxis(1).setAxisTitleText("Number of GPS-Fixes");
|
||||
|
||||
serverTimeSeries = chart.createSeries().setName("Server Time").setYAxis(0);
|
||||
// overallTimeSeries = chart.createSeries().setName("Overall Time").setYAxis(0);
|
||||
// gpsFixAmountSeries = chart.createSeries().setName("Number of GPS-Fixes").setYAxis(1);
|
||||
chart.setToolTip(new ToolTip().setPointFormat("<span style=\"color:{series.color}\">{series.name}</span>: <b>{point.y}s</b><br/>"));
|
||||
|
||||
serverTimeSeries = chart.createSeries().setName("Server Time").setPlotOptions(new LinePlotOptions().setColor("#000099").setMarker(new Marker().setEnabled(false)));
|
||||
averageServerTimePlotLine = chart.getYAxis().createPlotLine().setColor("#000099").setWidth(2).setDashStyle(DashStyle.SOLID);
|
||||
|
||||
overallTimeSeries = chart.createSeries().setName("Overall Time").setPlotOptions(new LinePlotOptions().setColor("#00bb00").setMarker(new Marker().setEnabled(false)));
|
||||
averageOverallTimePlotLine = chart.getYAxis().createPlotLine().setColor("#00bb00").setWidth(2).setDashStyle(DashStyle.SOLID);
|
||||
|
||||
this.setWidget(chart);
|
||||
}
|
||||
|
||||
public void updateResults(QueryBenchmarkResult newResult) {
|
||||
serverTimeSeries.addPoint(newResult.getServerTime());
|
||||
serverTimeSum += newResult.getServerTime();
|
||||
public void addResult(QueryBenchmarkResult newResult) {
|
||||
results.add(newResult);
|
||||
}
|
||||
|
||||
public void showResults() {
|
||||
int i = 0;
|
||||
Point[] serverTimePoints = new Point[results.size()];
|
||||
Point[] overallTimePoints = new Point[results.size()];
|
||||
for (QueryBenchmarkResult result : results) {
|
||||
serverTimePoints[i] = new Point(i + 1, result.getServerTime()).setName(result.getIdentifier());
|
||||
serverTimeSum += result.getServerTime();
|
||||
overallTimePoints[i] = new Point(i + 1, result.getOverallTime()).setName(result.getIdentifier());
|
||||
overallTimeSum += result.getOverallTime();
|
||||
i++;
|
||||
}
|
||||
|
||||
//This method has to be called, before the points are added to the chart.
|
||||
updateChartSubtitle();
|
||||
serverTimeSeries.setPoints(serverTimePoints);
|
||||
overallTimeSeries.setPoints(overallTimePoints);
|
||||
updatePlotLines();
|
||||
// overallTimeSeries.addPoint(newResult.getOverallTime());
|
||||
// gpsFixAmountSeries.addPoint(newResult.getNumberOfGPSFixes());
|
||||
|
||||
if (!serverTimeSeries.isVisible()) {
|
||||
chart.addSeries(serverTimeSeries);
|
||||
// chart.addSeries(overallTimeSeries);
|
||||
// chart.addSeries(gpsFixAmountSeries);
|
||||
chart.addSeries(overallTimeSeries);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateChartSubtitle() {
|
||||
StringBuilder subtitelBuilder = new StringBuilder();
|
||||
subtitelBuilder.append("Number of GPS-Fixes: " + results.get(0).getNumberOfGPSFixes());
|
||||
subtitelBuilder.append(" - \u2300 Server Time: " + getAverageServerTime() + "s");
|
||||
subtitelBuilder.append(" - \u2300 Overall Time: " + getAverageOverallTime() + "s");
|
||||
|
||||
chart.setChartSubtitle(new ChartSubtitle().setText(subtitelBuilder.toString()));
|
||||
//This is needed, so that the subtitle is updated. Otherwise the text would stay empty
|
||||
this.setWidget(null);
|
||||
this.setWidget(chart);
|
||||
}
|
||||
|
||||
private void updatePlotLines() {
|
||||
chart.getYAxis(0).removePlotLine(averageServerTimePlotLine);
|
||||
averageServerTimePlotLine.setValue(serverTimeSum / serverTimeSeries.getPoints().length);
|
||||
chart.getYAxis(0).addPlotLines(averageServerTimePlotLine);
|
||||
chart.getYAxis().removePlotLine(averageServerTimePlotLine);
|
||||
chart.getYAxis().removePlotLine(averageOverallTimePlotLine);
|
||||
averageServerTimePlotLine.setValue(getAverageServerTime());
|
||||
averageOverallTimePlotLine.setValue(getAverageOverallTime());
|
||||
chart.getYAxis().addPlotLines(averageServerTimePlotLine, averageOverallTimePlotLine);
|
||||
}
|
||||
|
||||
private double getAverageOverallTime() {
|
||||
return overallTimeSum / results.size();
|
||||
}
|
||||
|
||||
private double getAverageServerTime() {
|
||||
return serverTimeSum / results.size();
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
results.clear();
|
||||
serverTimeSum = 0;
|
||||
for (Series series : chart.getSeries()) {
|
||||
series.setPoints(new Number[0]);
|
||||
}
|
||||
overallTimeSum = 0;
|
||||
serverTimeSeries.setPoints(new Point[0]);
|
||||
overallTimeSeries.setPoints(new Point[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in new issue
Block a user