UNPKG

@quartic/bokehjs

Version:

Interactive, novel data visualization

117 lines (106 loc) 3.73 kB
var 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; import { LinearMapper } from "./linear_mapper"; import { isNumber } from "core/util/types"; export var CategoricalMapper = (function(superClass) { extend(CategoricalMapper, superClass); function CategoricalMapper() { return CategoricalMapper.__super__.constructor.apply(this, arguments); } CategoricalMapper.prototype.map_to_target = function(x, return_synthetic) { var factor, factors, percent, range, ref, result; if (return_synthetic == null) { return_synthetic = false; } if (isNumber(x)) { if (return_synthetic) { return x; } else { return CategoricalMapper.__super__.map_to_target.call(this, x); } } range = this.source_range; factors = range.factors; if (x.indexOf(':') >= 0) { ref = x.split(':'), factor = ref[0], percent = ref[1]; percent = parseFloat(percent); result = factors.indexOf(factor) + 0.5 + range.offset + percent; } else { result = factors.indexOf(x) + 1 + range.offset; } if (return_synthetic) { return result; } else { return CategoricalMapper.__super__.map_to_target.call(this, result); } }; CategoricalMapper.prototype.v_map_to_target = function(xs, return_synthetic) { var factor, factors, i, j, percent, range, ref, ref1, results, x; if (return_synthetic == null) { return_synthetic = false; } if (isNumber(xs[0])) { if (return_synthetic) { return xs; } else { return CategoricalMapper.__super__.v_map_to_target.call(this, xs); } } range = this.source_range; factors = range.factors; results = Array(xs.length); for (i = j = 0, ref = xs.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { x = xs[i]; if (x.indexOf(':') >= 0) { ref1 = x.split(':'), factor = ref1[0], percent = ref1[1]; percent = parseFloat(percent); results[i] = factors.indexOf(factor) + 0.5 + range.offset + percent; } else { results[i] = factors.indexOf(x) + 1 + range.offset; } } if (return_synthetic) { return results; } else { return CategoricalMapper.__super__.v_map_to_target.call(this, results); } }; CategoricalMapper.prototype.map_from_target = function(xprime, skip_cat) { var factors, range; if (skip_cat == null) { skip_cat = false; } xprime = CategoricalMapper.__super__.map_from_target.call(this, xprime); if (skip_cat) { return xprime; } range = this.source_range; factors = range.factors; return factors[Math.floor(xprime - 0.5 - range.offset)]; }; CategoricalMapper.prototype.v_map_from_target = function(xprimes, skip_cat) { var factors, i, j, k, range, ref, ref1, result, x; if (skip_cat == null) { skip_cat = false; } x = CategoricalMapper.__super__.v_map_from_target.call(this, xprimes); for (i = j = 0, ref = x.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { x[i] = x[i]; } if (skip_cat) { return x; } result = Array(x); range = this.source_range; factors = range.factors; for (i = k = 0, ref1 = xprimes.length; 0 <= ref1 ? k < ref1 : k > ref1; i = 0 <= ref1 ? ++k : --k) { result[i] = factors[Math.floor(x[i] - 0.5 - range.offset)]; } return result; }; return CategoricalMapper; })(LinearMapper);