Releases: silx-kit/h5web
v1.4.0
@h5web/app
- ✨ Data can now be exported to CSV, NPY and/or TIFF depending on the visualization, and if the provider supports it (currently H5Grove):
- ✨
[H5GroveProvider]
Add support for exporting data to CSV, NPY and TIFF (provided in [email protected]). #890 - ✨
[H5GroveProvider]
Show unresolved soft and external links in explorer and metadata viewer instead of throwing errors. #918 - ✨
[H5GroveProvider]
Show progress bar(s) while fetching dataset values. #908 - ✨
[Heatmap, Line]
Stabilize camera position while resizing the canvas. When zoomed in, the point located in the center of the visualization will remain in the center after resizing. #899 - ✨
[Heatmap]
Show alpha value (i.e. amplitude) in tooltip when visualizing both phase and amplitude of a 2D+ complex dataset. #902 - ✨
[App]
Add propgetFeedbackURL
to support showing a feedback button in the breadcrumbs bar. Also expose a utility namedgetFeedbackMailto
to help generate a mailto link with a pre-filled email body, which includes basic debugging information. - ⚡
[H5GroveProvider]
Request flattened non-numeric arrays from the server to avoid performing flattening operations in the front-end. #900 - ⚡
[Heatmap, Line]
Reduce number of re-renders when resizing the window. #901 #904 - 🐛 Restore ability to resize the explorer panel #895
@h5web/lib
- ✨
[ScatterVis]
Add scatter visualization. #141 - ✨
[HeatmapVis, LineVis, PanZoomMesh]
Stabilize camera position while resizing the canvas. When zoomed in, the point located in the center of the visualization will remain in the center after resizing. #899 - ✨
[HeatmapVis]
Show alpha value in tooltip when analpha
array is provided. #902 - ⚡
[HeatmapVis, LineVis, VisCanvas]
Reduce number of re-renders when resizing the window, most notably when passingcover
orfill
as layout toHeatmapVis
. #901 #904
Screenshots
Scatter visualization
Export to CSV, NPY and TIFF
Line, NX Spectrum (1D dataset) | Heatmap, NX Image (3D+ dataset) |
---|---|
Unresolved link
Progress bar
Feedback
Button in breadcrumbs bar | Pre-filled email |
---|---|
v1.3.0
@h5web/app
- ✨
[Heatmap, Line]
Tooltip now shows the type of the data (e.g.float32
), including in NeXus visualizations. #875 - ⚡
[Line]
Auto-scale is now enabled by default so that only the current slice is fetched instead of the whole dataset. This makes the line visualization more robust for very large datasets. You may still disable the auto-scale from the toolbar to fetch the entire dataset at your own risk. #877[Line]
The auto-scale setting is no longer saved #877
- ⚡ When switching to another entity in the explorer or to another visualization in the tab bar while data is still being fetched, all ongoing requests are now canceled automatically to avoid blocking requests for the new data. #886
- ⚡ When dragging a dimension slider thumb, slices now become selected only after a short delay to avoid data requests piling up unnecessarily. #888
- ⚡
[Matrix]
Scrolling through the data grid is now faster for very large datasets. #889
@h5web/lib
- ✨
[HeatmapVis, LineVis]
Add propdtype
to pass the type of the data so it can be displayed in the tooltip. #875 - ⚡
[MatrixVis]
Scrolling optimised for very large datasets. #889
Screenshots
v1.2.0
@h5web/app
- ✨
[App]
Add propstartFullscreen
to allow starting the viewer with the explorer collapsed -- useful when space is limited and when previewing NeXus files with default visualizations. #872 - ✨
[H5GroveProvider]
Add propaxiosParams
to allow passing arbitrary query params toH5GroveProvider
#819⚠️ Breaking change Thefile
query param is no longer sent to the H5Grove endpoint automatically -- this behaviour must now be specified explicitly withaxiosParams={{ file: filepath }}
. #819
- ⚡ Fetch attribute values on demand to reduce number of requests on initial load and when selecting groups in explorer. #807
- 🐛 Fix multiple regressions when visualizing scalar and some array datasets (non-numeric and numeric dtypes with no native equivalent). #843 #865
- Show min/max indices above dimension sliders. #868
- Hide sliders for dimensions with single values #868
- When selecting a group that has no
default
attribute, always look for an implicit default NeXus child to visualize (i.e. regardless of the group'sNX_class
or whether it has one at all). #845 - Prioritise
NXdata
overNXentry
groups when looking for an implicit default NeXus child to visualize, and considerNXprocess
groups as last resort. #845 - Show
NX
badge in explorer next toNXprocess
groups. Note that, to limit network use and responsiveness, theNX
badge cannot accurately predict whether groups have implicit default children. #845 [H5GroveProvider]
Improve error message when H5Grove back-end cannot resolve a soft link. #870- Providers errors are more explicit #871
Screenshots
Slider limits
v1.1.0
@h5web/app
- ✨ When selecting an
NXroot
orNXentry
group without adefault
attribute, H5Web will now look through the group's children to find a default NeXus group to visualize #833 #838 - ✨ NeXus visualizations now support descending axis values #830
- 🐛
[H5GroveProvider]
Fix multiple regressions when fetching dataset values #836 - 🐛 Fix compatibility of stylesheet imports with webpack 5 #837
- 🙈 Fix outdated Getting started documentation in package's README #825
- Show error message instead of blank screen when a file is not found or another network error occurs #828
- Reduce elusiveness of copy path button #840
@h5web/lib
v1.0.0 🎉
Switch to monorepo structure
The project has migrated to a monorepo structure based on the pnpm package manager (cf. #795, #714 and related pull requests). The CONTRIBUTING guide has been updated accordingly and now includes a cheat sheet on how to use pnpm.
The packages
folder is the source of the two NPM packages @h5web/lib
and @h5web/app
, and of the internal package @h5web/shared
. The two NPM packages are now built with Vite in library mode, which is itself based on Rollup. With this new set-up, we are notably able to generate two JS bundles for each package in CJS and ESM format. The latter will help with generating smaller bundles in modern consumer applications, thanks to tree-shaking.
The apps
folder contains three projects:
demo
- the main Create React App (CRA) demo deployed to https://h5web.panosc.eu/, which is based on@h5web/app
;demo-cra-lib
- a CRA demo based on@h5web/lib
;storybook
- the Storybook documentation site for@h5web/lib
deployed to https://h5web-docs.panosc.eu/.
@h5web/app
-
⚡
[H5GroveProvider]
Fetch numeric datasets as binary to speed up server-side processing and data transfers, and to support datasets withNaN
and(-)Infinity
values. #817 #641 #616 -
🎉 Global styles, including
normalize.css
and other custom normalization rules, have been removed or refactored to apply only to descendants of the rootApp
component. This means that@h5web/app
no longer affects the styles of its consumer application (e.g. JupyterLab). #808⚠️ Potential breaking change: the removal ofnormalize.css
is unlikely to cause visible issues in modern browsers, with the notable exception that the browser's default body margin will no longer be removed. If you use@h5web/app
as a stand-alone viewer (i.e. outside of a larger app like JupyterLab), you'll probably get away with just addingbody { margin: 0; }
to your app's CSS. That being said, if you're worried about maintaining styling consistency in older browsers, it may be a good idea to re-install and importnormalize.css
yourself like in the demo. -
🐛 Fix ellipsis overflow of entity names and prevent icons from shrinking when explorer is very narrow. #800
-
⚠️ RemoveJupyterProvider
. #823The Jupyter server extension jupyterlab_h5web has been using H5Grove and its API for a while now, and the JupyterLab extension jupyterlab-h5web has been using
H5GroveProvider
instead ofJupyterProvider
ever since. As a result, the Jupyter server extension jupyterlab_hdf is no longer used as the back-end API for an H5Web viewer implementation (that we know of). There's therefore little reason to keep maintainingJupyterProvider
.
@h5web/lib
-
⚠️ Breaking change: this package now comes with two additional peer dependencies:three
and@react-three/fiber
. Please install them before upgrading:# pnpm pnpm add three @react-three/fiber pnpm update -L @h5web/lib # yarn yarn add three @react-three/fiber yarn upgrade -L @h5web/lib # npm npm install three @react-three/fiber npm install @h5web/lib@latest
-
⚠️ Breaking change: the lib's styles now have to be imported explicitly before anything else, as explained on the Storybook's Getting started page:import "@h5web/lib/dist/style.css"; import { HeatmapVis, getDomain } from "@h5web/lib"; // ...
Note that the exact way to import third-party stylesheets may differ based on your application's bundler or framework.
-
🐛
[DomainSlider]
Make histogram domain safe with respect to scale type. #806 -
[Selector]
The component passed to theoptionComponent
prop now receives anisSelected
prop indicating whether the option being rendered is the currently selected option that appears when the selector is collapsed. This allows rendering the selected option differently from the options listed in the selector's drop-down menu. #804 -
[VisCanvas]
Support flipping canvas horizontally withabscissaConfig={{ ..., flip: true }}
. #813
v0.0.29
v0.0.28
@h5web/app
- 🐛 Fix toolbar remaining empty sometimes on page load #784
- 🐛 Fix domain computation in square root scale when domain crosses zero #790
- Fix various styling issues with drop-down selectors in toolbar #784
- Prevent toolbar controls from jumping in and out of overflow menu when possible #785 #786
@h5web/lib
v0.0.27
@h5web/app
- 🐛 Encode query params in providers, to support filenames with special characters #774 #781
- 🐛 Fix notebook cell sizing issue in JupyterLab when opening HDF5 files with long names #780
- 🐛
[Line, Heatmap, Complex]
Fix visualization of data containingNaN
/Infinity
(note that onlyHSDSProvider
can provide such data for now) #775 - 🐛
[Heatmap, Complex]
Fix alignment of ticks in color bar #772
@h5web/lib
- ✨ Add prop
histogram
toDomainSlider
to display a histogram. The histogram has indicators for the current min and max bounds. #770 #778 #779 #773 - ✨ Add
scaleGamma
function to create gamma scales with a given exponent (cf. this sandbox for a comparison with a regular power scale). #760 #782 - ✨
[HeatmapVis, HeatmapMesh]
To use the new gamma scale, pass a tuple of the form[ScaleType.Gamma, gammaExponent]
to thescaleType
prop #760 - 🐛
[ColorBar]
Fix alignment of ticks #772
Screenshots
DomainSlider
histogram
HeatmapVis
with gamma scale (exponent of 0.5)
v0.0.25
@h5web/app
- ✨ New NxRGB visualization for NeXus entities with
rgb-image
interpretation (based on RGB visualization added in v0.0.24) #737 - ✨ NeXus group are identified by NX badges in the Explorer #746
- ✨
[Matrix]
Data can be downloaded as CSV #739 - ✨
[Heatmap]
New square root normalization for color scale #744 - 🐛
[Line]
Fix tooltip not covering the whole canvas for non-linear scales #748 [Matrix, Scalar]
Change display of complex numbers #761- Clearer error message when entity is not found with
H5GroveProvider
#765
@h5web/lib
- ✨ New toolbar button components:
Btn
(generic button) andDownloadBtn
(anchor button for downloading a file from a URL) - ✨
[ScaleSelector]
New optional propoptions
to set theScaleType
options (falls back to allScaleType
values) #767 [HeatmapVis, LineVis]
New proprenderTooltip
: a function that receives the tooltip's current coordinates, indices and abscissa/ordinate values and allows customising the content of the tooltip #757[JupyterProvider]
Updated API tojupyterlab_hdf
v0.6.0 #749[H5GroveProvider]
Updated API toh5grove
v0.4.0 #750
Screenshots
NX badges and NxRGB visualization
Square root normalization
New complex format and CSV button in Matrix visualization
v0.0.24
@h5web/app
- ✨ New RGB visualisation (#721 #723 #725) for HDF5 image datasets with:
- three dimensions (the RGB channels being the deepest one);
- float or integer values;
- an attribute
CLASS
set toIMAGE
; - no attribute
IMAGE_SUBCLASS
or an attributeIMAGE_SUBCLASS
set toIMAGE_TRUECOLOR
(the only supported subclass).
- ✨
[Heatmap]
Y axis can be flipped #719 - 🐛 Fix tooltip showing when panning #726
- Explorer and breadcrumbs now show the HDF5 file's filename instead of its entire path. The file path is now visible when inspecting the root group's metadata. #722 #734
@h5web/lib
- 🐛 Prevent HTML annotations from overflowing canvas #726
- Reorganize storybook and add stories showing tooltip and pan-zoom interactions #729
- Rename
H5CoreProvider
toH5GroveProvider
. #720 - Add
FlipYAxisToggler
toolbar control #731