@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
71 lines (70 loc) • 2.59 kB
JavaScript
;
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;
}
}
}