kumify/common/templatetags/images.py
Kumi 8108fb8bf4 Fix Bokeh output
Lock Y axis of Bokeh HTML output
2021-02-22 20:10:37 +01:00

40 lines
986 B
Python

from django import template
from io import BytesIO
import holoviews as hv
from bokeh.embed import file_html
from bokeh.resources import INLINE
from bokeh.models.tools import PanTool, WheelZoomTool
import base64
register = template.Library()
@register.simple_tag
def pildata(image):
data = BytesIO()
image.save(data, "JPEG")
content = base64.b64encode(data.getvalue()).decode("UTF-8")
return f"data:img/jpeg;base64,{content}"
@register.simple_tag
def hvhtml(hvobject):
bokeh = hv.render(hvobject)
pan_tool = bokeh.select(dict(type=PanTool))
pan_tool.dimensions = "width"
zoom_tool = bokeh.select(dict(type=WheelZoomTool))
zoom_tool.dimensions = "width"
html = file_html(bokeh, INLINE)
html = html.replace("http://localhost:5006/static/extensions/panel/css", "/static/frontend/vendor/panel")
return html
@register.simple_tag
def hvdata(hvobject):
html = hvhtml(hvobject)
return f"data:text/html;charset=utf-8,{html}"