JBrowse 2 · Circular Genome View examples

Show and hide a track

Toggle a track from your own button.

The button reads view.tracks inside an observer, so its label follows the view whether the track opened from here or from the track selector. launchTrack, hideTrack and the view’s other actions are in the CircularView state model.

View source — 53 lines
import {
  JBrowseCircularGenomeView,
  useCreateViewState,
} from '@jbrowse/react-circular-genome-view2'
import { observer } from 'mobx-react'

import type { ViewModel } from '@jbrowse/react-circular-genome-view2'

const TRACK_ID = 'volvox_sv_test'

const ToggleTrack = observer(function ToggleTrack({
  viewState,
}: {
  viewState: ViewModel
}) {
  const { view } = viewState.session
  const open = view.tracks.some(t => t.configuration.trackId === TRACK_ID)
  return (
    <button
      onClick={() => {
        if (open) {
          view.hideTrack(TRACK_ID)
        } else {
          void view.launchTrack(TRACK_ID)
        }
      }}
    >
      {open ? 'Hide' : 'Show'} the structural variants
    </button>
  )
})

export default function ShowTrack() {
  const state = useCreateViewState({
    assembly: {
      name: 'volvox',
      uri: 'https://jbrowse.org/genomes/volvox/volvox.2bit',
    },
    tracks: [
      {
        trackId: TRACK_ID,
        name: 'volvox structural variant test',
        uri: 'https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.dup.vcf.gz',
      },
    ],
  })
  return state ? (
    <div>
      <ToggleTrack viewState={state} />
      <JBrowseCircularGenomeView viewState={state} />
    </div>
  ) : null
}