From 9883a2982a59929dd78a9c9685b94646623696cc Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 16 Jun 2022 13:07:24 +0200 Subject: [PATCH 1/3] search in columns --- packages/tools/src/filterName.ts | 23 ++++++++++++++++--- .../src/appobj/DatabaseObjectAppObject.svelte | 3 ++- packages/web/src/widgets/SqlObjectList.svelte | 2 +- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/packages/tools/src/filterName.ts b/packages/tools/src/filterName.ts index e8110e12f..76a25caa4 100644 --- a/packages/tools/src/filterName.ts +++ b/packages/tools/src/filterName.ts @@ -1,4 +1,9 @@ import _compact from 'lodash/compact'; +import _isString from 'lodash/isString'; + +export interface FilterNameDefinition { + childName: string; +} // original C# variant // public bool Match(string value) @@ -54,17 +59,29 @@ function fuzzysearch(needle, haystack) { return true; } -export function filterName(filter: string, ...names: string[]) { +export function filterName(filter: string, ...names: (string | FilterNameDefinition)[]) { if (!filter) return true; // const camelVariants = [name.replace(/[^A-Z]/g, '')] const tokens = filter.split(' ').map(x => x.trim()); const namesCompacted = _compact(names); + + // @ts-ignore + const namesOwn: string[] = namesCompacted.filter(x => _isString(x)); + // @ts-ignore + const namesChild: string[] = namesCompacted.filter(x => x.childName).map(x => x.childName); + for (const token of tokens) { const tokenUpper = token.toUpperCase(); - const found = namesCompacted.find(name => fuzzysearch(tokenUpper, name.toUpperCase())); - if (!found) return false; + if (tokenUpper.startsWith('#')) { + const tokenUpperSub = tokenUpper.substring(1); + const found = namesChild.find(name => fuzzysearch(tokenUpperSub, name.toUpperCase())); + if (!found) return false; + } else { + const found = namesOwn.find(name => fuzzysearch(tokenUpper, name.toUpperCase())); + if (!found) return false; + } } return true; diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index 3a1781630..547b4d794 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -1,6 +1,7 @@ !driver.isElectronOnly || electron) .map(driver => ({