浏览代码

fix: broken simple queries

close #8900
Tienson Qin 2 年之前
父节点
当前提交
3b959f349f

+ 19 - 7
src/main/frontend/components/query/builder.cljs

@@ -270,8 +270,12 @@
       (page-ref/->page-ref (second clause))
       (page-ref/->page-ref (second clause))
 
 
       (= (keyword f) :page-tags)
       (= (keyword f) :page-tags)
-      (if (string? (second clause))
+      (cond
+        (string? (second clause))
         (str "#" (second clause))
         (str "#" (second clause))
+        (symbol? (second clause))
+        (str "#" (str (second clause)))
+        :else
         (str "#" (second (second clause))))
         (str "#" (second (second clause))))
 
 
       (contains? #{:property :page-property} (keyword f))
       (contains? #{:property :page-property} (keyword f))
@@ -287,7 +291,15 @@
              (last clause)))
              (last clause)))
 
 
       (= (keyword f) :between)
       (= (keyword f) :between)
-      (str "between: " (second (second clause)) " - " (second (last clause)))
+      (let [start (if (or (keyword? (second clause))
+                          (symbol? (second clause)))
+                    (name (second clause))
+                    (second (second clause)))
+            end (if (or (keyword? (last clause))
+                        (symbol? (last clause)))
+                  (name (last  clause))
+                  (second (last clause)))]
+        (str "between: " start " ~ " end))
 
 
       (contains? #{:task :priority} (keyword f))
       (contains? #{:task :priority} (keyword f))
       (str (name f) ": "
       (str (name f) ": "
@@ -312,7 +324,7 @@
        [:a.flex.text-sm.query-clause {:on-click toggle-fn}
        [:a.flex.text-sm.query-clause {:on-click toggle-fn}
         clause]
         clause]
 
 
-       [:div.flex.flex-row.items-center.gap-2.p-1.rounded.border
+       [:div.flex.flex-row.items-center.gap-2.p-1.rounded.border.query-clause-btn
         [:a.flex.query-clause {:on-click toggle-fn}
         [:a.flex.query-clause {:on-click toggle-fn}
          (dsl-human-output clause)]]))
          (dsl-human-output clause)]]))
    (fn [{:keys [toggle-fn]}]
    (fn [{:keys [toggle-fn]}]
@@ -368,9 +380,9 @@
      (let [kind (keyword (first clause))]
      (let [kind (keyword (first clause))]
        (if (query-builder/operators-set kind)
        (if (query-builder/operators-set kind)
          [:div.operator-clause.flex.flex-row.items-center {:data-level (count loc)}
          [:div.operator-clause.flex.flex-row.items-center {:data-level (count loc)}
-          [:div.text-4xl.mr-1.font-thin "("]
+          [:div.clause-bracket "("]
           (clauses-group *tree *find (conj loc 0) kind (rest clause))
           (clauses-group *tree *find (conj loc 0) kind (rest clause))
-          [:div.text-4xl.ml-1.font-thin ")"]]
+          [:div.clause-bracket ")"]]
          (clause-inner *tree loc clause)))]))
          (clause-inner *tree loc clause)))]))
 
 
 (rum/defc clauses-group
 (rum/defc clauses-group
@@ -378,7 +390,7 @@
   (let [parens? (and (= loc [0])
   (let [parens? (and (= loc [0])
                      (> (count clauses) 1))]
                      (> (count clauses) 1))]
     [:div.clauses-group
     [:div.clauses-group
-     (when parens? [:div.text-4xl.mr-1.font-thin "("])
+     (when parens? [:div.clause-bracket "("])
      (when-not (and (= loc [0])
      (when-not (and (= loc [0])
                     (= kind :and)
                     (= kind :and)
                     (<= (count clauses) 1))
                     (<= (count clauses) 1))
@@ -390,7 +402,7 @@
                     (clause *tree *find (update loc (dec (count loc)) #(+ % i 1)) item))
                     (clause *tree *find (update loc (dec (count loc)) #(+ % i 1)) item))
                   clauses)
                   clauses)
 
 
-     (when parens? [:div.text-4xl.ml-1.font-thin ")"])
+     (when parens? [:div.clause-bracket ")"])
 
 
      (when (not= loc [0])
      (when (not= loc [0])
        (add-filter *find *tree loc []))]))
        (add-filter *find *tree loc []))]))

+ 10 - 1
src/main/frontend/components/query/builder.css

@@ -29,7 +29,7 @@
     }
     }
 
 
     .clauses-group {
     .clauses-group {
-        @apply flex flex-row gap-1 flex-wrap items-center text-sm;
+        @apply flex flex-row gap-2 flex-wrap items-center text-sm;
     }
     }
 
 
     a.query-clause, a.add-filter {
     a.query-clause, a.add-filter {
@@ -43,4 +43,13 @@
     .filter-item select {
     .filter-item select {
         border: none;
         border: none;
     }
     }
+
+    .clause-bracket {
+        @apply text-4xl ml-1 font-thin opacity-30;
+        font-family: "Inter";
+    }
+
+    .query-clause-btn {
+        border-color: var(--ls-border-color);
+    }
 }
 }

+ 11 - 2
src/main/frontend/template.cljs

@@ -3,6 +3,8 @@
   (:require [clojure.string :as string]
   (:require [clojure.string :as string]
             [frontend.date :as date]
             [frontend.date :as date]
             [frontend.state :as state]
             [frontend.state :as state]
+            [frontend.db.utils :as db-utils]
+            [frontend.util :as util]
             [logseq.graph-parser.util.page-ref :as page-ref]))
             [logseq.graph-parser.util.page-ref :as page-ref]))
 
 
 (defn- variable-rules
 (defn- variable-rules
@@ -11,8 +13,15 @@
    "yesterday" (page-ref/->page-ref (date/yesterday))
    "yesterday" (page-ref/->page-ref (date/yesterday))
    "tomorrow" (page-ref/->page-ref (date/tomorrow))
    "tomorrow" (page-ref/->page-ref (date/tomorrow))
    "time" (date/get-current-time)
    "time" (date/get-current-time)
-   "current page" (page-ref/->page-ref (or (state/get-current-page)
-                                           (date/today)))})
+   "current page" (when-let [current-page (or
+                                           (state/get-current-page)
+                                           (date/today))]
+                    (let [block-uuid (parse-uuid current-page)
+                          page (if block-uuid
+                                 (:block/page (db-utils/entity [:block/uuid block-uuid]))
+                                 (db-utils/entity [:block/name (util/page-name-sanity-lc current-page)]))
+                          current-page' (:block/original-name page)]
+                      (page-ref/->page-ref current-page')))})
 
 
 ;; TODO: programmable
 ;; TODO: programmable
 ;; context information, date, current page
 ;; context information, date, current page