From 1df15ca0820e3b2a301825d46ad5b450d9199420 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Fri, 5 Mar 2021 14:15:37 +0800 Subject: [PATCH] feat(filters): css tweaks --- src/main/frontend/components/reference.cljs | 15 +++++------ src/main/frontend/db/model.cljs | 28 +++++++++++++++++++-- src/main/frontend/handler/block.cljs | 12 +++++---- src/main/frontend/ui.css | 3 +-- tailwind.config.js | 2 +- 5 files changed, 43 insertions(+), 17 deletions(-) diff --git a/src/main/frontend/components/reference.cljs b/src/main/frontend/components/reference.cljs index 3769543f7ce..30847d49fdb 100644 --- a/src/main/frontend/components/reference.cljs +++ b/src/main/frontend/components/reference.cljs @@ -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 diff --git a/src/main/frontend/db/model.cljs b/src/main/frontend/db/model.cljs index af6bd63e8c4..ec5a33bb101 100644 --- a/src/main/frontend/db/model.cljs +++ b/src/main/frontend/db/model.cljs @@ -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)) diff --git a/src/main/frontend/handler/block.cljs b/src/main/frontend/handler/block.cljs index db3f97e2041..436c3a365e2 100644 --- a/src/main/frontend/handler/block.cljs +++ b/src/main/frontend/handler/block.cljs @@ -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) diff --git a/src/main/frontend/ui.css b/src/main/frontend/ui.css index 9df6bcc7df6..22deecc0fdf 100644 --- a/src/main/frontend/ui.css +++ b/src/main/frontend/ui.css @@ -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 { diff --git a/tailwind.config.js b/tailwind.config.js index 5ab90df06b0..840ef7eaea8 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -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