1 | import {Transform, ingest} from 'vega-dataflow';
|
2 | import {inherits} from 'vega-util';
|
3 | import {range} from 'd3-array';
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | export default function Sequence(params) {
|
14 | Transform.call(this, null, params);
|
15 | }
|
16 |
|
17 | Sequence.Definition = {
|
18 | 'type': 'Sequence',
|
19 | 'metadata': {'generates': true, 'changes': true},
|
20 | 'params': [
|
21 | { 'name': 'start', 'type': 'number', 'required': true },
|
22 | { 'name': 'stop', 'type': 'number', 'required': true },
|
23 | { 'name': 'step', 'type': 'number', 'default': 1 },
|
24 | { 'name': 'as', 'type': 'string', 'default': 'data' }
|
25 | ]
|
26 | };
|
27 |
|
28 | var prototype = inherits(Sequence, Transform);
|
29 |
|
30 | prototype.transform = function(_, pulse) {
|
31 | if (this.value && !_.modified()) return;
|
32 |
|
33 | var out = pulse.materialize().fork(pulse.MOD),
|
34 | as = _.as || 'data';
|
35 |
|
36 | out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;
|
37 |
|
38 | this.value = range(_.start, _.stop, _.step || 1).map(function(v) {
|
39 | var t = {};
|
40 | t[as] = v;
|
41 | return ingest(t);
|
42 | });
|
43 |
|
44 | out.add = pulse.add.concat(this.value);
|
45 |
|
46 | return out;
|
47 | };
|