refactor(jobmonitor)!: data table virtualization, search bar decomposition, context split - #498
Open
aldbr wants to merge 1 commit into
Open
refactor(jobmonitor)!: data table virtualization, search bar decomposition, context split#498aldbr wants to merge 1 commit into
aldbr wants to merge 1 commit into
Conversation
This was referenced Jul 14, 2026
aldbr
force-pushed
the
split/4-jobmonitor-core
branch
from
July 14, 2026 13:11
27cdd5e to
4186c11
Compare
Contributor
Author
aldbr
force-pushed
the
split/4-jobmonitor-core
branch
11 times, most recently
from
July 16, 2026 07:26
54a0376 to
9a340ef
Compare
…sition, context split, SWR tuning Rework the Job Monitor stack end to end: - split the monolithic shared/DataTable.tsx into a DataTable/ module (DataTable, DataTableHeader, DataTableToolbar, SplitActionButton) virtualized with @tanstack/react-virtual instead of react-virtuoso; react-virtuoso is dropped from dependencies - extract a reusable shared/PieChart component (with stories and a11y legend tests) and a shared visuallyHidden helper - decompose the SearchBar: state moves into a useSearchBarReducer, URL/filter synchronisation into useFilterSync, and suggestion fetching into useSearchSuggestions; equations gain stable ids and the Operators.EGUALS typo becomes Operators.EQUALS - restructure the Job Monitor: column definitions move to jobColumns.tsx, per-application persistence to useJobMonitorPersistence, and shared state to a JobMonitorContext; jobDataService migrates to the services/fetcher client with SWR keys tuned to avoid refetch storms - finish the fetcher migration: hooks/utils.tsx loses the legacy tuple-based fetcher (now services/client with named options and abort support), hooks/metadata.tsx and the gubbins OwnerMonitor consume the new client, and the package root exports the explicit final API surface - jest config/setup updated for react-virtual (structured-clone ponyfill, layout mocks); e2e specs updated and a mobile viewport spec added; next.config gains a services alias for dev HMR and the app a test:headless script BREAKING CHANGE: the tuple-based fetcher export is gone from @dirac-grid/diracx-web-components/hooks; use the object-based fetcher from @dirac-grid/diracx-web-components/services instead. Operators.EGUALS is renamed Operators.EQUALS, and the DataTable API changed with the module split.
aldbr
force-pushed
the
split/4-jobmonitor-core
branch
from
July 16, 2026 13:49
9a340ef to
932cdf0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #494 (stack 4/5). Stacked on #497 — until it merges, review the last commit only (
refactor(jobmonitor)!). This is the core of the stack (~60 files); the three concerns are inseparable because JobMonitor must compile at every point, but each lives in its own directory:Shared DataTable (
shared/DataTable/)DataTable.tsxsplit into DataTable / Header / Toolbar / SplitActionButton; virtualization migrated from react-virtuoso to@tanstack/react-virtual(react-virtuoso dropped)tbody tr:first/last-childa data row — the e2e suite relies on this)LinearProgresswhile revalidating instead of unmounting into a skeleton on every page/sort changeSearchBar (
shared/SearchBar/)useSearchBarReducer/useFilterSync/useSearchSuggestions; equations get stable idsID,=,1) no longer silently drops tokensJob Monitor (
JobMonitor/)useJobMonitorPersistence(500 ms debounce,rowSelectionexcluded)jobDataServicemigrates to the abortableservices/fetcher; jobs search sends a column projection (parameters); SWR tuned:keepPreviousData,revalidateIfStale: true, deduping 5 s (fixes stale rows after changing rows-per-page)Tests: suite grows 60 → 100 (reducer, filter sync, persistence, pie-chart labeling/interaction). E2E expectations updated for the new export format; adds
mobile.cy.ts.BREAKING CHANGE: the tuple-based
fetcheris no longer exported fromhooks(useservices);Operators.EGUALStypo fixed toOperators.EQUALS.🤖 Generated with Claude Code