javascript - Bokeh 自定义保存工具

标签 javascript python coffeescript bokeh

我正在尝试在 Bokeh 中创建自定义保存工具,这就是我所拥有的:

class NewSaveTool(Tool):
    JS_CODE = """
        import * as p from "core/properties"
        import {ActionTool, ActionToolView} from "models/tools/actions/action_tool"
        export class NewSaveToolView extends ActionToolView
            do: () -> 
                save_name = @model.source
                @plot_view.save(save_name)

        export class NewSaveTool extends ActionTool
            default_view: NewSaveToolView
            type: "SaveTool"
            tool_name: "Save"
            icon: "bk-tool-icon-save"
            @define {
                source: [ p.String ]
            }
    """
    source = String
    __implementation__ = JS_CODE

该工具已加载并位于工具栏中,但是当我单击该按钮时,我得到了

Uncaught TypeError: this.plot_view.save is not a function

这正是源代码中保存工具使用的功能,所以有人知道为什么它在这种情况下不起作用吗?

最佳答案

很晚才回答这个问题,因为我花了太多时间才让它发挥作用。
这里的主要变化是“做”到“做”,尽管老实说我不确定指定的错误来自哪里,这是我从未遇到过的少数错误之一。

一个可行的实现(至少在 bokeh 12.13 上)是:

JS_CODE_SAVE = """
import * as p from "core/properties"
import {ActionTool, ActionToolView} from "models/tools/actions/action_tool"

export class NewSaveView extends ActionToolView

  # this is executed when the button is clicked
  doit: () ->
    @plot_view.save(@model.save_name)

export class NewSave extends ActionTool
  default_view: NewSaveView
  type: "NewSave"

  tool_name: "Save"
  icon: "bk-tool-icon-save"

  @define { save_name: [ p.String ] }
"""

class NewSave(Tool):
    """
    Save a plot with a custom name.
    Usage: NewSaveTool(save_name=name)
    """
    __implementation__ = JS_CODE_SAVE
    save_name = String()

实现为:tools = [CustomSaveTool(savename='custom name')]

要实际动态更改保存名称,您必须更改保存名称属性,例如在小部件回调函数中:plot.tools[0].save_name = 'new save name'

关于javascript - Bokeh 自定义保存工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43358427/

相关文章:

javascript - 如何将值从 MVC 发送到 Javascript

javascript - 如何将状态中的值作为参数传递给函数?

python - 渲染图像而不保存

python - Python中的无限滚动背景

javascript - THREE.js 中 y 轴上的对象旋转两侧图形消失

javascript - 为什么要将子元素属性传递给父 <tr> 元素的 onClick 事件(React)?

PHP strtotime() 对于 JavaScript 日期字符串返回 false

Python:防止 "if"楼梯?

javascript - Coffeescript/JS with Rails、驼峰命名法与下划线命名风格

node.js - Sendgrid 替换标签