@gmod/jbrowse
Version:
JBrowse - client-side genome browser
82 lines (70 loc) • 2.12 kB
JavaScript
define( [ 'dojo/_base/declare',
'dojo/_base/lang',
'dojo/request',
'dojo/promise/all',
'dojo/Deferred',
'JBrowse/Store/SeqFeature',
'JBrowse/Util',
'JBrowse/Digest/Crc32',
'JBrowse/Model/XHRBlob',
'JBrowse/Store/DeferredFeaturesMixin',
'./UnindexedFasta/File'
],
function(
declare,
lang,
request,
all,
Deferred,
SeqFeatureStore,
Util,
Crc32,
XHRBlob,
DeferredFeaturesMixin,
FASTAFile
) {
return declare( [ SeqFeatureStore, DeferredFeaturesMixin ],
{
/**
* Storage backend for sequences in UNINDEXED fasta files
* served as static text files.
* @constructs
*/
constructor: function(args) {
var fastaBlob = args.fasta || args.blob ||
new XHRBlob( this.resolveUrl(
args.urlTemplate || 'data.fasta'
)
);
this.index = {}
this.fasta = new FASTAFile({
store: this,
data: fastaBlob
});
this.fasta.init({
success: lang.hitch( this,
function() {
this._deferred.features.resolve({success:true});
}),
failure: lang.hitch( this, '_failAllDeferred' )
});
},
_getFeatures: function( query, featCallback, endCallback, errorCallback ) {
this.fasta.fetch( this.refSeq.name, query.start, query.end, featCallback, endCallback, errorCallback );
},
getRefSeqs: function( featCallback, errorCallback ) {
var thisB=this;
this._deferred.features.then(
function() {
featCallback(thisB.fasta.refseqs);
},
errorCallback
);
},
saveStore: function() {
return {
urlTemplate: (this.config.file||this.config.blob).url
};
}
});
});