5. Searching

5.1. Search Interface

image

Description

The TACTIC Search Box is used to build filters to refine the results in the view. A variety of search filters can be constructed, ranging from simple column searches to large complex compound searches. The creation of search filters closely resembles that of creating mail filters in a mail application. Each search filter plays a role in the outcome of the final results. The Search Box is flexible enough to handle any kind of search.

Keyword Search

Open the Search Criteria by clicking the image button on the tool shelf.

image

The keyword search section allows for creation of a search filter to search on the words found in the column named keywords. These keywords must be manually inputted and updated.

Filter

image

The Filter section allows for the creation and activation of search filters. Each search filter operates on one attribute on that sType. These searches use standard text search logic and supports TACTIC’s expression language.

The Clear button clears out all the data in all the search filters: resets the drop down selection boxes and clears out the input search criteria box.

Parent Search

image

image

A search can be based on any property of a parent search type. For example, if asset_category is the parent type then a search can be made based on the properties of the parent. For example, a filter can be created on the parent (asset_category) where the code is "video".

Children Search

image

The Children search filter allows refining based on data in columns in the children. For example, a filter can be created to find all tasks where the priority is greater than 3.

Matching and Compound Searches

Click the [+] icon beside a search parameter to add additional search definitions.

image

The drop down selection box at the top of the search box can be used to set up the search to be match open (matching any of the definitions) or match specific (matching all of the definitions). The default match option is "Match all".

image

Compound Search gives the capability to set an AND or an OR option for filters. The default compound search option is "AND".

To switch the compound search option, select "Compound Search" from the drop down selection box at the top, add a new search filter, click on the word "and" that appears between the search filters to toggle it to "or".

image

Operators

image

is

Finds an exact match. eg. Process "is" Compositing

is not

Finds all the results that do not match exactly. eg. Process "is not" Compositing

contains

Does a partial match. eg. Process "contains" ompost

does not contain

Finds all the results that do not match a partial match.

is empty

Match the empty field.

starts with

Match on the beginning part of the string. eg. Process "starts with" Comp

ends with

Match the ending part of the string. eg. Process "ends with" ing

in

Match any of the strings delimited by "

". eg Process "in" Compositing

Lighting

not in

Find all the results that do not match the strings delimited by "

".

is distinct

The "In" Operator

It is possible to search for items in a list using a simple text string with a "|" operator. For example, search for either "TM_001" or "TM_002" or "TM_003":

Sequence code  [in] "TM_001|TM_002|TM_003"

image

The vertical bar (a logical "or") is a delimiter that specifies that the search should look for any item with the code "TM_001" or "TM_002" or "TM_003".

To switch the compound search option, select "Compound Search" from the drop down selection box at the top, add a new search filter, click on the word "and" that appears between the search filters to toggle it to "or".

The "Is Distinct" Operator

This operator filters out items with the same column value. ie. The results will only contain items that have a distinct entry in that column.

Sequence code  [is distinct]

image

image

note: there is no need to put any criteria in the box when using the operator is distinct

Saving Searches

When saving a view as either "Project View" or "My View", the search filters are also saved with the view. Once the view is saved, the next time the view is opened, the search filters will be applied. This makes saving a view essentially like generating a report with a predefined set of criteria.

5.2. Expression Searching

Expression values

The search criteria input for search filters can be TACTIC expressions. To signify to TACTIC that a search criteria is an expression, wrap the expression in curly braces {}. This signifies to the search engine to evaluate the value as an expression before sending it to the search.

Having the search criteria be a TACTIC expression allows for many uses of predefined variables in the expression language.

For example, the following will search for all tasks for this week based on a Sunday to Sunday work week.

timestamp "is after" "{$PREV_SUNDAY}"
timestamp "is before" "{$NEXT_SUNDAY}"

Here is the TACTIC expression to find all of the checkins that have occurred this month:

timestamp "is after" "{$THIS_MONTH}"

Here is the TACTIC expression to find all the tasks for the current project:

project_code "is" "{$PROJECT}"

Note: the curly braces {} around these predefined variables are not needed in the expression mode described below.

Full Expression searches

Full expressions searches are an advanced way of searching for results. For each column, there is an "**expression" option. This option provides the ability to use the full power of the expression language within a search that are beyond the capabilities of the search user interface.

The full expression executes an evaluation on this expression then relates the results to the main search. Careful consideration must be take to refine an expressions so that is as efficient as possible.

For example, search for all of the assets that have model tasks:

@SOBJECT(sthpw/task['context','model'])

This search will first execute a search of all of the tasks that have model. Note that this does a search on all of the modelling tasks. With a large number of tasks, this operation can be heavy. Care must be taken to minimize the results of the expression. One way to make the search more efficient is limit the search to just that of the current project:

@SOBJECT(sthpw/task['project_code',$PROJECT]['context','model'])

The expressions can be combined with other filters in any combination so that very complex searches can be achieved.

For example, another more complex search is to find all items with a modelling task assigned to someone in the "toronto" location (assuming there is a custom property on the login table), we can use:

@SOBJECT(sthpw/login['location','toronto'].sthpw/task['project_code',$PROJECT]['context','model'])

This works because tasks (sthpw/task) and logins (sthpw/login) are connected through each other through the "assigned" column in the task table and "login" column in the login table.

There are 4 modes available to the expression search: "have", "do not have", "match", "do not match". These four searches can be applied to the Shot List page.

  1. Results "have" "@SOBJECT(sthpw/task)" will show all items that have tasks in them. This mode must return items in the expression.
  2. Results "do not have" "@SOBJECT(sthpw/task[context,model])" will show all items that do not have modelling tasks. This mode must return items in the expression.
  3. Results "match" "@COUNT(sthpw/snapshot[context,model]) > 3" will show all items that have more than 3 snapshots. This mode must return True or False in the expression.
  4. Results "do not match" "@COUNT(sthpw/snapshot[context,model]) == 0" will show all items that do not match the condition where model snapshot count is 0. In other words, it means there is at least 1 or more model check-in for the shot. This mode must return True or False in the expression.