Exemple #1
0
        public static async Task Overview(Model model, BasinMapViewModel basin, String filename, bool detail = true)
        {
            try
            {
                var imageFile = Path.GetTempFileName() + ".png";
                await basin.Snapshot(imageFile);

                using (var document = DocX.Create(filename))
                {
                    var tp = document.InsertParagraph("Freshwater Health Index Assessment").Color(_blue).FontSize(16);
                    tp.Alignment = Alignment.center;
                    tp           = document.InsertParagraph($"{model.Attributes.Title} {model.Attributes.AssessmentYear}").FontSize(14);
                    tp.Alignment = Alignment.center;

                    // the picture
                    var image   = document.AddImage(imageFile);
                    var picture = image.CreatePicture();
                    var ip      = document.InsertParagraph();
                    ip.Alignment = Alignment.center;
                    ip.AppendPicture(picture);

                    document.InsertParagraph($"{DateTime.Now.ToLongDateString()}");
                    document.InsertParagraph(model.Attributes.Notes);

                    var level1 = 2;
                    foreach (var pillar in new[] { model.EcosystemVitality, model.EcosystemServices, model.Governance })
                    {
                        AddSection(document, pillar, detail, level1);
                        var level2 = 1;
                        foreach (var indicator in pillar.Children)
                        {
                            AddSection(document, indicator, detail, level1, level2);

                            var level3 = 1;
                            if (indicator.Children == null)
                            {
                                continue;
                            }
                            foreach (var sub in indicator.Children)
                            {
                                AddSection(document, sub, detail, level1, level2, level3);
                                level3++;
                            }

                            level2++;
                        }
                        level1++;
                    }

                    document.Save();
                    File.Delete(imageFile);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Error producing document: {ex.Message}");
            }
        }
Exemple #2
0
        public FlowDeviationViewModel(Action <NavigationViewModel> navigate, NavigationViewModel back)
            : base(navigate, back)
        {
            EditorCommand = new RelayCommand(Editor);
            RemoveCommand = new RelayCommand(Remove);
            ImportCommand = new RelayCommand(Import);
            ExportCommand = new RelayCommand(Export);

            FlowDeviation.Stations.CollectionChanged += async(sender, args) => await BasinMapViewModel.Refresh();
        }
Exemple #3
0
        public LocationPickerViewModel(ILocated item)
        {
            BasinMapViewModel = new BasinMapViewModel(new List <BasinMapLayer>
            {
                // new BasinMapReaches() //marker isn't showing up when reaches are visible
            });

            BasinMapViewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == nameof(BasinMapViewModel.SelectedPoint))
                {
                    PointSelected(BasinMapViewModel.SelectedPoint);
                }
            };

            if (item.Location.Latitude > 0 && item.Location.Longitude > 0)
            {
                PointSelected(new MapPoint(item.Location.Longitude, item.Location.Latitude, new SpatialReference(item.Location.Wkid)));
            }
        }
Exemple #4
0
        public HomeViewModel(Action <NavigationViewModel> navigate, NavigationViewModel back) : base(navigate, back)
        {
            _navigate        = navigate;
            BackstageCommand = new RelayCommand((() => Navigate(Backstage)));

            EcosystemServicesCommand = new RelayCommand(() => Navigate(EcosystemServicesViewModel));
            EcosystemVitalityCommand = new RelayCommand(() => Navigate(EcosystemVitalityViewModel));
            GovernanceCommand        = new RelayCommand(() => Navigate(GovernanceViewModel));
            CoreCommand = new RelayCommand(() => Navigate(CoreViewModel));


            BasinMapViewModel = new BasinMapViewModel(new List <BasinMapLayer>
            {
                new BasinMapReaches(),
                new BasinMapNodes(),
                new BasinMapGauges {
                    Visibility = false
                },
                new BasinMapSpatialUnits {
                    Visibility = false
                },
                new BasinMapStations {
                    Visibility = false
                },
                new BasinMapShapeLayer("BasinShapefile", "Basin")
            });

            ReportCommand = new RelayCommand(async() => await Report());

            Globals.ModelChanged += OnModelChanged;

            Globals.ModelModified += (sender, args) =>
            {
                Modified = true;
                Globals.Model.Attributes.Modified = DateTime.Now;
                //UpdateModel(); // this happens too often, need to create ModelMapInformation
            };

            OnModelChanged(null, null);
        }
        public StepNViewModel(IList <DamTableRow> dams, IList <Reach> reaches, int wkid)
        {
            _dams = dams;

            AcceptCommand = new RelayCommand(Accept);
            DeleteCommand = new RelayCommand(Delete);

            BasinMapViewModel = new BasinMapViewModel(reaches, wkid, true);
            BasinMapViewModel.SelectionOverlays.Add("Nodes");    // users only select nodes

            BasinMapViewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(BasinMapViewModel.SelectedId))
                {
                    return;
                }

                if (!(BasinMapViewModel.GetSelectedModel() is Node node))
                {
                    return;
                }
                if (AssignedNode != null)
                {
                    AssignedNode.Dam            = null;
                    AssignedNode.Location.Color = Color.Black;
                    BasinMapViewModel.UpdateModelToMap();
                }
                node.Dam            = new Dam(Dam);
                node.Location.Color = Color.Red;
                BasinMapViewModel.UpdateModelToMap();
                AssignedNode   = node;
                ActionComplete = true;
            };

            Dam = _dams[_currentIndex];
            var id = BasinMapViewModel.AddMarker(new DamMarker(Dam));

            BasinMapViewModel.ZoomToMarker(id);
        }
        public SpatialUnitsViewModel(EcosystemServicesIndicator esi, Action <NavigationViewModel> navigate, NavigationViewModel back)
            : base(navigate, back)
        {
            Indicator     = esi;
            EditorCommand = new RelayCommand(Editor);
            RemoveCommand = new RelayCommand(Remove);
            ImportCommand = new RelayCommand(Import);
            ExportCommand = new RelayCommand(Export);

            Indicator.SpatialUnits.CollectionChanged +=
                (sender, args) =>
            {
                RaisePropertyChanged(nameof(CanChangeConfidence));
                Task.Factory.StartNew(() => { Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.DataBind, (Action)(async() => await BasinMapViewModel.Refresh())); });
            };
        }
        public WaterQualitySummaryViewModel(Action <NavigationViewModel> navigate, NavigationViewModel back)
            : base(navigate, back)
        {
            _navigate = navigate;

            EditorCommand = new RelayCommand(Editor);
            ImportCommand = new RelayCommand(Import);
            ExportCommand = new RelayCommand(Export);

            Indicator.Gauges.CollectionChanged += (sender, args) => Task.Factory.StartNew(() => { Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.DataBind, (Action)(async() => await BasinMapViewModel.Refresh())); });
        }