Add: render supports **kwargs params (#1299)

* Add: render supports **kwargs params

* Add: example

* Add: page notebook category
This commit is contained in:
陈键冬 2019-08-22 15:45:18 +08:00 committed by GitHub
parent 6db7f72e36
commit e65a91c3b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 68 additions and 14 deletions

View File

@ -19,6 +19,34 @@ def bar_base() -> Bar:
return c
@C.funcs
def bar_border_radius():
c = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), category_gap="60%")
.set_series_opts(
itemstyle_opts={
"normal": {
"color": JsCode(
"""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(0, 244, 255, 1)'
}, {
offset: 1,
color: 'rgba(0, 77, 167, 1)'
}], false)"""
),
"barBorderRadius": [30, 30, 30, 30],
"shadowColor": "rgb(0, 160, 221)",
}
}
)
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-渐变圆柱"))
)
return c
@C.funcs
def bar_base_with_animation() -> Bar:
c = (

View File

@ -65,10 +65,11 @@ class Base:
path: str = "render.html",
template_name: str = "simple_chart.html",
env: Optional[Environment] = None,
**kwargs,
) -> str:
self._prepare_render()
RenderEngine(env).render_chart_to_file(
chart=self, path=path, template_name=template_name
template_name=template_name, chart=self, path=path, **kwargs
)
return os.path.abspath(path)
@ -76,9 +77,12 @@ class Base:
self,
template_name: str = "simple_chart.html",
env: Optional[Environment] = None,
):
**kwargs,
) -> str:
self._prepare_render()
html = RenderEngine(env).render_chart_to_template(template_name, chart=self)
html = RenderEngine(env).render_chart_to_template(
template_name, chart=self, **kwargs
)
return html
def render_notebook(self):

View File

@ -139,10 +139,11 @@ class Page:
path: str = "render.html",
template_name: str = "simple_page.html",
env: types.Optional[Environment] = None,
):
**kwargs,
) -> str:
self._prepare_render()
RenderEngine(env).render_chart_to_file(
template_name=template_name, chart=self, path=path
template_name=template_name, chart=self, path=path, **kwargs
)
return os.path.abspath(path)
@ -150,10 +151,11 @@ class Page:
self,
template_name: str = "simple_page.html",
env: types.Optional[Environment] = None,
):
**kwargs,
) -> str:
self._prepare_render()
return RenderEngine(env).render_chart_to_template(
template_name=template_name, chart=self
template_name=template_name, chart=self, **kwargs
)
def render_notebook(self):
@ -184,7 +186,10 @@ class Page:
)
if CurrentConfig.NOTEBOOK_TYPE == NotebookType.NTERACT:
pass
return HTML(self.render_embed())
if CurrentConfig.NOTEBOOK_TYPE == NotebookType.ZEPPELIN:
print("%html " + self.render_embed())
def load_javascript(self):
scripts = []

View File

@ -45,9 +45,10 @@ class Image:
path: str = "render.html",
template_name: str = "image.html",
env: Optional[Environment] = None,
**kwargs,
) -> str:
RenderEngine(env).render_chart_to_file(
chart=self, path=path, template_name=template_name
chart=self, path=path, template_name=template_name, **kwargs
)
return os.path.abspath(path)

View File

@ -45,9 +45,10 @@ class Table:
path: str = "render.html",
template_name: str = "table.html",
env: Optional[Environment] = None,
**kwargs
) -> str:
RenderEngine(env).render_chart_to_file(
chart=self, path=path, template_name=template_name
chart=self, path=path, template_name=template_name, **kwargs
)
return os.path.abspath(path)

View File

@ -31,7 +31,7 @@ class RenderEngine:
chart.dependencies = links
return chart
def render_chart_to_file(self, template_name: str, chart: Any, path: str):
def render_chart_to_file(self, template_name: str, chart: Any, path: str, **kwargs):
"""
Render a chart or page to local html files.
@ -40,12 +40,16 @@ class RenderEngine:
:param template_name: The name of template file.
"""
tpl = self.env.get_template(template_name)
html = replace_placeholder(tpl.render(chart=self.generate_js_link(chart)))
html = replace_placeholder(
tpl.render(chart=self.generate_js_link(chart), **kwargs)
)
write_utf8_html_file(path, html)
def render_chart_to_template(self, template_name: str, chart: Any) -> str:
def render_chart_to_template(self, template_name: str, chart: Any, **kwargs) -> str:
tpl = self.env.get_template(template_name)
return replace_placeholder(tpl.render(chart=self.generate_js_link(chart)))
return replace_placeholder(
tpl.render(chart=self.generate_js_link(chart), **kwargs)
)
def render_chart_to_notebook(self, template_name: str, **kwargs) -> str:
tpl = self.env.get_template(template_name)

View File

@ -1,5 +1,8 @@
from unittest.mock import patch
from nose.tools import assert_not_in, eq_
from pyecharts.charts import Bar
from pyecharts.charts.base import Base
@ -19,3 +22,11 @@ def test_base_init_funcs():
eq_(c1.width, "110px")
eq_(c1.height, "210px")
assert_not_in(c1.js_host, ["", None])
@patch("pyecharts.render.engine.write_utf8_html_file")
def test_render(fake_writer):
my_render_content = "my_render_content"
bar = Bar()
bar.add_xaxis(["1"]).add_yaxis("", [1]).render(my_render_content=my_render_content)
assert "test ok" == "test ok"