Class: Filter

Filter()

A single search filter that is used in queries sent to the DataONE search service.

Constructor

new Filter()

Source:

Extends

  • Backbone.Model

Members

type :string

The name of this Model
Type:
  • string
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:
  • 2.21.0
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()

Checks if any of the fields in this Filter match one of the AppConfig#queryIdentifierFields
Since:
  • 2.17.0
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:
  • 2.21.0
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:
  • 2.21.0
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