Skip to content

Commit 77282fa

Browse files
committed
generate unique row id's
1 parent 75d99e7 commit 77282fa

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

src/main/datalog_console/components/tree_table.cljs

+19-14
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@
66

77

88
;; TODO:
9-
;; Certain rows do not have uniqueness in the UI state management and therefore expand and collapse multiple when they are the same attribute
10-
;; When updating deeply nested values they do not trigger a refresh of the UI
11-
(defn table-row [{:keys [level row expandable-row? expand-row render-col full-width? view-state] :as props}]
9+
;; (1) When updating deeply nested values they do not trigger a refresh of the UI
10+
;; (2) Refactory unique row id generation. Perhaps see if this can be done in the `entity` ns
11+
12+
(defn table-row [{:keys [level row expandable-row? expand-row render-col full-width? view-state table-id] :as props}]
1213
(let [open? (r/atom false)]
1314
(fn []
1415
[:<>
1516
[:tr {:class "odd:bg-gray-100"}
1617
(doall
1718
(for [[i col] (map-indexed vector row)]
18-
(let [row-id {:level level :col col}]
19-
^{:key (str {:level level :col col})}
19+
(let [row-id {:level level :col col :table-id table-id}]
20+
^{:key (str row-id)}
2021
[:<>
2122
(if (= 0 i)
2223
[:td {:title (str col)
@@ -27,14 +28,10 @@
2728
(do (when view-state (reset! open? (contains? @view-state row-id)))
2829
[:button {:class "pr-1 focus:outline-none"
2930
:on-click (fn []
30-
(js/console.log "inside the for function")
31-
(js/console.log "row level" level)
3231
(when view-state (if (contains? @view-state row-id)
3332
(do (swap! view-state disj row-id)
34-
(reset! view-state (set (filter #(<= (:level %) level) @view-state)))
35-
(js/console.log "this is the filter" (filter #(<= (:level %) level) @view-state)))
33+
(reset! view-state (set (filter #(<= (:level %) level) @view-state))))
3634
(swap! view-state conj row-id)))
37-
(when view-state (js/console.log "this is the view state: " @view-state))
3835
(reset! open? (not @open?)))}
3936
(if @open? "" "")])
4037
[:span {:class "pr-1 invisible"} ""])
@@ -50,12 +47,15 @@
5047
[tree-table
5148
(merge props {:level (inc level)
5249
:caption nil
53-
:rows (expand-row row)})]
50+
:rows (expand-row row)
51+
:table-id-acc table-id})]
5452
[:button {:title (str "Collapse " (pr-str row))
5553
:on-click (fn []
5654
(let [row-id {:level level :col (first row)}]
5755
(swap! view-state disj row-id)
58-
(reset! view-state (set (filter #(and (<= (:level %) level) (= :col (:col row-id))) @view-state))))
56+
(reset! view-state (set (filter #(and (<= (:level %) level)
57+
(= (:col @view-state) (:col row-id)))
58+
@view-state))))
5959
(reset! open? false))
6060
:class "absolute h-full top-0 left-2.5 border-gray-300 border-l transform hover:border-l-6 hover:-translate-x-0.5 focus:outline-none"}]]])])))
6161

@@ -64,7 +64,7 @@
6464
If the row is `(expandable-row? row)` then it will render a caret
6565
to toggle the `(expand-row row)` function and step down a level in the
6666
tree. `expand-row` should return a new sequence of rows."
67-
[{:keys [level caption head-row rows expandable-row? expand-row render-col full-width?]
67+
[{:keys [level caption head-row rows expandable-row? expand-row render-col full-width? table-id-acc]
6868
:as props}]
6969
(let [level (or level 0)
7070
render-col (or render-col str)
@@ -83,4 +83,9 @@
8383
[:tbody
8484
(for [row rows]
8585
^{:key (str "tr-" level "-" (pr-str row))}
86-
[table-row (merge props {:row row})])]]))
86+
[table-row (merge props
87+
{:row row
88+
:table-id (concat table-id-acc
89+
(if (= :db/id (ffirst rows))
90+
[(-> rows first second)]
91+
[(-> rows first second :db/id)]))})])]]))

0 commit comments

Comments
 (0)