arkejs/ui
Filters
For each GET methods on Arke, Units, Parameters etc. are available dedicated parameters
to filter the response through the logic operation
client.arke
.getAll({ params: {
filter: `eq(arke_id,invoice)`,
}})
.then((res) => {
// Get units where arke_id is invoice
})You can create more complex filters composing the filter in the following way:
filter: `or(contains(id,1),contains(label,test))`,
To simplify the Filter creation @arke/client provides some useful functions.
With new Filter() you can create a new filter using the RelationalOperator enum:
import {RelationalOperator} from "./filter";
const idFilter = new Filter({
operator: RelationalOperator.EQ,
key: "id",
value: "1",
});Below the list of available Relational Operator
| Method | String Key | Description |
|---|---|---|
| EQ | "eq" | Elements that are equal a specified value |
| CONTAINS | "contains" | Elements that contains a specified value (sensitive search) |
| ICONTAINS | "icontains" | Elements that contains a specified value (insensitive search) |
| STARTSWITH | "startswith" | Elements that start with a specified value (sensitive search) |
| ISTARTSWITH | "istartswith" | Elements that start with a specified value (insensitive search) |
| ENDSWITH | "endswith" | Elements that end with a specified value (sensitive search) |
| IENDSWITH | "iendswith" | Elements that end with a specified value (insensitive search) |
| LT | "lt" | Elements that are Lower than a specified value |
| LTE | "lte" | Elements that are Lower than equal a specified value |
| GT | "ge" | Elements that are greater than a specified value |
| GTE | "get" | Elements that are greater than equal a specified value |
| IN | "in" | Elements that are included in a specified value |
| ISNULL | "isnull" | Element that is null |
| NOT | "not" | Denied elements filters |
After creating a filter it's possible compose more complex filters through ConditionalOperator:
import {RelationalOperator} from "./filter";
const idFilter = new Filter({
operator: RelationalOperator.EQ,
key: "id",
value: "1",
});
const nameFilter = new Filter({
operator: RelationalOperator.CONTAINS,
key: "label",
value: "test",
});
const complexFilter = new Filter({
operator: ConditionalOperator.AND,
filters: [codeFilter, nameFilter],
});With toString() function will create a filter string object as below:
complexFilter.toString();
and(eq(id,1),contains(label,test))ISNULL operator
If you want check that value of a key is NULL filters you can use the ISNULL operator,
it expects the operator and the value:
const isNullFilter = new Filter({
operator: RelationalOperator.ISNULL,
key: "value",
});With toString() function will create a denied filter string object as below:
isNotNullFilter.toString();
isnull(value)NOT operator
If you want a denied filters you can use the NOT operator:
const isNotNullFilter = new Filter({
operator: RelationalOperator.NOT,
value: [isNullFilter],
});With toString() function will create a denied filter string object as below:
isNotNullFilter.toString();
not(and(eq(id,1),contains(label,test)))