@@ -3,16 +3,17 @@ import { Transform } from './transform';
3
3
import { View } from './view' ;
4
4
5
5
import {
6
- SortExecutor ,
7
6
FilterExecutor ,
7
+ HideExecutor ,
8
+ SortExecutor ,
8
9
TransformExecutor ,
9
10
} from './transformExecutors' ;
10
11
11
12
import { each } from '@lumino/algorithm' ;
12
13
13
14
import { JSONExt } from '@lumino/coreutils' ;
14
15
15
- import { Signal , ISignal } from '@lumino/signaling' ;
16
+ import { ISignal , Signal } from '@lumino/signaling' ;
16
17
import { DataSource } from '../datasource' ;
17
18
18
19
/**
@@ -25,6 +26,7 @@ export class TransformStateManager {
25
26
this . _state [ transform . column ] = {
26
27
sort : undefined ,
27
28
filter : undefined ,
29
+ hide : undefined ,
28
30
} ;
29
31
}
30
32
@@ -41,6 +43,9 @@ export class TransformStateManager {
41
43
case 'filter' :
42
44
this . _state [ transform . column ] [ 'filter' ] = transform ;
43
45
break ;
46
+ case 'hide' :
47
+ this . _state [ transform . columnIndex ] [ 'hide' ] = transform ;
48
+ break ;
44
49
default :
45
50
throw 'unreachable' ;
46
51
}
@@ -110,6 +115,7 @@ export class TransformStateManager {
110
115
private _createExecutors ( data : Readonly < DataSource > ) : TransformExecutor [ ] {
111
116
const sortExecutors : SortExecutor [ ] = [ ] ;
112
117
const filterExecutors : FilterExecutor [ ] = [ ] ;
118
+ const hideExecutors : HideExecutor [ ] = [ ] ;
113
119
114
120
Object . keys ( this . _state ) . forEach ( ( column ) => {
115
121
const transform : TransformStateManager . IColumn = this . _state [ column ] ;
@@ -146,10 +152,17 @@ export class TransformStateManager {
146
152
} ) ;
147
153
filterExecutors . push ( executor ) ;
148
154
}
155
+ if ( transform . hide ) {
156
+ const executor = new HideExecutor ( {
157
+ field : data . schema . fields [ transform . hide . columnIndex ] [ 'name' ] ,
158
+ hideAll : transform . hide . hideAll ,
159
+ } ) ;
160
+ hideExecutors . push ( executor ) ;
161
+ }
149
162
} ) ;
150
163
151
164
// Always put filters first
152
- return [ ...filterExecutors , ...sortExecutors ] ;
165
+ return [ ...filterExecutors , ...sortExecutors , ... hideExecutors ] ;
153
166
}
154
167
155
168
/**
@@ -171,10 +184,12 @@ export class TransformStateManager {
171
184
columnState . sort = undefined ;
172
185
} else if ( transformType === 'filter' ) {
173
186
columnState . filter = undefined ;
187
+ } else if ( transformType === 'hide' ) {
188
+ columnState . hide = undefined ;
174
189
} else {
175
190
throw 'unreachable' ;
176
191
}
177
- if ( ! columnState . sort && ! columnState . filter ) {
192
+ if ( ! columnState . sort && ! columnState . filter && ! columnState . hide ) {
178
193
delete this . _state [ column ] ;
179
194
}
180
195
this . _changed . emit ( {
@@ -229,6 +244,9 @@ export class TransformStateManager {
229
244
if ( this . _state [ column ] . filter ) {
230
245
transforms . push ( this . _state [ column ] . filter ! ) ;
231
246
}
247
+ if ( this . _state [ column ] . hide ) {
248
+ transforms . push ( this . _state [ column ] . hide ! ) ;
249
+ }
232
250
} ) ;
233
251
return transforms ;
234
252
}
@@ -255,6 +273,7 @@ export namespace TransformStateManager {
255
273
export interface IColumn {
256
274
filter : Transform . Filter | undefined ;
257
275
sort : Transform . Sort | undefined ;
276
+ hide : Transform . Hide | undefined ;
258
277
}
259
278
export interface IState {
260
279
[ key : string ] : IColumn ;
0 commit comments