internal static DataPoint GetDataPoint(Type dataPointType, Transaction transaction, decimal total) { DataPoint dataPoint = null; if (dataPointType == typeof(LineChartDataPoint)) { dataPoint = new LineChartDataPoint { X = transaction.Date, Y = total, }; } else if (dataPointType == typeof(PieChartDataPoint)) { dataPoint = new PieChartDataPoint { Name = transaction.Payee, Value = transaction.Amount, }; } else { throw new ArgumentException($"Invalid Data Point Type {dataPointType}"); } return(dataPoint); }
protected override void LoadDataPoints() { Application.Current.Dispatcher.Invoke(() => { DataFilter filter = GetFilter(ReportType); DataPoints.Clear(); var dataPoints = filter.Filter <PieChartDataPoint>(_dataModel.Transactions, StartDate, EndDate); foreach (var dataPoint in dataPoints) { DataPoint existingDataPoint = GetDataPoint(dataPoint.Name); if (existingDataPoint != null) { PieChartDataPoint newDataPoint = new PieChartDataPoint { Name = dataPoint.Name, Value = ((PieChartDataPoint)existingDataPoint).Value += dataPoint.Value, }; DataPoints.Remove(existingDataPoint); DataPoints.Add(newDataPoint); } else { DataPoints.Add(dataPoint); } } }); }