From c99d7afa1c7d002a2efb99e713f6b53589c74dea Mon Sep 17 00:00:00 2001 From: Tamme Dittrich Date: Fri, 23 Aug 2024 14:01:53 +0200 Subject: [PATCH 1/2] Implement basic text search --- frontend/package-lock.json | 11 ++++++++++ frontend/package.json | 8 +++++--- frontend/src/App.svelte | 6 ++++-- frontend/src/lib/TextFilter.svelte | 32 ++++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 frontend/src/lib/TextFilter.svelte diff --git a/frontend/package-lock.json b/frontend/package-lock.json index bc77a76..e39899f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -7,6 +7,9 @@ "": { "name": "frontend", "version": "0.0.0", + "dependencies": { + "fuse.js": "^7.0.0" + }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", "@tsconfig/svelte": "^5.0.2", @@ -989,6 +992,14 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/fuse.js": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz", + "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==", + "engines": { + "node": ">=10" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", diff --git a/frontend/package.json b/frontend/package.json index 7b6e8c4..a03ced8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,12 +14,14 @@ "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", "@tsconfig/svelte": "^5.0.2", + "prettier": "^3.3.3", "svelte": "^4.2.12", "svelte-check": "^3.6.7", "tslib": "^2.6.2", "typescript": "^5.2.2", - "vite": "^5.4.2", - "prettier": "^3.3.3" + "vite": "^5.4.2" }, - "dependencies": {} + "dependencies": { + "fuse.js": "^7.0.0" + } } diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index d8e5668..9410636 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -6,6 +6,7 @@ import type {FullCrate, Indexes} from "./crate-db"; import Filter from "./lib/Filter.svelte"; import ForkMe from "./lib/ForkMe.svelte"; + import TextFilter from "./lib/TextFilter.svelte"; export let BUILD_DATE: string; @@ -16,6 +17,7 @@ let selected_l: number[][] = []; let selected_r: number[][] = []; let selected_i: number[][] = []; + let selected_f: number[][] = []; function combine_filters(crate_length: number, selected: any): number[] { let selected_crates = Array.from({length: crate_length}, (_, i) => i + 1); @@ -39,7 +41,7 @@ } } - $: selected_crates = combine_filters(t_crates.length, [selected_d, selected_l, selected_r, selected_i]); + $: selected_crates = combine_filters(t_crates.length, [selected_d, selected_l, selected_r, selected_i, selected_f]); @@ -49,8 +51,8 @@

{selected_crates.length} awesome drivers waiting for you!

-
+ diff --git a/frontend/src/lib/TextFilter.svelte b/frontend/src/lib/TextFilter.svelte new file mode 100644 index 0000000..d5ef970 --- /dev/null +++ b/frontend/src/lib/TextFilter.svelte @@ -0,0 +1,32 @@ + + +
+ +
\ No newline at end of file From ef3ba17644f6e8a4aacd406b3c6d6f2913df1c24 Mon Sep 17 00:00:00 2001 From: Tamme Dittrich Date: Wed, 18 Sep 2024 09:28:29 +0200 Subject: [PATCH 2/2] WIP Add a suggestion search for filters --- frontend/src/App.svelte | 14 ++++++ frontend/src/lib/CategoryFilter.svelte | 67 ++++++++++++++++++++++++++ frontend/src/lib/TextFilter.svelte | 5 +- 3 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 frontend/src/lib/CategoryFilter.svelte diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index 9410636..e972164 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -7,12 +7,22 @@ import Filter from "./lib/Filter.svelte"; import ForkMe from "./lib/ForkMe.svelte"; import TextFilter from "./lib/TextFilter.svelte"; + import CategoryFilter from "./lib/CategoryFilter.svelte"; export let BUILD_DATE: string; const t_crates = crates as FullCrate[]; let t_indexes = indexes as Indexes; + const filters = Object.fromEntries([ + "category", + "dependencies", + "interfaces", + "license", + "package", + "rust_version", + ].map((cat) => [cat, Object.keys(t_indexes[cat] as any)])); + let selected_d: number[][] = []; let selected_l: number[][] = []; let selected_r: number[][] = []; @@ -59,6 +69,10 @@
+
+ + +
Page generated at: {BUILD_DATE}
diff --git a/frontend/src/lib/CategoryFilter.svelte b/frontend/src/lib/CategoryFilter.svelte new file mode 100644 index 0000000..7b8d735 --- /dev/null +++ b/frontend/src/lib/CategoryFilter.svelte @@ -0,0 +1,67 @@ + + + + +
    + {#each top_results as res} +
  • {res.item.filter}: {res.item.value}
  • + {/each} +
\ No newline at end of file diff --git a/frontend/src/lib/TextFilter.svelte b/frontend/src/lib/TextFilter.svelte index d5ef970..db92bea 100644 --- a/frontend/src/lib/TextFilter.svelte +++ b/frontend/src/lib/TextFilter.svelte @@ -27,6 +27,7 @@ $: selected = search === "" ? [] : [results.map((r) => r.refIndex)] -
+
\ No newline at end of file + \ No newline at end of file