Example #1
0
        public void checkEndConditionspublic(Box box)
        {
            if (m_LoadedWorkflow != null)
            {
                if (m_CurrentWorkingStepNumber < m_LoadedWorkflow.WorkingSteps.Count)
                {
                    WorkingStep step = m_LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber);
                    if (step.EndConditionObjectName == ("" + box.TriggerMessage))
                    {
                        // trigger next step
                        NextWorkingStep(AllEnums.WorkingStepEndConditionTrigger.BOX);
                    }
                    else
                    {
                        if (!box.wasRecentlyFalselyTriggered())
                        {
                            OnFailStateOccured(WorkflowFailState.BOX_FAILSTATE);
                            m_BoxErrorCounter++;

                            if (SettingsManager.Instance.Settings.SettingsTable.EnableFaultBoxMode)
                            {
                                box.IsBoxErroneous = true;
                            }
                        }
                    }
                }
            }
        }
Example #2
0
        private void onListViewDrop(object sender, DragEventArgs e)
        {
            ListBoxItem overItem     = sender as ListBoxItem;
            var         workingSteps = EditWorkflowManager.Instance.CurrentWorkflow.WorkingSteps;

            WorkingStep droppedData = e.Data.GetData(typeof(WorkingStep)) as WorkingStep;
            WorkingStep target      = ((ListBoxItem)(sender)).DataContext as WorkingStep;

            int removedIdx = m_WorkflowListview.Items.IndexOf(droppedData);
            int targetIdx  = m_WorkflowListview.Items.IndexOf(target);

            if (targetIdx != removedIdx)
            {
                workingSteps.Move(removedIdx, targetIdx);

                //Set step numbers
                int idx = 1;
                foreach (WorkingStep workingStep in workingSteps)
                {
                    workingStep.StepNumber = idx;
                    idx++;
                }
            }

            overItem.IsSelected = true;
            overItem.Opacity    = 1.0;
        }
Example #3
0
        public void AddWorkingStepByDemonstration(List <AdaptiveScene> adaptiveScenes, string pName, string withdrawel, int sNumber, string endCondition, AllEnums.PBD_Mode mode)
        {
            // add the working step
            WorkingStep newStep = new WorkingStep(pName, withdrawel, endCondition, sNumber);

            newStep.StepNumber = m_HighestWorkingStepNumber + 1;
            newStep.Withdrawel = withdrawel;
            newStep.Mode       = mode;

            if (mode == AllEnums.PBD_Mode.END_CONDITION)
            {
                newStep.createNewName(mode);
            }
            newStep.AdaptiveScenes.Clear(); // delete adaptivitylevels that are created from the usual way automatically
            adaptiveScenes.ForEach(aScene => newStep.AdaptiveScenes.Add(aScene));
            m_HighestWorkingStepNumber += 1;

            m_CurrentWorkflow.AddWorkingStep(newStep);
            if (mode == AllEnums.PBD_Mode.BOX_WITHDRAWEL)
            {
                string stepCsv = "StepENT" + sNumber;
            }
            if (mode == AllEnums.PBD_Mode.ASSEMBLY_DONE)
            {
                string stepCsv = "StepMON" + sNumber;
            }
        }
Example #4
0
        private void m_WorkflowListview_GotFocus(object sender, RoutedEventArgs e)
        {
            //TODO Refactor to be DRY
            // update the SceneManager here
            Object o = m_WorkflowListview.SelectedItem;

            if (o != null)
            {
                if (o is WorkingStep)
                {
                    m_FailStatesListView.IsEnabled = true;
                    WorkingStep step = (WorkingStep)o;
                    //SceneManager.Instance.CurrentScene = step.AdaptiveScenes.FirstOrDefault().Scene;
                    if (m_ComboboxAdaptivityLevel.SelectedValue != null)
                    {
                        SceneManager.Instance.CurrentScene = step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene;
                        m_FailStatesListView.ItemsSource   = step.FailStates;
                    }
                }
            }
            else
            {
                m_FailStatesListView.IsEnabled   = false;
                m_FailStatesListView.ItemsSource = null;
            }
        }
Example #5
0
        private void upButton_Click(object sender, RoutedEventArgs e)
        {
            var selectedItem = treeViewWorkflow.SelectedItem;

            if (selectedItem is WorkingStep)
            {
                WorkingStep workingStepItem = (WorkingStep)selectedItem;

                int oldindex    = workingStepItem.StepNumber;
                int index       = workingStepItem.StepNumber;
                int currentStep = workingStepItem.StepNumber;

                if (currentStep > 0)
                {
                    foreach (WorkingStep step in EditWorkflowManager.Instance.CurrentWorkflow.WorkingSteps)
                    {
                        if (step.StepNumber == currentStep - 1)
                        {
                            // if (step.StepNumber != oldindex - 1)
                            //    {
                            step.StepNumber = currentStep;
                            step.createNewName(step.Mode);
                            //   }
                        }
                        if (step.StepNumber == (currentStep + 1))
                        {
                        }
                    }
                    workingStepItem.StepNumber = oldindex - 1;
                    workingStepItem.createNewName(workingStepItem.Mode);
                    EditWorkflowManager.Instance.CurrentWorkflow.WorkingSteps.Move(oldindex, oldindex - 1);
                    treeViewWorkflow.DataContext = EditWorkflowManager.Instance.CurrentWorkflow;
                }
            }
        }
Example #6
0
        private void MenuItem_EditScene(object sender, RoutedEventArgs e)
        {
            // update the EditWorkflowManager here
            Object o = m_WorkflowListview.SelectedItem;

            if (o != null)
            {
                if (o is WorkingStep)
                {
                    WorkingStep step  = (WorkingStep)o;
                    Scene.Scene scene = new Scene.Scene();
                    if (m_ComboboxAdaptivityLevel.SelectedValue != null)
                    {
                        scene = step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene;
                        foreach (SceneItem itemIter in scene.Items)
                        {
                            itemIter.Touchy = true;
                        }
                    }
                    SceneManager.Instance.CurrentScene = scene;
                    SceneEditorDialog dlg = new SceneEditorDialog(scene);
                    dlg.Show();
                }
            }
        }
Example #7
0
        public void AddWorkingStep(string pName, string endCondition)
        {
            // add the working step
            WorkingStep newStep = new WorkingStep(pName, "", endCondition, 0);

            newStep.StepNumber = calculateHighestStepnumber() + 1;
            m_CurrentWorkflow.AddWorkingStep(newStep);
        }
Example #8
0
        private void NetworkTableMenuItemSetTrigger_Cick(object sender, RoutedEventArgs e)
        {
            Object o = listBoxNetworkTables.SelectedItem;

            if (m_WorkflowListview.SelectedIndex >= 0 && o is TableInfo)
            {
                WorkingStep selectedWorkingStep  = (WorkingStep)m_WorkflowListview.SelectedItem;
                TableInfo   selectedNetworkTable = (TableInfo)o;
                //Create new Failstate
                selectedWorkingStep.EndConditionObjectName = "net" + selectedNetworkTable.Id;
            }
        }
Example #9
0
        private void MenuItemSetTrigger_Cick(object sender, RoutedEventArgs e)
        {
            Object o = listBoxAssemblyZones.SelectedItem;

            if (m_WorkflowListview.SelectedIndex >= 0 && o is AssemblyZone)
            {
                WorkingStep  selectedWorkingStep  = (WorkingStep)m_WorkflowListview.SelectedItem;
                AssemblyZone selectedAssemblyZone = (AssemblyZone)o;
                //Create new Failstate
                selectedWorkingStep.EndConditionObjectName = selectedAssemblyZone.TriggerMessage;
            }
        }
Example #10
0
        private void MenuItemCreateErrorTrigger_Cick(object sender, RoutedEventArgs e)
        {
            Object o = listBoxAssemblyZones.SelectedItem;

            if (m_WorkflowListview.SelectedIndex >= 0 && o is AssemblyZone)
            {
                WorkingStep  selectedWorkingStep  = (WorkingStep)m_WorkflowListview.SelectedItem;
                AssemblyZone selectedAssemblyZone = (AssemblyZone)o;
                //Create new Failstate
                selectedWorkingStep.CreateFailState(selectedAssemblyZone.TriggerMessage);
            }
        }
Example #11
0
        private void buttonRemoveWorkingStep_Click(object sender, RoutedEventArgs e)
        {
            // delete currently selected item
            var selectedItem = treeViewWorkflow.SelectedItem;

            if (selectedItem is WorkingStep)
            {
                WorkingStep workingStepItem = (WorkingStep)selectedItem;
                EditWorkflowManager.Instance.CurrentWorkflow.WorkingSteps.Remove(workingStepItem);
                EditWorkflowManager.Instance.CurrentWorkingStepNumber -= 1;
                EditWorkflowManager.Instance.HighestWorkingStepNumber  = EditWorkflowManager.Instance.HighestWorkingStepNumber;
            }
        }
Example #12
0
        private void MenuItemDeleteErrorState_Click(object sender, RoutedEventArgs e)
        {
            Object o            = m_WorkflowListview.SelectedItem;
            int    idxFailState = m_FailStatesListView.SelectedIndex;

            if (o != null && idxFailState >= 0)
            {
                if (o is WorkingStep)
                {
                    WorkingStep step = (WorkingStep)o;
                    step.FailStates.RemoveAt(idxFailState);
                }
            }
        }
Example #13
0
        private void m_ComboboxAdaptivityLevel_Selected(object sender, RoutedEventArgs e)
        {
            // update the SceneManager here
            Object o = m_WorkflowListview.SelectedItem;

            if (o != null)
            {
                if (o is WorkingStep)
                {
                    WorkingStep step = (WorkingStep)o;
                    //SceneManager.Instance.CurrentScene = step.AdaptiveScenes.FirstOrDefault().Scene;
                    SceneManager.Instance.CurrentScene = step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene;
                }
            }
        }
 public EditWorkingStepDialog(WorkingStep step)
 {
     InitializeComponent();
     name                        = step.Name;
     endCondition                = step.EndConditionObjectName;
     timeOut                     = step.TimeOut;
     expectedDuration            = step.ExpectedDuration;
     isManualStep                = step.IsManualStep;
     isQSStep                    = step.IsQSStep;
     textBoxName.Text            = name;
     textBoxEndCondition.Text    = endCondition;
     inputTimeOut.Value          = timeOut;
     inputExpectedDuration.Value = expectedDuration;
     inputIsManualStep.IsChecked = isManualStep;
     inputIsQSStep.IsChecked     = isQSStep;
 }
Example #15
0
        private void MenuItemPasteScene_Click(object sender, RoutedEventArgs e)
        {
            Object o = m_WorkflowListview.SelectedItem;

            if (o != null)
            {
                if (o is WorkingStep)
                {
                    WorkingStep step  = (WorkingStep)o;
                    Scene.Scene scene = Scene.Scene.GetFromClipboard();
                    if (m_ComboboxAdaptivityLevel.SelectedValue != null && scene is Scene.Scene)
                    {
                        step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene = scene;
                        SceneManager.Instance.CurrentScene = scene;
                    }
                }
            }
        }
Example #16
0
        private void MenuItemCopyScene_Click(object sender, RoutedEventArgs e)
        {
            Object o = m_WorkflowListview.SelectedItem;

            if (o != null)
            {
                if (o is WorkingStep)
                {
                    WorkingStep step  = (WorkingStep)o;
                    Scene.Scene scene = new Scene.Scene();
                    if (m_ComboboxAdaptivityLevel.SelectedValue != null)
                    {
                        scene = step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene;
                    }
                    scene.CopyToClipboard();
                }
            }
        }
Example #17
0
        private void checkNetworkEndConditionspublic(object sender, PropertyChangedEventArgs e)
        {
            if (m_LoadedWorkflow != null)
            {
                if (m_CurrentWorkingStepNumber < m_LoadedWorkflow.WorkingSteps.Count)
                {
                    if (sender.GetType() == typeof(NetworkTableMonitor))
                    {
                        var         monitor = (NetworkTableMonitor)sender;
                        WorkingStep step    = m_LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber);
                        if (step.EndConditionObjectName.Length > 3)
                        {
                            //TODO: Implement proper endCondition objects
                            var endParams = step.EndConditionObjectName.Substring(3).Split(':');
                            var tableId   = endParams.First();
                            int endStep   = -1;
                            if (endParams.Length > 1)
                            {
                                endStep = Int32.Parse(endParams.ElementAt(1));
                            }

                            var triggerNext = false;
                            if (tableId == monitor.TableName)
                            {
                                if (endStep > 0 && e.PropertyName == "StepNumber" && monitor.StepNumber >= endStep)
                                {
                                    triggerNext = true;
                                }
                                else if (e.PropertyName == "ProducedParts" && monitor.ProducedParts > CommunicationManager.Instance.ServerInfo.SelfStatus.ProducedParts)
                                {
                                    triggerNext = true;
                                }
                            }

                            if (triggerNext)
                            {
                                // trigger next step
                                NextWorkingStep(AllEnums.WorkingStepEndConditionTrigger.NETWORK_TABLE);
                            }
                        }
                    }
                }
            }
        }
Example #18
0
        private void createFromTableButton_Click(object sender, RoutedEventArgs e)
        {
            Object o = listBoxNetworkTables.SelectedItem;

            if (o != null)
            {
                if (o is TableInfo)
                {
                    TableInfo   tableInfo = (TableInfo)o;
                    Scene.Scene autoScene;
                    autoScene = new Scene.Scene();

                    AdaptiveScene aScene = new AdaptiveScene(autoScene, AdaptivityLevel.AdaptivityLevels.FirstOrDefault());

                    WorkingStep step = new WorkingStep();
                    step.AdaptiveScenes.Add(aScene);
                    step.EndConditionObjectName = "net" + tableInfo.Id;

                    EditWorkflowManager.Instance.createStep(HciLab.motionEAP.InterfacesAndDataModel.AllEnums.PBD_Mode.NETWORK_TABLE_DONE, aScene, "NetTable-" + tableInfo.Id, step.EndConditionObjectName);
                }
            }
        }
Example #19
0
        private void MenuItemEditWorkingStep_Click(object sender, RoutedEventArgs e)
        {
            Object o = m_WorkflowListview.SelectedItem;

            if (o != null)
            {
                if (o is WorkingStep)
                {
                    WorkingStep           step = (WorkingStep)o;
                    EditWorkingStepDialog dlg  = new EditWorkingStepDialog(step);
                    dlg.ShowDialog(); // blocking
                    if (dlg.wasOkay())
                    {
                        step.Name = dlg.EditedName;
                        step.EndConditionObjectName = dlg.EditedEndCondition;
                        step.TimeOut          = dlg.EditedTimeOut;
                        step.ExpectedDuration = dlg.EditedExpectedDuration;
                        step.IsManualStep     = dlg.IsManualStep;
                        step.IsQSStep         = dlg.IsQSStep;
                        //
                    }
                }
            }
        }
Example #20
0
        public void checkEndConditionspublic(AssemblyZone zone)
        {
            if (m_LoadedWorkflow != null)
            {
                if (m_CurrentWorkingStepNumber < m_LoadedWorkflow.WorkingSteps.Count)
                {
                    if (m_QSMode)
                    {
                        checkQSModeEndConditions(zone);
                    }
                    else
                    {
                        WorkingStep step = m_LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber);
                        if (step.EndConditionObjectName == ("" + zone.TriggerMessage))
                        {
                            // trigger next step
                            NextWorkingStep(AllEnums.WorkingStepEndConditionTrigger.ASSEMBLY_ZONE);
                        }
                        int i = 0;
                        while (step.HasFailstate(i))
                        {
                            if (step.GetFailState(i).CheckForFail(zone.TriggerMessage))
                            {
                                // trigger FailEvent
                                OnFailStateOccured(step.GetFailState(i));
                                // Show Error Scene
                                SceneManager.Instance.CurrentScene = step.GetFailStateScene(i);

                                m_AssemblyErrors++;
                            }
                            i++;
                        }
                    }
                }
            }
        }
Example #21
0
        private void LoadCurrentWorkingStep()
        {
            if (!AdminView.Instance.Dispatcher.CheckAccess())
            {
                AdminView.Instance.Dispatcher.Invoke(new LoadCurrentWorkingStepDelegate(LoadCurrentWorkingStep));
                return; // Important to leave the culprit thread
            }

            WorkingStep step = LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber);

            if (step.IsQSStep && m_QSMode == false)
            {
                m_QSMode = true;
                NotifyPropertyChanged("QSModeEnabled");
                WorkingStep stepIt = step;
                m_NumQS = 0;
                while (stepIt.IsQSStep)
                {
                    m_NumQS++;
                    stepIt = LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber + m_NumQS);
                }
                m_QSFullfilled = new bool[m_NumQS];
                Array.Clear(m_QSFullfilled, 0, m_QSFullfilled.Length);
            }

            if (m_QSMode && m_CurrentWorkingStepNumber < m_LoadedWorkflow.WorkingSteps.Count - 1)
            {
                LoadQSModeScene();
            }
            else
            {
                SceneManager.Instance.CurrentScene = step.getAdaptiveScene(m_adaptivityLevelId).Scene;
                BackendControl.Instance.refreshGUI();
            }

            if (m_CurrentWorkingStepTimeOut != null)
            {
                m_CurrentWorkingStepTimeOut.Dispose();
            }
            if (step.TimeOut > 0)
            {
                m_CurrentWorkingStepTimeOut = new WorkflowTimeTrigger(step.TimeOut);
                m_CurrentWorkingStepTimeOut.TimeOutTriggered += timeOutWorkstep;
            }

            if (m_CurrentWorkingStepExpectedDurationTimeOut != null)
            {
                m_CurrentWorkingStepExpectedDurationTimeOut.Dispose();
            }
            if (step.ExpectedDuration > 0)
            {
                m_CurrentWorkingStepExpectedDurationTimeOut = new WorkflowTimeTrigger(step.ExpectedDuration);
                m_CurrentWorkingStepExpectedDurationTimeOut.TimeOutTriggered += timeOutExpectedDuration;
            }

            //If EndCondition depends on other Table
            if (m_CurrentNetworkTableDependency != null)
            {
                m_CurrentNetworkTableDependency.Dispose();
            }
            //TODO: Change this when refactoring Endconditions altogether
            if (step.EndConditionObjectName.Length > 3 && step.EndConditionObjectName.Substring(0, 3) == "net")
            {
                var tableId = step.EndConditionObjectName.Substring(3).Split(':').First();
                m_CurrentNetworkTableDependency = new NetworkTableMonitor(tableId);
                m_CurrentNetworkTableDependency.PropertyChanged += checkNetworkEndConditionspublic;
            }
            else
            {
                m_CurrentNetworkTableDependency = null;
            }
        }