LinearSyntenyViewHelper
Auto-generated from the @jbrowse/mobx-state-tree model in the source — see the developer guide for concepts. Provided by the linear-comparative-view plugin. View source.
Holds one level of a linear synteny comparison: its track list and height, composed with the shared rendering-lifecycle state.
Nested in LinearSyntenyView.levels, never in session.views: it is a track
container, not a view, and satisfies core's TrackContainer so the
track-selector and add-track widgets can write into it via the parent view's
trackContainerFor. The LinearSyntenyViewHelper name and type literal are
kept only because saved sessions persist them.
Each section ends with the members a composed model contributes, linked to the page that documents them.
Properties
| Member | Description |
|---|---|
idid: ElementId | |
typetype: 'LinearSyntenyViewHelper' | |
| tracks | |
heightheight: types.stripDefault(types.number, 100) |
Volatiles
7 inherited volatiles from one model
From RenderLifecycleMixin: canvasDrawn, paintCount, currentRenderingBackend, renderTick, autorunsInstalled, renderError, offScreen
Getters
| Member | Description |
|---|---|
parentViewParentViewDuck | |
levelnumber | this level's place in the stack, and so which rows it draws between |
rowPairRowPair | undefined | The two rows this level draws between — the upper one is the query axis — or undefined for a level with no row below it. Ungated: whether those rows are ready to draw is connectedRows' question. |
connectedRowsRowPair | undefined | rowPair once both rows are initialized with regions, which is also when the view has a width to draw at. Gated on those two rows alone, so a row loading or failed elsewhere in the stack holds back only the bands beside it. The one gate the band's canvas and its displays' fetch share. |
assemblyNamesstring[] | the assemblies of rowPair, or [] without one |
linearSyntenyDisplaysLinearSyntenyDisplayModel[] | All synteny displays under this level's tracks. |
bandTransformKeystring | Every number that moves a ribbon under a stationary cursor — each connected row's offsetPx and bpPerPx, plus the band height — as one key, which installClearHoverOnSurfaceMove watches. Empty until both rows are there, which no viewport can produce. |
displayErrorstring | undefined | Every failed track's error in this level, joined into the one value the band has room to report. On-screen only — an SVG export has nowhere to float a banner, so it fails outright from awaitSvgReady. |
surfaceReadinessComparativeSurface | This level's band as the displays drawing onto it see it: first paint, plus the parent-view flags that mean what is on screen is not the answer yet. displayPhase and settled are both computed from it. |
displayPhaseDisplayStatusPhase | What the shared canvas publishes as data-display-phase: the ranking over the ribbons drawing onto it. settled below is the stricter question — see comparativeReadiness. |
settledboolean | The canvas has painted and no display is still fetching, so what is on screen is final. Drives synteny_canvas's data-display-drawn, which screenshot capture and the browser suites wait on — so it means "done", not "first paint". comparativeReadiness says why an error answers this and "is every display finished" differently. |
syntenyCellsMap<number, SyntenyCell> | Every cell the band's backend holds bytes for, in draw order: each display's ribbons, then its outline while a ribbon of it is selected. The upload autorun diffs this map — new entries upload, vanished entries evict — and the wrappers are the displays' own, so a refetch on one track re-uploads only that track. |
ribbonGeometryByDisplayKeyMap<number, SyntenyInstanceData> | Each track's ribbon geometry, in draw order — what the pick walks. The outline cells are left out: an outline is the selection's own silhouette, drawn over the ribbon it traces. |
syntenyBlocksRenderBlock[] | One canvas-wide block per cell, so a ribbon's outline draws over its own fill and a later track over an earlier one. |
syntenyRenderStateSyntenyRenderState | Aggregated per-frame render state, always resolved — "the view isn't measured yet" is canRender's precondition. An empty perTrack is a real frame rather than a skip: the frame clears before drawing, so painting zero tracks is what drops a hidden track's ribbons. |
groundColorstring | The band's ground — see bandGroundColor, which is the decision. Read here so the level's clear, its ribbons, its off-screen-mate strip and its SVG export all take it from one place. |
offscreenMateStripsOffscreenMateStrip[] | The off-screen mate strips this band draws, hit-tests and exports: one computed value for the overlay, the pointer handlers, the tooltip and the SVG export. |
hoveringFeatureboolean | The pointer is over a ribbon somewhere in this band. Drives the canvas cursor, which is the only thing that says a ribbon can be clicked at all — the hover shading is subtle at the default 0.25 opacity. |
canRenderboolean | Render-lifecycle precondition, overriding RenderLifecycleMixin's default-true hook: the render callback sizes the canvas off parentView.width, and a paint before both rows are up would mark the band drawn over ribbons that have not started to fetch. |
paintInertboolean | Overrides RenderLifecycleMixin's hook: a band with no synteny track on it paints its ground this tick and nothing is coming, so it has finished rather than being pending. renderBlocks answers "did content reach the canvas" off the blocks it drew, which is the right answer for a track still fetching and the wrong one for a band with nothing to draw on it.connectedRows is the other half: a band whose rows are not up has no tracks either and is not finished. This family carries a second guard one layer up — ComparativeSurface.initPending, for the level that exists from the moment its rows do while init adds its tracks several awaits later — but that one is about the init blob, not about the rows, so it does not stand in for this. |
3 inherited getters from one model
From RenderLifecycleMixin: rendersCanvas, paintSuperseded, painted
Methods
| Member | Description |
|---|---|
displayFor(key: number) => LinearSyntenyDisplayModel | undefined | The display a pick hit belongs to. |
offscreenMateDestination(hit: OffscreenMateHit) => MateNavDestination | undefined | Where a click on a mark would send its row, which the hover prints as the click's promise; undefined for a row the stack no longer has. |
pickFeatureAt(x: number, y: number) => SyntenyPickResult | undefined | The ribbon under a canvas-relative point, topmost first — the band's hover, click and context menu all ask this. CPU picking rather than a GPU id buffer: ADR-019. |
Actions
| Member | Description |
|---|---|
setHeight(n: number) => void | |
resizeHeight(distance: number) => void | Drag this band taller or shorter, clamped like every other band drag: the floor keeps the bar itself grabbable, and a band already thinner than the floor stays where it is rather than jumping up to it. The stack-wide drag (resizeAllLevelHeights) is this, per level, so the clamp is stated once. |
| showTrack | |
hideTrack(trackId: string) => boolean | |
toggleTrack(trackId: string) => boolean | |
| launchTrack | showTrack for a track whose display state model may be lazily loaded: loads it, then shows |
launchToggleTrack(trackId: string) => Promise<boolean> | toggleTrack with launchTrack's loading behavior |
| setHoveredFeature | |
| setClickedFeature | Clicked-state twin of setHoveredFeature, across the whole view rather than this band alone |
showOffscreenMateContig(hit: OffscreenMateHit) => void | What clicking a mark does: show where its alignments land on the facing row. The row scrolls to them, or gains the contig or a slice of it, and never loses a region it was showing. The click takes the follow anchor, and the Undo gives back the anchor and every row's viewport together. |
startRenderingBackend(backend: SyntenyRenderingBackend) => void |
7 inherited actions from one model
From RenderLifecycleMixin: markCanvasDrawn, resetCanvasDrawn, stopRenderingBackend, renderNow, setOffScreen, setRenderError, attachRenderingBackend