Browse Source

feat(filters): css tweaks

Tienson Qin 4 years ago
parent
commit
1df15ca082

+ 8 - 7
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

+ 26 - 2
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))

+ 7 - 5
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)

+ 1 - 2
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 {

+ 1 - 1
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