UNPKG

@jbrowse/plugin-linear-genome-view

Version:

JBrowse 2 linear genome view

41 lines (40 loc) 3.35 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { getSession, toLocale } from '@jbrowse/core/util'; import { Box, Button, Table, TableBody, TableCell, TableHead, TableRow, } from '@mui/material'; import { collapseIntrons, getExonsAndCDS } from "./util.js"; export default function TranscriptTable({ transcripts, view, assembly, padding, validPadding, handleClose, }) { const sorted = [...transcripts].sort((a, b) => { const lenA = a.get('end') - a.get('start'); const lenB = b.get('end') - b.get('start'); return lenB - lenA; }); return (_jsx(Box, { sx: { maxHeight: 600, overflow: 'auto' }, children: _jsxs(Table, { size: "small", stickyHeader: true, children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, { children: "Name/ID" }), _jsx(TableCell, { children: "Type" }), _jsx(TableCell, { align: "right", children: "Length" }), _jsx(TableCell, { align: "right", children: "Exons" }), _jsx(TableCell, { align: "right", children: "CDS" }), _jsx(TableCell, {})] }) }), _jsx(TableBody, { children: sorted.map((transcript, idx) => { const start = transcript.get('start'); const end = transcript.get('end'); const name = transcript.get('name') || transcript.get('id') || `Transcript ${idx + 1}`; const type = transcript.get('type') || 'transcript'; const exonsAndCDS = getExonsAndCDS([transcript]); const exonCount = exonsAndCDS.filter(f => f.get('type') === 'exon').length; const cdsCount = exonsAndCDS.length - exonCount; return (_jsxs(TableRow, { children: [_jsx(TableCell, { children: name }), _jsx(TableCell, { children: type }), _jsxs(TableCell, { align: "right", children: [toLocale(end - start), " bp"] }), _jsx(TableCell, { align: "right", children: exonCount }), _jsx(TableCell, { align: "right", children: cdsCount }), _jsx(TableCell, { align: "right", children: _jsx(Button, { size: "small", variant: "contained", color: "primary", disabled: !validPadding, onClick: () => { ; (async () => { try { await collapseIntrons({ view, transcripts: [transcript], assembly, padding, }); handleClose(); } catch (e) { getSession(view).notifyError(`${e}`, e); console.error(e); } })(); }, children: "Select" }) })] }, transcript.id())); }) })] }) })); }