public async Task TagonomyDown() { if (SelectedItem == null) { await OnToastMessage.InvokeAsync(new ToastMessage("You have to select tagonomy node first!", ToastMessageType.Warning)); return; } var node = SelectedItem.Node; var parentView = SelectedItem.ParentView; var parentNode = parentView != null ? parentView.Node : null; if (parentNode != null && node != null) { var pathElement = parentNode.GetElements <PathNodeElement>().FirstOrDefault(it => it.Legs.Any(it2 => it2.TargetNodeId == node.Id)); if (pathElement != null) { var leg = pathElement.Legs.First(it => it.TargetNodeId == node.Id); pathElement.MoveLeg(leg, 1); } // We need to manually update the view model also, since it wont re-generate. int index = SelectedItem.ParentView.Children.IndexOf(SelectedItem); if (index < SelectedItem.ParentView.Children.Count - 1) { SelectedItem.ParentView.Children.Remove(SelectedItem); SelectedItem.ParentView.Children.Insert(Math.Min(SelectedItem.ParentView.Children.Count, index + 1), SelectedItem); RefreshNavigation(); } } }
public async Task <bool> ArchiveHyperMission() { var netStore = HyperStore; if (netStore == null || this.Mission == null || String.IsNullOrEmpty(this.Mission.Id)) { return(false); } var args = new ArchiveHyperMissionArgs() { MissionId = this.Mission.Id }; await netStore.ExecuteAsync(args); if (args.ExecutionResult.IsSuccess) { await OnToastMessage.InvokeAsync(new ToastMessage($"Operation succeeded. Mission was archived", ToastMessageType.Info)); return(true); } await OnToastMessage.InvokeAsync(new ToastMessage($"Operation failed: {args.ExecutionResult.Message}", ToastMessageType.Info)); return(false); }
public async Task DeleteTagonomy() { if (SelectedItem == null) { await OnToastMessage.InvokeAsync(new ToastMessage("You have to select tagonomy node first!", ToastMessageType.Warning)); return; } if (SelectedItem.Node == null) { await OnToastMessage.InvokeAsync(new ToastMessage("Selected tagonomy node is empty!", ToastMessageType.Error)); return; } var node = SelectedItem.Node as TagonomyNode; if (this.Mode == Modes.Limited_User && node.Type != TagonomyNode.NodeTypes.User) { await OnToastMessage.InvokeAsync(new ToastMessage("User Mode - can only remove and manage user generated nodes.", ToastMessageType.Warning)); return; } if (Source != null) { Source.RemoveNode(node); } RefreshNavigation(); }
public async void OnLoadCommand(DefaultCommand command, object parameter) { await this.LoadModelOnNodeAsync(HyperStore, MissionInstance); //UpdatePhasesUI(); //await UpdateMissionInstancesAsync(); await OnToastMessage.InvokeAsync(new ToastMessage($"Load mission", ToastMessageType.Info)); }
public async Task CreateTagonomyNodeAsync() { if (string.IsNullOrEmpty(CreatedTagonomyNodeName)) { await OnToastMessage.InvokeAsync(new ToastMessage("Tagonomy node name couldn't be empty.", ToastMessageType.Error)); return; } CreateNode(false, null); IsShowCreateNodeModal = false; }
private async Task <string> LoadModelOnNodeAsync(IHyperArgsSink store, HyperMissionInstance instance = null, bool allowAutoMissionResume = true) { if (this.Mission == null) { return(string.Empty); } this.ResetModelStatus(); if (store == null) { await OnToastMessage.InvokeAsync(new ToastMessage($"No Node selected, loading model failed.", ToastMessageType.Info)); } var args = new LoadHyperMissionArgs() { AllowMissionAutoResume = allowAutoMissionResume }; if (instance == null) { args.MissionConfigurationId = Mission.Id; } else { args.MissionInstance = instance; } var missionStatus = await store.ExecuteAsync(args); if (missionStatus == null) { if (args.ExecutionResult.IsNotSuccess) { await OnToastMessage.InvokeAsync(new ToastMessage(args.ExecutionResult.Message, ToastMessageType.Error)); } else { await OnToastMessage.InvokeAsync(new ToastMessage($"Failed to load model instance.", ToastMessageType.Info)); } } if (this != null) { await this.UpdateModelStatusAsync(); } return("Model loading, status: " + missionStatus); }
public async Task Init() { if (HyperStore == null) { await OnToastMessage.InvokeAsync(new ToastMessage("Missing Hyper Store", ToastMessageType.Error)); return; } await PopulateData(); SelectedTagonomyNode = RootView?.Node; SelectedItem = PreCreateView(null, SelectedTagonomyNode); IsLoadedData = true; }
public async Task OnUnloadCommandAsync(DefaultCommand command, object parameter) { string missionId = Mission.Id; var store = HyperStore; if (store == null || missionId == null) { return; } var args = new UnloadHyperMissionArgs() { MissionId = missionId }; var result = await store.ExecuteAsync(args); await UpdateModelStatusAsync(); //await UpdateMissionInstancesAsync(); await OnToastMessage.InvokeAsync(new ToastMessage($"Unload mission", ToastMessageType.Info)); }
public async Task Init() { if (HyperStore == null) { await OnToastMessage.InvokeAsync(new ToastMessage("Missing Hyper Store", ToastMessageType.Error)); IsLoadedData = true; return; } if (string.IsNullOrWhiteSpace(MissionId)) { await OnToastMessage.InvokeAsync(new ToastMessage("Missing mission id", ToastMessageType.Error)); IsLoadedData = true; return; } await Populate(); IsLoadedData = true; }
public async Task OnClearCommandAsync(DefaultCommand command, object parameter) { //TODO //if (MessageBox.Show("***WARNING*** This operation will delete all mission-generated data!! Are you sure?", "WARNING", MessageBoxButton.OKCancel) != MessageBoxResult.OK) // return; if (HyperStore == null) { return; } if (this.InstanceStatus != null && this.InstanceStatus.State != HyperMissionInstanceStatus.States.Unloaded) { //TODO await OnToastMessage.InvokeAsync(new ToastMessage($"This mission is currently running. You must stop the mission before clearing data.", ToastMessageType.Warning)); return; } string missionId = Mission.Id; string missionInstanceId = MissionInstance?.Id; var clearArgs = new ClearHyperMissionDataArgs() { MissionId = missionId, MissionInstanceId = missionInstanceId }; int deleted = await this.HyperStore.ExecuteAsync(clearArgs); if (clearArgs.ExecutionResult.IsSuccess) { await OnToastMessage.InvokeAsync(new ToastMessage($"UOperation succeeded, removed a total of {clearArgs.Result} documents", ToastMessageType.Info)); } else { await OnToastMessage.InvokeAsync(new ToastMessage($"Operation failed: {clearArgs.ExecutionResult.Message}", ToastMessageType.Info)); } }
private async Task Populate() { Items.Clear(); IsLoadedData = false; var findArgs = new FindHyperDocumentsArgs(); findArgs.SetDocumentType(typeof(HyperMission)); findArgs.DescriptorConditions.Mode = AndOr.Or; findArgs.DescriptorConditions.AddCondition(Assist.GetPropertyName((HyperMission i) => i.Archived), false); findArgs.DescriptorConditions.AddCondition(Assist.GetPropertyName((HyperMission i) => i.Archived), false, Comparers.DoesNotExist); var docs = await HyperStore.ExecuteAsync(findArgs); if (docs == null || !docs.Any()) { return; } foreach (var doc in docs) { var data = doc.GetPayload <HyperMission>(); if (data == null) { await OnToastMessage.InvokeAsync(new ToastMessage($"Failed to load data from document: {data.Id}", ToastMessageType.Error)); continue; } var model = new MissionItemVm(data, HyperStore); await model.UpdateStatus(); model.OnToastMessage = OnToastMessage; Items.Add(model); } IsLoadedData = true; }
public async Task OnClearCommandWarningAsync(DefaultCommand command, object parameter) { await OnToastMessage.InvokeAsync(new ToastMessage($"This operation will delete all mission-generated data!", ToastMessageType.Info)); //TODO open dialog for confirmation! }