🐎 major speed improvement for browser loading. all javascript files are local in render.html. NO more fetching from the cloud. It works when you do NOT have INTERNET access.

This commit is contained in:
chfw 2017-08-01 12:08:49 +01:00
parent 7b9d744f19
commit 34076fcda3
6 changed files with 76 additions and 38 deletions

View File

@ -1,3 +1,4 @@
include README.md
include changelog.md
include pyecharts/templates/*.html
include pyecharts/templates/js/*.js

View File

@ -422,6 +422,7 @@ class Base(object):
my_option = json.dumps(self._option, indent=4, ensure_ascii=False)
tmp = self._jinja2_env.get_template(temple)
html = tmp.render(myOption=my_option, myWidth=self._width, myHeight=self._height)
html = template.freeze_js(html)
if PY2:
html = html.encode('utf-8')
with open(path, "w+") as fout:

View File

@ -1,6 +1,38 @@
#!/usr/bin/env python
#coding=utf-8
import os
import re
JS_PATTERN = re.compile(r'<!-- build -->(.*)<!-- endbuild -->',
re.IGNORECASE | re.MULTILINE | re.DOTALL)
JS_SRC_PATTERN = re.compile(r'src=\"(.*?)\"')
def freeze_js(html_content):
matches = JS_PATTERN.finditer(html_content)
if not matches:
return html_content
for match in reversed(tuple(matches)):
# JS file block
src_matches = JS_SRC_PATTERN.findall(match.group(1))
js_content = ""
for src in src_matches:
file_path = os.path.join(get_resource_dir('templates'), src.strip())
with open(file_path, "r") as f:
js_content += f.read() + '\n'
# Replace matched string with inline JS
fmt = '<script type="text/javascript">{}</script>'
js_content = fmt.format(js_content)
html_content = (html_content[:match.start()] + js_content +
html_content[match.end():])
return html_content
_mapindex = {
"安徽": "anhui: '//oog4yfyu0.bkt.clouddn.com/anhui'",

View File

@ -0,0 +1 @@
curl http://oog4yfyu0.bkt.clouddn.com/$1.js -o $1.js

View File

@ -4,44 +4,46 @@
<head>
<meta charset="utf-8">
<title>ECharts</title>
<script src="http://oog4yfyu0.bkt.clouddn.com/echarts.min.js"></script>
<script src="http://oog4yfyu0.bkt.clouddn.com/echarts-gl.js"></script>
<script type="text/javascript " src="http://echarts.baidu.com/gallery/vendors/echarts/map/js/china.js"></script>
<script type="text/javascript " src="http://echarts.baidu.com/gallery/vendors/echarts/map/js/world.js"></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/wordcloud.js"></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/anhui.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/aomen.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/beijing.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/chongqing.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/fujian.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/gansu.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/guangdong.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/guangxi.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/guizhou.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/hainan.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/hebei.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/heilongjiang.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/henan.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/hubei.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/hunan.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/jiangsu.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/jiangxi.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/jilin.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/liaoning.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/neimenggu.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/ningxia.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/qinghai.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/shandong.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/shanghai.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/shanxi.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/sichuan.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/taiwan.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/tianjin.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/xianggang.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/xinjiang.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/xizang.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/yunnan.js "></script>
<script type="text/javascript " src="http://oog4yfyu0.bkt.clouddn.com/zhejiang.js "></script>
<!-- build -->
<script src="js/echarts.min.js"></script>
<script src="js/echarts-gl.js"></script>
<script type="text/javascript " src="js/china.js"></script>
<script type="text/javascript " src="js/world.js"></script>
<script type="text/javascript " src="js/wordcloud.js"></script>
<script type="text/javascript " src="js/anhui.js "></script>
<script type="text/javascript " src="js/aomen.js "></script>
<script type="text/javascript " src="js/beijing.js "></script>
<script type="text/javascript " src="js/chongqing.js "></script>
<script type="text/javascript " src="js/fujian.js "></script>
<script type="text/javascript " src="js/gansu.js "></script>
<script type="text/javascript " src="js/guangdong.js "></script>
<script type="text/javascript " src="js/guangxi.js "></script>
<script type="text/javascript " src="js/guizhou.js "></script>
<script type="text/javascript " src="js/hainan.js "></script>
<script type="text/javascript " src="js/hebei.js "></script>
<script type="text/javascript " src="js/heilongjiang.js "></script>
<script type="text/javascript " src="js/henan.js "></script>
<script type="text/javascript " src="js/hubei.js "></script>
<script type="text/javascript " src="js/hunan.js "></script>
<script type="text/javascript " src="js/jiangsu.js "></script>
<script type="text/javascript " src="js/jiangxi.js "></script>
<script type="text/javascript " src="js/jilin.js "></script>
<script type="text/javascript " src="js/liaoning.js "></script>
<script type="text/javascript " src="js/neimenggu.js "></script>
<script type="text/javascript " src="js/ningxia.js "></script>
<script type="text/javascript " src="js/qinghai.js "></script>
<script type="text/javascript " src="js/shandong.js "></script>
<script type="text/javascript " src="js/shanghai.js "></script>
<script type="text/javascript " src="js/shanxi.js "></script>
<script type="text/javascript " src="js/sichuan.js "></script>
<script type="text/javascript " src="js/taiwan.js "></script>
<script type="text/javascript " src="js/tianjin.js "></script>
<script type="text/javascript " src="js/xianggang.js "></script>
<script type="text/javascript " src="js/xinjiang.js "></script>
<script type="text/javascript " src="js/xizang.js "></script>
<script type="text/javascript " src="js/yunnan.js "></script>
<script type="text/javascript " src="js/zhejiang.js "></script>
<!-- endbuild -->
</head>
<body>

View File

@ -30,6 +30,7 @@ setup(
keywords=__keywords__,
install_requires=__requires__,
zip_safe=False,
include_package_data=True,
classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Console',