UNPKG

@jbrowse/plugin-linear-genome-view

Version:

JBrowse 2 linear genome view

71 lines (70 loc) 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = LaunchLinearGenomeViewF; const util_1 = require("@jbrowse/core/util"); const searchUtils_1 = require("../searchUtils"); function LaunchLinearGenomeViewF(pluginManager) { pluginManager.addToExtensionPoint('LaunchView-LinearGenomeView', async ({ session, assembly, loc, tracks = [], tracklist, nav, highlight, }) => { try { const { assemblyManager } = session; const view = session.addView('LinearGenomeView', {}); await (0, util_1.when)(() => !!view.volatileWidth); if (!assembly) { throw new Error('No assembly provided when launching linear genome view'); } const asm = await assemblyManager.waitForAssembly(assembly); if (!asm) { throw new Error(`Assembly "${assembly}" not found when launching linear genome view`); } if (tracklist) { view.activateTrackSelector(); } if (nav !== undefined) { view.setHideHeader(!nav); } if (highlight !== undefined) { for (const h of highlight) { const p = (0, util_1.parseLocString)(h, refName => assemblyManager.isValidRefName(refName, assembly)); const { start, end } = p; if (start !== undefined && end !== undefined) { view.addToHighlights({ ...p, start, end, assemblyName: assembly, }); } } } await (0, searchUtils_1.handleSelectedRegion)({ input: loc, model: view, assembly: asm, }); const idsNotFound = []; for (const track of tracks) { tryTrack(view, track, idsNotFound); } if (idsNotFound.length) { throw new Error(`Could not resolve identifiers: ${idsNotFound.join(',')}`); } } catch (e) { session.notifyError(`${e}`, e); throw e; } }); } function tryTrack(model, trackId, idsNotFound) { try { model.showTrack(trackId); } catch (e) { if (/Could not resolve identifier/.exec(`${e}`)) { idsNotFound.push(trackId); } else { throw e; } } }