@vuu-ui/vuu-utils 0.13.38 → 0.13.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -140,8 +140,8 @@ const convertValueToUIFormat = (column, value) => {
|
|
|
140
140
|
}
|
|
141
141
|
};
|
|
142
142
|
const buildBetweenQueryString = (column, range) => {
|
|
143
|
-
const lowerRange = range[0] !== void 0 && range[0].length > 0 ? `${column.name}
|
|
144
|
-
const upperRange = range[1] !== void 0 && range[1].length > 0 ? `${column.name}
|
|
143
|
+
const lowerRange = range[0] !== void 0 && range[0].length > 0 ? `${column.name} > ${convertValueToServerFormat(column, range[0])}` : void 0;
|
|
144
|
+
const upperRange = range[1] !== void 0 && range[1].length > 0 ? `${column.name} < ${convertValueToServerFormat(column, range[1])}` : void 0;
|
|
145
145
|
if (lowerRange === void 0) return lowerRange;
|
|
146
146
|
if (upperRange === void 0) return lowerRange;
|
|
147
147
|
return `${lowerRange} and ${upperRange}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n ColumnFilterDescriptor,\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n asTimeString,\n isValidTimeString,\n Time,\n TimeString,\n toCalendarDate,\n} from \"../date\";\nimport {\n isDateTimeDataValue,\n isTimeDataValue,\n toColumnDescriptor,\n} from \"../column-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n\nconst convertValueToServerFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue | Time => {\n if (isValidTimeString(value)) {\n return Time(value as TimeString)\n .asDate()\n .getTime();\n } else if (isDateTimeDataValue(column)) {\n return new Date(value as number).getTime(); //value is already in utc milliseconds? conversion may not be required\n }\n return value;\n};\n\nconst convertValueToUIFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue => {\n if (isTimeDataValue(column)) {\n return asTimeString(value, false);\n } else if (isDateTimeDataValue(column)) {\n return toCalendarDate(new Date(value as number)).toString();\n } else {\n return value;\n }\n};\n\nconst buildBetweenQueryString = (column: ColumnDescriptor, range: string[]) => {\n const lowerRange: string | undefined =\n range[0] !== undefined && range[0].length > 0\n ? `${column.name} >= ${convertValueToServerFormat(column, range[0])}`\n : undefined;\n\n const upperRange: string | undefined =\n range[1] !== undefined && range[1].length > 0\n ? `${column.name} <= ${convertValueToServerFormat(column, range[1])}`\n : undefined;\n\n if (lowerRange === undefined) return lowerRange;\n if (upperRange === undefined) return lowerRange;\n return `${lowerRange} and ${upperRange}`;\n};\n\n//Supports only SingleValue & Range filters\nexport const buildColumnFilterString = (\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n) => {\n if (Array.isArray(value)) {\n return buildBetweenQueryString(column, value);\n }\n return typeof value === \"string\" && !isValidTimeString(value)\n ? `${column.name} ${op} \"${value}\"`\n : `${column.name} ${op} ${convertValueToServerFormat(column, value)}`;\n};\n\nexport type ColumnFilterStoreEvents = {\n onChange: (filter: VuuFilter) => void;\n};\nexport class ColumnFilterStore extends EventEmitter<ColumnFilterStoreEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, ColumnFilterDescriptor>();\n #values = new Map<string, ColumnFilterValue>();\n\n constructor(\n query: VuuFilter = { filter: \"\" },\n columnDescriptors: ColumnDescriptor[] = [],\n ) {\n super();\n this.filter = query;\n this.loadColumnDescriptors(columnDescriptors);\n }\n\n private loadColumnDescriptors(columnDescriptors: ColumnDescriptor[]) {\n columnDescriptors.forEach((descriptor) => {\n this.#columns.set(descriptor.name, descriptor);\n });\n }\n\n addFilter(\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n ) {\n if (!this.#columns.has(column.name)) {\n this.#columns.set(column.name, column);\n }\n\n const { serverDataType = \"string\" } = column;\n const typedValue = Array.isArray(value)\n ? value\n : (getTypedValue(\n value.toString(),\n serverDataType,\n true,\n ) as ColumnFilterValue);\n\n this.#values.set(column.name, typedValue);\n this.#filters.set(column.name, {\n column,\n op,\n filterValue: typedValue,\n });\n this.emit(\"onChange\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n this.#values.delete(column.name);\n this.emit(\"onChange\", this.filter);\n return true;\n } else {\n this.emit(\"onChange\", this.filter);\n return false;\n }\n }\n\n resetFilters() {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n this.emit(\"onChange\", this.filter);\n }\n\n get columnValues(): Map<string, ColumnFilterValue> {\n return this.#values;\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n const result = Array.from(this.#filters.entries())\n .map(([column, descriptor]) => {\n const columnDescriptor = this.#columns.get(column);\n if (columnDescriptor)\n return buildColumnFilterString(\n columnDescriptor,\n descriptor.op,\n descriptor.filterValue,\n );\n })\n .filter((value) => value !== undefined);\n return {\n filter: result.join(result.length > 1 ? \" and \" : \"\"),\n };\n }\n }\n\n set filter(query: VuuFilter) {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n\n if (query.filter) {\n const f = parseFilter(query.filter);\n\n const addToStore = (f: Filter) => {\n if (f.column) {\n const defaultColumnDescriptor = toColumnDescriptor(f.column);\n if (!this.#columns.has(f.column)) {\n this.#columns.set(f.column, defaultColumnDescriptor);\n }\n const columnDescriptor: ColumnDescriptor =\n this.#columns.get(f.column) || defaultColumnDescriptor;\n\n const existing = this.#filters.get(f.column);\n if (isSingleValueFilter(f)) {\n const v = existing\n ? [\n existing.filterValue as string,\n convertValueToUIFormat(columnDescriptor, f.value as string),\n ]\n : convertValueToUIFormat(\n columnDescriptor,\n f.value as ColumnFilterValue,\n );\n\n this.#values.set(f.column, v as ColumnFilterValue);\n this.#filters.set(f.column, {\n column: columnDescriptor,\n op: f.op,\n filterValue: v as ColumnFilterValue,\n });\n }\n }\n };\n\n if (isMultiClauseFilter(f)) {\n f.filters.forEach((f) => addToStore(f));\n } else if (isFilterClause(f)) {\n addToStore(f);\n }\n }\n }\n}\n"],"names":["_columns","_filters","filter","EventEmitter","getTypedValue","isValidTimeString","Time","isDateTimeDataValue","isTimeDataValue","asTimeString","toCalendarDate","parseFilter","f","toColumnDescriptor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n ColumnFilterDescriptor,\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n asTimeString,\n isValidTimeString,\n Time,\n TimeString,\n toCalendarDate,\n} from \"../date\";\nimport {\n isDateTimeDataValue,\n isTimeDataValue,\n toColumnDescriptor,\n} from \"../column-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n\nconst convertValueToServerFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue | Time => {\n if (isValidTimeString(value)) {\n return Time(value as TimeString)\n .asDate()\n .getTime();\n } else if (isDateTimeDataValue(column)) {\n return new Date(value as number).getTime(); //value is already in utc milliseconds? conversion may not be required\n }\n return value;\n};\n\nconst convertValueToUIFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue => {\n if (isTimeDataValue(column)) {\n return asTimeString(value, false);\n } else if (isDateTimeDataValue(column)) {\n return toCalendarDate(new Date(value as number)).toString();\n } else {\n return value;\n }\n};\n\n//TODO extend this to support <= and >=\nconst buildBetweenQueryString = (column: ColumnDescriptor, range: string[]) => {\n const lowerRange: string | undefined =\n range[0] !== undefined && range[0].length > 0\n ? `${column.name} > ${convertValueToServerFormat(column, range[0])}`\n : undefined;\n\n const upperRange: string | undefined =\n range[1] !== undefined && range[1].length > 0\n ? `${column.name} < ${convertValueToServerFormat(column, range[1])}`\n : undefined;\n\n if (lowerRange === undefined) return lowerRange;\n if (upperRange === undefined) return lowerRange;\n return `${lowerRange} and ${upperRange}`;\n};\n\n//Supports only SingleValue & Range filters\nexport const buildColumnFilterString = (\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n) => {\n if (Array.isArray(value)) {\n return buildBetweenQueryString(column, value);\n }\n return typeof value === \"string\" && !isValidTimeString(value)\n ? `${column.name} ${op} \"${value}\"`\n : `${column.name} ${op} ${convertValueToServerFormat(column, value)}`;\n};\n\nexport type ColumnFilterStoreEvents = {\n onChange: (filter: VuuFilter) => void;\n};\nexport class ColumnFilterStore extends EventEmitter<ColumnFilterStoreEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, ColumnFilterDescriptor>();\n #values = new Map<string, ColumnFilterValue>();\n\n constructor(\n query: VuuFilter = { filter: \"\" },\n columnDescriptors: ColumnDescriptor[] = [],\n ) {\n super();\n this.filter = query;\n this.loadColumnDescriptors(columnDescriptors);\n }\n\n private loadColumnDescriptors(columnDescriptors: ColumnDescriptor[]) {\n columnDescriptors.forEach((descriptor) => {\n this.#columns.set(descriptor.name, descriptor);\n });\n }\n\n addFilter(\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n ) {\n if (!this.#columns.has(column.name)) {\n this.#columns.set(column.name, column);\n }\n\n const { serverDataType = \"string\" } = column;\n const typedValue = Array.isArray(value)\n ? value\n : (getTypedValue(\n value.toString(),\n serverDataType,\n true,\n ) as ColumnFilterValue);\n\n this.#values.set(column.name, typedValue);\n this.#filters.set(column.name, {\n column,\n op,\n filterValue: typedValue,\n });\n this.emit(\"onChange\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n this.#values.delete(column.name);\n this.emit(\"onChange\", this.filter);\n return true;\n } else {\n this.emit(\"onChange\", this.filter);\n return false;\n }\n }\n\n resetFilters() {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n this.emit(\"onChange\", this.filter);\n }\n\n get columnValues(): Map<string, ColumnFilterValue> {\n return this.#values;\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n const result = Array.from(this.#filters.entries())\n .map(([column, descriptor]) => {\n const columnDescriptor = this.#columns.get(column);\n if (columnDescriptor)\n return buildColumnFilterString(\n columnDescriptor,\n descriptor.op,\n descriptor.filterValue,\n );\n })\n .filter((value) => value !== undefined);\n return {\n filter: result.join(result.length > 1 ? \" and \" : \"\"),\n };\n }\n }\n\n set filter(query: VuuFilter) {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n\n if (query.filter) {\n const f = parseFilter(query.filter);\n\n const addToStore = (f: Filter) => {\n if (f.column) {\n const defaultColumnDescriptor = toColumnDescriptor(f.column);\n if (!this.#columns.has(f.column)) {\n this.#columns.set(f.column, defaultColumnDescriptor);\n }\n const columnDescriptor: ColumnDescriptor =\n this.#columns.get(f.column) || defaultColumnDescriptor;\n\n const existing = this.#filters.get(f.column);\n if (isSingleValueFilter(f)) {\n const v = existing\n ? [\n existing.filterValue as string,\n convertValueToUIFormat(columnDescriptor, f.value as string),\n ]\n : convertValueToUIFormat(\n columnDescriptor,\n f.value as ColumnFilterValue,\n );\n\n this.#values.set(f.column, v as ColumnFilterValue);\n this.#filters.set(f.column, {\n column: columnDescriptor,\n op: f.op,\n filterValue: v as ColumnFilterValue,\n });\n }\n }\n };\n\n if (isMultiClauseFilter(f)) {\n f.filters.forEach((f) => addToStore(f));\n } else if (isFilterClause(f)) {\n addToStore(f);\n }\n }\n }\n}\n"],"names":["_columns","_filters","filter","EventEmitter","getTypedValue","isValidTimeString","Time","isDateTimeDataValue","isTimeDataValue","asTimeString","toCalendarDate","parseFilter","f","toColumnDescriptor"],"mappings":"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"}
|
|
@@ -138,8 +138,8 @@ const convertValueToUIFormat = (column, value) => {
|
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
140
|
const buildBetweenQueryString = (column, range) => {
|
|
141
|
-
const lowerRange = range[0] !== void 0 && range[0].length > 0 ? `${column.name}
|
|
142
|
-
const upperRange = range[1] !== void 0 && range[1].length > 0 ? `${column.name}
|
|
141
|
+
const lowerRange = range[0] !== void 0 && range[0].length > 0 ? `${column.name} > ${convertValueToServerFormat(column, range[0])}` : void 0;
|
|
142
|
+
const upperRange = range[1] !== void 0 && range[1].length > 0 ? `${column.name} < ${convertValueToServerFormat(column, range[1])}` : void 0;
|
|
143
143
|
if (lowerRange === void 0) return lowerRange;
|
|
144
144
|
if (upperRange === void 0) return lowerRange;
|
|
145
145
|
return `${lowerRange} and ${upperRange}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n ColumnFilterDescriptor,\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n asTimeString,\n isValidTimeString,\n Time,\n TimeString,\n toCalendarDate,\n} from \"../date\";\nimport {\n isDateTimeDataValue,\n isTimeDataValue,\n toColumnDescriptor,\n} from \"../column-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n\nconst convertValueToServerFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue | Time => {\n if (isValidTimeString(value)) {\n return Time(value as TimeString)\n .asDate()\n .getTime();\n } else if (isDateTimeDataValue(column)) {\n return new Date(value as number).getTime(); //value is already in utc milliseconds? conversion may not be required\n }\n return value;\n};\n\nconst convertValueToUIFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue => {\n if (isTimeDataValue(column)) {\n return asTimeString(value, false);\n } else if (isDateTimeDataValue(column)) {\n return toCalendarDate(new Date(value as number)).toString();\n } else {\n return value;\n }\n};\n\nconst buildBetweenQueryString = (column: ColumnDescriptor, range: string[]) => {\n const lowerRange: string | undefined =\n range[0] !== undefined && range[0].length > 0\n ? `${column.name} >= ${convertValueToServerFormat(column, range[0])}`\n : undefined;\n\n const upperRange: string | undefined =\n range[1] !== undefined && range[1].length > 0\n ? `${column.name} <= ${convertValueToServerFormat(column, range[1])}`\n : undefined;\n\n if (lowerRange === undefined) return lowerRange;\n if (upperRange === undefined) return lowerRange;\n return `${lowerRange} and ${upperRange}`;\n};\n\n//Supports only SingleValue & Range filters\nexport const buildColumnFilterString = (\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n) => {\n if (Array.isArray(value)) {\n return buildBetweenQueryString(column, value);\n }\n return typeof value === \"string\" && !isValidTimeString(value)\n ? `${column.name} ${op} \"${value}\"`\n : `${column.name} ${op} ${convertValueToServerFormat(column, value)}`;\n};\n\nexport type ColumnFilterStoreEvents = {\n onChange: (filter: VuuFilter) => void;\n};\nexport class ColumnFilterStore extends EventEmitter<ColumnFilterStoreEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, ColumnFilterDescriptor>();\n #values = new Map<string, ColumnFilterValue>();\n\n constructor(\n query: VuuFilter = { filter: \"\" },\n columnDescriptors: ColumnDescriptor[] = [],\n ) {\n super();\n this.filter = query;\n this.loadColumnDescriptors(columnDescriptors);\n }\n\n private loadColumnDescriptors(columnDescriptors: ColumnDescriptor[]) {\n columnDescriptors.forEach((descriptor) => {\n this.#columns.set(descriptor.name, descriptor);\n });\n }\n\n addFilter(\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n ) {\n if (!this.#columns.has(column.name)) {\n this.#columns.set(column.name, column);\n }\n\n const { serverDataType = \"string\" } = column;\n const typedValue = Array.isArray(value)\n ? value\n : (getTypedValue(\n value.toString(),\n serverDataType,\n true,\n ) as ColumnFilterValue);\n\n this.#values.set(column.name, typedValue);\n this.#filters.set(column.name, {\n column,\n op,\n filterValue: typedValue,\n });\n this.emit(\"onChange\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n this.#values.delete(column.name);\n this.emit(\"onChange\", this.filter);\n return true;\n } else {\n this.emit(\"onChange\", this.filter);\n return false;\n }\n }\n\n resetFilters() {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n this.emit(\"onChange\", this.filter);\n }\n\n get columnValues(): Map<string, ColumnFilterValue> {\n return this.#values;\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n const result = Array.from(this.#filters.entries())\n .map(([column, descriptor]) => {\n const columnDescriptor = this.#columns.get(column);\n if (columnDescriptor)\n return buildColumnFilterString(\n columnDescriptor,\n descriptor.op,\n descriptor.filterValue,\n );\n })\n .filter((value) => value !== undefined);\n return {\n filter: result.join(result.length > 1 ? \" and \" : \"\"),\n };\n }\n }\n\n set filter(query: VuuFilter) {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n\n if (query.filter) {\n const f = parseFilter(query.filter);\n\n const addToStore = (f: Filter) => {\n if (f.column) {\n const defaultColumnDescriptor = toColumnDescriptor(f.column);\n if (!this.#columns.has(f.column)) {\n this.#columns.set(f.column, defaultColumnDescriptor);\n }\n const columnDescriptor: ColumnDescriptor =\n this.#columns.get(f.column) || defaultColumnDescriptor;\n\n const existing = this.#filters.get(f.column);\n if (isSingleValueFilter(f)) {\n const v = existing\n ? [\n existing.filterValue as string,\n convertValueToUIFormat(columnDescriptor, f.value as string),\n ]\n : convertValueToUIFormat(\n columnDescriptor,\n f.value as ColumnFilterValue,\n );\n\n this.#values.set(f.column, v as ColumnFilterValue);\n this.#filters.set(f.column, {\n column: columnDescriptor,\n op: f.op,\n filterValue: v as ColumnFilterValue,\n });\n }\n }\n };\n\n if (isMultiClauseFilter(f)) {\n f.filters.forEach((f) => addToStore(f));\n } else if (isFilterClause(f)) {\n addToStore(f);\n }\n }\n }\n}\n"],"names":["_columns","_filters","filter","f"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n ColumnFilterDescriptor,\n ColumnFilterOp,\n ColumnFilterValue,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n asTimeString,\n isValidTimeString,\n Time,\n TimeString,\n toCalendarDate,\n} from \"../date\";\nimport {\n isDateTimeDataValue,\n isTimeDataValue,\n toColumnDescriptor,\n} from \"../column-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n\nconst convertValueToServerFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue | Time => {\n if (isValidTimeString(value)) {\n return Time(value as TimeString)\n .asDate()\n .getTime();\n } else if (isDateTimeDataValue(column)) {\n return new Date(value as number).getTime(); //value is already in utc milliseconds? conversion may not be required\n }\n return value;\n};\n\nconst convertValueToUIFormat = (\n column: ColumnDescriptor,\n value: ColumnFilterValue,\n): ColumnFilterValue => {\n if (isTimeDataValue(column)) {\n return asTimeString(value, false);\n } else if (isDateTimeDataValue(column)) {\n return toCalendarDate(new Date(value as number)).toString();\n } else {\n return value;\n }\n};\n\n//TODO extend this to support <= and >=\nconst buildBetweenQueryString = (column: ColumnDescriptor, range: string[]) => {\n const lowerRange: string | undefined =\n range[0] !== undefined && range[0].length > 0\n ? `${column.name} > ${convertValueToServerFormat(column, range[0])}`\n : undefined;\n\n const upperRange: string | undefined =\n range[1] !== undefined && range[1].length > 0\n ? `${column.name} < ${convertValueToServerFormat(column, range[1])}`\n : undefined;\n\n if (lowerRange === undefined) return lowerRange;\n if (upperRange === undefined) return lowerRange;\n return `${lowerRange} and ${upperRange}`;\n};\n\n//Supports only SingleValue & Range filters\nexport const buildColumnFilterString = (\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n) => {\n if (Array.isArray(value)) {\n return buildBetweenQueryString(column, value);\n }\n return typeof value === \"string\" && !isValidTimeString(value)\n ? `${column.name} ${op} \"${value}\"`\n : `${column.name} ${op} ${convertValueToServerFormat(column, value)}`;\n};\n\nexport type ColumnFilterStoreEvents = {\n onChange: (filter: VuuFilter) => void;\n};\nexport class ColumnFilterStore extends EventEmitter<ColumnFilterStoreEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, ColumnFilterDescriptor>();\n #values = new Map<string, ColumnFilterValue>();\n\n constructor(\n query: VuuFilter = { filter: \"\" },\n columnDescriptors: ColumnDescriptor[] = [],\n ) {\n super();\n this.filter = query;\n this.loadColumnDescriptors(columnDescriptors);\n }\n\n private loadColumnDescriptors(columnDescriptors: ColumnDescriptor[]) {\n columnDescriptors.forEach((descriptor) => {\n this.#columns.set(descriptor.name, descriptor);\n });\n }\n\n addFilter(\n column: ColumnDescriptor,\n op: ColumnFilterOp,\n value: ColumnFilterValue,\n ) {\n if (!this.#columns.has(column.name)) {\n this.#columns.set(column.name, column);\n }\n\n const { serverDataType = \"string\" } = column;\n const typedValue = Array.isArray(value)\n ? value\n : (getTypedValue(\n value.toString(),\n serverDataType,\n true,\n ) as ColumnFilterValue);\n\n this.#values.set(column.name, typedValue);\n this.#filters.set(column.name, {\n column,\n op,\n filterValue: typedValue,\n });\n this.emit(\"onChange\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n this.#values.delete(column.name);\n this.emit(\"onChange\", this.filter);\n return true;\n } else {\n this.emit(\"onChange\", this.filter);\n return false;\n }\n }\n\n resetFilters() {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n this.emit(\"onChange\", this.filter);\n }\n\n get columnValues(): Map<string, ColumnFilterValue> {\n return this.#values;\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n const result = Array.from(this.#filters.entries())\n .map(([column, descriptor]) => {\n const columnDescriptor = this.#columns.get(column);\n if (columnDescriptor)\n return buildColumnFilterString(\n columnDescriptor,\n descriptor.op,\n descriptor.filterValue,\n );\n })\n .filter((value) => value !== undefined);\n return {\n filter: result.join(result.length > 1 ? \" and \" : \"\"),\n };\n }\n }\n\n set filter(query: VuuFilter) {\n this.#columns.clear();\n this.#filters.clear();\n this.#values.clear();\n\n if (query.filter) {\n const f = parseFilter(query.filter);\n\n const addToStore = (f: Filter) => {\n if (f.column) {\n const defaultColumnDescriptor = toColumnDescriptor(f.column);\n if (!this.#columns.has(f.column)) {\n this.#columns.set(f.column, defaultColumnDescriptor);\n }\n const columnDescriptor: ColumnDescriptor =\n this.#columns.get(f.column) || defaultColumnDescriptor;\n\n const existing = this.#filters.get(f.column);\n if (isSingleValueFilter(f)) {\n const v = existing\n ? [\n existing.filterValue as string,\n convertValueToUIFormat(columnDescriptor, f.value as string),\n ]\n : convertValueToUIFormat(\n columnDescriptor,\n f.value as ColumnFilterValue,\n );\n\n this.#values.set(f.column, v as ColumnFilterValue);\n this.#filters.set(f.column, {\n column: columnDescriptor,\n op: f.op,\n filterValue: v as ColumnFilterValue,\n });\n }\n }\n };\n\n if (isMultiClauseFilter(f)) {\n f.filters.forEach((f) => addToStore(f));\n } else if (isFilterClause(f)) {\n addToStore(f);\n }\n }\n }\n}\n"],"names":["_columns","_filters","filter","f"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.13.
|
|
2
|
+
"version": "0.13.40",
|
|
3
3
|
"author": "heswell",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"types": "types/index.d.ts",
|
|
6
6
|
"devDependencies": {
|
|
7
|
-
"@vuu-ui/vuu-data-types": "0.13.
|
|
8
|
-
"@vuu-ui/vuu-table-types": "0.13.
|
|
9
|
-
"@vuu-ui/vuu-filter-types": "0.13.
|
|
10
|
-
"@vuu-ui/vuu-protocol-types": "0.13.
|
|
7
|
+
"@vuu-ui/vuu-data-types": "0.13.40",
|
|
8
|
+
"@vuu-ui/vuu-table-types": "0.13.40",
|
|
9
|
+
"@vuu-ui/vuu-filter-types": "0.13.40",
|
|
10
|
+
"@vuu-ui/vuu-protocol-types": "0.13.40"
|
|
11
11
|
},
|
|
12
12
|
"peerDependencies": {
|
|
13
13
|
"@internationalized/date": "^3.0.0",
|
|
14
|
-
"@vuu-ui/vuu-filter-parser": "0.13.
|
|
14
|
+
"@vuu-ui/vuu-filter-parser": "0.13.40",
|
|
15
15
|
"clsx": "^2.0.0",
|
|
16
16
|
"react": "^19.1.0",
|
|
17
17
|
"react-dom": "^19.1.0"
|