Skip to content

Commit

Permalink
Remove some DRY principles to have proper feature detail popup
Browse files Browse the repository at this point in the history
  • Loading branch information
cmdcolin committed Oct 19, 2018
1 parent 3f08841 commit e78bae3
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 50 deletions.
2 changes: 1 addition & 1 deletion src/JBrowse/Store/SeqFeature/BAM.js
Expand Up @@ -267,7 +267,7 @@ return declare( [ SeqFeatureStore, DeferredStatsMixin, DeferredFeaturesMixin, In
featCallback(this._bamRecordToFeature(records[i]))
}
}
console.log(pairCache)
console.log(query, Object.keys(pairCache).sort())
endCallback()
})
.catch(err => {
Expand Down
1 change: 1 addition & 0 deletions src/JBrowse/View/Track/_AlignmentsMixin.js
Expand Up @@ -27,6 +27,7 @@ return declare([ MismatchesMixin, NamedFeatureFiltersMixin ], {
* @returns {HTMLElement} feature detail page HTML
*/
defaultFeatureDetail: function( /** JBrowse.Track */ track, /** Object */ f, /** HTMLElement */ div ) {
console.log('here')
var container = dojo.create('div', {
className: 'detail feature-detail feature-detail-'+track.name.replace(/\s+/g,'_').toLowerCase(),
innerHTML: ''
Expand Down
126 changes: 77 additions & 49 deletions src/JBrowse/View/Track/_PairedAlignmentsMixin.js
Expand Up @@ -21,6 +21,80 @@ define([

return declare(AlignmentsMixin, {

_renderSeqQual( feature ) {

var seq = feature.get('seq'),
qual = feature.get('qual') || '';
if( !seq )
return '';

qual = qual.split(/\s+/);

var html = '';
for( var i = 0; i < seq.length; i++ ) {
html += '<div class="basePosition" title="position '+(i+1)+'"><span class="seq">'
+ seq[i]+'</span>';
if( qual[i] )
html += '<span class="qual">'+qual[i]+'</span>';
html += '</div>';
}
return '<div class="baseQuality">'+html+'</div>';
},

defaultAlignmentDetail(track, f, div ) {
var container = dojo.create('div', {
className: 'detail feature-detail feature-detail-'+track.name.replace(/\s+/g,'_').toLowerCase(),
innerHTML: ''
});
var fmt = dojo.hitch( this, function( name, value, feature ) {
name = Util.ucFirst( name.replace(/_/g,' ') );
return this.renderDetailField(container, name, value, feature);
});
fmt( 'Name', f.get('name'), f );
fmt( 'Type', f.get('type'), f );
fmt( 'Score', f.get('score'), f );
fmt( 'Description', f.get('note'), f );
fmt(
'Position',
Util.assembleLocString({ start: f.get('start'),
end: f.get('end'),
ref: this.refSeq.name })
+ ({'1':' (+)', '-1': ' (-)', 0: ' (no strand)' }[f.get('strand')] || ''),
f
);


if( f.get('seq') ) {
fmt('Sequence and Quality', this._renderSeqQual( f ), f );
}

var renameTags = { length_on_ref: 'seq_length_on_ref' };
var additionalTags = array.filter(
f.tags(), function(t) {
return ! {name:1,score:1,start:1,end:1,strand:1,note:1,subfeatures:1,type:1,cram_read_features:1}[t.toLowerCase()];
}
)
.map( function(tagName) {
return [
renameTags[tagName] || tagName,
f.get(tagName)
]
})
.sort( function(a,b) { return a[0].localeCompare(b[0]) })

dojo.forEach( additionalTags, function(t) {
fmt( t[0], t[1], f );
});

// genotypes in a separate section
if(this.config.renderAlignment || this.config.renderPrettyAlignment) {
this._renderTable( container, track, f, div );
}

return container;
},


/**
* Make a default feature detail page for the given feature.
* @returns {HTMLElement} feature detail page HTML
Expand All @@ -41,60 +115,14 @@ return declare(AlignmentsMixin, {
}, container);
var c1 = dojo.create('div', { className: 'detail feature-detail' }, flexContainer);
var c2 = dojo.create('div', { className: 'detail feature-detail' }, flexContainer);
var ret = this.inherited(arguments, [track, f.f1, c1])
var ret2 = this.inherited(arguments, [track, f.f2, c2])
var ret = this.defaultAlignmentDetail(track, f.f1, c1)
var ret2 = this.defaultAlignmentDetail(track, f.f2, c2)
dojo.place(ret, c1)
dojo.place(ret2, c2)
return container;
} else {
return this.inherited(arguments)
return this.defaultAlignmentDefault(track, f, div)
}
// var fmt = dojo.hitch( this, function( name, value, feature ) {
// name = Util.ucFirst( name.replace(/_/g,' ') );
// return this.renderDetailField(container, name, value, feature);
// });
// fmt( 'Name', f.get('name'), f );
// fmt( 'Type', f.get('type'), f );
// fmt( 'Score', f.get('score'), f );
// fmt( 'Description', f.get('note'), f );
// fmt(
// 'Position',
// Util.assembleLocString({ start: f.get('start'),
// end: f.get('end'),
// ref: this.refSeq.name })
// + ({'1':' (+)', '-1': ' (-)', 0: ' (no strand)' }[f.get('strand')] || ''),
// f
// );


// if( f.get('seq') ) {
// fmt('Sequence and Quality', this._renderSeqQual( f ), f );
// }

// var renameTags = { length_on_ref: 'seq_length_on_ref' };
// var additionalTags = array.filter(
// f.tags(), function(t) {
// return ! {name:1,score:1,start:1,end:1,strand:1,note:1,subfeatures:1,type:1,cram_read_features:1}[t.toLowerCase()];
// }
// )
// .map( function(tagName) {
// return [
// renameTags[tagName] || tagName,
// f.get(tagName)
// ]
// })
// .sort( function(a,b) { return a[0].localeCompare(b[0]) })

// dojo.forEach( additionalTags, function(t) {
// fmt( t[0], t[1], f );
// });

// // genotypes in a separate section
// if(this.config.renderAlignment || this.config.renderPrettyAlignment) {
// this._renderTable( container, track, f, div );
// }

// return container;
}

});
Expand Down

0 comments on commit e78bae3

Please sign in to comment.