1
- import { Component , ElementRef , ViewChild } from '@angular/core' ;
1
+ import { ChangeDetectionStrategy , Component , ElementRef , ViewChild } from '@angular/core' ;
2
2
import {
3
3
animationFrameScheduler ,
4
4
asyncScheduler ,
@@ -11,6 +11,7 @@ import {
11
11
Subject ,
12
12
} from 'rxjs' ;
13
13
import {
14
+ delay ,
14
15
filter ,
15
16
groupBy ,
16
17
map ,
@@ -34,6 +35,7 @@ import TimelineOptions = google.visualization.TimelineOptions;
34
35
selector : 'app-multiple-worker-pool' ,
35
36
templateUrl : './multiple-worker-pool.component.html' ,
36
37
styleUrls : [ './multiple-worker-pool.component.scss' ] ,
38
+ changeDetection : ChangeDetectionStrategy . OnPush ,
37
39
} )
38
40
export class MultipleWorkerPoolComponent {
39
41
@ViewChild ( 'timeline' , { read : ElementRef } ) private timelineComponent : ElementRef ;
@@ -135,13 +137,10 @@ export class MultipleWorkerPoolComponent {
135
137
return ;
136
138
}
137
139
138
- if ( lastRow . has ( event . file ) ) {
139
- dataTable . setCell ( lastRow . get ( event . file ) , 3 , event . timestamp ) ;
140
- }
140
+ const timestamp = event . timestamp ;
141
141
142
- if ( event . fileEventType === FileHashEvent . HASH_RECEIVED ) {
143
- lastRow . delete ( event . file ) ;
144
- return ;
142
+ if ( lastRow . has ( event . file ) ) {
143
+ dataTable . setCell ( lastRow . get ( event . file ) , 3 , timestamp ) ;
145
144
}
146
145
147
146
let durationName : string ;
@@ -164,10 +163,18 @@ export class MultipleWorkerPoolComponent {
164
163
case FileHashEvent . HASH_COMPUTED :
165
164
durationName = 'Returning hash result to main thread' ;
166
165
break ;
166
+ case FileHashEvent . HASH_RECEIVED :
167
+ durationName = 'Main thread received hash' ;
168
+ break ;
167
169
}
168
170
169
- const row = dataTable . addRow ( [ event . file , durationName , event . timestamp , event . timestamp ] ) ;
170
- lastRow . set ( event . file , row ) ;
171
+ const row = dataTable . addRow ( [ event . file , durationName , timestamp , timestamp ] ) ;
172
+
173
+ if ( event . fileEventType === FileHashEvent . HASH_RECEIVED ) {
174
+ lastRow . delete ( event . file ) ;
175
+ } else {
176
+ lastRow . set ( event . file , row ) ;
177
+ }
171
178
172
179
chartOptions . height = filenames . length * 41 + 50 ;
173
180
@@ -200,6 +207,7 @@ export class MultipleWorkerPoolComponent {
200
207
this . complete$ . pipe (
201
208
filter ( c => c ) ,
202
209
take ( 1 ) ,
210
+ delay ( 0 ) ,
203
211
) ,
204
212
) ,
205
213
) ;
0 commit comments