Skip to content

Commit

Permalink
Fix the ability to get extraTrackMenu items on just the SNPCoverageDi…
Browse files Browse the repository at this point in the history
…splay
  • Loading branch information
cmdcolin committed Mar 3, 2021
1 parent ef4f11a commit 82a8ab2
Showing 1 changed file with 71 additions and 60 deletions.
131 changes: 71 additions & 60 deletions plugins/alignments/src/LinearSNPCoverageDisplay/models/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,90 +86,101 @@ const stateModelFactory = (
},
}))

.views(self => ({
get TooltipComponent() {
return Tooltip
},
.views(self => {
const { trackMenuItems } = self
return {
get TooltipComponent() {
return Tooltip
},

get adapterConfig() {
const subadapter = getConf(self.parentTrack, 'adapter')
return {
type: 'SNPCoverageAdapter',
subadapter,
}
},
get adapterConfig() {
const subadapter = getConf(self.parentTrack, 'adapter')
return {
type: 'SNPCoverageAdapter',
subadapter,
}
},

get rendererTypeName() {
return rendererTypes.get('snpcoverage')
},
get rendererTypeName() {
return rendererTypes.get('snpcoverage')
},

get needsScalebar() {
return true
},
get needsScalebar() {
return true
},

get contextMenuItems() {
return []
},
get contextMenuItems() {
return []
},

get extraTrackMenuItems() {
return [
{
label: 'Draw insertion/clipping indicators',
type: 'checkbox',
checked: self.drawIndicatorsSetting,
onClick: () => {
self.toggleDrawIndicators()
get extraTrackMenuItems() {
return [
{
label: 'Draw insertion/clipping indicators',
type: 'checkbox',
checked: self.drawIndicatorsSetting,
onClick: () => {
self.toggleDrawIndicators()
},
},
},
{
label: 'Draw insertion/clipping counts',
type: 'checkbox',
checked: self.drawInterbaseCountsSetting,
onClick: () => {
self.toggleDrawInterbaseCounts()
{
label: 'Draw insertion/clipping counts',
type: 'checkbox',
checked: self.drawInterbaseCountsSetting,
onClick: () => {
self.toggleDrawInterbaseCounts()
},
},
},
]
},
]
},

get trackMenuItems() {
return [
...trackMenuItems,
...self.composedTrackMenuItems,
...this.extraTrackMenuItems,
]
},

// The SNPCoverage filters are called twice because the BAM/CRAM features
// pass filters and then the SNPCoverage score features pass through
// here, and those have no name/flags/tags so those are passed thru
get filters() {
let filters: string[] = []
if (self.filterBy) {
const { flagInclude, flagExclude } = self.filterBy
filters = [
`function(f) {
// The SNPCoverage filters are called twice because the BAM/CRAM features
// pass filters and then the SNPCoverage score features pass through
// here, and those have no name/flags/tags so those are passed thru
get filters() {
let filters: string[] = []
if (self.filterBy) {
const { flagInclude, flagExclude } = self.filterBy
filters = [
`function(f) {
const flags = f.get('');
if(f.get('snpinfo')) return true
return ((flags&${flagInclude})===${flagInclude}) && !(flags&${flagExclude});
}`,
]
]

if (self.filterBy.tagFilter) {
const { tag, value } = self.filterBy.tagFilter
// use eqeq instead of eqeqeq for number vs string comparison
filters.push(`function(f) {
if (self.filterBy.tagFilter) {
const { tag, value } = self.filterBy.tagFilter
// use eqeq instead of eqeqeq for number vs string comparison
filters.push(`function(f) {
const tags = f.get('tags');
if(f.get('snpinfo')) return true
const val = tags ? tags["${tag}"]:f.get("${tag}")
return "${value}"==='*'? val !== undefined :val == "${value}";
}`)
}
if (self.filterBy.readName) {
const { readName } = self.filterBy
}
if (self.filterBy.readName) {
const { readName } = self.filterBy

filters.push(`function(f) {
filters.push(`function(f) {
const name = f.get('name')
if(f.get('snpinfo')) return true
return name == "${readName}"
}`)
}
}
}
return filters
},
}))
return filters
},
}
})

export type SNPCoverageDisplayModel = ReturnType<typeof stateModelFactory>

Expand Down

0 comments on commit 82a8ab2

Please sign in to comment.