UNPKG

@quartic/bokehjs

Version:

Interactive, novel data visualization

146 lines (145 loc) 5.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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; var gesture_tool_1 = require("./gesture_tool"); var p = require("core/properties"); exports.PanToolView = (function (superClass) { extend(PanToolView, superClass); function PanToolView() { return PanToolView.__super__.constructor.apply(this, arguments); } PanToolView.prototype._pan_start = function (e) { var canvas, frame, hr, vr, vx, vy; this.last_dx = 0; this.last_dy = 0; canvas = this.plot_view.canvas; frame = this.plot_view.frame; vx = canvas.sx_to_vx(e.bokeh.sx); vy = canvas.sy_to_vy(e.bokeh.sy); if (!frame.contains(vx, vy)) { hr = frame.h_range; vr = frame.v_range; if (vx < hr.start || vx > hr.end) { this.v_axis_only = true; } if (vy < vr.start || vy > vr.end) { this.h_axis_only = true; } } return this.plot_view.interactive_timestamp = Date.now(); }; PanToolView.prototype._pan = function (e) { this._update(e.deltaX, -e.deltaY); return this.plot_view.interactive_timestamp = Date.now(); }; PanToolView.prototype._pan_end = function (e) { this.h_axis_only = false; this.v_axis_only = false; if (this.pan_info != null) { return this.plot_view.push_state('pan', { range: this.pan_info }); } }; PanToolView.prototype._update = function (dx, dy) { var dims, end, frame, hr, is_panning, mapper, name, new_dx, new_dy, ref, ref1, ref2, ref3, sdx, sdy, start, sx0, sx1, sx_high, sx_low, sy0, sy1, sy_high, sy_low, vr, xrs, yrs; frame = this.plot_view.frame; new_dx = dx - this.last_dx; new_dy = dy - this.last_dy; hr = frame.h_range; sx_low = hr.start - new_dx; sx_high = hr.end - new_dx; vr = frame.v_range; sy_low = vr.start - new_dy; sy_high = vr.end - new_dy; dims = this.model.dimensions; if ((dims === 'width' || dims === 'both') && !this.v_axis_only) { sx0 = sx_low; sx1 = sx_high; sdx = -new_dx; } else { sx0 = hr.start; sx1 = hr.end; sdx = 0; } if ((dims === 'height' || dims === 'both') && !this.h_axis_only) { sy0 = sy_low; sy1 = sy_high; sdy = new_dy; } else { sy0 = vr.start; sy1 = vr.end; sdy = 0; } this.last_dx = dx; this.last_dy = dy; xrs = {}; ref = frame.x_mappers; for (name in ref) { mapper = ref[name]; ref1 = mapper.v_map_from_target([sx0, sx1], true), start = ref1[0], end = ref1[1]; xrs[name] = { start: start, end: end }; } yrs = {}; ref2 = frame.y_mappers; for (name in ref2) { mapper = ref2[name]; ref3 = mapper.v_map_from_target([sy0, sy1], true), start = ref3[0], end = ref3[1]; yrs[name] = { start: start, end: end }; } this.pan_info = { xrs: xrs, yrs: yrs, sdx: sdx, sdy: sdy }; this.plot_view.update_range(this.pan_info, is_panning = true); return null; }; return PanToolView; })(gesture_tool_1.GestureToolView); exports.PanTool = (function (superClass) { extend(PanTool, superClass); function PanTool() { return PanTool.__super__.constructor.apply(this, arguments); } PanTool.prototype.default_view = exports.PanToolView; PanTool.prototype.type = "PanTool"; PanTool.prototype.tool_name = "Pan"; PanTool.prototype.event_type = "pan"; PanTool.prototype.default_order = 10; PanTool.define({ dimensions: [p.Dimensions, "both"] }); PanTool.getters({ tooltip: function () { return this._get_dim_tooltip("Pan", this.dimensions); }, icon: function () { var suffix; suffix = (function () { switch (this.dimensions) { case "both": return "pan"; case "width": return "xpan"; case "height": return "ypan"; } }).call(this); return "bk-tool-icon-" + suffix; } }); return PanTool; })(gesture_tool_1.GestureTool);