Skip to content

Commit 92058b5

Browse files
committed
WIP: check if we can remove polar checks
1 parent 2ebd1b1 commit 92058b5

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

src/stack.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {array, hasOwnProperty, isBoolean} from 'vega-util';
22
import {Aggregate, SUM_OPS} from './aggregate.js';
3-
import {getSecondaryRangeChannel, NonPositionChannel, NONPOSITION_CHANNELS, isPolarPositionChannel} from './channel.js';
3+
import {getSecondaryRangeChannel, NonPositionChannel, NONPOSITION_CHANNELS} from './channel.js';
44
import {
55
channelDefType,
66
FieldName,
@@ -173,20 +173,19 @@ export function stack(m: Mark | MarkDef, encoding: Encoding<string>): StackPrope
173173
const groupbyChannels: StackProperties['groupbyChannels'] = [];
174174
const groupbyFields: Set<FieldName> = new Set();
175175

176-
if (encoding[dimensionChannel]) {
177-
const dimensionDef = encoding[dimensionChannel];
178-
const dimensionField = isFieldDef(dimensionDef) ? vgField(dimensionDef, {}) : undefined;
179-
const hasSameDimensionAndStackedField = dimensionField && dimensionField === stackedField;
176+
const dimensionDef = encoding[dimensionChannel];
177+
const dimensionField = isFieldDef(dimensionDef) ? vgField(dimensionDef, {}) : undefined;
178+
const hasSameDimensionAndStackedField = dimensionField && dimensionField === stackedField;
180179

181-
// For polar coordinates, do not set a groupBy when working with quantitative fields.
182-
const isPolar = isPolarPositionChannel(fieldChannel) || isPolarPositionChannel(dimensionChannel);
183-
const shouldAddPolarGroupBy = !isUnbinnedQuantitative(dimensionDef);
180+
// Do not set a groupBy when working with unbinned quantitative fields
181+
// This applies to both polar and cartesian coordinates
182+
const shouldAddGroupBy = !isUnbinnedQuantitative(dimensionDef);
184183

185-
if (isPolar ? shouldAddPolarGroupBy : !hasSameDimensionAndStackedField) {
186-
// avoid grouping by the stacked field
187-
groupbyChannels.push(dimensionChannel);
188-
groupbyFields.add(dimensionField);
189-
}
184+
// If it's binned, we don't need to group by the dimension field, because we will filter out the offset in the end anyway
185+
if (shouldAddGroupBy && !hasSameDimensionAndStackedField) {
186+
// avoid grouping by the stacked field
187+
groupbyChannels.push(dimensionChannel);
188+
groupbyFields.add(dimensionField);
190189
}
191190

192191
const dimensionOffsetChannel = dimensionChannel === 'x' ? 'xOffset' : 'yOffset';

0 commit comments

Comments
 (0)