Navigate & control
Drive the view from your own code.
Disable zoom and side scroll
The stubs also stop navTo, moveTo and navToLocString, so the view opens at
its default scale: pin bpPerPx and offsetPx in a defaultSession instead.
Header controls go inert while still looking live, which is why this demo hides
the header.
View source — 59 lines
import Plugin from '@jbrowse/core/Plugin'
import { extendViewType } from '@jbrowse/core/pluggableElementTypes'
import { types } from '@jbrowse/mobx-state-tree'
import {
JBrowseLinearGenomeView,
useCreateViewState,
} from '@jbrowse/react-linear-genome-view2'
import type PluginManager from '@jbrowse/core/PluginManager'
class MyPlugin extends Plugin {
name = 'MyPlugin'
install(pluginManager: PluginManager) {
// #region extend
extendViewType(pluginManager, 'LinearGenomeView', stateModel =>
types.compose(
stateModel,
types.model().actions(() => ({
zoomTo: () => {},
scrollTo: () => {},
})),
),
)
// #endregion
}
configure() {}
}
export default function WithDisableZoomAndSideScroll() {
const state = useCreateViewState({
assembly: {
name: 'volvox',
uri: 'https://jbrowse.org/genomes/volvox/volvox.2bit',
},
tracks: [
{
type: 'FeatureTrack',
trackId: 'volvox_gff3',
name: 'Volvox genes',
assemblyNames: ['volvox'],
adapter: {
type: 'Gff3TabixAdapter',
uri: 'https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.sort.gff3.gz',
},
},
],
plugins: [MyPlugin],
defaultSession: {
name: 'disable-zoom-and-side-scroll',
view: {
id: 'linearGenomeView',
type: 'LinearGenomeView',
hideHeader: true,
},
},
location: 'ctgA:1105..1221',
})
return state ? <JBrowseLinearGenomeView viewState={state} /> : null
}Show a track programmatically
View source — 54 lines
import {
JBrowseLinearGenomeView,
useCreateViewState,
} from '@jbrowse/react-linear-genome-view2'
import { observer } from 'mobx-react'
import type { ViewModel } from '@jbrowse/react-linear-genome-view2'
const TRACK_ID = 'volvox_gff3'
const ToggleTrack = observer(function ToggleTrack({
viewState,
}: {
viewState: ViewModel
}) {
const { view } = viewState.session
const open = !!view.getTrack(TRACK_ID)
return (
<button
onClick={() => {
if (open) {
view.hideTrack(TRACK_ID)
} else {
void view.launchTrack(TRACK_ID)
}
}}
>
{open ? 'Hide' : 'Show'} the genes track
</button>
)
})
export default function WithShowTrack() {
const state = useCreateViewState({
assembly: {
name: 'volvox',
uri: 'https://jbrowse.org/genomes/volvox/volvox.2bit',
},
tracks: [
{
trackId: TRACK_ID,
name: 'Volvox genes',
uri: 'https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.sort.gff3.gz',
},
],
init: { loc: 'ctgA:1105..1221' },
})
return state ? (
<div>
<ToggleTrack viewState={state} />
<JBrowseLinearGenomeView viewState={state} />
</div>
) : null
}