escher-vis
Version:
Escher: A Web Application for Building, Sharing, and Embedding Data-Rich Visualizations of Biological Pathways
59 lines (54 loc) • 1.92 kB
JavaScript
/** static */
var utils = require('./utils')
var d3_json = require('d3-request').json
module.exports = {
load_map_model_from_url: load_map_model_from_url
}
function load_map_model_from_url(map_download_url, model_download_url,
local_index, options, callback) {
var opt = utils.parse_url_components(window, options),
to_load = [],
load_map = function (fn) { fn(null); },
load_model = function (fn) { fn(null); }
if (opt.map_name) {
var map_path = _get_path('map', opt.map_name,
local_index, map_download_url)
if (map_path) {
load_map = function (fn) {
d3_json(map_path, function(error, data) {
if (error) console.warn(error)
fn(data)
})
}
}
}
if (opt.model_name) {
var model_path = _get_path('model', opt.model_name,
local_index, model_download_url)
if (model_path) {
load_model = function (fn) {
d3_json(model_path, function(error, data) {
if (error) console.warn(error)
fn(data)
})
}
}
}
if (opt.hasOwnProperty('enable_editing')) {
options.enable_editing = opt.enable_editing.toLowerCase() === 'true'
}
load_map(function(map_data) {
load_model(function(model_data) {
callback(map_data, model_data, options)
})
})
}
function _get_path(kind, name, index, url) {
var match = index[kind+'s'].filter(function(x) {
return x[kind+'_name'] == name
})
if (match.length == 0)
throw new Error('Bad ' + kind + ' ' + name)
return (url + encodeURIComponent(match[0].organism) +
'/' + encodeURIComponent(match[0][kind+'_name'])) + '.json'
}