@@ -37,18 +37,15 @@ var SchedulingCheck = React.createClass({
37
37
open : false ,
38
38
failed : false ,
39
39
timestamp : "never" ,
40
- tableState : { // gets modified by functions in the definition of SelectTable
40
+ tableState : {
41
41
greyed : { } ,
42
- sort : - 1
42
+ sort : false ,
43
+ reverse : false
43
44
}
44
45
} ;
45
46
} ,
46
47
47
48
updateTableState : function ( state ) {
48
- /*this.state.tableState = {
49
- greyed: state.greyed,
50
- sort: state.sort
51
- };*/
52
49
this . state . tableState = state ;
53
50
} ,
54
51
@@ -111,7 +108,7 @@ var SchedulingCheck = React.createClass({
111
108
if ( data . headings [ i ] ) {
112
109
columns [ i ] = { key : String ( i ) , label : data . headings [ i ] } ;
113
110
} else {
114
- columns [ i ] = { key : String ( i ) , label : " " } ;
111
+ columns [ i ] = { key : String ( i ) , label : "-- " } ;
115
112
}
116
113
}
117
114
table = < SelectTable rows = { data . body } columns = { columns } header = { true } saveState = { this . state . tableState } updateTableState = { this . updateTableState } /> ;
@@ -159,7 +156,8 @@ var SelectTable = React.createClass({
159
156
rows : React . PropTypes . array . isRequired ,
160
157
saveState : React . PropTypes . shape ( {
161
158
greyed : React . PropTypes . object . isRequired ,
162
- sort : React . PropTypes . any . isRequired
159
+ sort : React . PropTypes . any . isRequired ,
160
+ reverse : React . PropTypes . bool . isRequired
163
161
} ) . isRequired ,
164
162
header : React . PropTypes . bool . isRequired ,
165
163
columns : React . PropTypes . array ,
@@ -168,19 +166,19 @@ var SelectTable = React.createClass({
168
166
169
167
getInitialState : function ( ) {
170
168
// We will store the sorted column and whether each row is greyed out
171
- return { sort : this . props . saveState . sort , greyed : this . props . saveState . greyed } ;
169
+ return { sort : this . props . saveState . sort , greyed : this . props . saveState . greyed , reverse : this . props . saveState . reverse } ;
172
170
} ,
173
171
render : function ( ) {
174
172
this . props . updateTableState ( this . state ) ;
175
- var me = this ,
176
- // clone the rows
177
- items = this . props . rows . slice ( )
178
- ;
173
+ var me = this ;
174
+ // clone the rows
175
+ items = this . props . rows . slice ( ) ;
179
176
180
177
items = _ . sortBy ( items , function ( item ) {
181
178
return item [ me . state . sort ] ;
182
179
} ) ;
183
-
180
+
181
+ if ( this . state . reverse ) items . reverse ( ) ;
184
182
185
183
return < JsonTable
186
184
rows = { items }
@@ -197,7 +195,11 @@ var SelectTable = React.createClass({
197
195
return {
198
196
headerClass : function ( current , key ) {
199
197
if ( me . state . sort == key ) {
200
- return current + ' headerSelected' ;
198
+ if ( me . state . reverse ) {
199
+ return current + ' headerSelected sortReversed' ;
200
+ } else {
201
+ return current + ' headerSelected' ;
202
+ }
201
203
} else {
202
204
return current ;
203
205
}
@@ -214,7 +216,11 @@ var SelectTable = React.createClass({
214
216
} ,
215
217
216
218
onClickHeader : function ( e , column ) {
217
- this . setState ( { sort : column } ) ;
219
+ if ( this . state . sort === column ) {
220
+ this . setState ( { reverse : ! this . state . reverse } ) ;
221
+ } else {
222
+ this . setState ( { sort : column , reverse : false } ) ;
223
+ }
218
224
} ,
219
225
220
226
onClickRow : function ( e , item ) {
0 commit comments