27 lines
775 B
TypeScript
27 lines
775 B
TypeScript
type ISearchFilterRelation = "eq" | "gt" | "gte" | "lt" | "lte";
|
|
export interface ISearchFilter {
|
|
// The ES field to filter on
|
|
field: string;
|
|
relation: ISearchFilterRelation;
|
|
// The value we want to filter to
|
|
value: string;
|
|
// Human-meaningful text that we're showing in the UI
|
|
displayValue: string;
|
|
}
|
|
|
|
// Maps to translate this to user-friendly text
|
|
const searchFilterFieldTranslations = {
|
|
type: "Instance type",
|
|
user_count: "User count"
|
|
};
|
|
const searchFilterRelationTranslations = {
|
|
eq: "=",
|
|
gt: ">",
|
|
gte: ">=",
|
|
lt: "<",
|
|
lte: "<="
|
|
};
|
|
|
|
export const getSearchFilterDisplayValue = (field: string, relation: ISearchFilterRelation, value: string) =>
|
|
`${searchFilterFieldTranslations[field]} ${searchFilterRelationTranslations[relation]} ${value}`;
|