Skip to content

Instantly share code, notes, and snippets.

@imcomking
Last active May 9, 2018 06:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save imcomking/4734472b217779adf44c88e8da1873b9 to your computer and use it in GitHub Desktop.
Save imcomking/4734472b217779adf44c88e8da1873b9 to your computer and use it in GitHub Desktop.
Jupyter notebook bokeh canvas archive via javascript hacking
from IPython.core.display import display, HTML, Javascript
def Archive_the_bk_canvas():
archiving_the_bkcanvas= "\
console.log(this); \
var loop = setInterval(execute.bind(this, null), 1000); \
function execute(output_area){ \
console.log(this); \
if(this.element.find(\".bk-canvas\").length == 0){\
console.log(\"loop\"); \
}else{ \
var i; \
this.outputs.length = 0; \
for (i = 0; i < this.element.find(\".bk-canvas\").length; i++) {\
var dataURL = this.element.find(\".bk-canvas\")[i].toDataURL(\"image/png\"); \
var output_object = {\"output_type\":\"display_data\",\"transient\":{},\"data\":{\"text/html\":\"<img src=\'\"+dataURL+\"\'/>\",\"text/plain\":\"<IPython.core.display.HTML object>\"},\"metadata\":{}} ; \
this.outputs.push(output_object); \
} \
clearInterval(loop); \
};\
};"
display(Javascript(archiving_the_bkcanvas))
#display("<script>"+HTML(archiving_the_bkcanvas+"</script>"))
@imcomking
Copy link
Author

imcomking commented May 9, 2018

Old version

def archive_the_bk_canvas():
    from IPython.core.display import display, HTML
    import time
    time.sleep(1)

    archiving_the_bkcanvas= "<script> \
    var bk = document.getElementsByClassName('bk-canvas'); \
    console.log(bk.length); \
    var prev_cell = Jupyter.notebook.get_cell(Jupyter.notebook.get_selected_index()); \
    var i;\
    for (i = 0; i < bk.length; i++) {\
        var dataURL = bk[i].toDataURL('image/png');\
        prev_cell.output_area.outputs[i].data['text/html'] = \"<img src=\'\"+dataURL+\"\'/>\";\
    }</script>"
    display(HTML(archiving_the_bkcanvas))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment