UNPKG

@jbrowse/plugin-linear-genome-view

Version:

JBrowse 2 linear genome view

75 lines (74 loc) 4.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = SearchResultsTable; const jsx_runtime_1 = require("react/jsx-runtime"); const util_1 = require("@jbrowse/core/util"); const material_1 = require("@mui/material"); const mobx_state_tree_1 = require("mobx-state-tree"); const searchUtils_1 = require("../../searchUtils"); function SearchResultsTable({ searchResults, assemblyName: optAssemblyName, model, handleClose, }) { const session = (0, util_1.getSession)(model); const { pluginManager } = (0, util_1.getEnv)(session); const { assemblyManager } = session; const assemblyName = optAssemblyName || model.displayedRegions[0].assemblyName; const assembly = assemblyManager.get(assemblyName); if (!assembly) { throw new Error(`assembly ${assemblyName} not found`); } if (!assembly.regions) { throw new Error(`assembly ${assemblyName} regions not loaded`); } function getTrackName(trackId) { var _a; if (trackId) { const schema = pluginManager.pluggableConfigSchemaType('track'); const configuration = (0, mobx_state_tree_1.resolveIdentifier)(schema, (0, mobx_state_tree_1.getRoot)(model), trackId); return ((_a = configuration === null || configuration === void 0 ? void 0 : configuration.name) === null || _a === void 0 ? void 0 : _a.value) || ''; } return ''; } async function handleClick(result) { var _a; if (result.hasLocation()) { await (0, searchUtils_1.navToOption)({ option: result, model, assemblyName, }); } else { const location = result.getLabel(); const newRegion = (_a = assembly === null || assembly === void 0 ? void 0 : assembly.regions) === null || _a === void 0 ? void 0 : _a.find(region => location === region.refName); if (newRegion) { model.setDisplayedRegions([newRegion]); model.showAllRegions(); } } } return ((0, jsx_runtime_1.jsx)(material_1.TableContainer, { component: material_1.Paper, children: (0, jsx_runtime_1.jsxs)(material_1.Table, { children: [(0, jsx_runtime_1.jsx)(material_1.TableHead, { children: (0, jsx_runtime_1.jsxs)(material_1.TableRow, { children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { children: "Name" }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", children: "Location" }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", children: "Track" }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right" })] }) }), (0, jsx_runtime_1.jsx)(material_1.TableBody, { children: searchResults.map(result => { const locString = result.getLocation(); let loc; try { loc = locString ? (0, util_1.parseLocString)(locString, refName => assembly.isValidRefName(refName)) : undefined; } catch (e) { } return ((0, jsx_runtime_1.jsxs)(material_1.TableRow, { children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { component: "th", scope: "row", children: result.getLabel() }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", children: loc ? (0, util_1.assembleLocString)({ ...loc, refName: assembly.getCanonicalRefName(loc.refName) || loc.refName, }) : locString }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", children: getTrackName(result.getTrackId()) || 'N/A' }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", children: (0, jsx_runtime_1.jsx)(material_1.Button, { onClick: async () => { try { await handleClick(result); } catch (e) { console.error(e); session.notifyError(`${e}`, e); } handleClose(); }, color: "primary", variant: "contained", children: "Go" }) })] }, result.getId())); }) })] }) })); }