UNPKG

@gmod/jbrowse

Version:

JBrowse - client-side genome browser

72 lines (63 loc) 2.55 kB
define([ 'dojo/_base/declare', 'dojo/_base/lang', 'dojo/Deferred', 'dijit/MenuItem', 'JBrowse/Plugin', './View/SearchSeqDialog' ], function( declare, lang, Deferred, dijitMenuItem, JBrowsePlugin, SearchSeqDialog ) { return declare( JBrowsePlugin, { constructor: function( args ) { this._searchTrackCount = 0; var thisB = this; this.browser.afterMilestone('initView', function() { this.browser.addGlobalMenuItem( 'file', new dijitMenuItem( { label: 'Add sequence search track', iconClass: 'dijitIconSearch', onClick: lang.hitch(this, 'createSearchTrack') })); }, this ); }, createSearchTrack: function() { var searchDialog = new SearchSeqDialog(); var thisB = this; searchDialog.show( function( searchParams ) { if( !searchParams ) return; var storeConf = { browser: thisB.browser, refSeq: thisB.browser.refSeq, type: 'RegexSequenceSearch/Store/SeqFeature/RegexSearch', searchParams: searchParams }; var storeName = thisB.browser.addStoreConfig( undefined, storeConf ); storeConf.name = storeName; var searchTrackConfig = { type: 'JBrowse/View/Track/CanvasFeatures', label: 'search_track_' + (thisB._searchTrackCount++), key: "Search reference sequence for '" + searchParams.expr + "'", metadata: { category: 'Local tracks', Description: "Contains all matches of the text string/regular expression '" + storeConf.searchExpr + "'" }, store: storeName }; // send out a message about how the user wants to create the new track thisB.browser.publish( '/jbrowse/v1/v/tracks/new', [searchTrackConfig] ); // Open the track immediately thisB.browser.publish( '/jbrowse/v1/v/tracks/show', [searchTrackConfig] ); }); } }); });