sjy-ecos/public/lib/bokeh/js/tree/models/tiles/image_source.js

76 lines
2.3 KiB
JavaScript

var ImageSource, Model, _, logger, p,
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
hasProp = {}.hasOwnProperty;
_ = require("underscore");
logger = require("../../core/logging").logger;
p = require("../../core/properties");
Model = require("../../model");
ImageSource = (function(superClass) {
extend(ImageSource, superClass);
ImageSource.prototype.type = 'ImageSource';
ImageSource.define({
url: [p.String, ''],
extra_url_vars: [p.Any, {}]
});
function ImageSource(options) {
if (options == null) {
options = {};
}
ImageSource.__super__.constructor.apply(this, arguments);
this.images = {};
this.normalize_case();
}
ImageSource.prototype.normalize_case = function() {
'Note: should probably be refactored into subclasses.';
var url;
url = this.get('url');
url = url.replace('{xmin}', '{XMIN}');
url = url.replace('{ymin}', '{YMIN}');
url = url.replace('{xmax}', '{XMAX}');
url = url.replace('{ymax}', '{YMAX}');
url = url.replace('{height}', '{HEIGHT}');
url = url.replace('{width}', '{WIDTH}');
return this.set('url', url);
};
ImageSource.prototype.string_lookup_replace = function(str, lookup) {
var key, result_str, value;
result_str = str;
for (key in lookup) {
value = lookup[key];
result_str = result_str.replace('{' + key + '}', value.toString());
}
return result_str;
};
ImageSource.prototype.add_image = function(image_obj) {
return this.images[image_obj.cache_key] = image_obj;
};
ImageSource.prototype.remove_image = function(image_obj) {
return delete this.images[image_obj.cache_key];
};
ImageSource.prototype.get_image_url = function(xmin, ymin, xmax, ymax, height, width) {
var image_url;
image_url = this.string_lookup_replace(this.get('url'), this.get('extra_url_vars'));
return image_url.replace("{XMIN}", xmin).replace("{YMIN}", ymin).replace("{XMAX}", xmax).replace("{YMAX}", ymax).replace("{WIDTH}", width).replace("{HEIGHT}", height);
};
return ImageSource;
})(Model);
module.exports = {
Model: ImageSource
};