@@ -14,6 +14,7 @@ import { IFinding } from 'src/app/interfaces/IFinding';
14
14
import { RecommendationsService } from '../services/recommendations.service' ;
15
15
import {
16
16
clearFindings ,
17
+ filterRecs ,
17
18
loadRecommendations ,
18
19
setInformation ,
19
20
UploadFile ,
@@ -25,6 +26,7 @@ export interface RecommendationsStateModel {
25
26
findings : IFinding [ ] ;
26
27
fileName : string | undefined ;
27
28
exampleProcess : boolean ;
29
+ taskId : number | undefined ;
28
30
}
29
31
30
32
@State < RecommendationsStateModel > ( {
@@ -35,6 +37,7 @@ export interface RecommendationsStateModel {
35
37
findings : [ ] ,
36
38
fileName : undefined ,
37
39
exampleProcess : false ,
40
+ taskId : undefined ,
38
41
} ,
39
42
} )
40
43
@Injectable ( )
@@ -82,12 +85,12 @@ export class RecommendationsState {
82
85
context : StateContext < RecommendationsStateModel > ,
83
86
{ payload } : UploadFile
84
87
) : Observable < number > {
85
- console . log ( payload . filter ) ;
86
88
return this . recommendationService
87
89
. uploadFindings ( payload . data , payload . filter )
88
90
. pipe (
89
- filter ( ( response ) => response !== - 1 ) ,
90
- map ( ( response ) => response ) ,
91
+ filter ( ( response ) => response . task_id !== - 1 ) ,
92
+ tap ( ( response ) => context . patchState ( { taskId : response . task_id } ) ) ,
93
+ map ( ( response ) => response . task_id ) ,
91
94
finalize ( ( ) => void context . patchState ( { isLoading : false } ) )
92
95
) ;
93
96
}
@@ -102,16 +105,40 @@ export class RecommendationsState {
102
105
}
103
106
104
107
@Action ( loadRecommendations )
105
- loadRecommendations ( context : StateContext < RecommendationsStateModel > ) : void {
106
- interval ( 10000 )
107
- . pipe (
108
- switchMap ( ( ) => this . recommendationService . getUploadStatus ( ) ) ,
109
- takeWhile ( ( response ) => response . status !== 'completed' , true ) ,
110
- filter ( ( response ) => response . status === 'completed' ) ,
111
- switchMap ( ( ) => this . recommendationService . getRecommendations ( ) ) ,
112
- tap ( ( findings ) => context . patchState ( { findings : findings . items } ) )
113
- )
114
- . subscribe ( ) ;
108
+ loadRecommendations (
109
+ context : StateContext < RecommendationsStateModel > ,
110
+ { payload } : loadRecommendations
111
+ ) : void {
112
+ const taskId = context . getState ( ) . taskId ;
113
+ if ( typeof taskId === 'number' ) {
114
+ interval ( 10000 )
115
+ . pipe (
116
+ filter ( ( ) => taskId !== undefined ) ,
117
+ switchMap ( ( ) => this . recommendationService . getUploadStatus ( taskId ) ) ,
118
+ takeWhile ( ( response ) => response . status !== 'completed' , true ) ,
119
+ filter ( ( response ) => response . status === 'completed' ) ,
120
+ switchMap ( ( ) =>
121
+ this . recommendationService . getRecommendations (
122
+ taskId ,
123
+ payload . severity
124
+ )
125
+ ) ,
126
+ tap ( ( findings ) => context . patchState ( { findings : findings . items } ) )
127
+ )
128
+ . subscribe ( ) ;
129
+ }
130
+ }
131
+ @Action ( filterRecs )
132
+ filterRecs (
133
+ context : StateContext < RecommendationsStateModel > ,
134
+ { payload } : filterRecs
135
+ ) {
136
+ let findings = context . getState ( ) . findings ;
137
+ findings = findings . filter (
138
+ ( finding ) =>
139
+ finding . severity >= payload . severity [ 0 ] &&
140
+ finding . severity <= payload . severity [ 1 ]
141
+ ) ;
142
+ context . patchState ( { findings } ) ;
115
143
}
116
144
}
117
-
0 commit comments