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