Add built-in marker pages

pull/645/head
Tienson Qin 2020-06-24 17:40:31 +08:00
parent e9c4691feb
commit 41625296b5
7 changed files with 56 additions and 18 deletions

View File

@ -239,7 +239,7 @@
(count prefix))))))
(def marker-pattern
#"(NOW|LATER|TODO|DOING|DONE|WAIT|CANCELED|STARTED|IN-PROGRESS)?\s?")
#"(NOW|LATER|TODO|DOING|DONE|WAIT|WAITING|CANCELED|STARTED|IN-PROGRESS)?\s?")
(defmethod handle-step :editor/set-marker [[_ marker] format]
(when-let [input-id (state/get-edit-input-id)]

View File

@ -856,7 +856,7 @@
:group-by-page? true)
{:style {:margin-top "0.25rem"
:margin-left "0.25rem"}})
[:div.text-sm "Empty"])]))
[:div.text-sm.mt-2 "Empty"])]))
(rum/defc admonition
[config type options result]

View File

@ -75,7 +75,7 @@
(hiccup/custom-query {:start-level 2} {:query-title title}
query)])]))))
(reference/references title false)]))
(reference/references title false false)]))
(rum/defc journals <
[latest-journals]

View File

@ -61,10 +61,20 @@
page-name)
page (db/entity repo [:page/name page-name])
file (:page/file page)]
(if (and sidebar? file (empty? raw-page-headings))
(cond
(db/marker-page? page-name)
[:div
[:h1.title
(string/upper-case page-name)]
[:div.ml-2
(reference/references page-name false true)]]
(and sidebar? file (empty? raw-page-headings))
(do
(state/sidebar-remove-block! (:sidebar/idx option))
[:div.text-sm "Empty"])
:else
(let [file-path (and (:db/id file) (:file/path (db/entity repo (:db/id file))))
content (db/get-file-no-sub repo file-path)
page-headings (db/with-dummy-heading raw-page-headings format
@ -185,7 +195,7 @@
query)])])))
;; referenced headings
(reference/references page-name false)]))))
(reference/references page-name false false)]))))
(rum/defc all-pages < rum/reactive
[]

View File

@ -13,13 +13,15 @@
[frontend.db :as db]))
(rum/defc references < rum/reactive
[page-or-tag-name tag?]
[page-or-tag-name tag? marker?]
(when page-or-tag-name
(let [heading? (util/uuid-string? page-or-tag-name)
heading-id (and heading? (uuid page-or-tag-name))
page-or-tag-name (string/lower-case page-or-tag-name)
encoded-page-or-tag-name (util/url-encode page-or-tag-name)
ref-headings (cond
marker?
(db/get-marker-headings (state/get-current-repo) page-or-tag-name)
tag?
(db/get-tag-referenced-headings page-or-tag-name)
heading-id

View File

@ -15,7 +15,7 @@
(when-let [tag (get-tag state)]
[:div.tag
[:h1.title (str "#" tag)]
(reference/references tag true)]))
(reference/references tag true false)]))
(defn render-graph
[state]

View File

@ -770,19 +770,45 @@
sorted (sort-by-pos result)]
(with-repo repo-url sorted)))
(defn marker-page?
[page]
(contains?
#{"NOW" "LATER" "TODO" "DOING"
"DONE" "WAIT" "WAITING" "CANCELED" "STARTED" "IN-PROGRESS"}
(string/upper-case page)))
(defn get-marker-headings
[repo-url marker]
(let [marker (string/upper-case marker)]
(some->>
(q repo-url [:marker/headings marker]
{:use-cache? true}
'[:find (pull ?h [*])
:in $ ?marker
:where
[?h :heading/marker ?m]
[(= ?marker ?m)]]
marker)
react
seq-flatten
sort-by-pos
(with-repo repo-url)
(group-by-page))))
(defn get-page-headings
[repo-url page]
(let [page-id (:db/id (entity repo-url [:page/name page]))]
(some->
(q repo-url [:page/headings page-id]
{:use-cache? true
:transform-fn #(page-headings-transform repo-url %)}
'[:find (pull ?heading [*])
:in $ ?page-id
:where
[?heading :heading/page ?page-id]]
page-id)
react)))
(let [page (string/lower-case page)]
(let [page-id (:db/id (entity repo-url [:page/name page]))]
(some->
(q repo-url [:page/headings page-id]
{:use-cache? true
:transform-fn #(page-headings-transform repo-url %)}
'[:find (pull ?heading [*])
:in $ ?page-id
:where
[?heading :heading/page ?page-id]]
page-id)
react))))
(defn heading-and-children-transform
[result repo-url heading-uuid level]