Mercurial > hg > ugly-duckling
diff src/app/services/feature-extraction/FeatureExtractionWorker.ts @ 305:75a234459d3b
Fix for changes to streaming api in piper-js i.e. collect on the client
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Fri, 12 May 2017 08:28:18 +0100 |
parents | c60b03098bae |
children | a16d968d646e |
line wrap: on
line diff
--- a/src/app/services/feature-extraction/FeatureExtractionWorker.ts Fri May 12 08:26:18 2017 +0100 +++ b/src/app/services/feature-extraction/FeatureExtractionWorker.ts Fri May 12 08:28:18 2017 +0100 @@ -63,11 +63,7 @@ return this.dispatch('process', request); } - collect(request: SimpleRequest): Observable<StreamingResponse> { - return this.dispatch('collect', request); - } - - protected dispatch(method: 'process' | 'collect', + protected dispatch(method: 'process', request: SimpleRequest): Observable<StreamingResponse> { const key = request.key.split(':')[0]; return this.services.has(key) ? @@ -80,19 +76,27 @@ super(); } - protected dispatch(method: 'process' | 'collect', + protected dispatch(method: 'process', request: SimpleRequest): Observable<StreamingResponse> { let lastPercentagePoint = 0; + let shouldClear = false; return super.dispatch(method, request) - .scan(streamingResponseReducer) + .scan((acc, value) => { + if (shouldClear) { + acc.features = []; + } + return streamingResponseReducer(acc, value); + }) .filter(val => { + const progress = val.progress; const percentage = - 100 * (val.processedBlockCount / val.totalBlockCount) | 0; + 100 * (progress.processedBlockCount / progress.totalBlockCount) | 0; const pointDifference = (percentage - lastPercentagePoint); const shouldEmit = pointDifference === 1 || percentage === 100; if (shouldEmit) { lastPercentagePoint = percentage; } + shouldClear = shouldEmit; return shouldEmit; }); }