@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
73 lines (72 loc) • 2.63 kB
JavaScript
// SPDX-License-Identifier: Apache-2.0
// FILTER OPERATORS
export const filterOperatorValues = [
'eq',
'neq',
'gt',
'gte',
'lt',
'lte',
'like',
'nlike',
'in',
'nin',
'before',
'after',
'between',
'nbetween',
'nul',
'nnul',
'intersects',
'within',
'contains'
];
export const filterOperators = [
{ operator: 'eq', displayName: '=' },
{ operator: 'neq', displayName: '!=' },
{ operator: 'like', displayName: 'filteroperator-LIKE' },
{ operator: 'nlike', displayName: 'filteroperator-NOT LIKE' },
{ operator: 'gt', displayName: '>' },
{ operator: 'gte', displayName: '>=' },
{ operator: 'lt', displayName: '<' },
{ operator: 'lte', displayName: '<=' },
{ operator: 'in', displayName: 'filteroperator-IN' },
{ operator: 'nin', displayName: 'filteroperator-NOT IN' },
{ operator: 'before', displayName: 'filteroperator-BEFORE' },
{ operator: 'after', displayName: 'filteroperator-AFTER' },
{ operator: 'between', displayName: 'filteroperator-BETWEEN' },
{ operator: 'nbetween', displayName: 'filteroperator-NOT BETWEEN' },
{ operator: 'nul', displayName: 'filteroperator-IS NULL' },
{ operator: 'nnul', displayName: 'filteroperator-IS NOT NULL' },
{ operator: 'intersects', displayName: 'filteroperator-INTERSECTS' },
{ operator: 'within', displayName: 'filteroperator-WITHIN' },
{ operator: 'contains', displayName: 'filteroperator-CONTAINS' }
];
export function isFilterOperator(value) {
return filterOperatorValues.includes(value);
}
export function isValuelessFilterOperator(operator) {
return ['nul', 'nnul'].includes(operator);
}
export function isTwoSidedFilterOperator(operator) {
return ['between', 'nbetween'].includes(operator);
}
export function isListFilterOperator(operator) {
return ['in', 'nin'].includes(operator);
}
export const operatorsByAttributeTypeGroup = {
string: ['eq', 'neq', 'like', 'nlike', 'nul', 'nnul'],
number: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'between', 'nbetween', 'nul', 'nnul'],
date: ['eq', 'neq', 'before', 'after', 'between', 'nbetween', 'nnul'],
geometry: ['intersects', 'within', 'contains']
};
// LOGICAL FILTER OPERATORS
const logicalFilterOperatorValues = ['and', 'or', 'not'];
export const logicalFilterOperators = [
{ operator: 'and', displayName: 'filteroperator-AND' },
{ operator: 'or', displayName: 'filteroperator-OR' },
{ operator: 'not', displayName: 'filteroperator-NOT' }
];
export function isLogicalFilterOperator(value) {
return logicalFilterOperatorValues.includes(value);
}