@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
41 lines (40 loc) • 1.86 kB
JavaScript
import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
import { dedupe } from '@jbrowse/core/util';
export async function fetchResults({ queryString, searchType, searchScope, rankSearchResults, textSearchManager, assembly, }) {
var _a;
if (!textSearchManager) {
console.warn('No text search manager');
}
const textSearchResults = (await (textSearchManager === null || textSearchManager === void 0 ? void 0 : textSearchManager.search({
queryString,
searchType,
}, searchScope, rankSearchResults))) || [];
const refNameResults = ((_a = assembly === null || assembly === void 0 ? void 0 : assembly.allRefNames) === null || _a === void 0 ? void 0 : _a.filter(ref => ref.toLowerCase().startsWith(queryString.toLowerCase())).slice(0, 10).map(r => new BaseResult({
label: r,
}))) || [];
return dedupe([...refNameResults, ...textSearchResults], elt => elt.getId());
}
export function splitLast(str, split) {
const lastIndex = str.lastIndexOf(split);
if (lastIndex === -1) {
return [str, ''];
}
else {
const before = str.slice(0, lastIndex);
const after = str.slice(lastIndex + 1);
return [before, after];
}
}
export function getRelativeX(event, element) {
return event.clientX - ((element === null || element === void 0 ? void 0 : element.getBoundingClientRect().left) || 0);
}
export function getCytobands(assembly, refName) {
var _a;
return (((_a = assembly === null || assembly === void 0 ? void 0 : assembly.cytobands) === null || _a === void 0 ? void 0 : _a.map(f => ({
refName: assembly.getCanonicalRefName(f.get('refName')) || f.get('refName'),
start: f.get('start'),
end: f.get('end'),
type: f.get('gieStain'),
name: f.get('name'),
})).filter(f => f.refName === refName)) || []);
}