private void OnColorChanged(object sender, EventArgs eventArgs) { ParameterDisplaySettingsViewModel cbvm = sender as ParameterDisplaySettingsViewModel; if (cbvm == null) { throw new ArgumentException("Wrong sender!"); } PsaParameterDataViewModel vm = cbvm.ParamData as PsaParameterDataViewModel; if (graph.IsDisplayed(vm)) { LineSeries2D series = graph.FindSeries(vm) as LineSeries2D; vm.Color = new SolidColorBrush(cbvm.StrokeColor); series.Brush = new SolidColorBrush(cbvm.StrokeColor); SecondaryAxisY2D secAxs = XYDiagram2D.GetSeriesAxisY(series); if (secAxs != null) { XYDiagram2D.GetSeriesAxisY(series).Brush = new SolidColorBrush(cbvm.StrokeColor); } } UpdateScalesSetView(); UpdateScalesComboboxesView(); }
public Series CreateSeries(PsaParameterDataViewModel vm, Color color, ChartScaleViewModel scale) { LineSeries2D series = new LineSeries2D(); series.DataContext = vm; series.Brush = vm.Color = new SolidColorBrush(color); series.ValueScaleType = ScaleType.Numerical; series.ArgumentScaleType = ScaleType.Numerical; series.MarkerVisible = false; series.ShowInLegend = false; series.Label = new SeriesLabel(); series.Label.Visible = false; if (!vm.HasTimestamps) { for (int i = 0; i < vm.Values.Count; i++) { series.Points.Add(new SeriesPoint(i, vm.Values[i])); } } else { for (int i = 0; i < vm.Values.Count; i++) { series.Points.Add(new SeriesPoint(vm.Timestamps[i], vm.Values[i])); } } return(series); }
public Series FindSeries(PsaParameterDataViewModel vm) { if (baseSeries != null && ReferenceEquals(baseSeries.DataContext, vm)) { return(baseSeries); } return(diagram.Series.FirstOrDefault(s => ReferenceEquals(((LineSeries2D)s).DataContext, vm))); }
public DataViewControlFactory(ViewModelBase vm) { if (vm == null) { throw new ArgumentNullException("vm"); } param = vm as PsaParameterDataViewModel; veh = vm as ExportableVehicleViewModel; pset = vm as IPsaParametersSetViewModel; trace = vm as ExportablePsaTraceViewModel; }
private void OnSelectedDataItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { object newObject = e.NewValue; PsaParametersSetViewModel set = newObject as PsaParametersSetViewModel; if (set != null) { if (set != null) { PsaParametersSetGraphSelectionControl selector = new PsaParametersSetGraphSelectionControl(); selector.DataContext = set; ContentControlUpper.Content = selector; selector.InitializeCheckboxes(); PsaParametersSetGraphControl multigraph = new PsaParametersSetGraphControl(); ContentControlLower.Content = multigraph; selector.CheckBoxChecked -= OnSelectorCheckBoxChecked; selector.CheckBoxUnchecked -= OnSelectorCheckBoxUnChecked; selector.CheckBoxChecked += OnSelectorCheckBoxChecked; selector.CheckBoxUnchecked += OnSelectorCheckBoxUnChecked; return; } } PsaParameterDataViewModel parameter = newObject as PsaParameterDataViewModel; if (parameter != null) { SingleParameterGraphControl graph = new SingleParameterGraphControl(); if (parameter.HasTimestamps) { graph.DisplayGraph(parameter.Model.Timestamps, parameter.Values, Colors.Blue); } else { graph.DisplayGraph(parameter.Values, Colors.Blue); } ContentControlLower.Content = graph; PsaParameterDataPropertiesControl propsControl = new PsaParameterDataPropertiesControl(); propsControl.DataContext = parameter; ContentControlUpper.Content = propsControl; return; } ContentControlLower.Content = null; ContentControlUpper.Content = null; }
private CascadeChartControl GetCascadeChart(PsaParameterDataViewModel parameter) { var cn = new CascadeChartControl() { DataContext = parameter, Height = 180, HorizontalAlignment = HorizontalAlignment.Stretch }; MoveRight += cn.MoveCursorRight; MoveLeft += cn.MoveCursorLeft; SliderMoved += cn.SliderMoved; return(cn); }
public Series FindSeries(PsaParameterDataViewModel vm) { foreach (Series s in graphDiagram.Series) { PsaParameterDataViewModel param = s.DataContext as PsaParameterDataViewModel; if (param != null) { if (param == vm) // the same object { return(s as LineSeries2D); } } } return(null); }
public void AddGraph(PsaParameterDataViewModel vm, Color strokeColor) { Clear(); series = GenerateSeries(); series.DataContext = vm; series.Brush = new SolidColorBrush(strokeColor); IList <SeriesPoint> pointsRange = new List <SeriesPoint>(); if (!vm.HasTimestamps) { for (int i = 0; i < vm.Values.Count; i++) { pointsRange.Add(new SeriesPoint(i, vm.Values[i])); } } else { for (int i = 0; i < vm.Values.Count; i++) { pointsRange.Add(new SeriesPoint(vm.Timestamps[i], vm.Values[i])); } } series.Points.AddRange(pointsRange); doubleDoubleCrosshair = new DoubleDoubleMouseCrosshairCursorProvider( chart, diagram, series, crosshairCursorCanvas, valueX, valueY, verticalLine, horizontalLine, diagram.AxisX, diagram.AxisY); diagram.Series.Add(series); originalMinXRange = (double)diagram.AxisX.ActualRange.ActualMinValue; originalMaxXRange = (double)diagram.AxisX.ActualRange.ActualMaxValue; originalMaxYRange = (double)diagram.AxisY.ActualRange.ActualMaxValue; originalMinYRange = (double)diagram.AxisY.ActualRange.ActualMinValue; diagram.AxisY.GridSpacing = (originalMaxYRange - originalMinYRange) / 4; gridSpacingQuantum = diagram.AxisY.GridSpacing / 20; }
public void AddGraph(PsaParameterDataViewModel vm) { series = GenerateSeries(); series.DataContext = vm; series.Brush = vm.Color; IList <SeriesPoint> pointsRange = new List <SeriesPoint>(); if (!vm.HasTimestamps) { for (int i = 0; i < vm.Values.Count; i++) { pointsRange.Add(new SeriesPoint(i, vm.Values[i])); } } else { for (int i = 0; i < vm.Values.Count; i++) { pointsRange.Add(new SeriesPoint(vm.Timestamps[i], vm.Values[i])); } } cursorProvider = new DoubleDoubleMovingCrosshairCursorProvider(diagram, axisX, axisY, crosshairCursorCanvas, series, verticalLine, horizontalLine, valueX, valueY); series.Points.AddRange(pointsRange); diagram.Series.Add(series); verticalLine.Visibility = Visibility.Hidden; horizontalLine.Visibility = Visibility.Hidden; double originalMaxYRange = (double)diagram.AxisY.ActualRange.ActualMaxValue; double originalMinYRange = (double)diagram.AxisY.ActualRange.ActualMinValue; diagram.AxisY.GridSpacing = (originalMaxYRange - originalMinYRange) / 4; gridSpacingQuantum = diagram.AxisY.GridSpacing / 20; }
public void TestfindSeries() { Mock <IParametersSetSettingsSource> mock = new Mock <IParametersSetSettingsSource>(); PsaParametersSetAnalysisControl control = new PsaParametersSetAnalysisControl(mock.Object); PsaParametersSet set = GenerateParametersSet(); IPsaParametersSetViewModel psvm = new PsaParametersSetViewModel(set); PsaParameterDataViewModel first = psvm.Parameters[0]; var second = psvm.Parameters[1]; Series s = control.CreateSeries(psvm.Parameters[0], new Color(), new ChartScaleViewModel(new ChartScale())); Series sp = control.CreateSeries(psvm.Parameters[1], new Color(), new ChartScaleViewModel(new ChartScale())); control.AddSeries(s); control.AddSeries(sp); Series found = control.FindSeries(second); Assert.IsNotNull(found); Assert.IsTrue(ReferenceEquals(found.DataContext, second)); }
public ExportablePsaParametersSetViewModel(PsaParametersSet model) { if (model == null) { throw new ArgumentNullException("model"); } this.model = model; foreach (PsaParameterData param in model.Parameters) { PsaParameterDataViewModel vm = new PsaParameterDataViewModel(param); //RegisterExportableChild(vm); parameters.Add(vm); } if (model.Parameters.Any(p => p.Type == PsaParameterType.Unsupported)) { containsUnrecognizedData = true; } }
private void RemoveGraph(PsaParameterDataViewModel vm) { Series toDelete = null; foreach (Series s in graph.SeriesCollection) { PsaParameterDataViewModel param = s.DataContext as PsaParameterDataViewModel; if (param != null) { if (param == vm) // the same object { toDelete = s; break; } } } // determine axes to delete AxisY2D axsToDelete = XYDiagram2D.GetSeriesAxisY((XYSeries)toDelete); bool axsUsedSomewhereElse = false; foreach (XYSeries s in graph.SeriesCollection) { if (s != null && s == toDelete) { continue; } AxisY2D axs = XYDiagram2D.GetSeriesAxisY(s); if (axs != null && axs == axsToDelete) { axsUsedSomewhereElse = true; } } graph.RemoveSeries(toDelete); SecondaryAxisY2D axsToDeleteCast = axsToDelete as SecondaryAxisY2D; if (!axsUsedSomewhereElse && axsToDeleteCast != null) { graph.graphDiagram.SecondaryAxesY.Remove(axsToDeleteCast); } }
private void AddGraph(PsaParameterDataViewModel vm, Color color, ChartScaleViewModel scale) { LineSeries2D series = View.CreateSeries(vm, color, scale) as LineSeries2D; if (graph.graphDiagram.Series.Count > 0) { if (scale.Model.Equals(ChartScale.Auto)) { ProcessAutoscale(series, color); } else { ProcessSelectedScale(series, scale.Model); } } graph.graphDiagram.Series.Add(series); if (graph.graphDiagram.Series.Count == 1) { graph.OriginalMaxXRange = (double)graph.graphDiagram.AxisX.ActualRange.ActualMaxValue; graph.OriginalMinXRange = (double)graph.graphDiagram.AxisX.ActualRange.ActualMinValue; } }
private void AddGraph(PsaParameterDataViewModel vm, Color color, ChartScaleViewModel scale) { Series series = View.CreateSeries(vm, color, scale); View.AddSeries(series); }
public bool IsDisplayed(PsaParameterDataViewModel vm) { return(FindSeries(vm) != null); }
public ParameterDetailsControl(PsaParameterDataViewModel vm) : this() { DataContext = vm; }
public ParameterView(PsaParameterDataViewModel viewModel) : this() { DataContext = viewModel; controlGraph.AddGraph(viewModel, Colors.Blue); }