Releases: silx-kit/h5web
Release list
v11.1.0
Full Changelog: v11.0.0...v11.1.0
@h5web/app
- ✨
< Heatmap >Add toolbar control to flipXaxis #1573 #1574 - ✨
< NX Heatmap >Support auxiliary signals #1500 #1577 - ✨
< Raw >Display JPEG/PNG images stored as opaque datasets (requiresh5grove>=2.1.0) #1554 #1587 #1590
@h5web/lib
- ✨
[HeatmapVis]New propflipXAxisto flip heatmap horizontally - ✨ Add props
classNameandstyleto all visualization components (HeatmapVis,LineVis,RgbVis, etc.) ⚠️ Deprecate componentsFlipYAxisandGridToggler(to be removed in H5Web 12) — useToggleBtndirectly instead.
@h5web/h5wasm
- 🐛 Convert all bigints to number in
H5WasmProviderwithout exceptions, notably in nested compound datasets, to fix error in Raw visualization #1536 #1581 - 5️⃣ Propagate HDF5 errors to viewer so they can be properly handled and displayed #1570 #1586
- H5Web no longer has to guess ahead of time whether a compression filter is supported or not; it can now request the dataset knowing that if a decompression error occurs, it will be able to detect the error and inform the user. This means that some compressed datasets may now be displayed when they didn't use to be.
Screenshots
Flip X axis
Auxiliary signal selection
H5Web 11
Full Changelog: v10.1.0...v11.0.0
🎉 H5WasmProvider now supports loading the Blosc2 and Bitshuffle compression plugins provided by @bmaranville in [email protected]. Keep an eye out for upcoming releases of myHDF5 and the VS Code extension, or check out the h5wasm demo!
@h5web/app
⚠️ Breaking change[H5GroveProvider]now requires[email protected]#1557- ✨ External links are now included in search results thanks to improvements to the
/pathsendpoint. - ✨ Advanced HDF5 types, such as
H5T_ENUM,H5T_OPAQUE,H5T_ARRAY,H5T_VLEN,H5T_REFERENCE, are now properly parsed and displayed in the metadata viewer thanks to improvements to the/metadataendpoint.
- ✨ External links are now included in search results thanks to improvements to the
- 🐛 Fix import issues with Vitest #1562 #1564 #1565
- 🛠️ Reduce bundle size and runtime footprint in consumer applications #1537 #1564 #1571
[H5GroveProvider, HsdsProvider]Document using React'skeyattribute to ensure the viewer displays up-to-date metadata and dataset values when the content of the current HDF5 file changes #1559[H5GroveProvider]Take advantage of h5grove'sdtype=safetype conversions to fetchfloat16andfloat128datasets as binary (Float32ArrayandFloat64Arrayrespectively) instead of JSON #1561[H5GroveProvider]Recommend memoisingaxiosConfigobject withuseMemo#1559
@h5web/lib
⚠️ RemovemockMetadata,findMockEntityandgetMockDataArray#1537⚠️ Instead of holding entire, plain JS arrays, themockValuesobject now provides factory functions to generate mock ndarrays only when needed — e.g.mockValues.twoD()returns a mock ndarray with dimensions[20, 41]#1537- 🐛 Fix import issues with Vitest #1562 #1564 #1565
- 🛠️ Reduce bundle size and runtime footprint in consumer applications #1537 #1564 #1571
- Export
toTypedNdArrayutility to convert a plainnumber[]ndarray into a typed ndarray #1537
@h5web/h5wasm
- ✨
[H5WasmProvider]Support loading Blosc2 and Bitshuffle compression plugins provided in [email protected] #1524⚠️ The type of thegetPluginfunction prop has changed: it now accepts aPluginenum value as argument.
- ✨
[H5WasmProvider]Correctly parse the following advanced HDF5 types:H5T_OPAQUE,H5T_VLEN, andH5T_REFERENCEso they no longer appear as Unknown in the metadata viewer #1556 - 🐛
[H5WasmProvider]Fix issue when switching between two files with the same NeXusdefaultpath #1568
v10.1.0
Full Changelog: v10.0.0...v10.1.0
🎉 This release brings initial support for loading compressed datasets with H5WasmProvider. Keep an eye out for upcoming releases of myHDF5 and the VS Code extension, or give it a try right away in the h5wasm demo! Big thanks to @bmaranville for making common HDF5 compression plugins available through the h5wasm-plugins package. 🏆
⚠️ This version includes a change that unwillingly breaks support for Create React App. However, since CRA is no longer maintained, we have decided to not revert the change. If this is causing issues with other set-ups, please let us know.
@h5web/app
- 🐛
< NX Heatmap >Fix min axis array length off by 1 in error message #1521
@h5web/lib
- ✨ New
useGeometryhook,H5WebGeometryabstract class, andcreateBufferAttributeandcreateIndexutilities, to ease creation/update of buffer geometries #1515- The
DataCurvecomponent is now a simple abstraction on top of three new components, each of which comes with its own customH5WebGeometryclass(es). You are free to use these components directly, or to reuse, extend or just get inspiration from the new geometry classes for your own custom components: - Other experimental components have been refactored and now come with their own custom geometry classes as well (
ScatterPointsGeometry,SurfaceMeshGeometry).
- The
- 🐛
[HeatmapVis]Fix min axis array length off by 1 in error message #1521 - 🐛
[LineVis]ForwardignoreValueprop to auxiliaryDataCurve(s) #1515
@h5web/h5wasm
- ✨ Allow consumer applications to load the following compression plugins on demand: Blosc, bzip2, LZ4, LZF, SZ, ZFP and Zstandard #1522
- Consumers must implement the new function prop
getPluginofH5WasmProvider. This async function is called whenever a dataset compressed with one (or more) of the supported plugins is requested; it receives the name of the plugin as argument and should return the plugin's*.soshared library file as an array buffer if available. - Fetching the plugins' library files is the responsibility of the consumer application, as this depends on how/where the files are served, whether they are loaded via a bundler like Vite or webpack, etc. For an example of loading plugin files from the h5wasm-plugins package in a Vite project, see
plugin-utils.tsin thedemoproject.
- Consumers must implement the new function prop
- 🐛 Fix NextJS import issue #1525
H5Web 10 – now with React 18
Full Changelog: v9.0.0...v10.0.0
🥳 H5Web is now on React 18!
If your application is on React 17, you will need to upgrade to React 18 before you can upgrade to H5Web 10. Going forward, H5Web 9 will receive only critical bug fixes, and only upon request.
@h5web/app
- 🎉 Upgrade React to v18 #1119
⚠️ Breaking change: please upgradereactandreact-domto v18.x
- ✨
< Line, Heatmap >Support visualizing boolean datasets #1498 #1499 - 🐛
< Raw >Fix layout when content overflows #1488
@h5web/lib
- 🎉 Upgrade React to v18 and
@react-three/fiberto v8 #1119 #1494⚠️ Breaking change: please upgradereactandreact-domto v18.x, and@react-three/fiberto v8.x
- 🐛
[RawVis]Fix layout when content overflows #1488 ⚠️ [LineVis, HeatmapVis]Propdtype, which controls the dtype displayed in the tooltip, must now be provided directly as a string #1512⚠️ [VisCanvas]React Three Fiber now adds an extradivwrapper around thecanvaselement #1494
Experimental
- 🐛
[useDrag]Fix unstable drag while zooming #1487
@h5web/h5wasm
- ✨
[H5WasmProvider]Support (u)int64 data inside compound datasets (so they can be visualized withMatrixVis) #1503
v9.0.0
Full Changelog: v8.0.0...v9.0.0
@h5web/app
- ✨
[H5GroveProvider, MockProvider]Support exporting< Raw >visualizations to JSON #1485 - ✨ Allow zooming on very thin selection boxes #1482
- 🐛 Fix heatmap snapshot feature and, more generally, fix saving WebGL canvas as image via "save image as" #1453 #1460
⚠️ A number of CSS custom properties related to the domain widget (previously called "domain slider") have been renamed — cf. #1456. If you customise these properties in your app, please rename them.
@h5web/lib
Canvas
- 🐛
[VisCanvas]Fix saving WebGL canvas as image via "save image as" #1453 #1460 ⚠️ The DOM structure created byVisCanvashas changed significantly, which may impact advanced use cases — see also #1471
Interactions
- ✨
[SelectToZoom, SelectionTool]Allow cancelling selection-based interactions with right click #1370 #1463 - ✨
[SelectToZoom]Allow zooming on very thin selection boxes #1482 - ✨
⚠️ Allow interacting with canvas through other interactive elements, like SVG elements. Interactive elements on top of the canvas must now take care of stopping the propagation of events that might lead to conflicting interactions before they bubble up the DOM (typicallypointerdownto prevent panning/selecting). #1388 #1473
HTML/SVG overlays
- ✨
⚠️ [Overlay]Overflow canvas bounds by default — to hide the overflow, simply pass the appropriate inline style #1470 - 🐛
[Annotation]Fix position of overflowing annotations #1467 - 🐛
[SvgRect]Fix rectangle with inset stroke disappearing when width or height is close to zero (internally,SvgRectnow renders apathelement instead of arect) #1482 ⚠️ [Html]Remove propcontainerand stop wrapping children with an extradivelement #1465- If you were using prop
container, we now recommend rendering the children through a React Portal instead. The three DOM containers rendered byVisCanvasare now available in the context, so you can use them as portal targets (cf. #1467 and #1479). However, remember that this is for advanced use cases only; the followingHtml-based components should be used in priority:Annotation,Overlay,SvgElement, andFloatingControl.
- If you were using prop
Toolbar
- 🐛
[DomainWidget](previouslyDomainSlider): Moving one histogram marker now toggles off autoscale only for the corresponding bound (i.e. min or max, not both) #1422 #1439⚠️ [Histogram]Replace proponChangewith two props:onChangeMinandonChangeMax#1439
⚠️ RenameDomainSlidertoDomainWidgetand export internal components #1382 #1377 #1445- ✨ Export component
DomainSlider, which now corresponds to the slider part of theDomainWidget#1448 - ✨ Export component
DomainControls, which corresponds to the content of theDomainWidget's popup (with the bound inputs, autoscale buttons, histogram, etc.) #1455 ⚠️ As a result of these changes, a number of CSS custom properties have been renamed — cf. #1456
- ✨ Export component
- Export component
ColorMapOption#1461 [ExportMenu]Add propalignto change the alignment of the Export menu popup (defaults to"center") #1485
Utilities & hooks
⚠️ Rename hookuseCanvasEventstouseCanvasEvent— the hook must now be called once per event to listen for, similarly to react-hookz'useEventListener, and the given listener function no longer needs to be wrapped withuseCallback. Note that, in relation to #1388,useCanvasEventno longer registers events on thecanvaselement but on a parent container. #1481- ✨ Add hook
useInteraction— use it to register and control your own canvas interactions #1475 #1477 - ✨ Add hook
useModifierKeyPressed— use it to keep track of the pressed state of one or more modifier keys #1475 #1477 - ✨ Add experimental hook
useDrag— use it to make SVG and other elements on top of the canvas draggable (e.g. moveable/resizeable ROIs) #1478
@h5web/h5wasm
- ✨
[H5WasmProvider]Support exporting< Raw >visualizations to JSON #1485 [H5WasmProvider]Parse nested array types returned by h5wasm #1486
Screenshots
Experimental useDrag hook
This recording also demonstrates interacting with the canvas through other interactive elements.
v8.0.0
Full Changelog: v7.1.0...v8.0.0
@h5web/app
⚠️ Breaking change[App]Remove propexplorerOpen, which was deprecated in favor ofsidebarOpenin v7.1.0 #1438- ✨
< NX >Show NeXus axis labels when hovering dimension buttonsD0,D1, ... #1426 #1435 - ✨
< Heatmap >AddCubehelixcolormap #1420 - 🐛
< NX Line >Fix wrong colors in the tooltip legend in dark mode #1432 - 🐛
< Complex Line >Remove unsupported scale types from drop-down selector in toolbar #1431
@h5web/lib
⚠️ Breaking change Props and parameters that accept scale type(s) (i.e.ScaleTypeorScaleType[]) are now more strictly typed to ensure that only supported scale types are provided #1431- This notably affects
VisCanvas,LineVis,HeatmapVis,RgbVis,ScatterVis,extendDomain, andgetAxisDomain
- This notably affects
⚠️ Breaking change[ScaleSelector]Propoptionsis now required – i.e. you must now always provide an array of scale type options #1431- For convenience, the following arrays of scale types are now available:
AXIS_SCALE_TYPES(linear, log, symlog),COLOR_SCALE_TYPES(linear, log, symlog, sqrt), as well as their corresponding union types:AxisScaleType,ColorScaleType
- For convenience, the following arrays of scale types are now available:
- ✨ Add
Cubehelixto the list of possible interpolators #1420 - 🐛
[LineVis]Fix wrong colors in tooltip in dark mode whenauxiliariesarrays are provided #1432 [ToggleGroup.Btn]Add prophintto show tooltip on hover #1435
@h5web/h5wasm
- ✨ Parse and display chunks information when present #1433
- 🐛 Fix support for big-endian numbers #1421 #1424
Screenshots
Axis hints in dimension mapper
Cubehelix colormap
v7.1.0
Full Changelog: v7.0.1...v7.1.0
🔍 H5Web now allows searching for datasets, groups and other entities in an HDF5 file by text.
👀 Keep an eye out for the next releases of jupyterlab-h5web, vscode-h5web and myHDF5, or check out one of the demos to see the feature in action!
@h5web/app
- ✨ Show search panel in sidebar when supported by provider (currently
H5GroveProvider,H5WasmProviderandMockProvider) #1348 #1367 #1391 - ✨
< Heatmap, Line >Support NetCDF's_FillValueattribute to indicate missing data. When the attribute is set, the given value is ignored when computing the data domain and when rendering the line and heatmap visualizations. #1181 #1381 #1395 - 🐛
< Heatmap >+Infinityand-Infinityno longer appear as transparent; they are now displayed with the lowest/highest colors of the selected color map just like any other under/over values #1372 #1374 - 🐛 Fix full-screen button when H5Web is integrated into a larger application, like JupyterLab #1365 #1383
- ⚡
< Line, Scatter >Optimise creation and update of internal Three.js geometries and remove misleading error bars in case of negative error values #1390 #1393
@h5web/lib
- ✨
[HeatmapVis, LineVis, DataCurve]Add propignoreValueto allow ignoring values when computing the domain and rendering the heatmap/line visualization. The prop accepts a callback that is called for each value in the data array; if the callback returnstrue, the value is ignored. #1381 - ✨
[HeatmapMesh]Add optional propmask, a uint8 ndarray that indicates which data values to mask (255) and which to show (0) #1395 - ✨
[HeatmapMesh]Add propbadColor, which defaults to transparent, to control the color used to displayNaNand other bad values (i.e. values not supported by the selected scale, and values ignored via the newmaskprop) #1372 #1374⚠️ Note that the default colour for bad values used to be white.
- ✨ Stack elements that appear on top of the
canvas(i.e. HTML/SVG elements, axis grid, tooltip, etc.) in the most predictable way possible, and document the new default stacking order and how to tweak it #1387⚠️ The parent container of the canvas (i.e. available from react-three-fiber's internal state viagl.parentElement) now haspointer-event: none, which means that overlays, annotations, SVG elements and other HTML elements that get appended to this container no longer respond to pointer events by default. You can therefore remove your ownpointer-events: nonedeclarations from those elements. For elements that are meant to be interactive, you can restore interactivity withpointer-events: auto.
- 🐛
[HeatmapVis, HeatmapMesh]+Infinityand-Infinityno longer appear as transparent ; they are now displayed with the lowest/highest colors of the selected color map just like any other under/over values #1372 #1374 [SelectToZoom, AxialSelectToZoom]Add propminZoomto allow changing the default minimum zoom size of 20px #1384[Toolbar]Add propoverflowChildrento forcefully render elements inside the overflow menu regardless of screen size #1378 by @PeterC-DLS[DomainSlider]Add propdisabledto disable the slider and tooltip #1385- New
SvgCirclecomponent #1389 [LineVis, DataCurve, ScatterVis]Optimise creation and update of internal Three.js geometries and fix edge cases with error values <= 0 #1390 #1393[getDomain, useDomain]Add optional parameterignoreValue, a callback to ignore values from the domain computation #1381- Add CSS custom properties
--h5w-toolbar--heightand--h5w-btn--heightto control the height of the toolbar and toolbar buttons #1402
Experimental
[TiledHeatmapMesh]Remove background mesh to keep canvas transparent where tiles are loading #1376
@h5web/h5wasm
- 🐛
[H5WasmProvider]Fix support for unsigned 64-bit integers #1371 #1375 [H5WasmProvider]Implement methodgetSearchablePathsto support searching through entities in the viewer #1367
Screenshots
Search panel
Screencast.from.21-03-2023.17.00.24.webm
Ignore/mask values
Default stacking order
v7.0.1
Full Changelog: v7.0.0...v7.0.1
@h5web/lib
- 🐛
useCameraStateFix regression introduced in v7.0.0 (PR #1361) and affecting cases where thefactoryfunction references external dependencies (i.e. props, state and other local variables) —useCameraStatewould ignore changes to those dependencies and return a stale state. This bug was also affecting theAnnotationandDataToHtmlcomponents (but not @h5web/app). #1368- If you don't use
useCameraStatedirectly, upgrading should suffice. - If you use
useCameraStatedirectly, you'll need to revert some of the changes you made when upgrading to 7.0.0. More specifically, you'll need to pass once again a dependency array as second argument to the hook and reconfigure thereact-hooks/exhaustive-depslinting rule in your project. See the documentation foruseCameraStatefor more details.
- If you don't use
v7.0.0
👉 These release notes appear cropped on the Releases page. You'll find them in full on their dedicated page. 👈
Full Changelog: v6.6.1...v7.0.0 — big thanks to @PeterC-DLS for #1311, #1324 and #1356 🧑🤝🧑
tldr; This release includes numerous breaking changes and new features to the component library, @h5web/lib. Highlights include: a simpler way to control the aspect ratio of the visualization; a more powerful SelectionTool component with support for validating and transforming selections; a more flexible API to render SVG shapes on top of the canvas.
@h5web/app
- ❇️ Select-to-zoom interactions now zoom only on areas of at least 20x20px. This avoids inadvertently zooming on very small areas. Visual clues are provided to help users determine when selections being drawn become big enough to zoom on. #1345
- 🐛 Fix error when switching from
< NX Heatmap >to< NX Line >with an axis dataset longer than the signal dataset by one value (i.e. pixel boundaries) #1350 #1352 - 🐛 When drawing a zoom selection, the stroke of the rectangle is no longer partially cropped by the canvas. #1346
@h5web/lib
Open the sections below to see the changes.
⚠️ Breaking changes
[HeatmapVis, RgbVis]Remove proplayout, now replaced with propaspect(cf. New features). #1284layout="cover"👉 replace withaspect="equal"(default)layout="fill"👉 replace withaspect="auto"layout="contain"👉 remove; equivalent behaviour can be achieved by constraining the size of the visualization's container. #1283
[VisCanvas]Remove propvisRatio, now replaced with propaspect(cf. New features). #1284visRatio={undefined}👉 replace withaspect="auto"(default)visRatio={cols / rows}(i.e. orthonormal basis) 👉 replace withaspect="equal"(the correctvisRatiois computed internally)visRatio={(cols / rows) / aspect}👉 replace withaspect={aspect}
[VisCanvas]Remove propcanvasRatio, which allowed restricting the canvas to a specific ratio. The canvas now always fills the available space (i.e. parent container minus axes). Migration: remove prop and constrain size of visualization container. #1283[DefaultInteractions, SelectToZoom]Remove propkeepRatio. Interaction components now adjust their behaviours automatically when used inside a canvas with an aspect ratio (cf. New features). #1287[SelectionTool, AxialSelectionTool]Callback propsonSelectionChangeandonSelectionEndcan now receiveundefinedwhen the user cancels the selection with Escape or releases the modifier key (if any). You may use the newonValidSelectioncallback instead ofonSelectionEndif you only care about successful selections. #1360[SelectionTool, AxialSelectionTool]The shape of selection objects passed to callback props and to the render prop has changed - cf. the new interface vs. the old interface- Remove
SelectionRectandSelectionLine. Use the newDataToHtml,SvgElement,SvgRectandSvgLinecomponents instead. See code example below. - Rename
useAxisSystemContext()touseVisCanvasContext()#1291 - Utility
getAxisValuesnow returnsNumArray(i.e.TypedArray | number[]) instead ofnumber[]. #1357 useCameraStateThe callback parameter no longer receives acontextargument, and the second parameter is removed (i.e. the array dependencies à lauseCallback), which means that ESLint rulereact-hooks/exhaustive-depsno longer has to be configured in consumer projects. #1361dataToHtml, getVisibleDomainsmust now be retrieved from context and no longer require acontextargument. #1342- Rename
getWorldFOVtogetFovBoxand move to context; it no longer requires acontextargument and returns aBoxinstance (cf. New features). #1361 - Hook
useCanvasEventsand context utilitiesdataToHtml, dataToWorld, worldToDatanow work solely withVector3instances; they no longer accept/returnVector2instances. More generally, computations in all three coordinate spaces (HTML, world, data) are now performed withVector3only to avoid cluttering the codebase withVector3 <-> Vector2conversions (cf. notably, the newBoxclass, as well as theRecttype used for selection rectangles). We recommend you do the same when implementing your own interactivity features. #1300 #1341 - Callbacks passed to
useCanvasEventsno longer receive points in camera space (i.e. propertycameraPt).
🚀 New features
VisCanvasnow renders ansvgelement that overlays the canvas. Use the newSvgElementcomponent to append any SVG shape to it from anywhere inside theVisCanvascomponent tree. See code example and screen recording below. #1322- New
SvgRectandSvgLinecomponents to simplify rendering SVGrectandlineelements from a tuple ofVector3points.SvgRectalso provides a way to simulate rendering the stroke outside or inside of the rectangle (instead of centred on the boundary). These components are for convenience only; don't hesitate to renderrect,lineand any other SVG element directly. #1332 #1346 - New
DataToHtmlcomponent to convert points from data space to HTML space directly in JSX. Useful to render SVG shapes on the canvas and update them automatically when the user zooms or pans. See code example below. - New
Boxutility class based on Three'sBox 3, but with a more convenient API and some useful additional methods. Particularly handy when implementing interactivity features (zoom selection, SVG ROIs, etc.) #1323 #1359 [LineVis]Allow passing abscissa array longer than data array (i.e. the abscissa array gets cropped) #1352[VisCanvas]Add propaspect, which works similarly to matplotlib'sAxes.set_aspect#1284:aspect="auto": the visualization is to fill the entire canvas (default; i.e. the internalvisRatiois set toundefined);aspect="equal": one ordinate unit is to be displayed with the same number of pixels on screen as one abscissa unit (equivalent toaspect={1}; i.e. orthonormal basis);aspect={2}: one ordinate unit is to be displayed with twice the number of pixels on screen as one abscissa unit.
[VisCanvas]Addniceproperty toabscissaConfigandordinateConfigprops. This passes through to D3 to allow it to extend the domains to nice values when appropriate. #1324[SelectToZoom, AxialSelectToZoom]Enforce minimum selection size of 20x20px, with help of visual clues, to avoid inadvertently zooming when users mean to click. #1345[XAxisZoom, YAxisZoom, AxialSelectToZoom]now disable themselves when used inside a canvas with an aspect ratio (equal or custom). #1287[SelectToZoom]now configures its own behaviour automatically according to the canvas' aspect ratio (or lack thereof). #1287[SelectionTool, AxialSelectionTool]Add propsvalidateandonValidSelectionto support validating selections. See code examples and screen recordings below. Callback propsonSelectionChangeandonSelectionEnd, as well as thechildrenrender prop, all receive a boolean flag conveying whether the selection they are invoked with is valid. #1345[SelectionTool, AxialSelectionTool]The selection objects passed to the render prop and to the callback props now include the selection rectangle in HTML space (in addition to world and data space). This is likely what you want to use in the render prop to render the selection rectangle in SVG. See code examples below. #1343[SelectionTool]Add proptransformto allow transforming the selection while it is being drawn. The render prop andonSelectionChangeboth receive the transformed selection object as first parameter and the raw, untransformed selection object as second parameter. This feature is used internally byAxialSelectionToolto transform the user's selection into a selection that spans the entire width or height of the canvas. For another example, check out story Rect With Transform. #1301 #1340 #1349[Histogram]Add propshowLeftAxis, which defaults totrue, to allow hiding the left axis (withshowLeftAxis={false}) #1295[DataCurve, ScatterPoints]Accept typed arrays for abscissas and ordinates #1357getValueToIndexScale, getAxisDomain, getAxisValuesAccept typed arrays as argument #1357- [**
useCameraState*...
v6.6.1
Full Changelog: v6.6.0...v6.6.1
@h5web/app
- 🐛 Fix Compression filters table appearing even if there was no filter when inspecting datasets #1282







