Skip to content

Commit bdef3db

Browse files
committed
Merge branch 'Deraen-master'
2 parents e9ee3bb + 723c1fb commit bdef3db

File tree

1 file changed

+72
-99
lines changed

1 file changed

+72
-99
lines changed
Lines changed: 72 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,137 +1,110 @@
11
(ns demo.main
22
(:require [reagent.core :as r]
3+
[reagent.dom :as rdom]
34
[demo.utils :as u]))
45

5-
(def start-time (atom nil))
6-
(def last-measure (atom nil))
6+
(defn is-selected? [selected id]
7+
(= id @selected))
78

8-
(defn start-measure [name]
9-
(reset! start-time (.now js/performance))
10-
(reset! last-measure name))
11-
12-
(defn stop-measure []
13-
(if-let [last @last-measure]
14-
(.setTimeout js/window
15-
(fn []
16-
(reset! last-measure nil)
17-
(let [stop (.now js/performance)]
18-
(.log js/console (str last " took " (- stop @start-time)))))
19-
0)))
20-
21-
(defn row [data selected? on-click on-delete]
22-
[:tr
23-
{:class (if selected? "danger")}
24-
[:td.col-md-1 (:id data)]
25-
[:td.col-md-4
26-
[:a {:on-click (fn [e] (on-click (:id data)))}
27-
(:label data)]]
28-
[:td.col-md-1
29-
[:a {:on-click (fn [e] (on-delete (:id data)))}
30-
[:span.glyphicon.glyphicon-remove
31-
{:aria-hidden "true"}]]]
32-
[:td.col-md-6]])
9+
(defn row [data selected on-click on-delete]
10+
(let [selected? @(r/track is-selected? selected (:id data))]
11+
[:tr
12+
{:class (if selected? "danger")}
13+
[:td.col-md-1 (:id data)]
14+
[:td.col-md-4
15+
[:a {:on-click (fn [e] (on-click (:id data)))}
16+
(:label data)]]
17+
[:td.col-md-1
18+
[:a {:on-click (fn [e] (on-delete (:id data)))}
19+
[:span.glyphicon.glyphicon-remove
20+
{:aria-hidden "true"}]]]
21+
[:td.col-md-6]]))
3322

3423
(defn main []
3524
(let [id-atom (atom 0)
3625
data (r/atom [])
3726
selected (r/atom nil)
38-
print-duration
39-
(fn print-duration [_]
40-
(stop-measure))
4127
run
4228
(fn run [_]
43-
(start-measure "run")
4429
(reset! data (vec (u/build-data id-atom 1000)))
4530
(reset! selected nil))
4631
run-lots
4732
(fn run-lots [_]
48-
(start-measure "runLots")
4933
(reset! data (vec (u/build-data id-atom 10000)))
5034
(reset! selected nil))
5135
add
5236
(fn add [_]
53-
(start-measure "add")
5437
(swap! data u/add id-atom))
5538
update-some
5639
(fn update-some []
57-
(start-measure "update")
5840
(swap! data u/update-some))
5941
clear
6042
(fn clear []
61-
(start-measure "clear")
6243
(reset! selected nil)
6344
(reset! data []))
6445
swap-rows
6546
(fn swap-rows []
66-
(start-measure "swapRows")
6747
(swap! data u/swap-rows))
6848
select
6949
(fn select [id]
70-
(start-measure "select")
7150
(reset! selected id))
7251
delete
7352
(fn delete [id]
74-
(start-measure "delete")
7553
(swap! data u/delete-row id))]
76-
(r/create-class
77-
{:component-did-update print-duration
78-
:component-did-mount print-duration
79-
:reagent-render
80-
(fn []
81-
[:div.container
82-
[:div.jumbotron
83-
[:div.row
84-
[:div.col-md-6
85-
[:h1 "Reagent"]]
86-
[:div.col-md-6
87-
[:div.row
88-
[:div.col-sm-6.smallpad
89-
[:button.btn.btn-primary.btn-block
90-
{:type "button"
91-
:id "run"
92-
:on-click run}
93-
"Create 1,000 rows"]]
94-
[:div.col-sm-6.smallpad
95-
[:button.btn.btn-primary.btn-block
96-
{:type "button"
97-
:id "runlots"
98-
:on-click run-lots}
99-
"Create 10,000 rows"]]
100-
[:div.col-sm-6.smallpad
101-
[:button.btn.btn-primary.btn-block
102-
{:type "button"
103-
:id "add"
104-
:on-click add}
105-
"Append 1,000 rows"]]
106-
[:div.col-sm-6.smallpad
107-
[:button.btn.btn-primary.btn-block
108-
{:type "button"
109-
:id "update"
110-
:on-click update-some}
111-
"Update every 10th row"]]
112-
[:div.col-sm-6.smallpad
113-
[:button.btn.btn-primary.btn-block
114-
{:type "button"
115-
:id "clear"
116-
:on-click clear}
117-
"Clear"]]
118-
[:div.col-sm-6.smallpad
119-
[:button.btn.btn-primary.btn-block
120-
{:type "button"
121-
:id "swaprows"
122-
:on-click swap-rows}
123-
"Swap rows"]]]]]]
124-
[:table.table.table-hover.table-striped.test-data
125-
[:tbody
126-
(let [s @selected]
127-
(for [d @data]
128-
^{:key (:id d)}
129-
[row
130-
d
131-
(identical? (:id d) s)
132-
select
133-
delete]))]]
134-
[:span.preloadicon.glyphicon.glyphicon-remove
135-
{:aria-hidden "true"}]])})))
54+
(fn []
55+
[:div.container
56+
[:div.jumbotron
57+
[:div.row
58+
[:div.col-md-6
59+
[:h1 "Reagent"]]
60+
[:div.col-md-6
61+
[:div.row
62+
[:div.col-sm-6.smallpad
63+
[:button.btn.btn-primary.btn-block
64+
{:type "button"
65+
:id "run"
66+
:on-click run}
67+
"Create 1,000 rows"]]
68+
[:div.col-sm-6.smallpad
69+
[:button.btn.btn-primary.btn-block
70+
{:type "button"
71+
:id "runlots"
72+
:on-click run-lots}
73+
"Create 10,000 rows"]]
74+
[:div.col-sm-6.smallpad
75+
[:button.btn.btn-primary.btn-block
76+
{:type "button"
77+
:id "add"
78+
:on-click add}
79+
"Append 1,000 rows"]]
80+
[:div.col-sm-6.smallpad
81+
[:button.btn.btn-primary.btn-block
82+
{:type "button"
83+
:id "update"
84+
:on-click update-some}
85+
"Update every 10th row"]]
86+
[:div.col-sm-6.smallpad
87+
[:button.btn.btn-primary.btn-block
88+
{:type "button"
89+
:id "clear"
90+
:on-click clear}
91+
"Clear"]]
92+
[:div.col-sm-6.smallpad
93+
[:button.btn.btn-primary.btn-block
94+
{:type "button"
95+
:id "swaprows"
96+
:on-click swap-rows}
97+
"Swap rows"]]]]]]
98+
[:table.table.table-hover.table-striped.test-data
99+
[:tbody
100+
(for [d @data]
101+
^{:key (:id d)}
102+
[row
103+
d
104+
selected
105+
select
106+
delete])]]
107+
[:span.preloadicon.glyphicon.glyphicon-remove
108+
{:aria-hidden "true"}]])))
136109

137-
(r/render [main] (.getElementById js/document "main"))
110+
(rdom/render [main] (.getElementById js/document "main"))

0 commit comments

Comments
 (0)