The Filter Field allows you to construct expressions that are used to perform advanced filtering operations. These expressions consist of five distinct elements:
A properly constructed expression is formatted as1):
[1::[2::[2::]]][3::[4::]]5
Scope selectors, scope modifiers, syntax selectors and syntax modifiers each consist of predefined alphabetic character sequences followed by two colons; e.g. “abc::”. Which characters a query pattern consists of depends on which of the other elements in the expression are [or are not] declared.
Within any given expression, only one scope selector can be declared. Depending on the scope selected, an expression may also contain one or more scope modifiers, in sequence. When using a sequence of scope modifiers, the order in which they are declared makes a difference, so pay particular attention to it if you find yourself in that scenario.
As an example, consider an expression that matches the packages intended for use with DAZ Studio 4.5+ using the labels of all tags that are assigned to each respective package, irrespective of the preferences for active download display tags:
Scope Selector | | Scope Modifier | | | | Scope Modifier | | | | | | Query Pattern _|_ _|_ _|_ _____|_______ / \/ \/ \/ \ tag::all::lbl::DAZ Studio 4.5+
In the example above, we first select the Tag(s) scope. Then, we indicate that we want to use the All Tags modifier, as the default is to use only those that match the preferences for active display tags. We then refine the scope of our filter to use Tag Labels instead of the default which is tag values. Finally, we indicate that we only want tags labeled “DAZ Studio 4.5+”.
Notice that, in the example above, we did not declare a syntax selector or syntax modifier. It is important to understand that unless a syntax selector is declared, the default that will be used is equivalent to wc::*<something>*
, where <something>
represents the text to match, which is the syntax to define a Wildcard expression that matches packages that contain the text to match. Below we see the expression that is actually being used, in this case, to filter:
Scope Selector | | Scope Modifier | | | | Scope Modifier | | | | | | Syntax Selector | | | | | | | | Query Pattern _|_ _|_ _|_ |_ ______|_______ / \/ \/ \/ \/ \ tag::all::lbl::wc::*DAZ Studio 4.5+*
When the parser that evaluates the text entered in the filter field encounters the character sequence &&
(space, ampersand, ampersand, space), the sequence is interpreted as a logical AND. If we apply this meaning to the sample expression tag::all::lbl::wc::*DAZ Studio 4.5+* && chk::on
, the column of data being evaluated must match both tag::all::lbl::wc::*DAZ Studio 4.5+*
AND chk::on
(separately) before the record is not filtered from the view.
Scope selectors tell the application which column of data the filter should be evaluated against. If explicitly declared, scope selectors are always declared at the beginning of the expression.
This is the default scope selector. It has no explicit keyword or character sequence. It is assumed if no other scope selector is declared. Use this selector to signify that the query pattern portion of the expression should be evaluated against the Product Name column of data for a package.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Use the chk scope selector to signify that the query pattern portion of the expression should be evaluated against the Checked State of a package.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
chk::on
chk::off
Use the sku scope selector to signify that the query pattern portion of the expression should be evaluated against the Product ID / SKU of a package.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
sku::14812
sku::14812,13976,13439
sku::-15000
sku::15000-
sku::15000-15999
sku::[15000,15999]
sku::14812,13976,13439,15000-15999
Use the pkg scope selector to signify that the query pattern portion of the expression should be evaluated against the combined Product ID (SKU) and Package ID, separated by a hyphen, of a package.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
pkg::13176-3
pkg::wc::13176-*
pkg::rx::^(13176-1|13176-3)$
Use the order scope selector to signify that the query pattern portion of the expression should be evaluated against an Order ID associated with your account. This number is the internal index of the order, as used in URLs 2), and not necessarily the Order # displayed on the page for an order.
Using the order::0 filter will cause the list of packages displayed to consist of only those packages which do not have an Order ID associated to them. This can be the result of having a package that was downloaded and/or installed with a version of Install Manager prior to version 1.0.1.36, or the result of manually downloading packages and placing them in the downloads folder. These packages will have an Order ID of “0” associated with them until/unless they are re-downloaded using a more recent version of the application.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
order::0
order::12345
order::12345,12347,12349
order::-12345
order::12345-
order::12000-12345
order::[12000,12345]
order::12345,12347,12349,15000-15999
Use the date scope selector to signify that the query pattern portion of the expression should be evaluated against a Date of a package/installation. If no scope modifier is declared, the default is Order Date.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
# = ISO 8601 extended format datetime string; i.e. YYYY-MM-DD for dates or YYYY-MM-DDTHH:mm:ss, YYYY-MM-DDTHH:mm:ssTZD (e.g. 1997-07-16T19:20:30+01:00) for combined dates and times.
An additional set of dynamic keywords, enclosed between a pair of % symbols, used in the place of the # symbol above, are also supported. When these keywords are used independently, a range starting at the beginning of the specified duration and stopping at the end of the specified duration is implicit. When used explicitly within a range, the value of the datetime that will be substituted for the keyword will be either the beginning or the end of the specified duration, based on its position in the range.
n = A zero-based numeric value indicating the offset, into the past, from the current datetime.
Examples:
date::[2013-01-01T00:00:01,2013-01-31T23:59:59]
date::instr::[%0_WEEKS%,%0_WEEKS%]
Use the size scope selector to signify that the query pattern portion of the expression should be evaluated against a Size of a package/installation.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
# = The size in bytes. Use of KB, MB, GB and TB are also supported.
Examples:
size::25MB
size::-25MB
size::25MB-
size::25MB-50MB
size::[25MB,50MB]
Use the type scope selector to signify that the query pattern portion of the expression should be evaluated against the Types assigned to a package.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
type::Software
type::Plugin
type::Content
type::,
type::wc::*Plugin*
type::rx::^Software.*Content.*$
type::rx::ci::^((?!.*(plugin)).*)$
Use the tag scope selector to signify that the query pattern portion of the expression should be evaluated against the Tags assigned to a package.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
tag::all::DAZStudio4_5
tag::all::lbl::DAZ Studio 4.5+
tag::all::DAZStudio4
tag::all::lbl::DAZ Studio 4
tag::all::DAZStudio3
tag::all::lbl::DAZ Studio 3
tag::all::DAZStudioLegacy
tag::all::lbl::DAZ Studio (< 3)
tag::all::DSON_Poser
tag::all::lbl::DSON Importer for Poser
tag::all::Poser9
tag::all::lbl::Poser 9+
tag::all::PoserLegacy
tag::all::lbl::Poser (< 9)
tag::all::lbl::wc::DAZ Studio*
tag::all::lbl::wc::Poser*
tag::all::lbl::Poser
tag::all::,
tag::all::rx::ci::^((?!.*(Poser)).*)$
Use the meta scope selector to signify that the query pattern portion of the expression should be evaluated against whether the package contains Metadata. Use of this scope selector will only produce results in the Installed Page.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
meta::true
meta::false
Use the acct scope selector to signify that the query pattern portion of the expression should be evaluated against the Account that the package was Installed By. Use of this scope selector will only produce results in the Installed Page.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
acct::rx::ci::^r
acct::wc::*@daz3d.com
Use the path scope selector to signify that the query pattern portion of the expression should be evaluated against the Path that the package was Installed To. Use of this scope selector will only produce results in the Installed Page.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
path::D:/
path::rx::ci::^((?!.*(Public)).*)$
Use the file scope selector to signify that the query pattern portion of the expression should be evaluated against relative file paths defined in the manifest of installed packages. Use of this scope selector will only produce results in the Installed Page.
Important: This filter can be very time intensive. The more packages you have, and the larger those packages are, the greater the amount of time this filter can take to produce results. To increase performance, a package is considered to be a match for the expression once the first match is found.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
file::rx::ci::^.+\.obj$
file::rx::ci::^.+\.fbx$
file::rx::ci::^.+\.bvh$
file::rx::ci::^.+\.mdl$
file::rx::ci::^.+\.s(l|dl)$
file::rx::ci::^.+\.d(uf|sf)$
file::rx::ci::^.+\.ds(a|b|e|)$
file::rx::ci::^.+\.d(az|s(o|d|v))$
file::rx::ci::^.+\.d(cm|b(m|c|l))$
file::rx::ci::^.+\.(pz(3|z)|(cr|pz|fc|hr|hd|pp|lt|cm)(2|z)|mc(6|z))$
file::rx::ci::^.+\.(obp|br\d)$
file::rx::ci::^.+\.(h|cpp)$
Use the store scope selector to signify that the query pattern portion of the expression should be evaluated against whether packages can be validated against product and order history data retrieved from the store. While use of this scope selector will only produce the proper results when you are signed into an account (it must retrieve product and order history data for that account) the comparison of that data is performed on the local machine.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
store::yes
store::no
Use the resume scope selector to signify that the query pattern portion of the expression should be evaluated against whether packages have been partially downloaded and can be resumed. Use of this scope selector will only produce results in the Ready to Download Page.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
resume::yes
resume::no
Use the custom scope selector to signify that the query pattern portion of the expression should be evaluated against whether or not packages use a custom source prefix for package naming. Use of this scope selector will only produce results in the Ready to Install Page or Installed Page.
Scope Modifiers:
Syntax Selectors:
Query Pattern:
Examples:
custom::yes
custom::no
Scope modifiers are used to modify the selected scope. If declared at all, scope modifiers are always declared immediately following a Scope Selector, or in some cases another scope modifier.
Use the instr scope modifier to signify that the query pattern portion of the expression should be evaluated against the Installer
Scope Modifiers:
Use the instd scope modifier to signify that the query pattern portion of the expression should be evaluated against the Installed
Scope Modifiers:
Use the all scope modifier to signify that the query pattern portion of the expression should be evaluated against all tags assigned to a package, not just the tags that match the currently active ones.
Scope Modifiers:
Use the lbl scope modifier to signify that the query pattern portion of the expression should be evaluated against tag labels3) instead of tag values
Scope Modifiers:
Syntax selectors tell the application which Syntax Interpreter to use. If declared explicitly, syntax selectors are always declared immediately following any Scope Modifiers or in the event that no scope modifiers are declared, immediately following a Scope Selector. If neither are declared, a syntax selector can be declared at the beginning of the expression.
Use the wc syntax selector to signify that the query pattern portion of the expression should be interpreted as Wildcard syntax. In the Wildcard syntax, all characters represent themselves except for those that are specified below.
Syntax Modifiers:
Use the rx syntax selector to signify that the query pattern portion of the expression should be interpreted as Regular Expression syntax; a rich Perl-like pattern matching syntax with greedy quantifiers. See www.regular-expressions.info for more information on regular expression.
Syntax Modifiers:
By default, regular expressions are case sensitive. Use the ci syntax modifier to signify that the regular expression should be evaluated as being case insensitive; that is, where both uppercase and lowercase characters should be matched regardless of the case used in the expression.
…