Open bugzpodder opened 1 year ago
Seeing one small thing @bugzpodder where the annotation wrapping edges are showing up along the linear viewer like:
That should be fixable down in Annotations around among all this nonsense for edges and stuff: https://github.com/Lattice-Automation/seqviz/blob/develop/src/Linear/Annotations.tsx#L130-L182
Looks a bit better but still not ideal. not too familiar with SVG but ideally can make the edge invisible or same as background color but couldn't really figure it out.
@bugzpodder I'm toying around with something like what's in this example PR's commit: https://github.com/Lattice-Automation/seqviz/pull/211/commits/95fa0620b810a0e1bc595a2f6d9468684223e7ed
We'd literally have only a single SeqBlock
that covers the entire sequence.
Some pros/cons of that different approach in that commit above:
Pros:
InfiniteScroll
(just one row)oneRow
case
linearProps
and no need for the max* variables where we build up the maximum across all blocks (because there's only one block)Cons:
.la-vz-seqblock-container
(which I haven't done in that example commit)
SeqBlock.findXAndWidth
... like maybe it returns:
findXAndWidth(firstIndex: number, lastIndex: number): {width: number, x: number, render: boolean}
where render
is false if the passed first/lastIndex
are way outside the viewer's current viewer, and the corresponding component shouldn't bother rendering at all for performance reasons. For example, in Linear/Index.tsx
, we'd skip rendering ticks if we see the ticks index is so far outside the Viewer that it'd never show up anyway like:
return tickIndexes.map(p => {
let { x: tickFromLeft, render } = findXAndWidth(p - 1, p - 1); // for midpoint
if (!render) {
return null;
}
tickFromLeft += charWidth / 2;
I'm open to other thoughts/opinions on this. And I realize it's a bit of a drift in approach from the PR, but I think it might be less total work...
I think that's a really neat idea. If we can render using just a partial block and do some optimizations so the svg path are only drawn for whats in the viewport that would obviously be best.
definitely prefer that since its much easier to reason with and code.
This is awesome. Looks like we've made some progress with this PR. Can we carry this over the finish line? @jjti @bugzpodder
@leshane I think @jjti is planning a simpler implementation. The issue with my version is that when two blocks are connected together you see some weird artifacts: https://github.com/Lattice-Automation/seqviz/pull/205#issuecomment-1537557173
fixes #179
https://codesandbox.io/s/dawn-haze-ey1k3v?file=/demo/package.json