Filtering

This is the official documentation of Forest Admin Cloud.

Emulation

To quickly make a field filterable, you can use filtering emulation. This method works best for collections with a few thousand records or less. It's a straightforward way to get started without much setup.


To make the code easier to read, all the code snippets below should be wrapped in the following code. Ensure you update the collection and field names as needed.

import type { Agent } from '@forestadmin/forest-cloud';
import { Schema } from '../typings';

export default function customizeAgent(agent: Agent<Schema>) {
  agent.customizeCollection('users', (collection) => {
    // Insert the code snippet here.
  });
}

Enabling filtering emulation for all operators

collection.emulateFieldFiltering('fullName');

Enabling filtering emulation for a single operator

collection.emulateFieldOperator('fullName', 'Equal');

Using fields emulation can impact the performance of your admin panel. It is crucial to review best practices for fields to guarantee an optimal experience for your admin panel users.

Overriding filtering

The replaceFieldOperator() method can be used to improve the search capabilities by defining custom operators for filtering on fields that are not directly filterable. This method allows for the efficient performance of filtering operations based on computed fields or non-filterable fields.

collection.replaceFieldOperator('fullName', 'Equal', (value, context) => {
  const [firstName, ...lastNames] = value.split(' ');

  return {
    aggregation: 'And',
    conditions: [
      { field: 'firstName', operator: 'Equal', value: firstName },
      { field: 'lastName', operator: 'Equal', value: lastNames.join(' ') },
    ],
  };
});

To enable searching on a field, it is necessary to have at least the following operators implemented for each respective field type:

  • Number: Equal

  • Enum: Equal

  • String: IContains, Contains, or Equal

  • Uuid: Equal

Last updated