diff --git a/src/content/app/tools/vep/state/vep-action-listeners/vepActionListeners.ts b/src/content/app/tools/vep/state/vep-action-listeners/vepActionListeners.ts index e4c1a91b2d..5e3df97187 100644 --- a/src/content/app/tools/vep/state/vep-action-listeners/vepActionListeners.ts +++ b/src/content/app/tools/vep/state/vep-action-listeners/vepActionListeners.ts @@ -123,8 +123,17 @@ const vepSubmissionsRestoreListener = { } } + // Make sure to not pass the actual submission objects to VepSubmissionStatusPolling, + // because the submission objects belong to the redux state, and are therefore immutable + const submissionsDataForPolling = unresolvedSubmissions.map( + (submission) => ({ + id: submission.id, + status: submission.status + }) + ); + vepSubmissionStatusPolling.processSubmissionsOnStartup({ - submissions: unresolvedSubmissions, + submissions: submissionsDataForPolling, dispatch }); diff --git a/src/content/app/tools/vep/views/vep-submission-results/VepSubmissionResults.tsx b/src/content/app/tools/vep/views/vep-submission-results/VepSubmissionResults.tsx index a19251f168..878d94787c 100644 --- a/src/content/app/tools/vep/views/vep-submission-results/VepSubmissionResults.tsx +++ b/src/content/app/tools/vep/views/vep-submission-results/VepSubmissionResults.tsx @@ -62,6 +62,10 @@ import type { VepResultsResponse } from 'src/content/app/tools/vep/types/vepResu import styles from './VepSubmissionResults.module.css'; +type RestoredVepSubmission = Omit & { + species: NonNullable; +}; + /** * TODO: * - Add unique id to variants after they are requested (to use for keys) @@ -126,6 +130,9 @@ const VepSubmissionResults = () => { } = vepResults; const { per_page, total } = paginationMetadata; const maxPage = Math.ceil(total / per_page); + const genomeIdForUrl = + submission.species?.genome_tag ?? + (submission as RestoredVepSubmission).species.genome_id; return (
@@ -146,7 +153,10 @@ const VepSubmissionResults = () => {
)}
- +
@@ -228,8 +238,9 @@ const MockFiltersToggle = () => { const VepResultsTable = (props: { variants: VepResultsResponse['variants']; + genomeId: string; }) => { - const { variants } = props; + const { variants, genomeId } = props; return ( @@ -247,7 +258,7 @@ const VepResultsTable = (props: { {/* Use something more reliable for key than index */} {variants.map((variant, index) => ( - + ))}
@@ -256,13 +267,15 @@ const VepResultsTable = (props: { const VariantRow = (props: { variant: VepResultsResponse['variants'][number]; + genomeId: string; }) => { + const { genomeId, variant } = props; const [expandedTranscriptPaths, setExpandedTranscriptPaths] = useState< ExpandedTranscriptsPath[] >([]); const tabularData = useVepVariantTabularData({ - variant: props.variant, + variant, expandedTranscriptPaths }); @@ -303,7 +316,7 @@ const VariantRow = (props: { rowSpan={row.variant.rowspan > 1 ? row.variant.rowspan : undefined} > @@ -320,7 +333,7 @@ const VariantRow = (props: { )} - + { - const { row } = props; +const GeneTableCell = (props: { + row: VepResultsTableRowData; + genomeId: string; +}) => { + const { row, genomeId } = props; if (row.gene) { return ( 1 ? row.gene.rowspan : undefined}> - + ); } else if (row.consequence.feature_type === null) {