Merge pull request #6214 from logseq/fix/hidden-properties-in-autocompletion

Fix: Property completion for hidden properties and property ordering
pull/6199/head
Gabriel Horner 2022-08-01 14:42:06 -04:00 committed by GitHub
commit 49fbdd0244
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 37 additions and 9 deletions

View File

@ -198,7 +198,6 @@
[format properties user-config]
(when (seq properties)
(let [properties (seq properties)
properties (into {} properties)
page-refs (get-page-ref-names-from-properties format properties user-config)
properties (->> properties
(map (fn [[k v]]
@ -512,7 +511,7 @@
:content content
:level 1
:properties properties
:properties-order properties-order
:properties-order (vec properties-order)
:refs property-refs
:pre-block? true
:unordered true
@ -548,7 +547,7 @@
(assoc :properties (:properties properties))
(seq (:properties-order properties))
(assoc :properties-order (:properties-order properties)))
(assoc :properties-order (vec (:properties-order properties))))
block (if (get-in block [:properties :collapsed])
(-> (assoc block :collapsed? true)
(update :properties (fn [m] (dissoc m :collapsed)))

View File

@ -1,5 +1,6 @@
(ns logseq.graph-parser-test
(:require [cljs.test :refer [deftest testing is]]
[clojure.string :as string]
[logseq.graph-parser :as graph-parser]
[logseq.db :as ldb]
[logseq.graph-parser.block :as gp-block]
@ -41,3 +42,29 @@
(catch :default _)))
(is (= nil @deleted-page)
"Page should not be deleted when there is unexpected failure"))))
(defn- test-property-order [num-properties]
(let [conn (ldb/start-conn)
properties (mapv #(keyword (str "p" %)) (range 0 num-properties))
text (->> properties
(map #(str (name %) ":: " (name %) "-value"))
(string/join "\n"))
;; Test page properties and block properties
body (str text "\n- " text)
_ (graph-parser/parse-file conn "foo.md" body {})
properties-orders (->> (d/q '[:find (pull ?b [*])
:in $
:where [?b :block/content] [(missing? $ ?b :block/name)]]
@conn)
(map first)
(map :block/properties-order))]
(is (every? vector? properties-orders)
"Order is persisted as a vec to avoid edn serialization quirks")
(is (= [properties properties] properties-orders)
"Property order")))
(deftest properties-order
(testing "Sort order and persistence of a few properties"
(test-property-order 4))
(testing "Sort order and persistence of 10 properties"
(test-property-order 10)))

View File

@ -1845,8 +1845,8 @@
[config block]
(let [properties (walk/keywordize-keys (:block/properties block))
properties-order (:block/properties-order block)
properties (apply dissoc properties (property/built-in-properties))
properties-order (remove (property/built-in-properties) properties-order)
properties (apply dissoc properties (property/hidden-properties))
properties-order (remove (property/hidden-properties) properties-order)
pre-block? (:block/pre-block? block)
properties (if pre-block?
(let [repo (state/get-current-repo)

View File

@ -177,7 +177,7 @@
result
{:on-chosen chosen-handler
:on-enter non-exist-block-handler
:empty-placeholder [:div.text-gray-500.pl-4.pr-4 "Search for a block"]
:empty-placeholder [:div.text-gray-500.pl-4.pr-4 (t :editor/block-search)]
:item-render (fn [{:block/keys [page uuid]}] ;; content returned from search engine is normalized
(let [page (or (:block/original-name page)
(:block/name page))

View File

@ -1431,7 +1431,6 @@
(->> (map keys properties)
(apply concat)
distinct
(remove #{:id})
sort)))
(defn get-property-values

View File

@ -384,7 +384,7 @@
block (update block :block/refs remove-non-existed-refs!)
block (attach-page-properties-if-exists! block)
new-properties (merge
(select-keys properties (property/built-in-properties))
(select-keys properties (property/hidden-properties))
(:block/properties block))]
(-> block
(dissoc :block/top?

View File

@ -11,6 +11,7 @@
[frontend.search.protocol :as protocol]
[frontend.state :as state]
[frontend.util :as util]
[frontend.util.property :as property]
[goog.object :as gobj]
[promesa.core :as p]))
@ -169,7 +170,9 @@
([q limit]
(when q
(let [q (clean-str q)
properties (map name (db-model/get-all-properties))]
properties (->> (db-model/get-all-properties)
(remove (property/hidden-properties))
(map name))]
(when (seq properties)
(if (string/blank? q)
properties