Exemple #1
0
        void SiteRDEControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            var site = DataContext as RDESiteViewModel;
            if (site != null) {
                if (_currentSite != null) {
                    // although the database actions are registered for new/modified traits, we need to keep track of them so we can
                    // redisplay them as the user flips around the different sites.
                    _currentSite.Traits = _traits.GetModel();
                }
                _traits.BindModel(site.Traits, site);
                _currentSite = site;

                // There is a datacontext change cascade problem here.
                // When the RDE frame advances/retreats its first changes the data context on the various RDE Panels (this one included)
                // but our downstream dependents have yet to have their datacontexts changed (e.g. the position control, and it's descendants
                // still point to the old site). This means when we clear the control (several lines down), it was actually clearing the old site as well as the control
                // text boxes. So the datacontext for the position control is explicitly set here so that it is correctly bound to the new site
                // when it is cleared.
                // NOTE: have tried dispatching the call (kind of like invokeLater) and it didn't work.

                ctlPosition.DataContext = site;
                if (!site.Latitude.HasValue || !site.Longitude.HasValue || (site.Latitude.Value == 0 && site.Longitude.Value == 0)) {
                    ctlPosition.Clear();
                }
            }
        }
Exemple #2
0
        private void LoadSiteTemplate(int templateId)
        {
            var service = new MaterialService(User);
            var list = service.GetRDESites(templateId);
            if (list != null && list.Count > 0) {
                _siteTemplate = CreateSiteViewModel(list[0], false);
            } else {
                _siteTemplate = null;
            }

            if (_siteTemplate != null) {
                mnuSetSiteTemplate.Header = String.Format("Set _Site Template ({0}) ...", _siteTemplate.SiteName);
                Config.SetProfile(User, ConfigSiteTemplateId, templateId);
            } else {
                mnuSetSiteTemplate.Header = "Set _Site Template...";
                Config.SetProfile(User, ConfigSiteTemplateId, -1);
            }
        }
Exemple #3
0
 private RDESiteVisitViewModel CreateSiteVisitViewModel(RDESiteVisit visit, RDESiteViewModel site)
 {
     var vm = new RDESiteVisitViewModel(visit);
     vm.DataChanged += SiteVisitViewModelDataChanged;
     vm.Site = site;
     vm.SiteID = site.SiteID;
     vm.Locked = !User.HasPermission(PermissionCategory.SPARC_SITEVISIT, PERMISSION_MASK.UPDATE) || _startLockMode;
     site.SiteVisits.Add(vm);
     return vm;
 }
Exemple #4
0
        private RDESiteViewModel CreateSiteViewModel(RDESite site, bool addChangedHandler = true)
        {
            var supportService = new SupportService(User);
            var vm = new RDESiteViewModel(site) {
                Locked = !User.HasPermission(PermissionCategory.SPARC_SITE, PERMISSION_MASK.UPDATE) || _startLockMode
            };

            if (site.SiteID >= 0) {
                vm.Traits = supportService.GetTraits(TraitCategoryType.Site.ToString(), site.SiteID);
            }
            if (addChangedHandler) {
                vm.DataChanged += SiteViewModelDataChanged;
            }
            return vm;
        }
Exemple #5
0
        private RDESiteVisitViewModel AddNewSiteVisit(RDESiteViewModel site)
        {
            var sv = CreateNewSiteVisit();
            var siteVisit = new RDESiteVisitViewModel(sv) {Site = site, SiteID = site.SiteID};

            site.SiteVisits.Add(siteVisit);

            siteVisit.DataChanged +=SiteVisitViewModelDataChanged;
            RegisterPendingChange(new InsertRDESiteVisitCommand(siteVisit.Model, site.Model));
            RegisterPendingChange(new UpdateRDESiteVisitCommand(siteVisit.Model) {
                SuccessAction = () => siteVisit.Touch()
            });
            return siteVisit;
        }
Exemple #6
0
        private void AddNewSite(bool createNewMaterial = true)
        {
            // First add the site
            List<Trait> traits;
            var site = CreateNewSite(out traits);
            var siteViewModel = new RDESiteViewModel(site);
            siteViewModel.DataChanged += SiteViewModelDataChanged;

            RegisterPendingChange(new InsertRDESiteCommand(site));
            RegisterUniquePendingChange(new UpdateRDESiteCommand(site));

            if (traits != null && traits.Count > 0) {
                foreach (Trait t in traits) {
                    siteViewModel.Traits.Add(t);
                    RegisterPendingChange(new UpdateTraitDatabaseCommand(t, siteViewModel));
                }
            }

            // and a new visit
            var siteVisitViewModel = AddNewSiteVisit(siteViewModel);

            // and some material...
            if (createNewMaterial) {
                AddNewMaterial(siteVisitViewModel);
            }

            // Add the new site to the group and select it...
            grpSites.Items.Add(siteViewModel);
            grpSites.SelectedItem = siteViewModel;
        }