private string CreateGraph(Dictionary <string, string> rawParameters) { if (_result.Count == 0) { return(NoDataCaption); } if (!_compareType.IsNumeric()) { return("no numeric comparison"); } var parameters = new TimeSeriesGraphParameters(rawParameters); var startTimestamp = parameters.StartTimestamp; var endTimestamp = parameters.EndTimestamp; // we need to recalculate the boundary values if limits were provided var recalculateNeeded = startTimestamp != null || endTimestamp != null; var dataSubset = recalculateNeeded ? _result.Subset(startTimestamp, endTimestamp) : _result; if (dataSubset.Count == 0) { return(NoDataCaption); } var yDimension = Dimension.GetValueRange(dataSubset.Values, parameters.MinValue, parameters.MaxValue); startTimestamp ??= dataSubset.Keys.First(); endTimestamp ??= dataSubset.Keys.Last(); var chart = new TimeSeriesChart(); return(chart.ChartInHtmlFor( dataSubset, new AxisLimits(startTimestamp.Value, endTimestamp.Value, yDimension), new Size(parameters.Width, parameters.Height) )); }
public void TimeSeriesChartVerySmallRangeTest() { var table = new MeasurementComparisonDictionary(); var startTimestamp = DateTime.Today; const double minY = 49.93; const double maxY = 50.02; table.Add(startTimestamp, new MeasurementComparisonMock("49.95", "49.95", CompareOutcome.None)); table.Add(startTimestamp.AddSeconds(1), new MeasurementComparisonMock("50.0", "50.0", CompareOutcome.None)); // Ading a double NaN to check whether that is ignored table.Add(startTimestamp.AddSeconds(2), new MeasurementComparisonMock("NaN", "NaN", CompareOutcome.None)); var chart = new TimeSeriesChart(); var base64Result = chart.ChartInHtmlFor(table, new AxisLimits(startTimestamp, startTimestamp.AddSeconds(1), new Dimension(minY, maxY)), new Size(800, 600)); AssertChartImage(base64Result, SmallRangeFile, nameof(TimeSeriesChartVerySmallRangeTest)); }
public void TimeSeriesChartMinutesTimeTest() { var table = new MeasurementComparisonDictionary(); var startTimestamp = DateTime.Today; const double minY = -1; const double maxY = 50; table.Add(startTimestamp, new MeasurementComparisonMock("49.95", "49.95", CompareOutcome.None)); table.Add(startTimestamp.AddSeconds(9660), new MeasurementComparisonMock("-0.50", "-0.50", CompareOutcome.None)); table.Add(startTimestamp.AddSeconds(19320), new MeasurementComparisonMock("3.00", "3.20", CompareOutcome.OutsideToleranceIssue)); var endTimestamp = table.Last().Key; var chart = new TimeSeriesChart(); var base64Result = chart.ChartInHtmlFor(table, new AxisLimits(startTimestamp, endTimestamp, new Dimension(minY, maxY)), new Size(800, 600)); AssertChartImage(base64Result, MinutesTimeRangeExpectedFile, nameof(TimeSeriesChartMinutesTimeTest)); }