UNPKG

@gmod/jbrowse

Version:

JBrowse - client-side genome browser

63 lines (56 loc) 2.54 kB
define([ 'dojo/_base/declare', 'JBrowse/Util', './_IndexedFileDriver', ], function( declare, Util, _IndexedFileDriver ) { return declare( _IndexedFileDriver, { // try to merge any singleton file and index stores. currently can only do this if there is one of each finalizeConfiguration: function( configs ) { var singletonIndexes = {}; var singletonIndexCount = 0; var singletonFiles = {}; var singletonFileCount = 0; for( var n in configs ) { var conf = configs[n]; if( conf.type === this.storeType ) { if( (conf[this.indexConfKey] || conf[this.indexUrlConfKey]) && ! ( conf[this.fileConfKey] || conf[this.fileUrlConfKey] ) ) { // singleton Index singletonIndexCount++; singletonIndexes[n] = conf; } else if(( conf[this.fileConfKey] || conf[this.fileUrlConfKey] ) && ! ( conf[this.indexConfKey] || conf[this.indexUrlConfKey]) ) { // singleton File singletonFileCount++; singletonFiles[n] = conf; } } } // if we have a single File and single Index left at the end, // stick them together and we'll see what happens if( singletonFileCount == 1 && singletonIndexCount == 1 ) { for( var indexName in singletonIndexes ) { for( var fileName in singletonFiles ) { if( singletonIndexes[indexName][this.indexUrlConfKey] ) singletonFiles[fileName][this.indexUrlConfKey] = singletonIndexes[indexName][this.indexUrlConfKey]; if( singletonIndexes[indexName][this.indexConfKey] ) singletonFiles[fileName][this.indexConfKey] = singletonIndexes[indexName][this.indexConfKey]; delete configs[indexName]; } } } // delete any remaining singleton Indexes, since they don't have // a hope of working for( var indexName in singletonIndexes ) { delete configs[indexName]; } // make any remaining singleton data files be unindexed stores for( var fileName in singletonFiles ) { configs[fileName].type = this.unindexedStoreType; } }, confIsValid: function( conf ) { return (conf[this.fileConfKey] || conf[this.fileUrlConfKey]); } }); });