Skip to content

Commit

Permalink
fix: don't fire geo-brush intersection on unit signal updates
Browse files Browse the repository at this point in the history
  • Loading branch information
arvind committed Jun 13, 2022
1 parent bda058e commit b837c81
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 14 deletions.
16 changes: 10 additions & 6 deletions src/compile/selection/interval.ts
Expand Up @@ -154,15 +154,19 @@ const interval: SelectionCompiler<'interval'> = {
const intersect = `intersect(${bbox}, {markname: ${stringValue(model.getName('marks'))}}, unit.mark)`;
const base = `{unit: ${unitName(model)}}`;
const update = `vlSelectionTuples(${intersect}, ${base})`;
const visualSignals = channels.map(proj => proj.signals.visual);

return signals.concat({
name: tupleSg,
update,
...(init
? {
on: [{events: {signal: GEO_INIT_TICK}, update}]
}
: {})
on: [
{
events: [
...(visualSignals.length ? [{signal: visualSignals.join(' || ')}] : []),
...(init ? [{signal: GEO_INIT_TICK}] : [])
],
update
}
]
});
}
},
Expand Down
24 changes: 16 additions & 8 deletions test/compile/selection/interval.test.ts
Expand Up @@ -1014,33 +1014,41 @@ describe('Interval Selections', () => {
const oneSg = interval.signals(model, selCmpts['one'], []);
expect(oneSg).toContainEqual({
name: 'one_tuple',
update:
'vlSelectionTuples(intersect([[one_longitude_1[0], one_latitude_1[0]],[one_longitude_1[1], one_latitude_1[1]]], {markname: "marks"}, unit.mark), {unit: ""})'
on: [
{
events: [{signal: 'one_longitude_1 || one_latitude_1'}],
update:
'vlSelectionTuples(intersect([[one_longitude_1[0], one_latitude_1[0]],[one_longitude_1[1], one_latitude_1[1]]], {markname: "marks"}, unit.mark), {unit: ""})'
}
]
});

const twoSg = interval.signals(model, selCmpts['two'], []);
expect(twoSg).toContainEqual({
name: 'two_tuple',
update:
'vlSelectionTuples(intersect([[two_longitude_1[0], 0],[two_longitude_1[1], height]], {markname: "marks"}, unit.mark), {unit: ""})'
on: [
{
events: [{signal: 'two_longitude_1'}],
update:
'vlSelectionTuples(intersect([[two_longitude_1[0], 0],[two_longitude_1[1], height]], {markname: "marks"}, unit.mark), {unit: ""})'
}
]
});

const threeSg = interval.signals(model, selCmpts['three'], []);
let update =
'vlSelectionTuples(intersect([[three_longitude_1[0], three_latitude_1[0]],[three_longitude_1[1], three_latitude_1[1]]], {markname: "marks"}, unit.mark), {unit: ""})';
expect(threeSg).toContainEqual({
name: 'three_tuple',
update,
on: [{events: {signal: GEO_INIT_TICK}, update}]
on: [{events: [{signal: 'three_latitude_1 || three_longitude_1'}, {signal: GEO_INIT_TICK}], update}]
});

const fourSg = interval.signals(model, selCmpts['four'], []);
update =
'vlSelectionTuples(intersect([[0, four_latitude_1[0]],[width, four_latitude_1[1]]], {markname: "marks"}, unit.mark), {unit: ""})';
expect(fourSg).toContainEqual({
name: 'four_tuple',
update,
on: [{events: {signal: GEO_INIT_TICK}, update}]
on: [{events: [{signal: 'four_latitude_1'}, {signal: GEO_INIT_TICK}], update}]
});
});
});
Expand Down

0 comments on commit b837c81

Please sign in to comment.