Example #1
0
        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();
                }
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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();
        }
Example #4
0
        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));
        }
Example #5
0
        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;
        }
Example #6
0
        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);
        }
Example #7
0
        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;
        }
Example #8
0
        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;
        }
Example #10
0
        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));
            }
        }
Example #11
0
        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;
        }
Example #12
0
        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!
        }