Column Filters Technical Reference

Summary

  • The Column Filter Applied Event fires whenever a Column Filter is applied in AdapTable
  • Column Filter API Section of Adaptable API contains functions that manage AdapTable Column Filters
  • Column Filter Options provide many functions to run Column Filters
  • AdapTable supplies a large number of System Predicates that can be used in Column Filters

Column Filter State

There is no separate Column Filter State section in Initial Adaptable State.

Instead Column Filters are defined as a property of a Layout as part of Layout Initial State.


Filter Options

There are many filtering options in Filter Options section of AdapTable Options.

PropertyTypeDescriptionDefault
clearFiltersOnStartUpbooleanClear Grid and Column Filters when AdapTable loadsfalse
columnFilterOptionsColumnFilterOptionsOptions for managing Column Filters
customInFilterValues(context:CustomInFilterValuesContext<TData>) => Promise<InFilterValueResult> |InFilterValueResultProvide custom values (or sorting / count info) when using In Predicate in Column or Grid Filter
enableFilterOnSpecialColumnsbooleanAllow filtering on Calculated & FreeText columnstrue
gridFilterOptionsGridFilterOptionsOptions for managing the Grid Filter
isRowFilterable(context:IsRowFilterableContext) => booleanConfigures whether Rows will be evaluated when filtering
showDatePickerbooleanShow Date Picker (or Date Input) in Filter controlstrue
useAdaptableFilteringbooleanUse Adaptable's Column & Grid Filters in preference to AG Grid's filteringtrue

Column Filter Options

This includes a dedicated Column Filter Options section to enable full configuration of Column Filters.

PropertyTypeDescriptionDefault
defaultArrayColumnFilterStrictExtract<SystemFilterPredicateId, 'In' | 'NotIn' | 'Blanks' | 'NonBlanks'> | ((adaptableColumnContext:DefaultPredicateFilterContext) => StrictExtract<SystemFilterPredicateId, 'In' | 'NotIn' | 'Blanks' | 'NonBlanks'>)Default filter type for array Columns ('textArray', 'numberArray', etc.)In
defaultDateColumnFilterStrictExtract<SystemFilterPredicateId, 'After' | 'Before' | 'On' | 'NotOn' | 'In'> | ((adaptableColumnContext:DefaultPredicateFilterContext) => StrictExtract<SystemFilterPredicateId, 'After' | 'Before' | 'On' | 'NotOn' | 'In'>)Default filter type for date ColumnsOn
defaultNumericColumnFilterStrictExtract<SystemFilterPredicateId, 'GreaterThan' | 'LessThan' | 'Equals' | 'NotEquals' | 'In'> | ((adaptableColumnContext:DefaultPredicateFilterContext) => StrictExtract<SystemFilterPredicateId, 'GreaterThan' | 'LessThan' | 'Equals' | 'NotEquals' | 'In'>)Default filter type for numeric ColumnsEquals
defaultTextColumnFilterStrictExtract<SystemFilterPredicateId, 'Is' | 'IsNot' | 'Contains' | 'NotContains' | 'StartsWith' | 'EndsWith' | 'Regex' | 'In'> | ((adaptableColumnContext:DefaultPredicateFilterContext) => StrictExtract<SystemFilterPredicateId, 'Is' | 'IsNot' | 'Contains' | 'NotContains' | 'StartsWith' | 'EndsWith' | 'Regex' | 'In'>)Default filter type for text ColumnsContains
hideQuickFilterDropdown(adaptableColumnContext:AdaptableColumnContext<TData>) => booleanHides Dropdown in Quick Filter Bar for a given Columnundefined
indicateFilteredColumnsbooleanMake Column Header distinctive for filtered columns, helps users see currently filtered columnstrue
manuallyApplyColumnFilterboolean | ((context:AdaptableColumnContext) => boolean)Manually apply Column Filters; an Apply Filter button is displayed and Quick Filter is disabledfalse
quickFilterDebouncenumberTime to wait (in ms) before Filter Bar reacts to new value250
quickFilterHeightnumberHeight of Quick Filter Bar (if not provided, AG Grid default is used)null
quickFilterWildcardsPartial<Record<SystemAlertPredicateId, string[]>>Shortcut Keys to activate a Quick Filter Predicate
showQuickFilterbooleanDisplay Quick Filter Bar between Column Header and Grid (provided its been setup)true

Column Filter API

The Column Filter API section of AdapTable API / FilterAPI enables Column Filters to be accessed, created, edited, deleted, suspended and shared programmatically:

MethodReturnsDescription
addBlanksToInFilterValues(columnDistinctValues)InFilterValueInfo[]Adds the Blanks Predicate if any value is null, undefined or an empty string
clearAndSetColumnFilters(columnFilters)voidClears existing Column Filters and sets new ones
clearColumnFilter(columnFilter)voidClears given Column Filter in the current Layout
clearColumnFilterForColumn(columnId)voidClears Column Filter for given Column
clearColumnFilters()voidClears all Column Filters in the Current Layout
clearColumnFiltersForColumns(columns)voidClears Column Filters for given set of Columns
columnFiltersToString(columnFilters)stringRetrieves descriptions of given Column Filters
columnFilterToString(columnFilter)stringRetrieves description of given Column Filter
getActiveColumnFilters()ColumnFilter[]Retrieves all active/no-suspended Column Filters in currently applied Layout
getColumnFilterDefs()ColumnFilterDef[]Retrieves the Column Filter definitions for all available Column Filters
getColumnFilterForColumn(columnId)ColumnFilter | undefinedRetrieves the Column Filter for the specified Column.
getColumnFilters()ColumnFilter[]Retrieves all Column Filters in currently applied Layout
getColumnFiltersForLayout(layoutName)ColumnFilter[]Retrieves all Column Filters in a given Layout
getFilterPredicateDefsForColumn(column)AdaptablePredicateDef[]Gets all Filter Predicates available for a given Column
getFilterPredicateDefsForColumnId(columnId)AdaptablePredicateDef[] | undefinedGets all Filter Predicates available for a given ColumnId
hideColumnFilterMenu()voidHides Column Filter Menu
hideQuickFilterBar()voidHides Quick Filter bar
isColumnFilterActive(columnFilter)booleanChecks if a Column Filter is active (i.e. Predicate has no inputs or has inputs with values)
isColumnFilterActiveForColumn(columnId)booleanChecks if the given Coumn has an active Column Filter
isQuickFilterAvailable()booleanWhether Quick Filter is available for use
isQuickFilterVisible()booleanWhether Quick Filter Form is currently visible
refreshAllFilterValues()Promise<Record<string,InFilterValueResult>>Refreshes (reloads) the filter values for ALL Columns (for IN Filter).
refreshFilterValues(columnId)Promise<InFilterValueResult>Refresh(reload) the filter values for a given Column (for IN Filter).
resetAllFilterValues()voidReset(clear cache) the filter values for ALL Columns (for IN Filter).
resetFilterValues(columnId)voidReset(clear cache) the filter values for a given Column (for IN Filter).
setColumnFilterForColumn(columnId, predicate)voidSets the Column Filter for a given Column (clears any existing)
setColumnFilters(columnFilters)ColumnFilter[] | nullSets Column Filters in current Layout; replaces filters for existing column, leaving other column filters in place
showQuickFilterBar()voidMakes Quick Filter Bar appear
suspendAllColumnFilters()voidSuspends all Column Filters
suspendColumnFilter(columnFilter)voidSuspends a Column Filter
unSuspendAllColumnFilters()voidUnsuspend all Column Filters
unSuspendColumnFilter(columnFilter)voidUnsuspend a Column Filter

Column Filter Applied Event

The Column Filter Applied Event is triggered whenever a Column Filter is applied in AdapTable.

Hint

This is often used when wanting to evaluate expressions on the Server

ColumnFilterAppliedInfo

The Event's columnfilterappliedinfo object contains a collection of currently applied Column Filters:

PropertyTypeDescription
columnFiltersColumnFilter[] | undefinedCurrently applied Column Filters
adaptableContextanyCustom application Context provided in AdaptableOptions.adaptableContext

Event Subscription

Subscribing to the Event is done the same way as with all Adaptable Events:

api.eventApi.on('ColumnFilterApplied', (eventInfo: ColumnFilterAppliedInfo) => {
    // do something with the info
});

System Filter Predicates

AdapTable provides a large number of Predicates - which are available for both developers and end users.

Hint

Most System Predicates are available for use when creating Column Filters.

The full list (including the Column Data Type they operate on, and the number of Inputs they accept) is:

PredicateColumn Data TypeNumber of Inputs
Blanks(All)0
NonBlanks(All)0
In(All)n
NotIn(All)n
Equalsnumber1
NotEqualsnumber1
GreaterThannumber1
LessThannumber1
Positivenumber0
Negativenumber0
Zeronumber0
NotBetweennumber2
Istext1
IsNottext1
Containstext1
NotContainstext1
StartsWithtext1
EndsWithtext1
Regextext1
Todaydate0
Yesterdaydate0
Tomorrowdate0
ThisWeekdate0
ThisMonthdate0
ThisQuarterdate0
ThisYeardate0
InPastdate0
InFuturedate0
Beforedate1
Afterdate1
Ondate1
NotOndate1
NextWorkDaydate0
LastWorkDaydate0
WorkDaydate0
Holidaydate0
Rangedate2
Trueboolean0
Falseboolean0