Skip to content

Table plugin ts#96

Open
AlexSurtees wants to merge 28 commits into
devfrom
table-plugin-ts
Open

Table plugin ts#96
AlexSurtees wants to merge 28 commits into
devfrom
table-plugin-ts

Conversation

@AlexSurtees

@AlexSurtees AlexSurtees commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

Description

  1. Merges dev, including roi selector plugin. ROI selector and table plugin work separately (and should work together, but UI conflicts needs to be resolved)
  2. Refactors anndata zarr plugin to typescript
  3. Refactors plugin to prepare for different table backends e.g. csv rather than anndata.
    Fixes # (issue)
    Related to # (if applicable)

#58
#83

Type of change

  • 🐛 Bug fix (non-breaking change that resolves an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • ⚡ Optimisation (non-breaking improvement to performance or efficiency)
  • 🧩 Documentation (adds or improves documentation)
  • 🧱 Maintenance (refactor, dependency update, CI/CD, etc.)
  • 🔥 Breaking change (fix or feature that causes existing functionality to change)

Checklist

  • All tests pass (eg. npm test)
  • Pre-commit hooks run successfully (eg. pre-commit run --all-files)
  • Documentation updated (if required)

@netlify

netlify Bot commented Jul 1, 2026

Copy link
Copy Markdown

Deploy Preview for biongff-vizarr ready!

Name Link
🔨 Latest commit afe0b52
🔍 Latest deploy log https://app.netlify.com/projects/biongff-vizarr/deploys/6a4cd91bf74a190008766d86
😎 Deploy Preview https://deploy-preview-96--biongff-vizarr.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@AlexSurtees

Copy link
Copy Markdown
Collaborator Author

Fixed error in test runner, which was caused by the transitive dependency wgsl_reflect (deck.gl/core -> luma.gl/engine -> luma.gl/shadertools -> wgsl_reflect). I added an override to the package.json file to prevent updating to the breaking 1.3.0. The shadertools version we are depending on is 2 years old and could do with updating, which would be a better solution (e.g. upgrading deck.gl version). Output of pnpm why wgsl_reflect:

dependencies:
@deck.gl/core 9.0.41
├─┬ @luma.gl/engine 9.0.28
│ └─┬ @luma.gl/shadertools 9.0.28
│ └── wgsl_reflect 1.3.0
└─┬ @luma.gl/shadertools 9.0.28
└── wgsl_reflect 1.3.0
@deck.gl/geo-layers 9.0.41
├─┬ @deck.gl/core 9.0.41 peer
│ ├─┬ @luma.gl/engine 9.0.28
│ │ └─┬ @luma.gl/shadertools 9.0.28
│ │ └── wgsl_reflect 1.3.0
│ └─┬ @luma.gl/shadertools 9.0.28
│ └── wgsl_reflect 1.3.0
├─┬ @deck.gl/extensions 9.0.41 peer
│ ├─┬ @deck.gl/core 9.0.41 peer
│ │ ├─┬ @luma.gl/engine 9.0.28
│ │ │ └─┬ @luma.gl/shadertools 9.0.28
│ │ │ └── wgsl_reflect 1.3.0
│ │ └─┬ @luma.gl/shadertools 9.0.28
│ │ └── wgsl_reflect 1.3.0
│ ├─┬ @luma.gl/engine 9.0.28 peer
│ │ └─┬ @luma.gl/shadertools 9.0.28
│ │ └── wgsl_reflect 1.3.0
│ └─┬ @luma.gl/shadertools 9.0.28
│ └── wgsl_reflect 1.3.0
└─┬ @deck.gl/layers 9.0.41 peer
└─┬ @deck.gl/core 9.0.41 peer
├─┬ @luma.gl/engine 9.0.28
│ └─┬ @luma.gl/shadertools 9.0.28
│ └── wgsl_reflect 1.3.0
└─┬ @luma.gl/shadertools 9.0.28
└── wgsl_reflect 1.3.0

 and after:
 
 dependencies:

@deck.gl/core 9.0.41
├─┬ @luma.gl/engine 9.0.28
│ └─┬ @luma.gl/shadertools 9.0.28
│ └── wgsl_reflect 1.2.0
└─┬ @luma.gl/shadertools 9.0.28
└── wgsl_reflect 1.2.0
@deck.gl/geo-layers 9.0.41
├─┬ @deck.gl/core 9.0.41 peer
│ ├─┬ @luma.gl/engine 9.0.28
│ │ └─┬ @luma.gl/shadertools 9.0.28
│ │ └── wgsl_reflect 1.2.0
│ └─┬ @luma.gl/shadertools 9.0.28
│ └── wgsl_reflect 1.2.0
├─┬ @deck.gl/extensions 9.0.41 peer
│ ├─┬ @deck.gl/core 9.0.41 peer
│ │ ├─┬ @luma.gl/engine 9.0.28
│ │ │ └─┬ @luma.gl/shadertools 9.0.28
│ │ │ └── wgsl_reflect 1.2.0
│ │ └─┬ @luma.gl/shadertools 9.0.28
│ │ └── wgsl_reflect 1.2.0
│ ├─┬ @luma.gl/engine 9.0.28 peer
│ │ └─┬ @luma.gl/shadertools 9.0.28
│ │ └── wgsl_reflect 1.2.0
│ └─┬ @luma.gl/shadertools 9.0.28
│ └── wgsl_reflect 1.2.0
└─┬ @deck.gl/layers 9.0.41 peer
└─┬ @deck.gl/core 9.0.41 peer
├─┬ @luma.gl/engine 9.0.28
│ └─┬ @luma.gl/shadertools 9.0.28
│ └── wgsl_reflect 1.2.0
└─┬ @luma.gl/shadertools 9.0.28
└── wgsl_reflect 1.2.0

  Likely shadertools does not specify wgsl_reflect version in a narrow enough range and some difference caused pnpm to install 1.3.0 rather than 1.2.0.
  
  Opened an issue for upgrading deck.gl here #98 

const sourceUrl = viewerInfo.sourceUrl ?? "";

/** Navigate the viewer to a saved ROI (XY + Z) and make it visible. */
const handleGoToSavedRoi = (roi: SavedRoi) => {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@AlexSurtees Tested out the impact on the ROI plugin as requested. Every core functionality works fine including the import of ROIs saved in the zarr!

Only one minor feature is impacted, which is the 'Go to ROI' one. It can still toggle visibility, and move Z/T axis, but the 'zooming in' feature is not working anymore. The write channel the ROI plugin calls to move the camera silently fails since setViewState was removed from onViewerStateChange in VizarrViewer.tsx, so at runtime the property is just undefined

I believe this feature to not be crucial but still useful so I would suggest fixing this.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Thanks @LucaAnce. For the purposes of this PR, I think we will have to make a decision here about which is the lesser of two evils:

  1. Infinite re-render issue which does not seem to cause any functionality issues, but will no doubt affect performance of the viewer/browser.
  2. Ability for 'Go to ROI' functionality to match the correct zoom level for the ROI.

@davehorsfall what do you think?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Understood, I missed the reason why that was removed. With this infinite re-render issue in mind, I understand your concerns and potentially support the removal of the go-to feature if no other solution is found.

@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.88496% with 111 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
anndata-zarr/src/anndata.ts 34.82% 68 Missing and 5 partials ⚠️
anndata-zarr/src/hooks.ts 36.36% 35 Missing ⚠️
anndata-zarr/src/utils.ts 96.77% 1 Missing ⚠️
anndata-zarr/src/zarr.ts 91.66% 1 Missing ⚠️
viewer/src/io.ts 93.33% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants