mirror of https://github.com/logseq/logseq
enhance: page name index sync normalization; e2e alias diacritic test
parent
226541ff5e
commit
694dfe52ec
|
@ -8,7 +8,7 @@ import { IsMac, createRandomPage, newBlock, newInnerBlock, randomString, lastInn
|
|||
* Consider diacritics
|
||||
***/
|
||||
|
||||
async function alias_test (page, page_name: string){
|
||||
async function alias_test (page, page_name: string, search_kws: string[]){
|
||||
let hotkeyOpenLink = 'Control+o'
|
||||
let hotkeyBack = 'Control+['
|
||||
if (IsMac) {
|
||||
|
@ -69,9 +69,12 @@ async function alias_test (page, page_name: string){
|
|||
// TODO: test alias from graph clicking
|
||||
|
||||
// test alias from search
|
||||
for (let kw of search_kws){
|
||||
let kw_name = kw + ' alias ' + rand
|
||||
|
||||
await page.click('#search-button')
|
||||
await page.waitForSelector('[placeholder="Search or create page"]')
|
||||
await page.fill('[placeholder="Search or create page"]', alias_name)
|
||||
await page.fill('[placeholder="Search or create page"]', kw_name)
|
||||
await page.waitForTimeout(500)
|
||||
|
||||
const results = await page.$$('#ui__ac-inner .block')
|
||||
|
@ -95,14 +98,14 @@ async function alias_test (page, page_name: string){
|
|||
// test search clicking (block)
|
||||
await page.click('#search-button')
|
||||
await page.waitForSelector('[placeholder="Search or create page"]')
|
||||
await page.fill('[placeholder="Search or create page"]', alias_name)
|
||||
await page.fill('[placeholder="Search or create page"]', kw_name)
|
||||
await page.waitForTimeout(500)
|
||||
page.click(":nth-match(.menu-link, 2)")
|
||||
await page.waitForNavigation()
|
||||
await page.waitForTimeout(100)
|
||||
await lastInnerBlock(page)
|
||||
expect(await page.inputValue(':nth-match(textarea, 1)')).toBe("[[" + alias_name + "]]")
|
||||
await page.keyboard.press(hotkeyBack)
|
||||
await page.keyboard.press(hotkeyBack)}
|
||||
|
||||
// TODO: search clicking (alias property)
|
||||
}
|
||||
|
@ -113,5 +116,5 @@ async function alias_test (page, page_name: string){
|
|||
|
||||
|
||||
test('page diacritic alias', async ({ page }) => {
|
||||
await alias_test(page, "ü")
|
||||
await alias_test(page, "ü", ["ü", "ü", "Ü"])
|
||||
})
|
|
@ -98,6 +98,7 @@
|
|||
|
||||
(rum/defc page-search < rum/reactive
|
||||
{:will-unmount (fn [state] (reset! editor-handler/*selected-text nil) state)}
|
||||
"Editor embedded page searching"
|
||||
[id format]
|
||||
(when (state/sub :editor/show-page-search?)
|
||||
(let [pos (:editor/last-saved-cursor @state/state)
|
||||
|
@ -116,7 +117,7 @@
|
|||
matched-pages (when-not (string/blank? q)
|
||||
(editor-handler/get-matched-pages q))
|
||||
matched-pages (cond
|
||||
(contains? (set (map util/search-normalize matched-pages)) (util/search-normalize (string/trim q)))
|
||||
(contains? (set (map util/page-name-sanity-lc matched-pages)) (util/page-name-sanity-lc (string/trim q))) ;; TODO: merge with frontend.search.exact-matched?
|
||||
matched-pages
|
||||
|
||||
(empty? matched-pages)
|
||||
|
|
|
@ -97,8 +97,8 @@
|
|||
search-mode (state/sub :search/mode)
|
||||
new-page (if (or
|
||||
(and (seq pages)
|
||||
(= (util/safe-search-normalize search-q)
|
||||
(util/safe-search-normalize (:data (first pages)))))
|
||||
(= (util/page-name-sanity-lc search-q)
|
||||
(util/page-name-sanity-lc (:data (first pages)))))
|
||||
(nil? result)
|
||||
all?)
|
||||
[]
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
(protocol/transact-blocks! engine data)))
|
||||
|
||||
(defn exact-matched?
|
||||
"Check if two strings the same thing"
|
||||
"Check if two strings points toward same file"
|
||||
[q match]
|
||||
(when (and (string? q) (string? match))
|
||||
(boolean
|
||||
|
@ -175,8 +175,9 @@
|
|||
(set))
|
||||
pages-to-add (->> (filter (fn [page]
|
||||
(contains? pages-to-add-set (:db/id page))) pages-result)
|
||||
(map (fn [p] {:name (or (:block/original-name p)
|
||||
(:block/name p))})))
|
||||
(map (fn [p] (or (:block/original-name p)
|
||||
(:block/name p))))
|
||||
(map search-db/original-page-name->index))
|
||||
pages-to-remove-set (->> (remove :added pages)
|
||||
(map :v))]
|
||||
(swap! search-db/indices update-in [repo :pages]
|
||||
|
@ -186,7 +187,7 @@
|
|||
(.remove indice
|
||||
(fn [page]
|
||||
(= (util/safe-page-name-sanity-lc page-name)
|
||||
(util/safe-page-name-sanity-lc (gobj/get page "name"))))))
|
||||
(util/safe-page-name-sanity-lc (gobj/get page "original-name"))))))
|
||||
(when (seq pages-to-add)
|
||||
(doseq [page pages-to-add]
|
||||
(.add indice (bean/->js page)))))
|
||||
|
|
|
@ -55,13 +55,18 @@
|
|||
(swap! indices assoc-in [repo :blocks] indice)
|
||||
indice))
|
||||
|
||||
(defn original-page-name->index
|
||||
[p] {:name (util/search-normalize p)
|
||||
:original-name p})
|
||||
|
||||
(defn make-pages-indice!
|
||||
"Build a page indice from scratch.
|
||||
Incremental page indice is implemented in frontend.search.sync-search-indice!"
|
||||
[]
|
||||
(when-let [repo (state/get-current-repo)]
|
||||
(let [pages (->> (db/get-pages (state/get-current-repo))
|
||||
(remove string/blank?)
|
||||
(map (fn [p] {:name (util/search-normalize p)
|
||||
:original-name p}))
|
||||
(map original-page-name->index)
|
||||
(bean/->js))
|
||||
indice (fuse. pages
|
||||
(clj->js {:keys ["name"]
|
||||
|
|
Loading…
Reference in New Issue