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); } }