mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 22:25:01 +00:00
feat(filters): css tweaks
This commit is contained in:
@@ -32,8 +32,8 @@
|
||||
(for [reference references]
|
||||
(let [filtered (get (rum/react filter-state) reference)
|
||||
color (condp = filtered
|
||||
true "text-green-500"
|
||||
false "text-red-500"
|
||||
true "text-green-400"
|
||||
false "text-red-400"
|
||||
nil)]
|
||||
[:button.border.rounded.px-1 {:key reference :class color :style {:border-color "currentColor"}
|
||||
:on-click (fn [e]
|
||||
@@ -101,13 +101,14 @@
|
||||
[:h2.font-bold.opacity-50 (let []
|
||||
(str n-ref " Linked Reference"
|
||||
(if (> n-ref 1) "s")))]
|
||||
[:a {:title "Filter"
|
||||
:on-click #(state/set-modal! (filter-dialog references page-name))}
|
||||
[:a.opacity-50.hover:opacity-100
|
||||
{:title "Filter"
|
||||
:on-click #(state/set-modal! (filter-dialog references page-name))}
|
||||
(svg/filter-icon (cond
|
||||
(empty? filter-state) nil
|
||||
(every? true? (vals filter-state)) "text-green-500"
|
||||
(every? false? (vals filter-state)) "text-red-500"
|
||||
:else "text-yellow-200"))]]
|
||||
(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
|
||||
|
||||
@@ -923,6 +923,28 @@
|
||||
(remove (fn [block] (contains? childrens (:db/id block))) blocks)
|
||||
blocks)))
|
||||
|
||||
(defonce *blocks (atom nil))
|
||||
(defn with-children-refs
|
||||
[repo blocks]
|
||||
(reset! *blocks blocks)
|
||||
(when-let [conn (conn/get-conn repo)]
|
||||
(when (seq blocks)
|
||||
(let [block-ids (set (map :db/id blocks))
|
||||
refs (d/q
|
||||
'[:find ?p ?ref
|
||||
:in $ % ?block-ids
|
||||
:where
|
||||
(parent ?p ?b)
|
||||
[(contains? ?block-ids ?p)]
|
||||
[?b :block/ref-pages ?ref]]
|
||||
conn
|
||||
rules
|
||||
block-ids)
|
||||
refs (->> (group-by first refs)
|
||||
(medley/map-vals #(set (map (fn [[_ id]] {:db/id id}) %))))]
|
||||
(map (fn [block] (assoc block :block/children-refs
|
||||
(get refs (:db/id block)))) blocks)))))
|
||||
|
||||
(defn get-page-referenced-blocks
|
||||
([page]
|
||||
(get-page-referenced-blocks (state/get-current-repo) page))
|
||||
@@ -959,13 +981,15 @@
|
||||
db-utils/seq-flatten
|
||||
(remove (fn [block]
|
||||
(= page-id (:db/id (:block/page block)))))
|
||||
(remove-children!)
|
||||
(with-children-refs repo)
|
||||
sort-blocks
|
||||
db-utils/group-by-page
|
||||
(map (fn [[k blocks]]
|
||||
(let [k (if (contains? aliases (:db/id k))
|
||||
(assoc k :page/alias? true)
|
||||
k)]
|
||||
[k (remove-children! blocks)]))))]
|
||||
[k blocks]))))]
|
||||
result)))))
|
||||
|
||||
(defn get-date-scheduled-or-deadlines
|
||||
@@ -1283,4 +1307,4 @@
|
||||
[(contains? ?refs ?b-ref)]))]
|
||||
(conn/get-conn)
|
||||
rules
|
||||
page-ids))
|
||||
page-ids))
|
||||
|
||||
@@ -200,11 +200,10 @@
|
||||
(let [ref-pages (->> (if group-by-page?
|
||||
(mapcat last ref-blocks)
|
||||
ref-blocks)
|
||||
(mapcat :block/ref-pages)
|
||||
(mapcat (fn [b] (concat (:block/ref-pages b) (:block/children-refs b))))
|
||||
(distinct)
|
||||
(map :db/id)
|
||||
(db/pull-many repo '[:db/id :page/name]))
|
||||
|
||||
ref-pages (zipmap (map :page/name ref-pages) (map :db/id ref-pages))
|
||||
exclude-ids (->> (map (fn [page] (get ref-pages page)) (get filters false))
|
||||
(remove nil?)
|
||||
@@ -218,13 +217,16 @@
|
||||
(cond->> ref-blocks
|
||||
(seq exclude-ids)
|
||||
(remove (fn [block]
|
||||
(let [ids (set (map :db/id (:block/ref-pages block)))]
|
||||
(let [ids (set (concat (map :db/id (:block/ref-pages block))
|
||||
(map :db/id (:block/children-refs block))))]
|
||||
(seq (set/intersection exclude-ids ids)))))
|
||||
|
||||
(seq include-ids)
|
||||
(remove (fn [block]
|
||||
(let [ids (set (map :db/id (:block/ref-pages block)))]
|
||||
(empty? (set/intersection include-ids ids)))))))]
|
||||
(let [ids (set (concat (map :db/id (:block/ref-pages block))
|
||||
(map :db/id (:block/children-refs block))))]
|
||||
(empty? (set/intersection include-ids ids)))))
|
||||
))]
|
||||
(if group-by-page?
|
||||
(->> (map (fn [[p ref-blocks]]
|
||||
[p (filter-f ref-blocks)]) ref-blocks)
|
||||
|
||||
@@ -66,8 +66,7 @@
|
||||
}
|
||||
|
||||
&-panel {
|
||||
@apply relative bg-white rounded-md px-4 pt-5
|
||||
pb-4 shadow-xl;
|
||||
@apply relative bg-white rounded-md p-8 shadow-xl;
|
||||
}
|
||||
|
||||
&-close {
|
||||
|
||||
@@ -29,7 +29,7 @@ module.exports = {
|
||||
800: '#075985',
|
||||
900: '#0c4a6e',
|
||||
},
|
||||
red: colors.rose,
|
||||
red: colors.red,
|
||||
yellow: colors.amber,
|
||||
orange: colors.orange,
|
||||
rose: colors.rose
|
||||
|
||||
Reference in New Issue
Block a user