Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { Injectable } from '@angular/core';
import { Effect, Actions, ofType } from '@ngrx/effects';
import { switchMap } from 'rxjs/operators';
import * as criteriaActions from '../../metamodel/action/criteria.action';
import * as searchActions from './search.action';
import { BetweenCriterion } from './model';
@Injectable()
export class SearchEffects {
constructor(
private actions$: Actions
) { }
@Effect()
loadDatasetAttributeListSuccessAction$ = this.actions$.pipe(
ofType(criteriaActions.LOAD_DATASET_ATTRIBUTE_LIST_SUCCESS),
switchMap((action: criteriaActions.LoadDatasetAttributeListSuccessAction) => {
const outputList = action.payload
.filter(attribute => attribute.selected && attribute.id_output_family)
.map(attribute => attribute.id);
const criteriaList = action.payload
.filter(attribute => attribute.id_criteria_family && attribute.search_type && attribute.min)
.map(attribute => {
if (attribute.search_type === 'bw') {
return new BetweenCriterion(attribute.id, attribute.min.toString(), attribute.max.toString());
}
});
return [
new searchActions.UpdateOutputListAction(outputList),
new searchActions.UpdateCriteriaListAction(criteriaList)
];
})
);
}