示例#1
0
        public ActionResult EditForm(DataSelectionViewModel postedModel)
        {
            DataSelectionViewModel currentViewModel = TempData[TempDataModelKey] as DataSelectionViewModel;

            // User's current choices
            currentViewModel.SelectedContainerID = postedModel.SelectedContainerID;
            currentViewModel.SelectedSubjectID   = postedModel.SelectedSubjectID;

            LoadSelection(currentViewModel);

            // Refresh the view object
            currentViewModel.RegenerateViewContainer();

            currentViewModel.CurrentViewContainer.DisplayMode = DisplayMode.Recurring;

            if (currentViewModel.CurrentViewContainer.DisplayMode != DisplayMode.Running)
            {
                currentViewModel.CurrentViewContainer.SelectedInstanceID = currentViewModel.CurrentViewContainer.Instances.Min(it => it.InstanceID.GetValueOrDefault());
                currentViewModel.CurrentViewContainer.CurrentInstance    = currentViewModel.CurrentViewContainer.Instances.SingleOrDefault(it => it.InstanceID == currentViewModel.CurrentViewContainer.SelectedInstanceID);
            }

            TempData[TempDataModelKey] = currentViewModel;

            return(RedirectToAction("PostRedirectGetTarget", new { view = currentViewModel.CurrentViewContainer.DisplayMode == DisplayMode.Singleton ? "DisplaySingletonContainer" : (currentViewModel.CurrentViewContainer.DisplayMode == DisplayMode.Recurring ? "DisplayRecurringContainer" : "DisplayRunningContainer") }));
        }
示例#2
0
        public ActionResult SaveForm(ViewModelRootContainer postedViewContainer)
        {
            DataSelectionViewModel currentViewModel = TempData[TempDataModelKey] as DataSelectionViewModel;

            // Reconcile changes
            BindToDataModel(currentViewModel, postedViewContainer);

            // Save changes
            foreach (IModelRootInstance instance in currentViewModel.CurrentSubject.Instances)
            {
                eavClient.SaveData(instance);
            }

            // Get rid of deleted items
            TrimDataModel(currentViewModel.CurrentContainer);

            // Refresh the view object
            currentViewModel.RegenerateViewContainer();

            currentViewModel.CurrentViewContainer.DisplayMode = postedViewContainer.DisplayMode;
            currentViewModel.CurrentViewContainer.Enabled     = postedViewContainer.Enabled;

            if (currentViewModel.CurrentViewContainer.DisplayMode != DisplayMode.Running)
            {
                currentViewModel.CurrentViewContainer.SelectedInstanceID = currentViewModel.CurrentViewContainer.Instances.Min(it => it.InstanceID.GetValueOrDefault());
                currentViewModel.CurrentViewContainer.CurrentInstance    = currentViewModel.CurrentViewContainer.Instances.SingleOrDefault(it => it.InstanceID == currentViewModel.CurrentViewContainer.SelectedInstanceID);
            }

            TempData[TempDataModelKey] = currentViewModel;

            return(RedirectToAction("PostRedirectGetTarget", new { view = currentViewModel.CurrentViewContainer.DisplayMode == DisplayMode.Singleton ? "DisplaySingletonContainer" : (currentViewModel.CurrentViewContainer.DisplayMode == DisplayMode.Recurring ? "DisplayRecurringContainer" : "DisplayRunningContainer") }));
        }
示例#3
0
        public ActionResult SelectContext(int contextID)
        {
            DataSelectionViewModel currentViewModel = TempData[TempDataModelKey] as DataSelectionViewModel;

            currentViewModel.SelectedContextID = contextID;

            IEnumerable <object> containers = Enumerable.Empty <object>();
            IEnumerable <object> subjects   = Enumerable.Empty <object>();

            if (currentViewModel.CurrentContext != null)
            {
                eavClient.LoadRootContainers(currentViewModel.CurrentContext);
                containers = currentViewModel.CurrentContext.Containers.Select(it => new { Text = it.Name, Value = it.ContainerID });

                eavClient.LoadSubjects(currentViewModel.CurrentContext);
                subjects = currentViewModel.CurrentContext.Subjects.Select(it => new { Text = it.Identifier, Value = it.SubjectID });
            }

            TempData[TempDataModelKey] = currentViewModel;

            return(new JsonResult()
            {
                Data = new { Containers = containers, Subjects = subjects }, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
示例#4
0
        public ActionResult PostRedirectGetTarget(string view)
        {
            DataSelectionViewModel currentViewModel = TempData[TempDataModelKey] as DataSelectionViewModel;

            TempData[TempDataModelKey] = currentViewModel;

            return(View(view, currentViewModel.CurrentViewContainer));
        }
示例#5
0
        public ActionResult SubmitValues(DataSelectionViewModel postedModel)
        {
            DataSelectionViewModel model = TempData["ValueData"] as DataSelectionViewModel;

            TempData["ValueData"] = model;

            return(View("Index", model));
        }
示例#6
0
        public ActionResult Index()
        {
            DataSelectionViewModel model = TempData["ValueData"] as DataSelectionViewModel ?? new Models.Data.DataSelectionViewModel();

            TempData["ValueData"] = model;

            return(View(model));
        }
示例#7
0
        public ActionResult Index()
        {
            DataSelectionViewModel currentViewModel = TempData[TempDataModelKey] as DataSelectionViewModel ?? new DataSelectionViewModel();

            if (!currentViewModel.Contexts.Any())
            {
                foreach (var item in eavClient.LoadContexts())
                {
                    currentViewModel.Contexts.Add(item);
                }
            }

            TempData[TempDataModelKey] = currentViewModel;

            return(View("Index", currentViewModel));
        }
示例#8
0
        private void LoadSelection(DataSelectionViewModel currentViewModel)
        {
            // TODO: Consider caching here

            if (currentViewModel.CurrentContainer != null)
            {
                eavClient.LoadMetadata(currentViewModel.CurrentContainer);

                if (currentViewModel.CurrentSubject != null)
                {
                    eavClient.LoadRootInstances(currentViewModel.CurrentSubject, currentViewModel.CurrentContainer);

                    foreach (IModelRootInstance instance in currentViewModel.CurrentSubject.Instances)
                    {
                        eavClient.LoadData(instance);
                    }
                }
            }
        }
示例#9
0
        public ActionResult RetrieveInstance(ViewModelRootContainer postedViewContainer)
        {
            DataSelectionViewModel currentViewModel = TempData[TempDataModelKey] as DataSelectionViewModel;

            // This will keep ASP from holding on to any values when we run the new
            // instance through our partial view.
            ModelState.Clear();

            // Make sure we keep the posted version to capture any changes
            currentViewModel.CurrentViewContainer.Instances.Remove(currentViewModel.CurrentViewContainer.Instances.Single(it => it.InstanceID == postedViewContainer.CurrentInstance.InstanceID));
            currentViewModel.CurrentViewContainer.Instances.Add(postedViewContainer.CurrentInstance);

            // Now switch instances
            currentViewModel.CurrentViewContainer.SelectedInstanceID = postedViewContainer.SelectedInstanceID;
            currentViewModel.CurrentViewContainer.CurrentInstance    = currentViewModel.CurrentViewContainer.Instances.SingleOrDefault(it => it.InstanceID == currentViewModel.CurrentViewContainer.SelectedInstanceID);

            TempData[TempDataModelKey] = currentViewModel;

            return(PartialView("SingletonInstance", currentViewModel.CurrentViewContainer));
        }
示例#10
0
        private void BindToDataModel(DataSelectionViewModel currentDataSelectionViewModel, ViewModelRootContainer postedViewContainer)
        {
            if (currentDataSelectionViewModel.CurrentViewContainer.DisplayMode != DisplayMode.Running)
            {
                currentDataSelectionViewModel.CurrentViewContainer.Instances.Remove(currentDataSelectionViewModel.CurrentViewContainer.Instances.Single(it => it.InstanceID == postedViewContainer.CurrentInstance.InstanceID));
                currentDataSelectionViewModel.CurrentViewContainer.Instances.Add(postedViewContainer.CurrentInstance);
            }
            else
            {
                currentDataSelectionViewModel.CurrentViewContainer = postedViewContainer;
            }

            currentDataSelectionViewModel.CurrentViewContainer.Trim();

            var dataInstances = currentDataSelectionViewModel.CurrentSubject.Instances.GroupJoin(currentDataSelectionViewModel.CurrentViewContainer.Instances, left => left.InstanceID, right => right.InstanceID, (left, right) => new { ModelInstance = left, ViewInstance = right.FirstOrDefault() });
            var viewInstances = currentDataSelectionViewModel.CurrentViewContainer.Instances.GroupJoin(currentDataSelectionViewModel.CurrentSubject.Instances, left => left.InstanceID, right => right.InstanceID, (left, right) => new { ModelInstance = right.FirstOrDefault(), ViewInstance = left });

            foreach (var item in dataInstances.Union(viewInstances))
            {
                BindToModelInstance(currentDataSelectionViewModel.CurrentContainer, currentDataSelectionViewModel.CurrentSubject, null, item.ModelInstance, null, item.ViewInstance);
            }
        }