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..e972164 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -6,16 +6,28 @@ 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"; + 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[][] = []; 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 +51,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,14 +61,18 @@

{selected_crates.length} awesome drivers waiting for you!

-
+
+
+ + +
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 new file mode 100644 index 0000000..db92bea --- /dev/null +++ b/frontend/src/lib/TextFilter.svelte @@ -0,0 +1,33 @@ + + + \ No newline at end of file