From 51627fe7b102fdec1708383b0ea3d54226993ca9 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Tue, 17 May 2016 11:01:00 +0200
Subject: [PATCH] plot driving mode and altitude (if available and selected)

---
 VectoCore/VectoCoreTest/Utils/GraphWriter.cs | 39 +++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)

diff --git a/VectoCore/VectoCoreTest/Utils/GraphWriter.cs b/VectoCore/VectoCoreTest/Utils/GraphWriter.cs
index a17332c7d8..d5ca8937cc 100644
--- a/VectoCore/VectoCoreTest/Utils/GraphWriter.cs
+++ b/VectoCore/VectoCoreTest/Utils/GraphWriter.cs
@@ -61,6 +61,8 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 		public static ModalResultField[] Xfields { get; set; }
 
+		public static bool PlotDrivingMode = false;
+
 
 		public static void Enable()
 		{
@@ -135,9 +137,37 @@ namespace TUGraz.VectoCore.Tests.Utils
 						chartArea.AxisY2.RoundAxisValues();
 						chartArea.AxisY2.Interval = Math.Round(max / 5);
 
+						if (modDataV3.Columns.Contains("Alt")) {
+							var alt = LoadData(modDataV3, "Alt");
+							var seriesAlt = CreateSeries("Altitude", legend, chartArea, chart, Color.Brown, x, alt);
+							seriesAlt.YAxisType = AxisType.Secondary;
+						}
 						var seriesGrad = CreateSeries("Gradient", legend, chartArea, chart, Color.Coral, x, grad);
 						seriesGrad.YAxisType = AxisType.Secondary;
 					}
+					if (PlotDrivingMode && yfield == Yfields.First()) {
+						if (modDataV3.Columns.Contains("Action")) {
+							var actionMapping = new Dictionary<string, double> {
+								{ "Accelerate", 2 - 3 },
+								{ "Coast", 1 - 3 },
+								{ "Roll", 0 - 3 },
+								{ "Brake", -1 - 3 }
+							};
+							var action = LoadDataMapped(modDataV3, "Action", actionMapping);
+							var seriesAction = CreateSeries("Driving Action", legend, chartArea, chart, Color.Magenta, x, action);
+							//seriesAction.YAxisType = AxisType.Secondary;
+						}
+
+						if (modDataV3.Columns.Contains("DrivingMode")) {
+							var modeMapping = new Dictionary<string, double> {
+								{ "DrivingModeDrive", -1 },
+								{ "DrivingModeBrake", -6 },
+							};
+							var mode = LoadDataMapped(modDataV3, "DrivingMode", modeMapping);
+							var seriesAction = CreateSeries("Driving Mode", legend, chartArea, chart, Color.Maroon, x, mode);
+							//seriesAction.YAxisType = AxisType;
+						}
+					}
 
 					var series1 = CreateSeries(string.Format("{1} - {0}", yfield, Series1Label), legend, chartArea, chart,
 						Color.Blue, x, y);
@@ -159,7 +189,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 				AddTitle(chart, Path.GetFileNameWithoutExtension(fileName), Yfields[0].ToString());
 
 				chart.Invalidate();
-				chart.SaveImage(fileName, ChartImageFormat.Png);
+				chart.SaveImage(Path.Combine(Path.GetDirectoryName(fileNameV3) ?? "", fileName), ChartImageFormat.Png);
 			}
 		}
 
@@ -322,6 +352,13 @@ namespace TUGraz.VectoCore.Tests.Utils
 				.ToArray();
 		}
 
+		private static double[] LoadDataMapped(DataTable modDataV3, string field, Dictionary<string, double> mapping)
+		{
+			return (from x in modDataV3.Rows.Cast<DataRow>()
+				let val = x.Field<string>(field)
+				select mapping.ContainsKey(val) ? mapping[val] : double.NaN).ToArray();
+		}
+
 		private static void AlignChart(Chart chart, string chartToAlign, string chartToAlignWith)
 		{
 			chart.ChartAreas[chartToAlign].AlignWithChartArea = chartToAlignWith;
-- 
GitLab