public ReportViewModel(List <TrackGroup> queryResultTracks, LogQueryViewModel query, Report report) { Name = report.Name; //Create the plot PlotViewModel newPlot = new PlotViewModel(report.Name, "Time (s)", report.Name, false, true); //Create the stats StatsViewModel newStatGroup = new StatsViewModel(report.Name); foreach (TrackGroup group in queryResultTracks) { //plot data if (group.ConsolidatedTrack != null) { SeriesGroup seriesGroup = group.ConsolidatedTrack.SeriesGroups[report]; foreach (Series series in seriesGroup.SeriesList) { string seriesName; string description; if (seriesGroup.SeriesList.Count == 1) { //only one series per track group, no multi-series track group seriesName = group.ConsolidatedTrack.TrackId; description = group.ConsolidatedTrack.FullTrackId; } else { seriesName = group.ConsolidatedTrack.TrackId + "-" + series.Id; description = group.ConsolidatedTrack.FullTrackId + "-" + series.Id; } //add data to the plot int lineSeriesId = newPlot.AddLineSeries(seriesName, description); foreach (XYValue value in series.Values) { newPlot.AddLineSeriesValue(lineSeriesId, value.X, value.Y); } StatViewModel newStat = new StatViewModel(group.ExperimentId, seriesName, series.Stats , group.ConsolidatedTrack.LogBinaryFile , group.ConsolidatedTrack.LogDescriptorFile , group.ConsolidatedTrack.ExperimentalUnitConfigFile); newStatGroup.addStat(newStat); } } } Plot = newPlot; Stats = newStatGroup; }
public void generateStats() { StatsViewModel statsViewModel = new StatsViewModel("Stats"); foreach (ExperimentLogViewModel log in m_selectedLogs) { List <Stat> stats = log.getVariableStats(m_selectedVariables); foreach (Stat stat in stats) { statsViewModel.addStat(stat); } } bCanSaveReports = true; reports.Add(statsViewModel); selectedReport = statsViewModel; //ActivateItem(statsViewModel); }
public ReportViewModel(List <TrackGroup> queryResultTracks, LogQueryViewModel query, Report report) { Name = report.Name; //Create the plot PlotViewModel newPlot = new PlotViewModel(report.Name, "Time (s)", report.Name, false, true); if (!query.AverageSelectedTracks) { //Create the stats StatsViewModel newStatGroup = new StatsViewModel(report.Name); //Regular line series foreach (TrackGroup group in queryResultTracks) { if (group.ConsolidatedTrack != null) { SeriesGroup seriesGroup = group.ConsolidatedTrack.SeriesGroups[report]; foreach (Series series in seriesGroup.SeriesList) { string seriesName; string description; if (seriesGroup.SeriesList.Count == 1) { //only one series per track group, no multi-series track group seriesName = group.ConsolidatedTrack.TrackId; description = group.ConsolidatedTrack.FullTrackId; } else { seriesName = group.ConsolidatedTrack.TrackId + "-" + series.Id; description = group.ConsolidatedTrack.FullTrackId + "-" + series.Id; } //add data to the plot int lineSeriesId = newPlot.AddLineSeries(seriesName, description); //force resampling if point count is over 100 if (series.Values.Count > 100) { series.Resample(100); } foreach (XYValue value in series.Values) { newPlot.AddLineSeriesValue(lineSeriesId, value.X, value.Y); } StatViewModel newStat = new StatViewModel(group.ExperimentId, seriesName, series.Stats , group.ConsolidatedTrack.LogBinaryFile , group.ConsolidatedTrack.LogDescriptorFile , group.ConsolidatedTrack.ExperimentalUnitConfigFile); newStatGroup.addStat(newStat); } } } Stats = newStatGroup; } else { List <Series> originalSeries = new List <Series>(); foreach (TrackGroup group in queryResultTracks) { //Averaged line series: we need to average all the track groups SeriesGroup seriesGroup = group.ConsolidatedTrack.SeriesGroups[report]; //take the first series originalSeries.Add(seriesGroup.SeriesList[0]); } Series.AverageSeriesList(originalSeries, out Series averages, out Series minimums, out Series maximums); //only one series per track group, no multi-series track group string seriesName = "Averaged series"; string description = "Averaged series"; //add a line series to the plot int lineSeriesId = newPlot.AddLineSeries(seriesName, description); int areaSeriesId = newPlot.AddAreaSeries(seriesName, description); //all three output series must have the same number of elements int sampleCount = averages.Values.Count; for (int sample = 0; sample < sampleCount; sample++) { newPlot.AddLineSeriesValue(lineSeriesId, averages.Values[sample].X, averages.Values[sample].Y); newPlot.AddAreaSeriesValue(areaSeriesId, averages.Values[sample].X, minimums.Values[sample].Y, maximums.Values[sample].Y); } } Plot = newPlot; }