Skip to content

fix: polygon filtered index per layer, instead of per dataset - #3452

Merged
igorDykhta merged 7 commits into
masterfrom
igr/improve-polygon-layer-decouple
Aug 14, 2026
Merged

fix: polygon filtered index per layer, instead of per dataset#3452
igorDykhta merged 7 commits into
masterfrom
igr/improve-polygon-layer-decouple

Conversation

@igorDykhta

@igorDykhta igorDykhta commented May 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fixes #3277 by applying polygon filters per layer instead of on the shared dataset filteredIndex.

When layers share a dataset (e.g. pickup/dropoff), targeting one layer no longer strips points from the others, and selecting multiple layers no longer ANDs positions across layers.

Changes

  • Exclude polygon filters from dataset CPU filtering (getFilterRecord); add filteredIndexByLayer computed per targeted layer
  • Layers / Mapbox GL use filteredIndexByLayer[layerId] (fallback: filteredIndex)
  • Filtered CSV export and filter plots/histograms apply the union of polygon-visible rows via mergePolygonLayerIndexes
  • Clear filteredIndexByLayer on importData / update to avoid stale indexes after Arrow batch reloads
  • Use copyTableAndUpdate for the per-layer dataset view (keeps KeplerTable typing)
  • Tests for per-layer filtering, disable/restore, export, and plot index merging

Test plan

  • nyctrips: polygon-filter pickup only → dropoff unchanged
  • Select both layers → each filters on its own positions
  • Toggle polygon off → full data restored
  • Export filtered data → row count matches polygon-visible rows
  • Time/range filter plot updates with an active polygon filter

Signed-off-by: Ihor Dykhta <ihordykhta@Ihors-MacBook-Pro.local>
@igorDykhta igorDykhta self-assigned this May 21, 2026
Copilot AI review requested due to automatic review settings May 21, 2026 20:12
@igorDykhta igorDykhta added investigation needed 3.3 Kepler.gl 3.3 release labels May 21, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes polygon filtering behavior so that polygon filters are applied per-layer rather than at the shared dataset level, preventing unintended cross-layer filtering when multiple layers share a dataset (and avoiding the prior “AND across layers” behavior when multiple layers are selected).

Changes:

  • Excludes polygon filters from the dataset-level CPU filter pipeline so dataset.filteredIndex is no longer impacted by polygon filtering.
  • Adds filteredIndexByLayer to datasets and computes per-layer polygon-filtered indices in KeplerTable.filterTable.
  • Updates layer data/update triggers to use the per-layer filtered index when present, and adjusts unit tests/helpers accordingly.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
test/node/reducers/vis-state-test.js Updates polygon filter tests to assert per-layer filtering and unchanged dataset filteredIndex.
test/helpers/comparison-utils.js Adjusts dataset comparisons to optionally ignore the new internal filteredIndexByLayer field.
src/utils/src/filter-utils.ts Removes polygon filters from dataset CPU filtering via getFilterRecord while keeping them tracked in the record.
src/table/src/kepler-table.ts Introduces filteredIndexByLayer and computes per-layer polygon-filtered indices during dataset filtering.
src/layers/src/mapboxgl-layer.ts Uses per-layer filtered index for update triggers / data building in Mapbox GL layer.
src/layers/src/base-layer.ts Uses per-layer filtered index when updating meta and calculating data attributes for a layer.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/table/src/kepler-table.ts Outdated
Ihor Dykhta added 5 commits May 24, 2026 20:09
Signed-off-by: Ihor Dykhta <ihordykhta@Ihors-MacBook-Pro.local>
Signed-off-by: Ihor Dykhta <ihordykhta@Ihors-MacBook-Pro.local>
Signed-off-by: Ihor Dykhta <ihordykhta@Ihors-MacBook-Pro.local>
@igorDykhta
igorDykhta requested review from ilyabo and lixun910 August 8, 2026 21:31
Signed-off-by: Ihor Dykhta <ihordykhta@Ihors-MacBook-Pro.local>
@igorDykhta
igorDykhta merged commit e379e33 into master Aug 14, 2026
9 checks passed
@igorDykhta
igorDykhta deleted the igr/improve-polygon-layer-decouple branch August 14, 2026 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3.3 Kepler.gl 3.3 release investigation needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Filter layers by map draw control polygons issues

3 participants