Number filters allow you to filter number data.
The Number Filter can be configured as shown below:
columnDefs = [
{
'field': 'age',
# configure column to use the Number Filter
'filter': 'agNumberColumnFilter',
'filterParams': {
# pass in additional parameters to the Number Filter
},
},
]
The example below shows the Number Filter in action:
allowedCharPattern
.View the JavaScript functions used for this example
These JavaScript functions must be added to the dashAgGridFunctions.js
file in the assets folder.
See JavaScript Functions
for more information.
var dagfuncs = (window.dashAgGridFunctions = window.dashAgGridFunctions || {});
dagfuncs.myNumberParser = (text) => {
return text === null ? null : parseFloat(text.replace(",", ".").replace("$", ""));
}
dagfuncs.myNumberFormatter = (value) => {
return value === null ? null : value.toString().replace(".", ",");
}
Number Filters are configured though the filterParams
attribute of the column definition.
allowedCharPattern
(string) When specified, the input field will be of type
text instead of number, and this willbuttons
Specifies the buttons to be shown in the filter, in the order they should be displayed in. The options are:'apply'
: If the Apply button is present, the filter is only applied after the user hits the Apply button.'clear'
: The Clear button will clear the (form) details of the filter without removing any active filters on the'reset'
: The Reset button will clear the details of the filter and any active filters on that column.'cancel'
: The Cancel button will discard any changes that have been made to the filter in the UI, restoring thecloseOnApply
(boolean, default: False) If the Apply button is present, the filter popup will be closed immediatelyTrue
.debounceMs
(number) Overrides the default debounce time in milliseconds for the filter. Defaults are:TextFilter
and NumberFilter
: 500ms. (These filters have text field inputs, so a short delay before the inputDateFilter
and SetFilter
: 0msdefaultJoinOperator
By default, the two conditions are combined using AND
. You can change this default by settingAND
, OR
defaultOption
(string) The default filter option to be selected.filterOptions
Array of filter options to present to the user.filterPlaceholder
(string) Placeholder text for the filter textbox.inRangeInclusive
(boolean) If True
, the 'inRange'
filter option will include values equal to the start and endincludeBlanksInEquals
(boolean) If True
, None
values will pass the 'equals'
filter option.includeBlanksInGreaterThan
(boolean) If True
, None
values will pass the 'greaterThan'
'greaterThanOrEqual'
filter options.includeBlanksInLessThan
(boolean) If True
, None
values will pass the 'lessThan'
and 'lessThanOrEqual'
filterincludeBlanksInRange
(boolean) If True
, None
values will pass the 'inRange'
filter option.maxNumConditions
(number, default: 2) Maximum number of conditions allowed in the filter.numAlwaysVisibleConditions
(number, default: 1) By default only one condition is shown, and additional conditionsmaxNumConditions
). To have more conditions shown bymaxNumConditions
- anything larger will be ignored.numberFormatter
(Function) Typically used alongside allowedCharPattern
, this provides a custom formatter tonumberParser
.numberParser
(Function) Typically used alongside allowedCharPattern
, this provides a custom parser to convert thereadOnly
(boolean, default: False) If set to True
, disables controls in the filter to mutate its state. NormallyThe default behaviour of the Number Filter is to use a number
input, however this has mixed browser support and
behaviour. If you want to override the default behaviour, or allow users to type other characters (for example, currency
symbols, commas for thousands, etc.), the Number Filter allows you to control what characters the user is allowed to
type. In this case, a text
input is used with JavaScript controlling what characters the user is allowed (rather than
the browser). You can also provide custom logic to parse the provided value into a number to be used in the filtering.
Custom number support is enabled by specifying configuration similar to the following:
columnDefs = [
{
'field': 'age',
'filter': 'agNumberColumnFilter',
"filterParams": {
"allowedCharPattern": "\\d\\-\\,\\$",
"numberParser": {"function": "myNumberParser(params)"},
"numberFormatter": {"function": "myNumberFormatter(params)"},
},
}
]
Add the following to dashAgGridFunctions.js in the assets folder:
var dagfuncs = window.dashAgGridFunctions = window.dashAgGridFunctions || {};
dagfuncs.ageNumberParser = (text) => {
return text === null ? null : parseFloat(text.replace(",", ".");
}
dagfuncs.ageNumberFormatter = (value) => {
return value === null ? null : value.toString().replace(".", ",");
}
The allowedCharPattern
is a regex of all the characters that are allowed to be typed. This is surrounded by square
brackets [ ]
and used as a character class to be compared against each typed character individually and prevent the
character from appearing in the input if it does not match (in supported browsers).
The numberParser
should take the user-entered text and return either a number if one can be interpreted, or null
if
not.
The numberFormatter
should take a number (for example, from the Filter Model) and convert it into the formatted text
to be displayed, or null
if no value.
Custom number support can be seen in
the Number Filter example above.
An allowedCharPattern
of \\d\\-\\
. will give similar behaviour to the default number
input.
See the Filter Model & Dash Callbacks section for
examples.
The Filter Model describes the current state of the applied Number Filter. If only
one Filter Condition is set, this will be
a NumberFilterModel
:
filterType
(number) Filter type is always 'number'
filter
(number or None) The number value(s) associated with the filter. Custom filters can have no values (hencefilterTo
(number or None) Range filter to
value.type
One of the filter options: ‘empty’, ‘equals’, ‘notEqual’, ‘lessThan’, ‘lessThanOrEqual’, ‘greaterThan’,If more than one Filter Condition is set, then multiple instances of the model are created and wrapped inside a Combined
Model.
Note that in AG Grid versions prior to 29.2, only two Filter Conditions were supported. These appeared in the Combined
Model as properties condition1
and condition2
. The grid will still accept and supply models using these properties,
but this behaviour is deprecated. The conditions
property should be used instead.
Here’s an example:
numberEquals18OrEquals20 = {
'filterType': 'number',
'operator': 'OR',
'conditions': [
{
'filterType': 'number',
'type': 'equals',
'filter': 18
},
{
'filterType': 'number',
'type': 'equals',
'filter': 20
}
]
}
The Number Filter presents a list
of Filter Options to the user.
The list of options are as follows:
Option Name | Option Key | Included by Default |
---|---|---|
Equals | <p>equals <p> |
Yes |
Does not equal | <p>notEqual <p> |
Yes |
Greater than | <p>greaterThan <p> |
Yes |
Greater than or equal to | <p>greaterThanOrEqual <p> |
Yes |
Less than | <p>lessThan <p> |
Yes |
Less than or equal to | <p>lessThanOrEqual <p> |
Yes |
Between | <p>inRange <p> |
Yes |
Blank | <p>blank <p> |
Yes |
Not blank | <p>notBlank <p> |
Yes |
Choose one | <p>empty <p> |
No |
Note that the empty
filter option is primarily used when
creating Custom Filter Options.
When ‘Choose one’ is displayed, the filter is not active.
The default option for the Number Filter is equals
.
By default, the values supplied to the Number Filter are retrieved from the data based on the field
attribute. This
can be overridden by providing a filterValueGetter
in the Column Definition. This is similar to using
a Value Getter, but is specific to the filter.
filterValueGetter
(string or function) Function or expression. Gets the value for filtering purposes.This example demonstrates customizing th Number Filter Values and Number Filter Options
Note the following in the “File Size (MB)” column :
valueFormatter
is used to display the bytes data as megabytes.filterValueGetter
is used to get a different value for the filter. This allows you to filter by megabytes, forfilterOptions
do not include “equals” since the precision of the filter is different from the data.To include Apply, Clear, Recent and Cancel buttons to the filter menu
see Applying Filters section.
If the row data contains blanks, by default the row won’t be included in filter results. To change this, use the filter
params includeBlanksInEquals
, includeBlanksInLessThan
, includeBlanksInGreaterThan
and includeBlanksInRange
. For
example, the code snippet below configures a filter to include None
for equals, but not for less than, greater than or
in range (between):
filterParams = {
'includeBlanksInEquals': True,
'includeBlanksInLessThan': False,
'includeBlanksInGreaterThan': False,
'includeBlanksInRange': False,
};
The Number Filter is not affected by data changes. When the grid data is updated, the filter value will remain unchanged
and the filter will be re-applied based on the updated data (for example, the displayed rows will update if necessary).