Skip to content

Visualization and performance improvement - #1

Merged
romer8 merged 41 commits into
mainfrom
test_deck
Jan 30, 2026
Merged

Visualization and performance improvement#1
romer8 merged 41 commits into
mainfrom
test_deck

Conversation

@romer8

@romer8 romer8 commented Jan 30, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces several improvements and optimizations to the frontend codebase, focusing on enhancing the user experience with select menus, updating styles, and improving development tooling. The most significant changes include refactoring the custom select menu for better performance, updating theme colors for improved accessibility, and adding new development dependencies.

Select Menu Performance and Usability Improvements

  • Refactored the custom MenuList component in SelectComponent.js to use useMemo and React.memo for better performance and stability, and improved initial scroll offset calculation for selected items. The component now leverages react-window more efficiently for virtualized lists. [1] [2]
  • Added a new, reusable MenuList component in MenuList.js for use with react-select, using react-window for virtualization and optimizing re-renders with custom memoization logic.

Styling and Theme Updates

  • Modified muted text color variables in App.scss for both light and dark themes to improve readability and consistency. [1] [2]

Development and Build Tooling

  • Added @welldone-software/why-did-you-render as a development dependency and integrated it into the Babel configuration for enhanced React performance debugging. [1] [2]
  • Added deck.gl as a new dependency, preparing for advanced data visualization features.
  • Set NODE_ENV = development in the development environment configuration for more predictable build behavior.

Minor Content and Config Updates

  • Fixed a typographical issue in the DataInfoModel modal for consistency in apostrophe usage.
  • Cleaned up and slightly reorganized the Webpack configuration, including removal of commented-out dev server proxy settings. [1] [2]

romer8 added 30 commits January 10, 2026 19:45
- Introduced TimeSlider component with playback controls and speed adjustment.
- Added CSS styles for TimeSlider layout and controls.
- Integrated TimeSlider into DataStreamView for enhanced user interaction.
- Updated Timeseries store to manage playback state and current time index.
- Included deck.gl library for potential future visualizations.
…ion and visualization

- Implemented DataMenu component to facilitate step-by-step selection of model, date, forecast, cycle, ensemble, VPU, and output file.
- Created TimeSeries component to manage time series data loading and visualization.
- Enhanced S3 utility functions to support fetching options from S3 based on selected parameters.
- Updated Datastream store to correct state management for date and ensemble.
- Added loading indicators and error handling for improved user experience during data fetching.
- Removed the DataMenu component and its associated logic from ts.js.
- Updated Mapg.js to integrate new S3 data management and removed unused variables.
- Modified ForecastMenu.js to streamline feature ID handling and improve state management.
- Cleaned up data.js by removing hardcoded model, forecast, cycle, and ensemble lists.
- Adjusted opfsCache.js to ensure cache key generation is consistent.
- Enhanced queryData.js to improve data fetching and logging.
- Updated s3Utils.js to refine prefix generation and added initialS3Data function for better data initialization.
- Refactored Datastream.js and Timeseries.js stores to remove unnecessary state variables and improve clarity.
- Introduced s3Store.js to manage S3-related state and data fetching more effectively.
…d remove unused code

- Removed unused loading state handlers and variables in DataMenu, Mapg, SearchBar, and ForecastMenu components.
- Consolidated loading text management in DataMenu and Mapg components.
- Updated DataStreamView to fetch initial data and handle loading states more effectively.
- Cleaned up commented-out code for better readability and maintainability.
- Enhanced error handling and user feedback during data loading processes.
…y optimizing state management and memoization
romer8 added 11 commits January 28, 2026 12:24
…ing zustand's subscribeWithSelector for improved performance
…and's shallow for improved performance and readability
- Introduced a new `MenuList` component using `react-window` for optimized rendering of options in the select dropdown.
- Updated `SelectComponent` to utilize the new `MenuList` for better performance.
- Refactored `DataMenu` to separate loading and control logic into distinct components for clarity and maintainability.
- Enhanced state management in `DataMenu` with shallow comparisons to prevent unnecessary re-renders.
- Replaced the old `DataMenu` with a new version (`dataMenu3`) in `ForecastMenu` for improved functionality.
- Cleaned up unused imports and optimized existing code for better readability and performance.
…omponents for improved performance and readability
…lacing setAllState with individual setters for improved clarity and performance
… structure and state management in Plot, DataMenu, and DatastreamView components
@romer8 romer8 changed the title Test deck Visualization and performance improvement Jan 30, 2026
@romer8
romer8 merged commit 4af133b into main Jan 30, 2026
2 of 6 checks passed
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.

1 participant