Segment editing.

This commit is contained in:
Mike Cao 2025-07-31 21:32:22 -07:00
parent fba7e12c36
commit 2dbcf63eeb
22 changed files with 306 additions and 42 deletions

View file

@ -1,7 +1,7 @@
import { FILTER_COLUMNS, OPERATORS } from '@/lib/constants';
import { QueryFilters, QueryOptions } from '@/lib/types';
import { Filter, QueryFilters, QueryOptions } from '@/lib/types';
export function parseParameterValue(param: any) {
export function parseFilterValue(param: any) {
if (typeof param === 'string') {
const [, operator, value] = param.match(/^([a-z]+)\.(.*)/) || [];
@ -18,7 +18,7 @@ export function isSearchOperator(operator: any) {
return [OPERATORS.contains, OPERATORS.doesNotContain].includes(operator);
}
export function filtersToArray(filters: QueryFilters, options: QueryOptions = {}) {
export function filtersObjectToArray(filters: QueryFilters, options: QueryOptions = {}) {
return Object.keys(filters).reduce((arr, key) => {
const filter = filters[key];
@ -30,7 +30,7 @@ export function filtersToArray(filters: QueryFilters, options: QueryOptions = {}
return arr.concat({ ...filter, column: options?.columns?.[key] ?? FILTER_COLUMNS[key] });
}
const { operator, value } = parseParameterValue(filter);
const { operator, value } = parseFilterValue(filter);
return arr.concat({
name: key,
@ -41,3 +41,13 @@ export function filtersToArray(filters: QueryFilters, options: QueryOptions = {}
});
}, []);
}
export function filtersArrayToObject(filters: Filter[]) {
return filters.reduce((obj, filter: Filter) => {
const { name, operator, value } = filter;
obj[name] = `${operator}.${value}`;
return obj;
}, {});
}