@@ -8,59 +8,70 @@ const C = ['red', 'yellow', 'blue', 'green', 'pink', 'brown', 'purple', 'brown',
8
8
const N = [ 'table' , 'chair' , 'house' , 'bbq' , 'desk' , 'car' , 'pony' , 'cookie' , 'sandwich' , 'burger' , 'pizza' ,
9
9
'mouse' , 'keyboard' ] ;
10
10
11
- const random = max => Math . round ( Math . random ( ) * 1000 ) % max ;
11
+ function random ( max ) {
12
+ return Math . round ( Math . random ( ) * 1000 ) % max ;
13
+ }
12
14
13
15
let nextId = 1 ;
14
16
function buildData ( count = 1000 ) {
15
17
const data = [ ] ;
16
18
for ( let i = 0 ; i < count ; i ++ ) {
17
19
data . push ( {
18
20
id : nextId ++ ,
19
- label : `${ A [ random ( A . length ) ] } ${ C [ random ( C . length ) ] } ${ N [ random ( N . length ) ] } `
21
+ label : A [ random ( A . length ) ] + " " + C [ random ( C . length ) ] + " " + N [ random ( N . length ) ] ,
22
+ selected : false
20
23
} ) ;
21
24
}
22
25
return data ;
23
26
}
24
27
25
28
const store = new Store ( {
26
29
initData : {
27
- rows : [ ] ,
28
- selected : 0
30
+ rows : [ ]
29
31
} ,
30
32
31
33
actions : {
32
- setSelected ( id ) {
33
- return builder ( ) . set ( 'selected' , id ) ;
34
+ setSelected ( id , { getState, dispatch} ) {
35
+ const rows = getState ( 'rows' ) ;
36
+ const newData = rows . slice ( 0 ) ;
37
+
38
+ rows . forEach ( ( el , i ) => {
39
+ if ( el . selected ) {
40
+ newData [ i ] = { ...rows [ i ] , selected : false }
41
+ }
42
+ if ( el . id === id ) {
43
+ newData [ i ] = { ...rows [ i ] , selected : true }
44
+ }
45
+ } ) ;
46
+ return builder ( ) . set ( 'rows' , newData ) ;
34
47
} ,
35
- run ( n , { dispatch} ) {
36
- dispatch ( 'setSelected' , 0 ) ;
48
+ run ( n ) {
37
49
return builder ( ) . set ( 'rows' , buildData ( n ) ) ;
38
50
} ,
39
51
add ( n , { getState} ) {
40
52
const rows = getState ( 'rows' ) ;
41
53
return builder ( ) . set ( 'rows' , rows . concat ( buildData ( n ) ) ) ;
42
54
} ,
43
55
update ( n , { getState} ) {
44
- const newData = getState ( 'rows' ) . slice ( ) ;
56
+ const newData = getState ( 'rows' ) . slice ( 0 ) ;
45
57
for ( let i = 0 ; i < newData . length ; i += 10 ) {
46
58
const r = newData [ i ] ;
47
59
newData [ i ] = { id : r . id , label : r . label + ' !!!' } ;
48
60
}
49
61
return builder ( ) . set ( 'rows' , newData ) ;
50
62
} ,
51
- clear ( n , { dispatch} ) {
52
- dispatch ( 'setSelected' , 0 ) ;
63
+ clear ( n ) {
53
64
return builder ( ) . set ( 'rows' , [ ] ) ;
54
65
} ,
55
66
remove ( id , { getState} ) {
56
- const newData = getState ( 'rows' ) . slice ( ) ;
67
+ const newData = getState ( 'rows' ) . slice ( 0 ) ;
57
68
const idx = newData . findIndex ( d => d . id === id ) ;
58
69
59
70
newData . splice ( idx , 1 ) ;
60
71
return builder ( ) . set ( 'rows' , newData ) ;
61
72
} ,
62
73
swapRows ( n , { getState} ) {
63
- const newData = getState ( 'rows' ) . slice ( ) ;
74
+ const newData = getState ( 'rows' ) . slice ( 0 ) ;
64
75
if ( newData . length > 998 ) {
65
76
const tmp = newData [ 1 ] ;
66
77
newData [ 1 ] = newData [ 998 ] ;
0 commit comments