public void LogAnalogueParameter(string parameterName, double?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); AnalogSeries.Add(vm); AnalogSeriesAdditionalData.Add(metadata); _logs.Add(parameterName, new PointsSeriesAndAdditionalData(vm, metadata, dataSeries, renderSeries)); } _logs[parameterName].DataSeries.Append(DateTime.Now, value.Value); _updatable?.Update(); } }); }
private void AnalogSeriesOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs notifyCollectionChangedEventArgs) { var additionalDataToRemove = AnalogSeriesAdditionalData.Where(adata => AnalogSeries.All(data => data != adata.ChartSeries)).ToList(); foreach (var seriesAdditionalData in additionalDataToRemove) { AnalogSeriesAdditionalData.Remove(seriesAdditionalData); RemoveSeries(seriesAdditionalData.ChartSeries); } }