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") })); }
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") })); }
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 }); }
public ActionResult PostRedirectGetTarget(string view) { DataSelectionViewModel currentViewModel = TempData[TempDataModelKey] as DataSelectionViewModel; TempData[TempDataModelKey] = currentViewModel; return(View(view, currentViewModel.CurrentViewContainer)); }
public ActionResult SubmitValues(DataSelectionViewModel postedModel) { DataSelectionViewModel model = TempData["ValueData"] as DataSelectionViewModel; TempData["ValueData"] = model; return(View("Index", model)); }
public ActionResult Index() { DataSelectionViewModel model = TempData["ValueData"] as DataSelectionViewModel ?? new Models.Data.DataSelectionViewModel(); TempData["ValueData"] = model; return(View(model)); }
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)); }
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); } } } }
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)); }
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); } }