瀏覽代碼

fix: render v2 tables correctly

also added shui properties so they are built-in
and editable
Gabriel Horner 2 年之前
父節點
當前提交
deb2a1aaad

+ 26 - 4
deps/graph-parser/src/logseq/graph_parser/property.cljs

@@ -173,13 +173,16 @@
   the following keys:
    * :schema - Property's schema. Required key
    * :original-name - Property's :block/original-name
-   * :attribute - Property that is saved to a datascript attribute outside of :block/properties"
+   * :attribute - Property keyword that is saved to a datascript attribute outside of :block/properties
+   * :visible - Boolean to indicate user can see and use this property"
   {:alias {:original-name "Alias"
            :attribute :block/alias
+           :visible true
            :schema {:type :page
                     :cardinality :many}}
    :tags {:original-name "Tags"
           :attribute :block/tags
+          :visible true
           :schema {:type :page
                    :cardinality :many}}
    :background-color {:schema {:type :default}}
@@ -201,6 +204,25 @@
    :logseq.order-list-type {:schema {:type :checkbox}}
    :logseq.tldraw.page {:schema {:type :map}}
    :logseq.tldraw.shape {:schema {:type :map}}
+   ;; color props
+   :logseq.color {:schema {:type :default}
+                  :visible true}
+   ;; table-v2 props
+   :logseq.table.version {:schema {:type :number}
+                          :visible true}
+   :logseq.table.compact {:schema {:type :checkbox}
+                          :visible true}
+   :logseq.table.headers {:schema {:type :default}
+                          :visible true}
+   :logseq.table.hover {:schema {:type :default}
+                        :visible true}
+   :logseq.table.borders {:schema {:type :checkbox}
+                          :visible true}
+   :logseq.table.stripes {:schema {:type :checkbox}
+                          :visible true}
+   :logseq.table.max-width {:schema {:type :number}
+                            :visible true}
+
    :icon {:original-name "Icon"
           :schema {:type :map}}
    :public {:schema {:type :checkbox}}
@@ -208,15 +230,15 @@
    :exclude-from-graph-view {:schema {:type :checkbox}}
    :created-in-property {:schema {:type :checkbox}}})
 
-(def db-user-facing-built-in-properties
+(def db-visible-built-in-properties
   "These are built-in properties that users can see and use"
-  #{:alias :tags})
+  (set (keep (fn [[k v]] (when (:visible v) k)) db-built-in-properties)))
 
 (defonce db-built-in-properties-keys
   (set (keys db-built-in-properties)))
 
 (def db-hidden-built-in-properties
-  (set/difference db-built-in-properties-keys db-user-facing-built-in-properties))
+  (set/difference db-built-in-properties-keys db-visible-built-in-properties))
 
 (defonce db-built-in-properties-keys-str
   (set (map name (keys db-built-in-properties))))

+ 1 - 4
src/main/frontend/components/property.cljs

@@ -376,9 +376,6 @@
         namespace-properties (->> (:block/tags block)
                                   (get-namespace-properties)
                                   (map (fn [id] [id nil])))
-        built-in-properties (set/difference
-                             (set (map name gp-property/db-built-in-properties-keys))
-                             #{"alias" "tags"})
         properties (->> (concat (seq tags-properties)
                                 (seq alias-properties)
                                 (seq properties)
@@ -387,7 +384,7 @@
                         (util/distinct-by first)
                         (remove (fn [[k _v]]
                                   (when (uuid? k)
-                                    (contains? built-in-properties (:block/name (db/entity [:block/uuid k])))))))
+                                    (contains? gp-property/db-hidden-built-in-properties (keyword (:block/name (db/entity [:block/uuid k]))))))))
         new-property? (or
                        (and (:*configure-show? opts)
                             @(:*configure-show? opts)

+ 3 - 2
src/main/frontend/components/query_table.cljs

@@ -294,9 +294,10 @@
           sort-result (sort-result result (assoc sort-state :page? page?))
           table-version (get-shui-component-version :table config)]
       (case table-version
-        2 (let [result-as-text (for [row sort-result]
+        2 (let [v2-columns (mapv #(if (uuid? %) (pu/get-property-name %) %) columns)
+                result-as-text (for [row result]
                                  (for [column columns]
                                    (build-column-text row column)))]
-            (shui/table-v2 {:data (conj [[columns]] result-as-text)}
+            (shui/table-v2 {:data (conj [[v2-columns]] result-as-text)}
                            (make-shui-context config inline)))
         1 (result-table-v1 config current-block sort-result sort-state columns options map-inline page-cp ->elem inline-text)))))

+ 6 - 5
src/main/frontend/shui.cljs

@@ -1,9 +1,10 @@
 (ns frontend.shui
   "Glue between frontend code and deps/shui for convenience"
-  (:require 
-    [frontend.date :refer [int->local-time-2]]
-    [frontend.state :as state]
-    [logseq.shui.context :refer [make-context]]))
+  (:require
+   [frontend.date :refer [int->local-time-2]]
+   [frontend.state :as state]
+   [frontend.handler.property.util :as pu]
+   [logseq.shui.context :refer [make-context]]))
 
 (def default-versions {:logseq.table.version 1})
 
@@ -13,7 +14,7 @@
   [component-name block-config]
   (let [version-key (keyword (str "logseq." (name component-name) ".version"))]
     (js/parseFloat
-      (or (get-in block-config [:block :block/properties version-key])
+      (or (pu/lookup (get-in block-config [:block :block/properties]) version-key)
           (get-in (state/get-config) [version-key])
           (get-in default-versions [version-key])
           1))))