Constructor
new Filter()
- Source:
Extends
Members
type :string
The name of this Model
Type:
- Source:
Methods
defaults() → {object}
Default attributes for this model
Properties:
Name |
Type |
Description |
objectDOM |
Element
|
The XML DOM for this filter |
nodeName |
string
|
The XML node name for this filter's XML DOM |
fields |
Array.<string>
|
The search index fields to search |
values |
Array.<string>
|
The values to search for in the given search fields |
valueLabels |
object
|
Optional human-readable labels for the elements of
values. Keys are the value and the human-readable label is the value at that key. |
operator |
string
|
The operator to use between values set on this model.
"AND" or "OR" |
fieldsOperator |
string
|
The operator to use between fields set on this
model. "AND" or "OR" |
queryGroup |
string
|
Deprecated: Add this filter along with other the
other associated query group filters to a FilterGroup model instead. Old definition:
The name of the group this Filter is a part of, which is primarily used when
creating a query string from multiple Filter models. Filters in the same group will
be wrapped in parenthesis in the query. |
exclude |
boolean
|
If true, search index docs matching this filter will
be excluded from the search results |
matchSubstring |
boolean
|
If true, the search values will be wrapped in
wildcard characters to match substrings |
label |
string
|
A human-readable short label for this Filter |
placeholder |
string
|
A short example or description of this Filter |
icon |
string
|
A term that identifies a single icon in a supported icon
library |
description |
string
|
A longer description of this Filter's function |
isInvisible |
boolean
|
If true, this filter will be added to the query
but will act in the "background", like a default filter |
inFilterGroup |
boolean
|
Deprecated: use isUIFilterType instead. |
isUIFilterType |
boolean
|
If true, this filter is one of the
UIFilterTypes, belongs to a UIFilterGroupType model, and is used to create a custom
Portal search filters. This changes how the XML is parsed and how the model is
validated and serialized. |
- Source:
Returns:
-
Type
-
object
escapeSpecialChar(term) → {string}
Escapes Solr query reserved characters so that search terms can include
those characters without throwing an error.
Parameters:
Name |
Type |
Description |
term |
string
|
The search term or phrase to escape |
- Source:
Returns:
- The search term or phrase, after special characters are escaped
-
Type
-
string
getQuery(groupLevelOperatoropt) → {string}
Builds a query string that represents this filter.
Parameters:
Name |
Type |
Attributes |
Description |
groupLevelOperator |
string
|
<optional>
|
"AND" or "OR". The operator used in the
parent Filters collection to combine the filter query fragments together. If the
group level operator is "OR" and this filter has exclude set to TRUE, then a
positive clause is added. |
- Source:
Returns:
The query string to send to Solr
-
Type
-
string
getValueQuerySubstring(valuesopt) → {string}
Constructs a query substring for each of the values set on this model
Parameters:
Name |
Type |
Attributes |
Description |
values |
Array.<string>
|
<optional>
|
The values to use in this query substring.
If not provided, the values set on the model are used. |
- Source:
Returns:
The query substring
-
Type
-
string
Example
values: ["walker", "jones"]
Returns: "(walker%20OR%20jones)"
hasChangedValues() → {boolean}
Checks if this Filter has values different than the default values.
- Source:
Returns:
- Returns true if this Filter has values set on it, otherwise will return false
-
Type
-
boolean
initialize()
Creates a new Filter model
- Source:
isCoordinateQuery(fieldsopt) → {Boolean}
Check whether a set of query fields contain only fields that specify latitude and/or
longitude
Parameters:
Name |
Type |
Attributes |
Description |
fields |
Array.<string>
|
<optional>
|
A list of fields to check for coordinate fields. If not
provided, the fields set on the model will be used. |
- Since:
- Source:
Returns:
Returns true if every field is a field that specifies latitude or
longitude
-
Type
-
Boolean
isDateQuery(value) → {boolean}
Returns true if the given value or value set on this filter is a date range query
Parameters:
Name |
Type |
Description |
value |
string
|
The string to test |
- Source:
Returns:
-
Type
-
boolean
isEmpty() → {boolean}
isEmpty - Checks whether this Filter has any values or fields set
- Source:
Returns:
returns true if the Filter's values and fields are empty
-
Type
-
boolean
isIdFilter()
- Since:
- Source:
isLatitudeQuery(fieldsopt) → {Boolean}
Check whether a set of query fields contain only fields that specify latitude
Parameters:
Name |
Type |
Attributes |
Description |
fields |
Array.<string>
|
<optional>
|
A list of fields to check for coordinate fields. If not
provided, the fields set on the model will be used. |
- Since:
- Source:
Returns:
Returns true if every field is a field that specifies latitude
-
Type
-
Boolean
isLongitudeQuery(fieldsopt) → {Boolean}
Check whether a set of query fields contain only fields that specify longitude
Parameters:
Name |
Type |
Attributes |
Description |
fields |
Array.<string>
|
<optional>
|
A list of fields to check for longitude fields. If not
provided, the fields set on the model will be used. |
- Since:
- Source:
Returns:
Returns true if every field is a field that specifies longitude
-
Type
-
Boolean
parse(xml) → {JSON}
Parses the given XML node into a JSON object to be set on the model
Parameters:
Name |
Type |
Description |
xml |
Element
|
The XML element that contains all the filter elements |
- Source:
Returns:
- The JSON object of all the filter attributes
-
Type
-
JSON
parseFilterOptions(filterOptionsNode) → {Object}
Parses the filterOptions XML node into a literal object
Parameters:
Name |
Type |
Description |
filterOptionsNode |
Element
|
The filterOptions XML element to parse |
- Source:
Returns:
- The parsed filter options, in literal object form
-
Type
-
Object
parseTextNode(parentNode, nodeName, isMultiple) → {string|Array}
Gets the text content of the XML node matching the given node name
Parameters:
Name |
Type |
Description |
parentNode |
Element
|
The parent node to select from |
nodeName |
string
|
The name of the XML node to parse |
isMultiple |
boolean
|
If true, parses the nodes into an array |
- Source:
Returns:
- Returns a string or array of strings of the text content
-
Type
-
string
|
Array
requiresPositiveClause(groupLevelOperatoropt) → {boolean}
For "negative" Filters (filter models where exclude is set to true), detects
whether the query requires an additional "positive" query phrase in order to avoid
the problem of pure negative queries returning zero results. If this Filter is not
part of a collection of Filters, assume it needs the positive clause. If this
Filter is part of a collection of Filters, detect whether there are other,
"positive" filters in the same query (i.e. filter models where exclude is set to
false). If there are other positive queries, then an additional clause is not
required. If the Filter is part of a pure negative query, but it is not the last
filter, then don't add a clause since it will be added to the last, and only one
is required. When looking for other positive and negative filters, exclude empty
filters and filters that use any of the identifier fields, as these are appended to
the end of the query.
Parameters:
Name |
Type |
Attributes |
Description |
groupLevelOperator |
string
|
<optional>
|
"AND" or "OR". The operator used in the
parent Filters collection to combine the filter query fragments together. If the
group level operator is "OR" and this filter has exclude set to TRUE, then a
positive clause is required. |
- Source:
- See:
-
Returns:
returns true of this Filter needs a positive clause, false
otherwise
-
Type
-
boolean
resetValue()
Resets the values attribute on this filter
- Source:
updateDOM(optionsopt) → {Element}
Updates XML DOM with the new values from the model
Parameters:
Name |
Type |
Attributes |
Description |
options |
object
|
<optional>
|
A literal object with options for this serialization |
- Source:
Returns:
A new XML element with the updated values
-
Type
-
Element
updateFilterOptionsDOM(filterOptionsNodeopt) → {Element}
Serializes the filter options into an XML DOM and returns it
Parameters:
Name |
Type |
Attributes |
Description |
filterOptionsNode |
Element
|
<optional>
|
The XML filterOptions node to update |
- Source:
Returns:
- The updated DOM
-
Type
-
Element
validate() → {object}
Checks if the values set on this model are valid.
Some of the attributes are changed during this process if they are found to be invalid,
since there aren't any easy ways for users to fix these issues themselves in the UI.
- Source:
Returns:
- Returns a literal object with the invalid attributes and their corresponding error message
-
Type
-
object