ecFlowUI has a built-in fast, powerful engine to search for nodes. To activate the search dialogue, click the Search button on the toolbar, or choose Tools | Search from the main menu. Alternatively, right-click on a node in the tree and select Search from the context menu - the search will be performed on that node and its descendants.
The search dialogue is split into three parts - the editor, the generated query and the results. The first two parts can be hidden in order to give more space to the results.
The Scope section allows you to specify which server(s) to restrict the search to. ALL means that all servers in the current tab will be searched. The root node for the search can also be set here - only that node and its descendants will be searched.
The area below the Scope section contains two tabs to specify the search criteria for nodes and attributes respectively. By default, nodes are searched for, not attributes. If any attribute options are specified, ecFlowUI will search for matching attributes belonging to the nodes which match the options in the Nodes tab.
Node options |
---|
The Nodes tab by default specifies no filtering, and thus will find all nodes. The search can be limited to a set of nodes specified through the Name and Path options. The Type selection box by default has no entries checked. This means that the type of the node will not be checked, so nodes of all types may be found. Checking the node type boxes restricts the search to only those node types. The Status selection box works in a similar way to the Type selection box. The Flag box is also similar - if nothing is selected, then nodes will be found regardless of their flags; otherwise, the search will be restricted to just those nodes that contain the specified flags. |
Attribute options |
The Attributes tab defines the options used for attributes search. If nothing is selected, no attributes are searched. By selecting an attribute from the list in the left, the search options available for this this attribute will appear in the right hand side. |
Both the Nodes and Attributes tabs contain search options where the search syntax can be set interactively using the methods listed below:
String match options
- Matches is a wildcard match, similar to UNIX file syntax, where "
*
" means "any number of any characters" and "?
" means "one of any character", e.g. "*monitor?
". If no wildcard characters are used, the result will be that only those nodes whose names/paths exactly match the string will be found. This is often the simplest way of searching. See http://doc.qt.io/qt-5/qregexp.html#wildcard-matching. - Regexp is a regular expression match, using the Qt regexp syntax. The regexp equivalent of the above example would be ".*monitor.". See http://doc.qt.io/qt-5/qregexp.html#introduction.
- Contains finds nodes whose names/paths contain the given regular expression as a substring; similar to Regexp, but can find more nodes since the regexp only needs to match a substring rather than the whole name
The Query section shows the query which is generated from the selections in the dialogue. It is presented using a MySQL-like syntax for the sake of easier interpretation.
Once the options have been set, click the Search button. The results panel will be populated with the found nodes and attributes. If only node properties have been specified in the query, the results will show one found node per row. If attribute properties have been specified, the results will show one found attribute per row; if a node contains multiple attributes which match the query (e.g. multiple variables), that node would appear multiple times in the search results, once for each matching attribute.
The nodes have the normal context menu, allowing you to perform actions on them straight from the results box. Multiple node selection is allowed. Clicking on a node here also selects it in the node tree. Currently there is no context menu assigned to the attributes.
An important thing to note about the search results is that the found nodes will be updated when ecFlowUI syncs with the server. The list of found nodes will not be changed, but their latest state will be reflected.