mirror of https://github.com/logseq/logseq
enhance(perf): add :ref/linked-references-collapsed-threshold option
Related to #2792pull/2830/head 0.4.0-perf
parent
f59f59b9ae
commit
d6a011fd35
|
@ -28,20 +28,20 @@
|
|||
(when (seq references)
|
||||
(let [filters (rum/react filters-atom)]
|
||||
[:div.mt-5.sm:mt-4.sm:flex.sm.gap-1.flex-wrap
|
||||
(for [reference references]
|
||||
(let [lc-reference (string/lower-case reference)
|
||||
filtered (get filters lc-reference)
|
||||
color (condp = filtered
|
||||
true "text-green-400"
|
||||
false "text-red-400"
|
||||
nil)]
|
||||
[:button.border.rounded.px-1.mb-1.mr-1 {:key reference :class color :style {:border-color "currentColor"}
|
||||
:on-click (fn [e]
|
||||
(swap! filters-atom #(if (nil? (get filters lc-reference))
|
||||
(assoc % lc-reference (not (.-shiftKey e)))
|
||||
(dissoc % lc-reference)))
|
||||
(page-handler/save-filter! page-name @filters-atom))}
|
||||
reference]))]))])
|
||||
(for [reference references]
|
||||
(let [lc-reference (string/lower-case reference)
|
||||
filtered (get filters lc-reference)
|
||||
color (condp = filtered
|
||||
true "text-green-400"
|
||||
false "text-red-400"
|
||||
nil)]
|
||||
[:button.border.rounded.px-1.mb-1.mr-1 {:key reference :class color :style {:border-color "currentColor"}
|
||||
:on-click (fn [e]
|
||||
(swap! filters-atom #(if (nil? (get filters lc-reference))
|
||||
(assoc % lc-reference (not (.-shiftKey e)))
|
||||
(dissoc % lc-reference)))
|
||||
(page-handler/save-filter! page-name @filters-atom))}
|
||||
reference]))]))])
|
||||
|
||||
(defn filter-dialog
|
||||
[filters-atom references page-name]
|
||||
|
@ -52,11 +52,11 @@
|
|||
[block level]
|
||||
(if (:block/children block)
|
||||
(-> (update block :block/children
|
||||
(fn [blocks]
|
||||
(map (fn [block]
|
||||
(let [level (inc level)
|
||||
block (assoc block :ref/level level)]
|
||||
(block-with-ref-level block level))) blocks)))
|
||||
(fn [blocks]
|
||||
(map (fn [block]
|
||||
(let [level (inc level)
|
||||
block (assoc block :ref/level level)]
|
||||
(block-with-ref-level block level))) blocks)))
|
||||
(assoc :ref/level level))
|
||||
(assoc block :ref/level level)))
|
||||
|
||||
|
@ -86,72 +86,74 @@
|
|||
:else
|
||||
(db/get-page-referenced-blocks page-name))
|
||||
ref-pages (map (comp :block/original-name first) ref-blocks)
|
||||
references (db/get-page-linked-refs-refed-pages repo page-name)
|
||||
references (->> (concat ref-pages references)
|
||||
(remove nil?)
|
||||
(distinct))
|
||||
scheduled-or-deadlines (if (and journal?
|
||||
(not (true? (state/scheduled-deadlines-disabled?)))
|
||||
(= page-name (string/lower-case (date/journal-name))))
|
||||
(db/get-date-scheduled-or-deadlines (string/capitalize page-name))
|
||||
nil)
|
||||
references (db/get-page-linked-refs-refed-pages repo page-name)
|
||||
references (->> (concat ref-pages references)
|
||||
(remove nil?)
|
||||
(distinct))
|
||||
filter-state (rum/react filters-atom)
|
||||
filters (when (seq filter-state)
|
||||
(->> (group-by second filter-state)
|
||||
(medley/map-vals #(map first %))))
|
||||
filtered-ref-blocks (->> (block-handler/filter-blocks repo ref-blocks filters true)
|
||||
blocks-with-ref-level)
|
||||
n-ref (apply +
|
||||
(for [[_ rfs] filtered-ref-blocks]
|
||||
(count rfs)))]
|
||||
(when (or (> n-ref 0)
|
||||
(seq scheduled-or-deadlines)
|
||||
(seq filter-state))
|
||||
[:div.references.mt-6.flex-1.flex-row
|
||||
[:div.content
|
||||
(when (seq scheduled-or-deadlines)
|
||||
(ui/foldable
|
||||
[:h2.font-bold.opacity-50 "SCHEDULED AND DEADLINE"]
|
||||
[:div.references-blocks.mb-6
|
||||
(let [ref-hiccup (block/->hiccup scheduled-or-deadlines
|
||||
{:id (str page-name "-agenda")
|
||||
:ref? true
|
||||
:group-by-page? true
|
||||
:editor-box editor/box}
|
||||
{})]
|
||||
(content/content page-name
|
||||
{:hiccup ref-hiccup}))]
|
||||
{}))
|
||||
threshold (state/get-linked-references-collapsed-threshold)]
|
||||
(let [filter-state (rum/react filters-atom)
|
||||
filters (when (seq filter-state)
|
||||
(->> (group-by second filter-state)
|
||||
(medley/map-vals #(map first %))))
|
||||
filtered-ref-blocks (->> (block-handler/filter-blocks repo ref-blocks filters true)
|
||||
blocks-with-ref-level)
|
||||
n-ref (apply +
|
||||
(for [[_ rfs] filtered-ref-blocks]
|
||||
(count rfs)))]
|
||||
(when (or (> n-ref 0)
|
||||
(seq scheduled-or-deadlines)
|
||||
(seq filter-state))
|
||||
[:div.references.mt-6.flex-1.flex-row
|
||||
[:div.content
|
||||
(when (seq scheduled-or-deadlines)
|
||||
(ui/foldable
|
||||
[:h2.font-bold.opacity-50 "SCHEDULED AND DEADLINE"]
|
||||
[:div.references-blocks.mb-6
|
||||
(let [ref-hiccup (block/->hiccup scheduled-or-deadlines
|
||||
{:id (str page-name "-agenda")
|
||||
:ref? true
|
||||
:group-by-page? true
|
||||
:editor-box editor/box}
|
||||
{})]
|
||||
(content/content page-name
|
||||
{:hiccup ref-hiccup}))]
|
||||
{}))
|
||||
|
||||
(when (or (> n-ref 0)
|
||||
(seq filter-state))
|
||||
(ui/foldable
|
||||
[:div.flex.flex-row.flex-1.justify-between
|
||||
[:h2.font-bold.opacity-50 (let []
|
||||
(str n-ref " Linked Reference"
|
||||
(when (> n-ref 1) "s")))]
|
||||
[:a.opacity-50.hover:opacity-100.filter
|
||||
{:title "Filter"
|
||||
:on-click #(state/set-modal! (filter-dialog filters-atom references page-name))}
|
||||
(svg/filter-icon (cond
|
||||
(empty? filter-state) nil
|
||||
(every? true? (vals filter-state)) "text-green-400"
|
||||
(every? false? (vals filter-state)) "text-red-400"
|
||||
:else "text-yellow-400"))]]
|
||||
(when (or (> n-ref 0)
|
||||
(seq filter-state))
|
||||
(ui/foldable
|
||||
[:div.flex.flex-row.flex-1.justify-between
|
||||
[:h2.font-bold.opacity-50 (let []
|
||||
(str n-ref " Linked Reference"
|
||||
(when (> n-ref 1) "s")))]
|
||||
[:a.opacity-50.hover:opacity-100.filter
|
||||
{:title "Filter"
|
||||
:on-click #(state/set-modal! (filter-dialog filters-atom references page-name))}
|
||||
(svg/filter-icon (cond
|
||||
(empty? filter-state) nil
|
||||
(every? true? (vals filter-state)) "text-green-400"
|
||||
(every? false? (vals filter-state)) "text-red-400"
|
||||
:else "text-yellow-400"))]]
|
||||
|
||||
[:div.references-blocks
|
||||
(let [ref-hiccup (block/->hiccup filtered-ref-blocks
|
||||
{:id page-name
|
||||
:ref? true
|
||||
:breadcrumb-show? true
|
||||
:group-by-page? true
|
||||
:editor-box editor/box
|
||||
:filters filters}
|
||||
{})]
|
||||
(content/content page-name
|
||||
{:hiccup ref-hiccup}))]
|
||||
(fn []
|
||||
[:div.references-blocks
|
||||
(let [ref-hiccup (block/->hiccup filtered-ref-blocks
|
||||
{:id page-name
|
||||
:ref? true
|
||||
:breadcrumb-show? true
|
||||
:group-by-page? true
|
||||
:editor-box editor/box
|
||||
:filters filters}
|
||||
{})]
|
||||
(content/content page-name
|
||||
{:hiccup ref-hiccup}))])
|
||||
|
||||
{}))]]))))
|
||||
{:default-collapsed? (>= n-ref threshold)}))]])))))
|
||||
|
||||
(rum/defcs unlinked-references-aux
|
||||
< rum/reactive db-mixins/query
|
||||
|
@ -160,10 +162,10 @@
|
|||
(fn [state]
|
||||
(reset! (second (:rum/args state))
|
||||
(apply +
|
||||
(for [[_ rfs]
|
||||
(db/get-page-unlinked-references
|
||||
(first (:rum/args state)))]
|
||||
(count rfs))))
|
||||
(for [[_ rfs]
|
||||
(db/get-page-unlinked-references
|
||||
(first (:rum/args state)))]
|
||||
(count rfs))))
|
||||
(render-fn state)))}
|
||||
[state page-name n-ref]
|
||||
(let [ref-blocks (db/get-page-unlinked-references page-name)]
|
||||
|
|
|
@ -482,7 +482,6 @@
|
|||
:sidebar/clear
|
||||
:sidebar/open-today-page
|
||||
:search/re-index
|
||||
:graph/re-index
|
||||
:auto-complete/prev
|
||||
:auto-complete/next
|
||||
:auto-complete/complete
|
||||
|
|
|
@ -1378,6 +1378,14 @@
|
|||
value))
|
||||
2))
|
||||
|
||||
(defn get-linked-references-collapsed-threshold
|
||||
[]
|
||||
(or
|
||||
(when-let [value (:ref/linked-references-collapsed-threshold (get-config))]
|
||||
(when (integer? value)
|
||||
value))
|
||||
100))
|
||||
|
||||
(defn get-events-chan
|
||||
[]
|
||||
(:system/events @state))
|
||||
|
|
|
@ -160,6 +160,8 @@
|
|||
;; If we set the level's value to 3, `b` will be opened and `c` will be collapsed.
|
||||
:ref/default-open-blocks-level 2
|
||||
|
||||
:ref/linked-references-collapsed-threshold 100
|
||||
|
||||
;; any number between 0 and 1 (the greater it is the faster the changes of the next-interval of card reviews) (default 0.5)
|
||||
;; :srs/learning-fraction 0.5
|
||||
|
||||
|
|
Loading…
Reference in New Issue