:topic: Pipeline View

.. index::
   pair: DREAM3D-NX; Pipeline View;

.. _PipelineView:

Pipeline View
#############

.. figure:: Images/OverView-PipelineView.png
   :alt: Pipeline View

   Pipeline View

The **Pipeline View** section displays which **Filters** are in the
current pipeline, and in what order. This section is where the user will
construct their **Pipeline** by double-clicking on a **Filter** in the
**Filter List**. It is also possible to drag a **Filter** from **Filter
List** and drop it into the **Pipeline View**. **Filters** in this
section can be rearranged into different orders via dragging and
dropping the **Filter** objects. More information on creating
**Pipelines** can be found in the `Creating a
Pipeline <../03_User%20Interface/130_CreatingAPipeline.md>`__ section.

Preflights & Errors
===================

+-----------------------------------+-----------------------------------+
| Pipeline With Errors              | Pipeline With Warnings            |
+===================================+===================================+
| |Pipeline With Errors|            | |Pipeline With Warnings|          |
+-----------------------------------+-----------------------------------+

As the user updates the **Pipeline**, a process called **Preflight**
will be executed to make sure that the **Pipeline** will have all the
necessary data available during execution. If a **Filter** object in the
**Pipeline** has an error, the square with the number denoting the
filters position in the **Pipeline** will be colored red. Likewise, if a
**Filter** in the **Pipeline** has a warning, the square will be colored
yellow. If this is the case, check the *Pipeline Error Table* for an
explanation of the error.

Interacting With Filters & Pipelines
====================================

A **Filter** can be selected by single left-clicking. Multiple
**Filters** can be selected by shift-clicking and Ctrl/Cmd clicking.
**Filters** can be removed from the **Pipeline** by hovering over the
**Filter** object and clicking the *X* icon. If you don’t want to delete
a filter from the pipeline but do want to exclude it from the current
pipeline run, select the icon of a circle with a line through it next to
the *X* icon. This will *disable* the filter from run execution, but
won’t remove it from the pipeline and lose the parameters or comments.
To tell if a **Filter** has been *disabled*, look for greyed out filters
in the **Pipeline** or check the **Filter Pop Up Menu** for the
**Filter** in question. The entire **Pipeline View** can be cleared by
either choosing *Clear Pipeline* from the **Pipeline** menu, or
right-clicking in an empty area of the **Pipeline View** to make a
contextual menu appear with the *Clear Pipeline* option. You can undo or 
redo any of the last several add/remove filter(s) actions by using the 
Ctrl/Cmd + Z or Ctrl/Cmd + Y keyboard shortcuts respectively or by going  
to the **Edit Menu** and clicking **Undo** or **Redo**. After solving
any **Preflight** errors and creating a satisfactory **Pipeline**, click
the *Run* button to start running the pipeline.

Filter Pop Up Menu
====================================

.. figure:: Images/OverView-FilterPopUpMenu.png
   :alt: Filter Pop Up Menu

   Filter Pop Up Menu

Right-clicking on a **Filter** opens a menu that allows the help for
that **Filter** to be displayed by clicking *Filter Help*. The *Enable*
button will remove the **Filter** from the pipeline execution if it is
unchecked (*disabled*), this will be reflected in the pipeline by
greying it out and showing the *Enable* button as unchecked in the menu.
The aptly named *Error Handling* sub menu allows you to set the output
location to display errors to.

Cutting, Copying, and Pasting Filters
========================================

**Filters** can be cut, copied, and pasted by using their right-click
menus or the universal keyboard shortcuts (Ctrl+X, Ctrl+C, Ctrl+V).
Additionally, **Filters** can be copied by pressing Alt and dragging
them.

**Note:** Copying **Filters** puts them onto the system clipboard as a
pipeline in JSON format. Therefore, it is possible to create a
sub-pipeline of a pipeline currently loaded in DREAM3D-NX by copying
filters to the clipboard in DREAM3D-NX and then pasting into any text
editor.

+-----------------------+-----------------------+-----------------------+
| Selecting             | Dragging              | Pasting               |
+=======================+=======================+=======================+
| |Selecting|           | |Dragging|            | |Pasting|             |
+-----------------------+-----------------------+-----------------------+

In the example above, filters 2 and 3 are selected and then copied to
pipeline index 5 by holding down the Alt key and dragging.

Import Filter from Dragging and Dropping Any File
==================================================

DREAM3D-NX can automatically add a compatible read filter for any recognized 
file type that is dragged and dropped into the **Pipeline View** area. When 
a file type that is not a pipeline type file (\*.d3dpipeline, \*.d3dworkflow, \*.json, or \*.dream3d)
is dragged and dropped into the **Pipeline View** area, a dialog will pop up with
a list of available filters that are able to read that file type. Once you select 
the filter you would like to use with your file, that filter will automatically 
be added to the pipeline with the file saved to the input parameter value. If the
filter selected has more than one input parameter that is compatible with the file, 
the file will be stored as the value for the first compatible parameter found.

.. figure:: Images/ImportFilterFromDragAndDrop.png
   :alt: Import Filter From Drag and Drop Any File

.. |Pipeline With Errors| image:: Images/OverView-PipelineView-Error.png
.. |Pipeline With Warnings| image:: Images/OverView-PipelineView-Warning.png
.. |Selecting| image:: Images/OverView-CutCopyPaste1.png
.. |Dragging| image:: Images/OverView-CutCopyPaste2.png
.. |Pasting| image:: Images/OverView-CutCopyPaste3.png