From 3b959f349f9738c210c7672d4c60e395f284b9ea Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 27 Mar 2023 15:26:17 +0800 Subject: [PATCH] fix: broken simple queries close #8900 --- .../frontend/components/query/builder.cljs | 26 ++++++++++++++----- .../frontend/components/query/builder.css | 11 +++++++- src/main/frontend/template.cljs | 13 ++++++++-- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/main/frontend/components/query/builder.cljs b/src/main/frontend/components/query/builder.cljs index 429c52daf4d..9b977fc5cf4 100644 --- a/src/main/frontend/components/query/builder.cljs +++ b/src/main/frontend/components/query/builder.cljs @@ -270,8 +270,12 @@ (page-ref/->page-ref (second clause)) (= (keyword f) :page-tags) - (if (string? (second clause)) + (cond + (string? (second clause)) (str "#" (second clause)) + (symbol? (second clause)) + (str "#" (str (second clause))) + :else (str "#" (second (second clause)))) (contains? #{:property :page-property} (keyword f)) @@ -287,7 +291,15 @@ (last clause))) (= (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)) (str (name f) ": " @@ -312,7 +324,7 @@ [:a.flex.text-sm.query-clause {:on-click toggle-fn} 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} (dsl-human-output clause)]])) (fn [{:keys [toggle-fn]}] @@ -368,9 +380,9 @@ (let [kind (keyword (first clause))] (if (query-builder/operators-set kind) [: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)) - [:div.text-4xl.ml-1.font-thin ")"]] + [:div.clause-bracket ")"]] (clause-inner *tree loc clause)))])) (rum/defc clauses-group @@ -378,7 +390,7 @@ (let [parens? (and (= loc [0]) (> (count clauses) 1))] [:div.clauses-group - (when parens? [:div.text-4xl.mr-1.font-thin "("]) + (when parens? [:div.clause-bracket "("]) (when-not (and (= loc [0]) (= kind :and) (<= (count clauses) 1)) @@ -390,7 +402,7 @@ (clause *tree *find (update loc (dec (count loc)) #(+ % i 1)) item)) clauses) - (when parens? [:div.text-4xl.ml-1.font-thin ")"]) + (when parens? [:div.clause-bracket ")"]) (when (not= loc [0]) (add-filter *find *tree loc []))])) diff --git a/src/main/frontend/components/query/builder.css b/src/main/frontend/components/query/builder.css index a55033e44c3..b7a956793a6 100644 --- a/src/main/frontend/components/query/builder.css +++ b/src/main/frontend/components/query/builder.css @@ -29,7 +29,7 @@ } .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 { @@ -43,4 +43,13 @@ .filter-item select { 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); + } } diff --git a/src/main/frontend/template.cljs b/src/main/frontend/template.cljs index 0cce0998922..c4b6f7809df 100644 --- a/src/main/frontend/template.cljs +++ b/src/main/frontend/template.cljs @@ -3,6 +3,8 @@ (:require [clojure.string :as string] [frontend.date :as date] [frontend.state :as state] + [frontend.db.utils :as db-utils] + [frontend.util :as util] [logseq.graph-parser.util.page-ref :as page-ref])) (defn- variable-rules @@ -11,8 +13,15 @@ "yesterday" (page-ref/->page-ref (date/yesterday)) "tomorrow" (page-ref/->page-ref (date/tomorrow)) "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 ;; context information, date, current page