public void LogDiscreteParameter(string parameterName, bool?value) { _uiNotifier.Notify(() => { if (value.HasValue) { if (!_logs.ContainsKey(parameterName)) { var dataSeries = new XyDataSeries <DateTime, double> { SeriesName = parameterName }; var color = _colors.First(c => _usedColors.All(uc => uc != c)); _usedColors.Add(color); var renderSeries = new FastLineRenderableSeries { DataSeries = dataSeries, SeriesColor = color }; var vm = new ChartSeriesViewModel(dataSeries, renderSeries); var metadata = new SeriesAdditionalData(vm); DiscreteSeries.Add(vm); DiscreteSeriesAdditionalData.Add(metadata); _logs.Add(parameterName, new PointsSeriesAndAdditionalData(vm, metadata, dataSeries, renderSeries)); } _logs[parameterName].DataSeries.Append(DateTime.Now, value.Value ? 1.0 : 0.0); _updatable?.Update(); } }); }
private void DiscreteSeriesOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs) { var additionalDataToRemove = DiscreteSeriesAdditionalData.Where(adata => DiscreteSeries.All(data => data != adata.ChartSeries)).ToList(); foreach (var seriesAdditionalData in additionalDataToRemove) { DiscreteSeriesAdditionalData.Remove(seriesAdditionalData); RemoveSeries(seriesAdditionalData.ChartSeries); } }
public void RemoveSeries(IChartSeriesViewModel seriesViewModel) { var logsToRemove = _logs.Where(log => log.Value.SeriesVm == seriesViewModel).ToList(); foreach (var keyValuePair in logsToRemove) { _usedColors.Remove(keyValuePair.Value.RenderSeries.SeriesColor); AnalogSeries.Remove(keyValuePair.Value.SeriesVm); DiscreteSeries.Remove(keyValuePair.Value.SeriesVm); _logs.Remove(keyValuePair.Key); } }
public MainViewModel() { var startDateTime = DateTime.Now; ChartSeries.Add(GenerateSeries(startDateTime, 1, "analog bobo 1")); ChartSeries.Add(GenerateSeries(startDateTime, 1, "analog bobo 2")); DiscreteSeries.Add(GenerateDiscreteSeries(startDateTime, 1, "discrete bobo 1")); DiscreteSeries.Add(GenerateDiscreteSeries(startDateTime, -1, "discrete bobo3")); DiscreteSeries.Add(GenerateDiscreteSeries(startDateTime, 1.5, "discrete bobo4")); DiscreteSeries.Add(GenerateDiscreteSeries(startDateTime, -0.5, "discrete bobo5")); DiscreteSeries.Add(GenerateDiscreteSeries(startDateTime, -0.3, "discrete bobo6")); DiscreteSeries.Add(GenerateDiscreteSeries(startDateTime, 0.3, "discrete bobo7")); Annotations.Add(new VerticalLineAnnotation() { X1 = startDateTime + TimeSpan.FromMilliseconds(60), Stroke = new SolidColorBrush(Colors.Aqua) }); }
private void GenerateSampleData() { // var startDateTime = DateTime.Now; AnalogSeries.Add(GenerateSeries(startDateTime, 1, "bobo1")); RpdAnalogSeriesViewModels.Add(new RpdChartSeriesViewModel(AnalogSeries[0])); DiscreteSeries.Add(GenerateSeries(startDateTime, -1, "bobo2")); DiscreteSeries.Add(GenerateSeries(startDateTime, 0.2, "bobo3")); DiscreteSeries.Add(GenerateSeries(startDateTime, 0.5, "bobo4")); DiscreteSeries.Add(GenerateSeries(startDateTime, 0.7, "bobo5")); DiscreteSeries.Add(GenerateSeries(startDateTime, 1.2, "bobo6")); DiscreteSeries.Add(GenerateSeries(startDateTime, 1.5, "bobo7")); foreach (var chartSeriesViewModel in DiscreteSeries) { RpdDiscreteSeriesViewModels.Add(new DiscreteChartSeriesViewModel(chartSeriesViewModel)); } }