@@ -33,6 +33,7 @@ import {DataTableComponent} from './data_table_component';
33
33
[headers]="headers"
34
34
[data]="data"
35
35
[sortingInfo]="sortingInfo"
36
+ [smoothingEnabled]="smoothingEnabled"
36
37
(sortDataBy)="sortDataBy($event)"
37
38
(orderColumns)="orderColumns($event)"
38
39
></tb-data-table>
@@ -45,6 +46,7 @@ class TestableComponent {
45
46
@Input ( ) headers ! : ColumnHeaders [ ] ;
46
47
@Input ( ) data ! : SelectedStepRunData [ ] ;
47
48
@Input ( ) sortingInfo ! : SortingInfo ;
49
+ @Input ( ) smoothingEnabled ! : boolean ;
48
50
49
51
@Input ( ) sortDataBy ! : ( sortingInfo : SortingInfo ) => void ;
50
52
@Input ( ) orderColumns ! : ( newOrder : ColumnHeaders [ ] ) => void ;
@@ -64,6 +66,7 @@ describe('data table', () => {
64
66
headers ?: ColumnHeaders [ ] ;
65
67
data ?: SelectedStepRunData [ ] ;
66
68
sortingInfo ?: SortingInfo ;
69
+ smoothingEnabled ?: boolean ;
67
70
} ) : ComponentFixture < TestableComponent > {
68
71
const fixture = TestBed . createComponent ( TestableComponent ) ;
69
72
@@ -74,6 +77,11 @@ describe('data table', () => {
74
77
order : SortingOrder . ASCENDING ,
75
78
} ;
76
79
80
+ fixture . componentInstance . smoothingEnabled =
81
+ input . smoothingEnabled === undefined ? true : input . smoothingEnabled ;
82
+
83
+ console . log ( 'enabled?' , fixture . componentInstance . smoothingEnabled ) ;
84
+
77
85
sortDataBySpy = jasmine . createSpy ( ) ;
78
86
fixture . componentInstance . sortDataBy = sortDataBySpy ;
79
87
@@ -105,6 +113,7 @@ describe('data table', () => {
105
113
ColumnHeaders . MIN_VALUE ,
106
114
ColumnHeaders . MAX_VALUE ,
107
115
ColumnHeaders . PERCENTAGE_CHANGE ,
116
+ ColumnHeaders . SMOOTHED ,
108
117
] ,
109
118
} ) ;
110
119
fixture . detectChanges ( ) ;
@@ -134,6 +143,7 @@ describe('data table', () => {
134
143
. queryAll ( By . css ( 'mat-icon' ) ) [ 0 ]
135
144
. nativeElement . getAttribute ( 'svgIcon' )
136
145
) . toBe ( 'change_history_24px' ) ;
146
+ expect ( headerElements [ 13 ] . nativeElement . innerText ) . toBe ( 'Smoothed' ) ;
137
147
} ) ;
138
148
139
149
it ( 'displays data in order' , ( ) => {
@@ -151,6 +161,7 @@ describe('data table', () => {
151
161
ColumnHeaders . MIN_VALUE ,
152
162
ColumnHeaders . MAX_VALUE ,
153
163
ColumnHeaders . PERCENTAGE_CHANGE ,
164
+ ColumnHeaders . SMOOTHED ,
154
165
] ,
155
166
data : [
156
167
{
@@ -167,6 +178,7 @@ describe('data table', () => {
167
178
MIN_VALUE : 1 ,
168
179
MAX_VALUE : 500 ,
169
180
PERCENTAGE_CHANGE : 0.3 ,
181
+ SMOOTHED : 2 ,
170
182
} ,
171
183
] ,
172
184
} ) ;
@@ -199,6 +211,7 @@ describe('data table', () => {
199
211
. queryAll ( By . css ( 'mat-icon' ) ) [ 0 ]
200
212
. nativeElement . getAttribute ( 'svgIcon' )
201
213
) . toBe ( 'arrow_upward_24px' ) ;
214
+ expect ( dataElements [ 13 ] . nativeElement . innerText ) . toBe ( '2' ) ;
202
215
} ) ;
203
216
204
217
it ( 'displays nothing when no data is available' , ( ) => {
@@ -400,4 +413,41 @@ describe('data table', () => {
400
413
ColumnHeaders . RUN ,
401
414
] ) ;
402
415
} ) ;
416
+
417
+ it ( 'does not display Smoothed column when smoothingEnabled is false' , ( ) => {
418
+ const fixture = createComponent ( {
419
+ headers : [
420
+ ColumnHeaders . VALUE ,
421
+ ColumnHeaders . RUN ,
422
+ ColumnHeaders . SMOOTHED ,
423
+ ColumnHeaders . STEP ,
424
+ ] ,
425
+ data : [
426
+ {
427
+ id : 'someid' ,
428
+ RUN : 'run name' ,
429
+ VALUE : 3 ,
430
+ STEP : 1 ,
431
+ SMOOTHED : 2 ,
432
+ } ,
433
+ ] ,
434
+ smoothingEnabled : false ,
435
+ } ) ;
436
+ fixture . detectChanges ( ) ;
437
+ const headerElements = fixture . debugElement . queryAll ( By . css ( 'th' ) ) ;
438
+ const dataElements = fixture . debugElement . queryAll ( By . css ( 'td' ) ) ;
439
+
440
+ // The first header should always be blank as it is the run color column.
441
+ expect ( headerElements [ 0 ] . nativeElement . innerText ) . toBe ( '' ) ;
442
+ expect ( headerElements [ 1 ] . nativeElement . innerText ) . toBe ( 'Value' ) ;
443
+ expect ( headerElements [ 2 ] . nativeElement . innerText ) . toBe ( 'Run' ) ;
444
+ expect ( headerElements [ 3 ] . nativeElement . innerText ) . toBe ( 'Step' ) ;
445
+ expect ( headerElements . length ) . toBe ( 4 ) ;
446
+
447
+ expect ( dataElements [ 0 ] . nativeElement . innerText ) . toBe ( '' ) ;
448
+ expect ( dataElements [ 1 ] . nativeElement . innerText ) . toBe ( '3' ) ;
449
+ expect ( dataElements [ 2 ] . nativeElement . innerText ) . toBe ( 'run name' ) ;
450
+ expect ( dataElements [ 3 ] . nativeElement . innerText ) . toBe ( '1' ) ;
451
+ expect ( dataElements . length ) . toBe ( 4 ) ;
452
+ } ) ;
403
453
} ) ;
0 commit comments