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);
        }
예제 #3
0
 public Series FindSeries(PsaParameterDataViewModel vm)
 {
     if (baseSeries != null && ReferenceEquals(baseSeries.DataContext, vm))
     {
         return(baseSeries);
     }
     return(diagram.Series.FirstOrDefault(s => ReferenceEquals(((LineSeries2D)s).DataContext, vm)));
 }
예제 #4
0
 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;
 }
예제 #5
0
        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;
        }
예제 #6
0
        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);
 }
예제 #8
0
        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;
        }
예제 #10
0
        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;
 }
예제 #17
0
 public ParameterView(PsaParameterDataViewModel viewModel)
     : this()
 {
     DataContext = viewModel;
     controlGraph.AddGraph(viewModel, Colors.Blue);
 }