feat: implement filter functionality#169
Conversation
crfmc
commented
Dec 23, 2025
- Add filtering interface from configuration file
- feat: update file upload styles and icons - refactor: move components out of app.tsx
- feat: implement cohort selection
- feat: update default names of cohorts - refactor: remove useMemo call
- feat: allow array format for file upload
- feat: add url param for cohortId
- feat: enable proper file renaming
- feat: add placeholder error banner for malformed external url - feat: when users upload cohort, switch to the first samples - refactor: reorganize components/files
- feat: update validation for uploaded files - feat: implement better error banners - refactor: improve helper functions
- fix: un-nest all CSS declarations - feat: warning banner when external demo fails
- feat: adjust text for upload url button - style: update colors and spacing
- style: update navigation bar styles for safari
- style: adjust spacing
- feat: update text - feat: use file name as default
|
New Issues (44)Checkmarx found the following issues in this Pull Request
Fixed Issues (1)Great job! The following issues were fixed in this Pull Request
Use @Checkmarx to interact with Checkmarx PR Assistant. |
- feat: utils for checking type and accessing nested field - feat: template for binary filter
- style: update checkboxes - style: adjust spacing for filter groups
- refactor: remove unused code
- fix: update the tranform function for checkbox label
- feat: add space in between range hyphen - feat: update bin labels to get floating point values
- feat: resort filters for active filters
- feat: shorten non-matches text
|
Overview Good feature addition — the filter system is well-structured overall, with clean separation between filter state management, option count calculation, and the Bugs
localeCompare returns 0 for equal strings. 0 ? 1 : -1 evaluates to -1, meaning equal elements are treated as "less than" — the sort is unstable and incorrect.
In App.tsx: But in OverviewPanel.tsx: The code treats filters as a dictionary but it's typed as an array. Object.keys([...]) gives numeric string indices ("0", "1"...), so filterIdentifier ends up
When the SV click handler fires, setIsTransitioning(true) is set, but setIsTransitioning(false) only happens in the useEffect on selectedSvId. If selectedSvId Issues
Nested elements are invalid HTML per spec. The outer should be a .
The component is never imported/used anywhere (binary filters are handled inline in OverviewFilter). It also has:
If it was a stepping stone that's been superseded, it should be removed.
This plays the animation any time a filter is applied, not only when a new sample is uploaded. A separate state or ref tracking "samples were genuinely added"
Minor
|




