@@ -33,19 +33,7 @@ const A = [
33
33
"expensive" ,
34
34
"fancy" ,
35
35
] ;
36
- const C = [
37
- "red" ,
38
- "yellow" ,
39
- "blue" ,
40
- "green" ,
41
- "pink" ,
42
- "brown" ,
43
- "purple" ,
44
- "brown" ,
45
- "white" ,
46
- "black" ,
47
- "orange" ,
48
- ] ;
36
+ const C = [ "red" , "yellow" , "blue" , "green" , "pink" , "brown" , "purple" , "brown" , "white" , "black" , "orange" ] ;
49
37
const N = [
50
38
"table" ,
51
39
"chair" ,
@@ -64,10 +52,7 @@ const N = [
64
52
65
53
let nextId = 1 ;
66
54
67
- const buildLabel = ( ) =>
68
- bau . state (
69
- `${ A [ random ( A . length ) ] } ${ C [ random ( C . length ) ] } ${ N [ random ( N . length ) ] } `
70
- ) ;
55
+ const buildLabel = ( ) => bau . state ( `${ A [ random ( A . length ) ] } ${ C [ random ( C . length ) ] } ${ N [ random ( N . length ) ] } ` ) ;
71
56
72
57
const buildData = ( count ) => {
73
58
const data = new Array ( count ) ;
@@ -83,16 +68,16 @@ const buildData = (count) => {
83
68
} ;
84
69
85
70
const dataState = bau . state ( [ ] ) ;
86
- const selectedState = bau . state ( 0 ) ;
71
+ let selectedRow = null ;
87
72
88
73
const run = ( ) => {
89
74
dataState . val = buildData ( 1000 ) ;
90
- selectedState . val = 0 ;
75
+ selectedRow = null ;
91
76
} ;
92
77
93
78
const runLots = ( ) => {
94
79
dataState . val = buildData ( 10000 ) ;
95
- selectedState . val = 0 ;
80
+ selectedRow = null ;
96
81
} ;
97
82
98
83
const add = ( ) => {
@@ -118,55 +103,56 @@ const swapRows = () => {
118
103
119
104
const clear = ( ) => {
120
105
dataState . val = [ ] ;
121
- selectedState . val = 0 ;
106
+ selectedRow = null ;
122
107
} ;
123
108
124
- const remove = ( { id , event } ) => {
109
+ const remove = ( id ) => ( ) => {
125
110
const idx = dataState . val . findIndex ( ( d ) => d . id === id ) ;
126
111
if ( idx > - 1 ) {
127
112
dataState . val . splice ( idx , 1 ) ;
128
113
}
129
114
} ;
130
115
131
- const select = ( { id, event } ) => {
132
- selectedState . val = id ;
116
+ const selectRow = ( event ) => {
117
+ if ( selectedRow ) {
118
+ selectedRow . className = "" ;
119
+ }
120
+ selectedRow = event . target . parentNode . parentNode ;
121
+ selectedRow . className = "danger" ;
133
122
} ;
134
123
135
- const Row = ( { id, label } ) =>
136
- tr (
124
+ const Row = ( { id, label } ) => {
125
+ const tdIdEl = td ( { class : "col-md-1" } , id ) ;
126
+ const aLabelEl = a ( { onclick : selectRow } , label ) ;
127
+ const aRemove = a ( { onclick : remove ( id ) } , span ( { class : "glyphicon glyphicon-remove" , "aria-hidden" : true } ) ) ;
128
+
129
+ return tr (
137
130
{
138
- class : ( ) => ( selectedState . val == id ? "danger" : "" ) ,
131
+ bauUpdate : ( element , data ) => {
132
+ tdIdEl . textContent = data . id ;
133
+ aLabelEl . replaceWith ( a ( { onclick : selectRow } , data . label ) ) ;
134
+ aRemove . onclick = remove ( data . id ) ;
135
+ } ,
139
136
} ,
140
- td ( { class : "col-md-1" } , id ) ,
141
- td (
142
- { class : "col-md-4" } ,
143
- a ( { onclick : ( event ) => select ( { id, event } ) } , label )
144
- ) ,
145
- td (
146
- { class : "col-md-1" } ,
147
- a (
148
- { onclick : ( event ) => remove ( { id, event } ) } ,
149
- span ( { class : "glyphicon glyphicon-remove" , "aria-hidden" : true } )
150
- )
151
- ) ,
137
+ tdIdEl ,
138
+ td ( { class : "col-md-4" } , aLabelEl ) ,
139
+ td ( { class : "col-md-1" } , aRemove ) ,
152
140
td ( { class : "col-md-6" } )
153
141
) ;
142
+ } ;
154
143
155
144
const Button = ( { id, title, onclick } ) =>
156
145
div (
157
146
{ class : "col-sm-6 smallpad" } ,
158
- button (
159
- { type : "button" , class : "btn btn-primary btn-block" , id, onclick } ,
160
- title
161
- )
147
+ button ( { type : "button" , class : "btn btn-primary btn-block" , id, onclick } , title )
162
148
) ;
163
149
164
150
const Jumbotron = ( { } ) =>
165
151
div (
166
152
{ class : "jumbotron" } ,
167
153
div (
168
154
{ class : "row" } ,
169
- div ( { class : "col-md-6" } , h1 ( "Bau Benchmark" ) ) ,
155
+ div ( { class : "col-md-6" } , h1 ( "Bau Non-Keyed Benchmark" ) ) ,
170
156
div (
171
157
{ class : "col-md-6" } ,
172
158
div (
0 commit comments