fix: render v2 tables correctly

also added shui properties so they are built-in
and editable
pull/10438/head
Gabriel Horner 2023-08-24 16:42:24 -04:00
parent 2d19eae645
commit deb2a1aaad
4 changed files with 36 additions and 15 deletions

View File

@ -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))))

View File

@ -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)

View File

@ -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)))))

View File

@ -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))))