From ca04ed80c9b13f2626a43895106019e854b032d0 Mon Sep 17 00:00:00 2001 From: Simon Cambier Date: Sat, 30 Apr 2022 20:18:26 +0200 Subject: [PATCH] #25 - fixed matches algorithm --- src/components/ModalInFile.svelte | 11 ++++++---- src/components/ModalVault.svelte | 13 ++++++----- src/components/ResultItemVault.svelte | 1 + src/query.ts | 18 ++++++++++------ src/search.ts | 31 ++++++++++++--------------- src/utils.ts | 2 +- 6 files changed, 42 insertions(+), 34 deletions(-) diff --git a/src/components/ModalInFile.svelte b/src/components/ModalInFile.svelte index 83d35d9..2ca772d 100644 --- a/src/components/ModalInFile.svelte +++ b/src/components/ModalInFile.svelte @@ -9,14 +9,15 @@ import { excerptAfter, type ResultNote, type SearchMatch, -} from "../globals" -import { loopIndex } from "../utils" +} from "src/globals" +import { loopIndex } from "src/utils" import { onDestroy, onMount, tick } from "svelte" import { MarkdownView } from "obsidian" -import { getSuggestions } from "../search" +import { getSuggestions } from "src/search" import ModalContainer from "./ModalContainer.svelte" import type { OmnisearchInFileModal, OmnisearchVaultModal } from "src/modals" import ResultItemInFile from "./ResultItemInFile.svelte" +import { Query } from "src/query" export let modal: OmnisearchInFileModal export let parent: OmnisearchVaultModal | null = null @@ -26,6 +27,7 @@ export let searchQuery: string let groupedOffsets: number[] = [] let selectedIndex = 0 let note: ResultNote | null = null +let query: Query onMount(() => { if (lastSearch && !searchQuery) { @@ -44,7 +46,8 @@ onDestroy(() => { $: (async () => { if (searchQuery) { - note = (await getSuggestions(searchQuery, { singleFilePath }))[0] ?? null + query = new Query(searchQuery) + note = (await getSuggestions(query, { singleFilePath }))[0] ?? null lastSearch = searchQuery } selectedIndex = 0 diff --git a/src/components/ModalVault.svelte b/src/components/ModalVault.svelte index aadf23e..fe11acb 100644 --- a/src/components/ModalVault.svelte +++ b/src/components/ModalVault.svelte @@ -7,17 +7,19 @@ import { TFile } from "obsidian" import { onMount, tick } from "svelte" import InputSearch from "./InputSearch.svelte" import ModalContainer from "./ModalContainer.svelte" -import { eventBus, type ResultNote } from "../globals" -import { createNote, openNote } from "../notes" -import { getSuggestions } from "../search" -import { loopIndex } from "../utils" +import { eventBus, type ResultNote } from "src/globals" +import { createNote, openNote } from "src/notes" +import { getSuggestions } from "src/search" +import { loopIndex } from "src/utils" import { OmnisearchInFileModal, type OmnisearchVaultModal } from "src/modals" import ResultItemVault from "./ResultItemVault.svelte" +import { Query } from "src/query" export let modal: OmnisearchVaultModal let selectedIndex = 0 let searchQuery: string let resultNotes: ResultNote[] = [] +let query: Query $: selectedNote = resultNotes[selectedIndex] $: if (searchQuery) { @@ -37,7 +39,8 @@ onMount(() => { }) async function updateResults() { - resultNotes = await getSuggestions(searchQuery) + query = new Query(searchQuery) + resultNotes = await getSuggestions(query) lastSearch = searchQuery selectedIndex = 0 scrollIntoView() diff --git a/src/components/ResultItemVault.svelte b/src/components/ResultItemVault.svelte index 5430c13..2dc47f7 100644 --- a/src/components/ResultItemVault.svelte +++ b/src/components/ResultItemVault.svelte @@ -1,4 +1,5 @@