-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathListDefToArray.js
More file actions
49 lines (41 loc) · 1.41 KB
/
ListDefToArray.js
File metadata and controls
49 lines (41 loc) · 1.41 KB
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
39
40
41
42
43
44
45
46
47
48
49
import { Brick, registerBrick } from 'olympe';
import {combineLatest} from 'rxjs';
export default class ListDefToArray extends Brick {
/**
* @override
* @protected
* @param {!BrickContext} $
* @param {ListDef} data
* @param {*} options
* @param {!Brick} iterator
* @param {function(*)} setD3jsData
*/
update($, [data, options, iterator], [setD3jsData]) {
//TODO make sur the options is optional!
var toto = this.process($, data, options, iterator);
toto.subscribe(setD3jsData);
}
/**
* @private
* @param {!BrickContext} $
* @param {!Array} data
* @param {!Brick} iterator
* @return {!Promise<!Array<*>>}
*/
process($, data, options, iterator) {
const [itemInput$, rankInput$, listInput$, options$] = iterator.getInputs();
const [itemOutput$] = iterator.getOutputs();
//map of observables
const toObservable = (item, rank) => {
const mapper$ = $.runner(iterator)
.set(itemInput$, item)
.set(rankInput$, rank)
.set(options$, options)
return mapper$.observe(itemOutput$)
};
//map of observables => observable map
// combineLatest from rxjs on map of observables
return combineLatest(data.map(toObservable));
}
}
registerBrick('01843933c444e764e357', ListDefToArray);