Skip to content

Staging#171

Open
samseaver wants to merge 272 commits intoModelSEED:stagingfrom
VibhavSetlur:staging
Open

Staging#171
samseaver wants to merge 272 commits intoModelSEED:stagingfrom
VibhavSetlur:staging

Conversation

@samseaver
Copy link
Copy Markdown
Contributor

No description provided.

Added `suppressHydrationWarning` to `<html>` and `<body>` in `app/layout.tsx` to prevent browser extensions like LanguageTool from causing a hydration mismatch error on load.
…es, detail pages, Solr API

- lib/api/biochem.ts: Full TypeScript Solr API utility (getReactions, getCompounds, detail fetchers)
- app/biochem/layout.tsx: Sub-navigation with MUI Tabs (purple bar matching legacy)
- app/biochem/reactions/page.tsx: Reactions DataGrid with server-side pagination/sorting/search
- app/biochem/compounds/page.tsx: Compounds DataGrid with matching functionality
- app/rxn/[id]/page.tsx: Reaction detail page with all properties
- app/cpd/[id]/page.tsx: Compound detail with image, properties, related reactions table
- components/Providers.tsx: QueryClientProvider for @tanstack/react-query
- Redirect routes: /biochem/reactions/[id] -> /rxn/[id], /biochem/compounds/[id] -> /cpd/[id]
VibhavSetlur and others added 30 commits March 31, 2026 15:26
… metadata editing, and media component detail drawers)
…n model detail page for consistent sorting and formatting
- Add middleware.ts with smart redirects for legacy routes:
  - /run/* → /plant (build model page)
  - /biochem/:chem → /biochem/compounds
  - /model-editor → /my-models
  - /plant-annotations → /genomes/Annotations
  - /maps/* → /compare
  - /user-status, /proto → / (home)

- Add placeholder pages for missing legacy routes:
  - /genomes/:ref genome detail page (ready for API integration)
  - /projects/regulons project page
  - /projects/fusions project page with 8 sub-route listings

- Ensures 100% compatibility with legacy ModelSEED-UI URLs (57/57 routes)
- No breaking changes - all existing URLs continue to work
- Deployment ready - all legacy bookmarks will redirect appropriately

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- My Jobs: Sort by submitted date (latest first) on page load
- My Models: Sort by modification date (latest first) on page load
- Added initialState.sorting to DataGrid components to ensure sort order is applied immediately
- Both pages already had sortModel state, but initialState ensures it's respected on first render

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Created ReactionKnockoutsDialog component with searchable/filterable DataGrid
- Replaced text input field with button that opens selection dialog
- Features:
  - Search and filter reactions using DataGrid quick filter
  - Checkbox selection for multiple reactions
  - Selected reactions shown at top with chips (deletable)
  - Reaction IDs are clickable links opening in new tabs
  - Save/Cancel with selected count display
  - Close button (X) in dialog header

- Updated MediaSelectionDialog to use new ReactionKnockoutsDialog
- Updated ModelDetailHeader to accept and pass model reactions
- Updated model detail page to provide reactions to header

User experience improvements:
- No more manual typing of semicolon-separated reaction IDs
- Visual selection with search/filter capabilities
- Clear display of selected reactions with easy removal
- Direct links to reaction detail pages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Modified extractFbaRows() and extractGapfillRows() to accept tracked jobs and statuses
- Added in-progress jobs as rows in FBA/Gapfill tables with status indicators
- Added Status column to both FBA and Gapfill tables showing:
  - Completed (green)
  - In-Progress/Running (orange with spinner)
  - Failed/Error (red)
  - Queued/Submitted (blue)
- In-progress jobs show CircularProgress spinner next to status
- Job rows update every 5 seconds via existing polling mechanism
- When jobs complete, they auto-refetch FBA/Gapfill data and show results
- Tracked jobs automatically cleaned up when terminal status reached

User experience:
- Submit FBA/Gapfill → See job appear immediately in respective tab
- Watch status update in real-time
- When complete, job disappears and result appears with clickable link
- No need to switch to My Jobs page to track model-specific jobs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Parse stringified solutiondata field from workspace objects
- Try alternative ref paths when API returns wrong format
- Handle /gapfill. vs /gapfilling/ path variations
- Add fallback logic to try multiple path formats

Backend issues remain (José to fix):
- API returns wrong ref: /gapfill.gf.0 instead of /gapfilling/gf.0
- API doesn't parse solutiondata field into solution_reactions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Code review cleanup - no functional changes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
My grep check was wrong - useState is used for pagination and sort state.
All biochem pages reviewed and found to be high quality.

Code quality: 9/10
- Proper error handling
- Performance optimizations (useMemo, useCallback)
- TypeScript types throughout
- Server-side pagination
- CSV export
- External database links
- Loading states

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
useState was incorrectly removed - it's used for paginationModel and sortModel state.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Expand README.md with architecture diagram, data flow, file reference tables
- Add file-level JSDoc header to page.tsx
- Add component JSDoc with @returns to TeamPage
- Add JSDoc header to [name]/page.tsx documenting route params
- Expand README.md with architecture diagram, data flow, file reference
- Add file-level JSDoc header to page.tsx
- Enhance highlightText JSDoc with @param, @returns, @example
- Add component JSDoc with @returns to PublicationsPage
- app/compare: Add file JSDoc, section comments, component JSDoc, README
- app/genome: Add file JSDoc, type/helper section markers, helper JSDocs, component JSDoc, expanded README
- app/feature: Add file JSDoc header
- app/media: Add file JSDoc, section markers, helper JSDocs, component JSDoc, README
- app/model: Add file JSDoc header, expanded README
- app/fba: Add file JSDoc, section marker, component JSDoc, README
- app/gapfill: Add file JSDoc, section marker, component JSDoc, README
- app/data: Add file JSDoc header, component JSDoc
- app/about: Add JSDoc headers to page.tsx, version/page.tsx, StatusTable.tsx, data-sources/page.tsx, expanded README
- app/events: Add JSDoc headers to page.tsx and all plantseed2015-2018 pages, expanded README
- app/projects: Add JSDoc headers to page.tsx, regulons/page.tsx, fusions/page.tsx, expanded README
Ignore PRODUCTION_POLISH_PLAN.md so local planning notes stay untracked on strict branches.

Made-with: Cursor
Keep `template_type` equal to the user-selected upload template so `auto` is no longer coerced to `gn` in the frontend request payload.

Made-with: Cursor
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.

2 participants