Skip to content

Releases: silx-kit/h5web

v1.4.0

13 Jan 09:21
Compare
Choose a tag to compare

@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):
    • [Heatmap, NX Image] NPY + TIFF #885 #890
    • [Line, NX Spectrum, Matrix] NPY + CSV (which was already available for Matrix but is now performed server-side) #890
  • [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 prop getFeedbackURL to support showing a feedback button in the breadcrumbs bar. Also expose a utility named getFeedbackMailto 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 an alpha array is provided. #902
  • [HeatmapVis, LineVis, VisCanvas] Reduce number of re-renders when resizing the window, most notably when passing cover or fill as layout to HeatmapVis. #901 #904

Screenshots

Scatter visualization

image

Export to CSV, NPY and TIFF

Line, NX Spectrum (1D dataset) Heatmap, NX Image (3D+ dataset)
image image

Unresolved link

image

Progress bar

image

Feedback

Button in breadcrumbs bar Pre-filled email
image image

v1.3.0

03 Dec 08:14
Compare
Choose a tag to compare

@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 prop dtype 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

image

v1.2.0

30 Nov 08:12
Compare
Choose a tag to compare

@h5web/app

  • [App] Add prop startFullscreen 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 prop axiosParams to allow passing arbitrary query params to H5GroveProvider #819
    • ⚠️ Breaking change The file query param is no longer sent to the H5Grove endpoint automatically -- this behaviour must now be specified explicitly with axiosParams={{ 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's NX_class or whether it has one at all). #845
  • Prioritise NXdata over NXentry groups when looking for an implicit default NeXus child to visualize, and consider NXprocess groups as last resort. #845
  • Show NX badge in explorer next to NXprocess groups. Note that, to limit network use and responsiveness, the NX 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

image

v1.1.0

04 Nov 10:24
Compare
Choose a tag to compare

@h5web/app

  • ✨ When selecting an NXroot or NXentry group without a default 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

  • [LineVis,HeatmapVis] Descending values are now supported in abscissaParams.value and ordinateParams.value #830
  • [Btn,DownloadBtn,ToggleGroup.Btn] Widen type of icon prop for compatibility with Bootstrap icons #827
  • 🙈 Fix outdated Getting started documentation in package's README #825

v1.0.0 🎉

27 Oct 13:17
Compare
Choose a tag to compare

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:

@h5web/app

  • [H5GroveProvider] Fetch numeric datasets as binary to speed up server-side processing and data transfers, and to support datasets with NaN 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 root App component. This means that @h5web/app no longer affects the styles of its consumer application (e.g. JupyterLab). #808

    ⚠️ Potential breaking change: the removal of normalize.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 adding body { 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 import normalize.css yourself like in the demo.

  • 🐛 Fix ellipsis overflow of entity names and prevent icons from shrinking when explorer is very narrow. #800

  • ⚠️ Remove JupyterProvider. #823

    The 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 of JupyterProvider 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 maintaining JupyterProvider.

@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 the optionComponent prop now receives an isSelected 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 with abscissaConfig={{ ..., flip: true }}. #813

v0.0.29

01 Sep 14:41
Compare
Choose a tag to compare

@h5web/lib

  • [ToggleGroup.Btn] Add iconOnly prop #792
  • Expose Selector toolbar component #792

v0.0.28

01 Sep 08:36
Compare
Choose a tag to compare

@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

  • [Toolbar] children can now include fragments (<>...</>) #784
  • [Toolbar] More robust responsive/overflow behaviour #785 #786
  • [DomainSlider] Use bins domain if bigger than data domain when computing domain of histogram abscissas #791

v0.0.27

12 Aug 15:19
Compare
Choose a tag to compare

@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 containing NaN/Infinity (note that only HSDSProvider can provide such data for now) #775
  • 🐛 [Heatmap, Complex] Fix alignment of ticks in color bar #772

@h5web/lib

  • ✨ Add prop histogram to DomainSlider 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 the scaleType prop #760
  • 🐛 [ColorBar] Fix alignment of ticks #772

Screenshots

DomainSlider histogram

Peek 2021-08-12 10-49

HeatmapVis with gamma scale (exponent of 0.5)

image

v0.0.25

28 Jul 12:23
Compare
Choose a tag to compare

@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) and DownloadBtn (anchor button for downloading a file from a URL)
  • [ScaleSelector] New optional prop options to set the ScaleType options (falls back to all ScaleType values) #767
  • [HeatmapVis, LineVis] New prop renderTooltip: 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 to jupyterlab_hdf v0.6.0 #749
  • [H5GroveProvider] Updated API to h5grove v0.4.0 #750

Screenshots

NX badges and NxRGB visualization

image

Square root normalization

image

New complex format and CSV button in Matrix visualization

image

v0.0.24

30 Jun 14:22
Compare
Choose a tag to compare

@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 to IMAGE;
    • no attribute IMAGE_SUBCLASS or an attribute IMAGE_SUBCLASS set to IMAGE_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 to H5GroveProvider. #720
  • Add FlipYAxisToggler toolbar control #731

Screenshots

RGB visualisation

image

Y-axis flip

image