Skip to content

Commit d332b6a

Browse files
committed
Better ROISet marging setting. Less resouce intensive
1 parent bf033cd commit d332b6a

File tree

12 files changed

+37
-52
lines changed

12 files changed

+37
-52
lines changed

css/_roi.scss

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -465,15 +465,7 @@ $igv-roi-table-background-color: #eee;
465465

466466
overflow: visible;
467467

468-
margin-top: 66px;
469-
470-
//border-left-width: thin;
471-
//border-left-style: solid;
472-
//border-left-color: $igv-roi-border-color;
473-
474-
//border-right-width: thin;
475-
//border-right-style: solid;
476-
//border-right-color: $igv-roi-border-color;
468+
//margin-top: 66px;
477469

478470
display: flex;
479471
flex-direction: column;

css/igv.css

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dev/api/getUserDefinedROIs.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ <h3>User defined ROIs:</h3>
3939
locus: "chr1:67,646,911-67,676,107",
4040
genome: "hg19",
4141

42-
doShowROITableButton: true,
43-
4442
tracks:
4543
[
4644
]

dev/misc/navbar-buttons.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525

2626
// showSampleNames: true,
2727

28-
doShowROITableButton: true,
29-
3028
genome: "hg19",
3129
// locus: "myc",
3230
locus: "all",

dev/misc/roiSampleInfoLayoutBug.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
{
3030
locus: "1:67,655,272-67,684,468",
3131
genome: "hg19",
32-
doShowROITableButton: true,
3332
showSampleNames: false,
3433
roi:
3534
[

dev/roi/roi-api.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ <h3>User defined ROIs:</h3>
3737
{
3838
locus: "chr1:67,646,911-67,676,107",
3939
genome: "hg19",
40-
41-
doShowROITableButton: true,
4240
showROITable: true,
4341

4442
tracks:

dev/roi/roi.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333

3434
genome: "hg19",
3535

36-
doShowROITableButton: true,
36+
// showIdeogram: false,
37+
showRuler: false,
3738

3839
// Define two global "region of interest" sets, the first with a bed file, the second with an explicit array
3940
// of regions

js/browser.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -513,14 +513,14 @@ class Browser {
513513
// deferred because ideogram and ruler are treated as "tracks", and tracks require a reference frame
514514
if (false !== session.showIdeogram) {
515515
const track = new IdeogramTrack(this)
516-
track.id = 'ideogram'
517516
const trackView = new TrackView(this, this.columnContainer, track)
518517
this.trackViews.push(trackView)
519518
}
520519

521520
if (false !== session.showRuler) {
522-
const rulerTrackView = new TrackView(this, this.columnContainer, new RulerTrack(this))
523-
this.trackViews.push(rulerTrackView)
521+
const track = new RulerTrack(this)
522+
const trackView = new TrackView(this, this.columnContainer, track)
523+
this.trackViews.push(trackView)
524524
}
525525

526526
if (session.qtlSelections) {

js/embedCss.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/ideogramTrack.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class IdeogramTrack {
3434
constructor(browser) {
3535
this.browser = browser
3636
this.type = 'ideogram'
37+
this.id = 'ideogram'
3738
this.height = 16
3839
this.order = Number.MIN_SAFE_INTEGER
3940
this.disableButtons = true

js/roi/ROIManager.js

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {inferFileFormat} from "../util/fileFormatUtils.js"
55
import ROIMenu from "./ROIMenu.js"
66
import ROITable from "./ROITable.js"
77

8-
8+
let roiRegionMargin = undefined
99
class ROIManager {
1010

1111
constructor(browser) {
@@ -16,35 +16,10 @@ class ROIManager {
1616
this.top = 0
1717
this.roiSets = []
1818
this.showOverlays = true
19+
1920
this.boundLocusChangeHandler = locusChangeHandler.bind(this)
2021
browser.on('locuschange', this.boundLocusChangeHandler)
2122

22-
const updateROIDimensions = () => {
23-
24-
const tracks = browser.findTracks(track => new Set(['ideogram', 'ruler']).has(track.type))
25-
const [rectA, rectB] = tracks
26-
.map(track => track.trackView.viewports[0].$viewport.get(0))
27-
.map(element => getElementVerticalDimension(element))
28-
29-
//Covers cases in which ruler and/or ideogram are hidden
30-
const heightA = rectA ? rectA.height : 0
31-
const heightB = rectB ? rectB.height : 0
32-
33-
const elements = browser.columnContainer.querySelectorAll('.igv-roi-region')
34-
35-
const fudge = -0.5
36-
if (elements) {
37-
for (const element of elements) {
38-
element.style.marginTop = `${heightA + heightB + fudge}px`
39-
}
40-
41-
}
42-
}
43-
44-
this.observer = new MutationObserver(updateROIDimensions)
45-
//const [ column ] = browser.columnContainer.querySelectorAll('.igv-column')
46-
this.observer.observe(browser.columnContainer, {attributes: true, childList: true, subtree: true})
47-
4823
}
4924

5025
async reset() {
@@ -247,6 +222,10 @@ class ROIManager {
247222
regionElement.style.top = `${pixelTop}px`
248223
regionElement.style.left = `${pixelX}px`
249224
regionElement.style.width = `${pixelWidth}px`
225+
226+
const marginTop = `${ROIManager.getROIRegionTopMargin(this.browser)}px`
227+
regionElement.style.marginTop = marginTop
228+
250229
regionElement.dataset.color = roiSet.color
251230
regionElement.dataset.region = regionKey
252231

@@ -271,10 +250,30 @@ class ROIManager {
271250
this.roiMenu.present(feature, roiSet, event, this, columnContainer, regionElement)
272251
})
273252

274-
275253
return regionElement
276254
}
277255

256+
static getROIRegionTopMargin(browser) {
257+
258+
if (undefined === roiRegionMargin) {
259+
const tracks = browser.findTracks(track => new Set(['ideogram', 'ruler']).has(track.type))
260+
261+
const [rectA, rectB] = tracks
262+
.map(track => track.trackView.viewports[0].$viewport.get(0))
263+
.map(element => getElementVerticalDimension(element))
264+
265+
//Covers cases in which ruler and/or ideogram are hidden
266+
const heightA = rectA ? rectA.height : 0
267+
const heightB = rectB ? rectB.height : 0
268+
269+
const fudge = -0.5
270+
roiRegionMargin = heightA + heightB + fudge
271+
272+
}
273+
274+
return roiRegionMargin
275+
}
276+
278277
renderSVGContext(columnContainer, context, {deltaX, deltaY}) {
279278

280279
for (const regionElement of columnContainer.querySelectorAll('.igv-roi-region')) {
@@ -299,7 +298,7 @@ class ROIManager {
299298
deleteUserDefinedROISet() {
300299
this.roiSets = this.roiSets.filter(roiSet => roiSet.isUserDefined !== true)
301300
}
302-
301+
303302
initializeUserDefinedROISet() {
304303

305304
const config =

js/rulerTrack.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ class RulerTrack {
3737
this.browser = browser
3838
this.height = defaultRulerHeight
3939
this.name = ""
40-
this.id = "ruler"
4140
this.disableButtons = true
4241
this.ignoreTrackMenu = true
4342
this.order = Number.MIN_SAFE_INTEGER * 1e-2
4443
this.removable = false
4544
this.type = 'ruler'
45+
this.id = "ruler"
4646
}
4747

4848
async getFeatures(chr, start, end) {

0 commit comments

Comments
 (0)