1 | import Facet from './Facet';
|
2 | import {ingest, tupleid} from 'vega-dataflow';
|
3 | import {accessorFields, error, inherits} from 'vega-util';
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | export default function PreFacet(params) {
|
15 | Facet.call(this, params);
|
16 | }
|
17 |
|
18 | var prototype = inherits(PreFacet, Facet);
|
19 |
|
20 | prototype.transform = function(_, pulse) {
|
21 | var self = this,
|
22 | flow = _.subflow,
|
23 | field = _.field;
|
24 |
|
25 | if (_.modified('field') || field && pulse.modified(accessorFields(field))) {
|
26 | error('PreFacet does not support field modification.');
|
27 | }
|
28 |
|
29 | this._targets.active = 0;
|
30 |
|
31 | pulse.visit(pulse.MOD, function(t) {
|
32 | var sf = self.subflow(tupleid(t), flow, pulse, t);
|
33 | field ? field(t).forEach(function(_) { sf.mod(_); }) : sf.mod(t);
|
34 | });
|
35 |
|
36 | pulse.visit(pulse.ADD, function(t) {
|
37 | var sf = self.subflow(tupleid(t), flow, pulse, t);
|
38 | field ? field(t).forEach(function(_) { sf.add(ingest(_)); }) : sf.add(t);
|
39 | });
|
40 |
|
41 | pulse.visit(pulse.REM, function(t) {
|
42 | var sf = self.subflow(tupleid(t), flow, pulse, t);
|
43 | field ? field(t).forEach(function(_) { sf.rem(_); }) : sf.rem(t);
|
44 | });
|
45 |
|
46 | return pulse;
|
47 | };
|