From 79bb82845a1213bfdb555735b0561f5a3983f0e6 Mon Sep 17 00:00:00 2001 From: Thanos Apollo Date: Tue, 16 Apr 2024 14:01:44 +0300 Subject: [Feature] gnosis-dashboard: Search for note - Query database for note & display notes that match query on dashboard --- gnosis.el | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/gnosis.el b/gnosis.el index f9eaecd..8179e2a 100644 --- a/gnosis.el +++ b/gnosis.el @@ -1614,14 +1614,16 @@ Return note ids for notes that match QUERY." else collect (prin1-to-string item))) -(cl-defun gnosis-collect-note-ids (&key (tags nil) (due nil) (deck nil)) - "Return list of note ids based on TAGS, DUE, DECKS. +(cl-defun gnosis-collect-note-ids (&key (tags nil) (due nil) (deck nil) (query nil)) + "Return list of note ids based on TAGS, DUE, DECKS, QUERY. TAGS: boolean value, t to specify tags. DUE: boolean value, t to specify due notes. -DECK: boolean value, t to specify notes from deck." - (cl-assert (and (booleanp due) (booleanp tags) (booleanp deck)) nil "provide boolean value") - (cond ((and (null tags) (null due) (null deck)) +DECK: boolean value, t to specify notes from deck. +QUERY: String value," + (cl-assert (and (booleanp due) (booleanp tags) (booleanp deck) (or (stringp query) (null query))) + nil "provide boolean value") + (cond ((and (null tags) (null due) (null deck) (null query)) (gnosis-select 'id 'notes '1=1 t)) ;; All due notes ((and (null tags) due (null deck)) @@ -1637,7 +1639,9 @@ DECK: boolean value, t to specify notes from deck." (gnosis-get-deck-notes nil nil)) ;; All due notes for deck ((and (null tags) due deck) - (gnosis-get-deck-notes nil t)))) + (gnosis-get-deck-notes nil t)) + ((and (null tags) (null due) (null deck) query) + (gnosis-search-note query)))) (defun gnosis-dashboard-output-notes (note-ids) "Return NOTE-IDS contents on gnosis dashboard." @@ -1754,12 +1758,14 @@ DASHBOARD-TYPE: either 'Notes' or 'Decks' to display the respective dashboard." "Display dashboard for:" '((?n "notes") (?d "decks") - (?t "tags"))))))) + (?t "tags") + (?s "search"))))))) (if note-ids (gnosis-dashboard-output-notes note-ids) (pcase dashboard-type ("notes" (gnosis-dashboard-output-notes (gnosis-collect-note-ids))) ("decks" (gnosis-dashboard-output-decks)) - ("tags" (gnosis-dashboard-output-notes (gnosis-collect-note-ids :tags t))))) + ("tags" (gnosis-dashboard-output-notes (gnosis-collect-note-ids :tags t))) + ("search" (gnosis-dashboard-output-notes (gnosis-collect-note-ids :query (read-string "Search for note: ")))))) (tabulated-list-print t))) (defun gnosis-db-init () -- cgit v1.2.3