Skip to content

Commit

Permalink
BedTabixAborting
Browse files Browse the repository at this point in the history
  • Loading branch information
cmdcolin committed Nov 30, 2024
1 parent dd06eaf commit 32593c5
Show file tree
Hide file tree
Showing 3 changed files with 243 additions and 240 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ const NewHydrate = observer(function ServerSideRenderedContent({
const { hydrateFn } = getRoot<any>(rest.displayModel)

useEffect(() => {
if (ref.current) {
ref.current.innerHTML = html
}
// requestIdleCallback here helps to avoid hydration mismatch because it
// provides time for dangerouslySetInnerHTML to set the innerHTML contents
// of the node, otherwise ref.current.innerHTML can be empty
Expand Down Expand Up @@ -59,15 +62,9 @@ const NewHydrate = observer(function ServerSideRenderedContent({
})
}
/* biome-ignore lint/correctness/useExhaustiveDependencies: */
}, [theme, rest, hydrateFn, RenderingComponent])

return (
<div
data-testid="hydrationContainer"
ref={ref}
dangerouslySetInnerHTML={{ __html: html }}
/>
)
}, [theme, rest, html, hydrateFn, RenderingComponent])

return <div data-testid="hydrationContainer" ref={ref} />
})

const OldHydrate = observer(function ({
Expand Down
8 changes: 8 additions & 0 deletions plugins/bed/src/BedTabixAdapter/BedTabixAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'
import { SimpleFeature } from '@jbrowse/core/util'
import { openLocation } from '@jbrowse/core/util/io'
import { ObservableCreate } from '@jbrowse/core/util/rxjs'
import { checkStopToken } from '@jbrowse/core/util/stopToken'

import { featureData } from '../util'

Expand Down Expand Up @@ -71,15 +72,22 @@ export default class BedTabixAdapter extends BaseFeatureDataAdapter {
}

public getFeatures(query: Region, opts: BaseOptions = {}) {
const { stopToken } = opts
return ObservableCreate<Feature>(async observer => {
const meta = await this.bed.getMetadata()
const { columnNumbers } = meta
const colRef = columnNumbers.ref - 1
const colStart = columnNumbers.start - 1
const colEnd = columnNumbers.end - 1
const names = await this.getNames()
let start = performance.now()
checkStopToken(stopToken)
await this.bed.getLines(query.refName, query.start, query.end, {
lineCallback: (line, fileOffset) => {
if (performance.now() - start > 200) {
checkStopToken(stopToken)
start = performance.now()
}
observer.next(
new SimpleFeature(
featureData({
Expand Down
Loading

0 comments on commit 32593c5

Please sign in to comment.