-
Notifications
You must be signed in to change notification settings - Fork 199
/
ChromSizesDriver.js
54 lines (47 loc) · 1.45 KB
/
ChromSizesDriver.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
define([
'dojo/_base/declare',
'JBrowse/Util',
'JBrowse/Model/FileBlob',
'JBrowse/Model/XHRBlob'
],
function( declare, Util, FileBlob, XHRBlob ) {
var uniqCounter = 0;
return declare( null, {
storeType: 'JBrowse/Store/SeqFeature/ChromSizes',
tryResource: function( configs, resource ) {
if( resource.type == 'chrom.sizes' ) {
var basename = Util.basename(
resource.file ? resource.file.name :
resource.url ? resource.url :
'',
['.sizes']
);
if( !basename )
return false;
var newName = 'REF_'+basename+'_'+uniqCounter++;
configs[newName] = {
type: this.storeType,
fileBasename: basename,
blob: this._makeBlob( resource ),
name: newName
};
return true;
}
else
return false;
},
finalizeConfiguration: function( configs ) {
},
_makeBlob: function( resource ) {
var r = resource.file ? new FileBlob( resource.file ) :
resource.url ? new XHRBlob( resource.url ) :
null;
if( ! r )
throw 'unknown resource type';
return r;
},
confIsValid: function( conf ) {
return conf.blob || conf.urlTemplate;
}
});
});