MariaNattestad / Ribbon

A genome browser designed for complex structural variants and long reads.
https://genomeribbon.com
MIT License
264 stars 29 forks source link

Modernize JS and add more file loading from URLs #88

Closed MariaNattestad closed 2 months ago

MariaNattestad commented 2 months ago

This contains a lot of functionality. See commit messages for a full list -- they are very descriptive.

This PR is huge because I updated Ribbon to use modern bundling and ES6 imports -- basically all the imports are more robust, and libraries are imported explicitly instead of scripts sharing global variables. Several libraries had to be updated to versions that are new enough to support this (e.g. D3 version 4 in 2016 was the first to support import, but this comes with other changes that we had to update a lot of code to deal with).

During testing for this, I also added URL file loading and the start to sessions, which enabled faster testing of the updated code. These just need a bit more extension to become full-fledged JSON session file loading functionality that we wanted.

And here are multi-bams loaded by URL: Screenshot 2024-08-24 at 9 08 15 PM

MariaNattestad commented 2 months ago

Looks awesome!

RE: loading Aioli in both index_splitthreader.js and index_ribbon.js, we could load it once in a separate index.js that runs first and I think we should be able to import CLI from index.js

Yea I think we should pull up a few things for file loading into another script, including the new feature we will add soon to load a session JSON from a URL.