Skip to content

Commit c3ecf61

Browse files
author
Sebastian Benjamin
committed
Serialize variantTable location to variantSearch URL parameters
1 parent 2774d91 commit c3ecf61

File tree

4 files changed

+30
-10
lines changed

4 files changed

+30
-10
lines changed

jbrowse/src/client/JBrowse/VariantSearch/components/VariantTableWidget.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -307,11 +307,6 @@ const VariantTableWidget = observer(props => {
307307

308308
const showDetailsWidget = (rowIdx: number, params: any) => {
309309
(async () => {
310-
/*let a = adapter;
311-
312-
if (!a) {
313-
a = await getAdapterInstance();
314-
}*/
315310
let a = await getAdapterInstance();
316311

317312
const row = features[rowIdx] as any

jbrowse/src/client/JBrowse/VariantTable/VariantTable.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { createTheme } from '@mui/material/styles';
55
import { readConfObject } from '@jbrowse/core/configuration';
66
import { createJBrowseTheme } from '@jbrowse/core/ui';
77
import { ThemeProvider } from '@mui/material';
8+
import { parseLocString } from '@jbrowse/core/util';
89
import LogSession from '../Browser/plugins/LogSession/index';
910
import ExtendedVariantPlugin from '../Browser/plugins/ExtendedVariantPlugin/index';
1011
import VariantTableWidget from './components/VariantTableWidget';
@@ -35,6 +36,7 @@ function VariantTable() {
3536
const [state, setState] = useState(null);
3637
const [theme, setTheme] = useState(null);
3738
const [view, setView] = useState(null);
39+
const [parsedLocString, setParsedLocString] = useState(null)
3840
const [pluginManager, setPluginManager] = useState(null);
3941
const [assembly, setAssembly] = useState<Assembly>(null);
4042
const [assemblyName, setAssemblyName] = useState<string>(null)
@@ -54,6 +56,15 @@ function VariantTable() {
5456
setPluginManager(pluginManager)
5557
setState(state)
5658

59+
const isValidRefNameForAssembly = function(refName: string, assemblyName?: string) {
60+
return assemblyManager.isValidRefName(refName, assemblyNames[0])
61+
}
62+
63+
if (locString) {
64+
const parsedLocString = parseLocString(locString, isValidRefNameForAssembly)
65+
setParsedLocString(parsedLocString)
66+
}
67+
5768
// @ts-ignore
5869
setTheme(createJBrowseTheme(readConfObject(state.config.configuration, 'theme')))
5970
}
@@ -80,7 +91,7 @@ function VariantTable() {
8091
<ErrorBoundary>
8192
<JBrowseFilterPanel session={state.session}/>
8293
<VariantTableWidget assembly={assembly} assemblyName={assemblyName} trackId={trackId} locString={locString}
83-
sessionId={sessionId} session={session} pluginManager={pluginManager}/>
94+
sessionId={sessionId} session={session} pluginManager={pluginManager} parsedLocString={parsedLocString}/>
8495
</ErrorBoundary>
8596
</div>
8697
</ThemeProvider>

jbrowse/src/client/JBrowse/VariantTable/components/VariantTableWidget.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import { ActionURL, Ajax } from '@labkey/api';
3737
import { deserializeFilters } from '../../Browser/plugins/ExtendedVariantPlugin/InfoFilterWidget/filterUtil';
3838

3939
const VariantTableWidget = observer(props => {
40-
const { assembly, assemblyName, trackId, locString, sessionId, session, pluginManager } = props
40+
const { assembly, assemblyName, trackId, locString, parsedLocString, sessionId, session, pluginManager } = props
4141
const { view, assemblyManager } = session
4242

4343
const isValidRefNameForAssembly = function(refName: string, assemblyName?: string) {
@@ -78,7 +78,7 @@ const VariantTableWidget = observer(props => {
7878
navigateToBrowser(sessionId, locString, trackId, track)
7979
break;
8080
case "luceneRedirect":
81-
navigateToSearch(sessionId, locString, trackId, track)
81+
navigateToSearch(sessionId, locString, parsedLocString, trackId, track)
8282
break;
8383
}
8484
}

jbrowse/src/client/JBrowse/utils.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,14 @@ export function navigateToTable(sessionId, locString, trackId, track?: any) {
223223
window.location.href = ActionURL.buildURL("jbrowse", "variantTable.view", null, {session: sessionId, location: locString, trackId: trackId, activeTracks: trackId, sampleFilters: sampleFilterURL, infoFilters: infoFilterURL})
224224
}
225225

226-
export function navigateToSearch(sessionId, locString, trackId, track?: any) {
226+
export function navigateToSearch(sessionId, locString, parsedLocString: ParsedLocString, trackId, track?: any) {
227227
const sampleFilterURL = serializeSampleFilters(track)
228228
const infoFilterURL = serializeInfoFilters(track)
229-
window.location.href = ActionURL.buildURL("jbrowse", "variantSearch.view", null, {session: sessionId, location: locString, trackId: trackId, activeTracks: trackId, sampleFilters: sampleFilterURL, infoFilters: infoFilterURL})
229+
230+
const contig = parsedLocString.refName;
231+
const start = parsedLocString.start;
232+
const end = parsedLocString.end;
233+
window.location.href = ActionURL.buildURL("jbrowse", "variantSearch.view", null, {session: sessionId, location: locString, trackId: trackId, activeTracks: trackId, sampleFilters: sampleFilterURL, infoFilters: infoFilterURL, searchString: serializeLocationToLuceneQuery(contig, start, end)})
230234
}
231235

232236
export function navigateToBrowser(sessionId: string, locString: string, trackGUID?: string, track?: any) {
@@ -301,6 +305,16 @@ export function getGenotypeURL(trackId, contig, start, end) {
301305
return ActionURL.buildURL("jbrowse", "genotypeTable.view", null, {trackId: trackId, chr: contig, start: start, stop: end})
302306
}
303307

308+
export function serializeLocationToLuceneQuery(contig, start, end) {
309+
const filters = [
310+
{field: "contig", operator: "equals", value: contig.toString()},
311+
{field: "start", operator: ">=", value: start.toString()},
312+
{field: "end", operator: "<=", value: end.toString()}
313+
]
314+
315+
return createEncodedFilterString(filters, false)
316+
}
317+
304318
function generateLuceneString(field, operator, value) {
305319
let luceneQueryString = '';
306320

0 commit comments

Comments
 (0)