Esempio n. 1
0
        void tree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            AbstractWaterBody ab = e.NewValue as AbstractWaterBody;

            if (ab != null)
            {
                WaterView.DataContext = new WaterBodyViewModel(ab);
            }
        }
Esempio n. 2
0
        public WaterBodyViewModel(AbstractWaterBody WB) : base(WB)
        {
            _waterBody = WB;

            //If there is output
            if (_waterBody.Output.Items.Max(var => var.Values.Count()) > 1)
            {
                WB.Output.Summarize(100);



                _storageTimeStart = _waterBody.Output.Items.First(var => var.Values.Count() > 2).StartTime;
                _storageTimeEnd   = _waterBody.Output.Items.First(var => var.Values.Count() > 2).EndTime;
                UpdateWB();
            }
            //Build the groundwater list
            _groundwaterBoundaries = new ObservableCollection <GroundWaterBoundary>();
            foreach (var GWB in _waterBody.GroundwaterBoundaries)
            {
                if (GWB is GroundWaterBoundary)
                {
                    _groundwaterBoundaries.Add((GroundWaterBoundary)GWB);
                }
            }

            //Build the sources list
            _sources = new ObservableCollection <SourceBoundaryViewModel>();
            foreach (var S in _waterBody.Sources)
            {
                _sources.Add(new SourceBoundaryViewModel((AbstractBoundary)S, "Source"));
            }
            foreach (var S in _waterBody.Precipitation)
            {
                _sources.Add(new SourceBoundaryViewModel((AbstractBoundary)S, "Precipitation"));
            }

            //Build the sinks list
            _sinks = new ObservableCollection <SourceBoundaryViewModel>();
            foreach (var S in _waterBody.EvaporationBoundaries)
            {
                _sinks.Add(new SourceBoundaryViewModel((AbstractBoundary)S, "Evaporation"));
            }
            foreach (var S in _waterBody.Sinks)
            {
                _sinks.Add(new SourceBoundaryViewModel((AbstractBoundary)S, "Sinks"));
            }

            //Build the chemical lists
            Chemicals = new ObservableCollection <LineSeries>();
            foreach (var ts in _waterBody.Output.ChemicalsToLog.Values)
            {
                LineSeries ls = new LineSeries();
                ls.ItemsSource          = ts.Items;
                ls.DependentValuePath   = "Value";
                ls.IndependentValuePath = "Time";
                ls.Title = ts.Name;
                Chemicals.Add(ls);
            }

            //Build composition lists
            Compositions = new ObservableCollection <LineSeries>();
            foreach (var ts in _waterBody.Output.CompositionLog.Values)
            {
                LineSeries ls = new LineSeries();
                ls.ItemsSource          = ts.Items;
                ls.DependentValuePath   = "Value";
                ls.IndependentValuePath = "Time";
                ls.Title = ts.Name;
                Compositions.Add(ls);
            }

            ChemicalMeasurements = new ObservableCollection <ScatterSeries>();
            {
                foreach (var cts in _waterBody.RealData.ChemicalConcentrations.Values)
                {
                    ScatterSeries ls = new ScatterSeries();
                    ls.ItemsSource          = cts.Items;
                    ls.DependentValuePath   = "Value";
                    ls.IndependentValuePath = "Time";
                    ls.Title = cts.Name;
                    ChemicalMeasurements.Add(ls);
                }
            }
        }