UNPKG

@quartic/bokehjs

Version:

Interactive, novel data visualization

149 lines (148 loc) 6.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var DEFAULT_BOX_OVERLAY, 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 select_tool_1 = require("./select_tool"); var box_annotation_1 = require("../../annotations/box_annotation"); var p = require("core/properties"); exports.BoxSelectToolView = (function (superClass) { extend(BoxSelectToolView, superClass); function BoxSelectToolView() { return BoxSelectToolView.__super__.constructor.apply(this, arguments); } BoxSelectToolView.prototype._pan_start = function (e) { var canvas; canvas = this.plot_view.canvas; this._baseboint = [canvas.sx_to_vx(e.bokeh.sx), canvas.sy_to_vy(e.bokeh.sy)]; return null; }; BoxSelectToolView.prototype._pan = function (e) { var append, canvas, curpoint, dims, frame, ref, ref1, vxlim, vylim; canvas = this.plot_view.canvas; curpoint = [canvas.sx_to_vx(e.bokeh.sx), canvas.sy_to_vy(e.bokeh.sy)]; frame = this.plot_model.frame; dims = this.model.dimensions; ref = this.model._get_dim_limits(this._baseboint, curpoint, frame, dims), vxlim = ref[0], vylim = ref[1]; this.model.overlay.update({ left: vxlim[0], right: vxlim[1], top: vylim[1], bottom: vylim[0] }); if (this.model.select_every_mousemove) { append = (ref1 = e.srcEvent.shiftKey) != null ? ref1 : false; this._select(vxlim, vylim, false, append); } return null; }; BoxSelectToolView.prototype._pan_end = function (e) { var append, canvas, curpoint, dims, frame, ref, ref1, vxlim, vylim; canvas = this.plot_view.canvas; curpoint = [canvas.sx_to_vx(e.bokeh.sx), canvas.sy_to_vy(e.bokeh.sy)]; frame = this.plot_model.frame; dims = this.model.dimensions; ref = this.model._get_dim_limits(this._baseboint, curpoint, frame, dims), vxlim = ref[0], vylim = ref[1]; append = (ref1 = e.srcEvent.shiftKey) != null ? ref1 : false; this._select(vxlim, vylim, true, append); this.model.overlay.update({ left: null, right: null, top: null, bottom: null }); this._baseboint = null; this.plot_view.push_state('box_select', { selection: this.plot_view.get_selection() }); return null; }; BoxSelectToolView.prototype._select = function (arg, arg1, final, append) { var ds, geometry, i, len, r, ref, sm, vx0, vx1, vy0, vy1; vx0 = arg[0], vx1 = arg[1]; vy0 = arg1[0], vy1 = arg1[1]; if (append == null) { append = false; } geometry = { type: 'rect', vx0: vx0, vx1: vx1, vy0: vy0, vy1: vy1 }; ref = this.model.computed_renderers; for (i = 0, len = ref.length; i < len; i++) { r = ref[i]; ds = r.data_source; sm = ds.selection_manager; sm.select(this, this.plot_view.renderer_views[r.id], geometry, final, append); } if (this.model.callback != null) { this._emit_callback(geometry); } this._save_geometry(geometry, final, append); return null; }; BoxSelectToolView.prototype._emit_callback = function (geometry) { var canvas, frame, r, xmapper, ymapper; r = this.model.computed_renderers[0]; canvas = this.plot_model.canvas; frame = this.plot_model.frame; geometry['sx0'] = canvas.vx_to_sx(geometry.vx0); geometry['sx1'] = canvas.vx_to_sx(geometry.vx1); geometry['sy0'] = canvas.vy_to_sy(geometry.vy0); geometry['sy1'] = canvas.vy_to_sy(geometry.vy1); xmapper = frame.x_mappers[r.x_range_name]; ymapper = frame.y_mappers[r.y_range_name]; geometry['x0'] = xmapper.map_from_target(geometry.vx0); geometry['x1'] = xmapper.map_from_target(geometry.vx1); geometry['y0'] = ymapper.map_from_target(geometry.vy0); geometry['y1'] = ymapper.map_from_target(geometry.vy1); this.model.callback.execute(this.model, { geometry: geometry }); }; return BoxSelectToolView; })(select_tool_1.SelectToolView); DEFAULT_BOX_OVERLAY = function () { return new box_annotation_1.BoxAnnotation({ level: "overlay", render_mode: "css", top_units: "screen", left_units: "screen", bottom_units: "screen", right_units: "screen", fill_color: "lightgrey", fill_alpha: 0.5, line_color: "black", line_alpha: 1.0, line_width: 2, line_dash: [4, 4] }); }; exports.BoxSelectTool = (function (superClass) { extend(BoxSelectTool, superClass); function BoxSelectTool() { return BoxSelectTool.__super__.constructor.apply(this, arguments); } BoxSelectTool.prototype.default_view = exports.BoxSelectToolView; BoxSelectTool.prototype.type = "BoxSelectTool"; BoxSelectTool.prototype.tool_name = "Box Select"; BoxSelectTool.prototype.icon = "bk-tool-icon-box-select"; BoxSelectTool.prototype.event_type = "pan"; BoxSelectTool.prototype.default_order = 30; BoxSelectTool.define({ dimensions: [p.Dimensions, "both"], select_every_mousemove: [p.Bool, false], callback: [p.Instance], overlay: [p.Instance, DEFAULT_BOX_OVERLAY] }); BoxSelectTool.getters({ tooltip: function () { return this._get_dim_tooltip(this.tool_name, this.dimensions); } }); return BoxSelectTool; })(select_tool_1.SelectTool);