You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by ov...@apache.org on 2018/06/29 04:23:54 UTC

[incubator-echarts-website] branch asf-site updated: release

This is an automated email from the ASF dual-hosted git repository.

ovilia pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-echarts-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 0172a4a  release
0172a4a is described below

commit 0172a4a5b5f9e58d4f8b89993682247370548c91
Author: Ovilia <zw...@gmail.com>
AuthorDate: Fri Jun 29 12:23:43 2018 +0800

    release
---
 api.html                                      |  33 +-
 documents/en/changelog.html => changelog.html |  22 +-
 coding-standard.html                          | 611 ++++++++++++++++++++++++++
 committers.html                               |  15 +
 css/main.css                                  |   2 +-
 dependencies.html                             |  15 +
 documents/en/api.json                         |   2 +-
 documents/en/option.json                      |   2 +-
 documents/en/tutorial.json                    |   2 +-
 download.html                                 |  85 +---
 faq.html                                      |   6 +-
 footer-en.html                                |   1 +
 footer.html                                   |   1 +
 index.html                                    |   6 +-
 js/docTool/main.js                            |   6 +-
 license.html                                  |   4 +-
 maillist.html                                 |  15 +
 nav-en.html                                   |   1 +
 nav.html                                      |   1 +
 option.html                                   |  32 +-
 tutorial.html                                 |  33 +-
 21 files changed, 723 insertions(+), 172 deletions(-)

diff --git a/api.html b/api.html
index ac961b3..a5861ce 100644
--- a/api.html
+++ b/api.html
@@ -9,36 +9,7 @@
 <body class="lower-ie">
 <![endif]-->
 <!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div><div id="main">
-
-            <nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echart [...]
-                <li id="nav-doc" class="dropdown">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">DOCS<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="./tutorial.html">Tutorial</a></li>
-                        <li><a href="./api.html">API</a></li>
-                        <li><a href="./option.html">Option</a></li>
-                        <li><a href="./documents/en/changelog.html">Changelog</a></li>
-                    </ul>
-                </li>
-                <li id="nav-examples">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">WORKS<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="https://ecomfe.github.io/echarts-examples/public/index.html" target="_blank">Demo</a></li>
-                        <li><a href="http://gallery.echartsjs.com" target="_blank">Gallery</a></li>
-                    </ul>
-                </li>
-                <li id="nav-download">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">DOWNLOAD<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="./download.html">Download</a></li>
-                        <li><a href="http://echarts.baidu.com/builder.html" target="_blank">Online Builder</a></li>
-                    </ul>
-                </li>
-                <li id="nav-github">
-                    <a href="https://github.com/ecomfe/echarts"  target="_blank">GITHUB</a>
-                </li>
-                <li id="nav-index"><a href="http://echarts.baidu.com/index.html">HOME CN</a></li>
-            </ul></div></div></nav>
+    <nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echarts logo"  [...]
 
 <div class="ecdoc-apidoc"></div></div><script type="text/javascript" src="./vendors/bootstrap/js/bootstrap.min.js"></script><script type="text/javascript" src="./vendors/bootstrap/js/validator.js"></script><script type="text/javascript">window.globalArgsExtra = {
     pageName: 'api',
@@ -107,4 +78,4 @@ function extend(tar, src) {
         }
     }
     return tar;
-}</script><script type="text/javascript" src="./js/hm.js"></script></html>
\ No newline at end of file
+}</script><script type="text/javascript" src="./js/hm.js"></script></html>
diff --git a/documents/en/changelog.html b/changelog.html
similarity index 94%
rename from documents/en/changelog.html
rename to changelog.html
index f57e325..d08aef1 100644
--- a/documents/en/changelog.html
+++ b/changelog.html
@@ -1,4 +1,12 @@
-<h2 id="v4-1-0-rc2">v4.1.0.rc2</h2>
+<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
+    var el = document.createElement('style');
+    el.innerHTML = ''
+        + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
+        + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
+    document.head.insertBefore(el, document.getElementById('font-hack'));
+}
+</script><title>ECharts Changelog</title><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./in [...]
 <div class="time">2018-05-02</div>
 
 <ul>
@@ -859,3 +867,15 @@
 <ul>
 <li>The new echarts</li>
 </ul>
+</div></div></div><script type="text/javascript" src="./vendors/bootstrap/js/bootstrap.min.js"></script><script type="text/javascript" src="./js/common.js"></script><script type="text/javascript">document.getElementById('nav-doc').className = 'active';
+
+// Fix scroll position covered by nav
+window.addEventListener('hashchange', function() {
+    scrollBy(0, -50);
+});</script><script type="text/javascript">var _hmt = _hmt || [];
+(function() {
+var hm = document.createElement("script");
+hm.src = "//hm.baidu.com/hm.js?4bad1df23f079e0d12bdbef5e65b072f";
+var s = document.getElementsByTagName("script")[0];
+s.parentNode.insertBefore(hm, s);
+})();</script></html>
\ No newline at end of file
diff --git a/coding-standard.html b/coding-standard.html
new file mode 100644
index 0000000..baba052
--- /dev/null
+++ b/coding-standard.html
@@ -0,0 +1,611 @@
+<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
+    var el = document.createElement('style');
+    el.innerHTML = ''
+        + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
+        + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
+    document.head.insertBefore(el, document.getElementById('font-hack'));
+}
+</script><title>ECharts Coding Standard</title><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./in [...]
+<h3 id="file">File</h3>
+<p><strong>[MUST]</strong> JavaScript Source files must be encoded in UTF-8 without BOM.</p>
+<h3 id="indentation">Indentation</h3>
+<p><strong>[MUST]</strong> 4 space indentation. tabs and 2 space are not allowed.</p>
+<p><strong>[MUST]</strong> <code>case</code> and <code>default</code> in <code>switch</code> must be indented.</p>
+<pre><code class="lang-js">// good
+switch (variable) {
+    case &#39;1&#39;:
+        // do...
+        break;
+    case &#39;2&#39;:
+        // do...
+        break;
+    default:
+        // do...
+}
+
+// bad
+switch (variable) {
+case &#39;1&#39;:
+    // do...
+    break;
+case &#39;2&#39;:
+    // do...
+    break;
+default:
+    // do...
+}
+</code></pre>
+<h3 id="space">Space</h3>
+<p><strong>[MUST]</strong> Set off binary operator with spaces. But place no space between unary operator and its operand.</p>
+<pre><code class="lang-js">var a = !arr.length;
+a++;
+a = b + c;
+</code></pre>
+<p><strong>[MUST]</strong> Place 1 space before the leading brace.</p>
+<pre><code class="lang-js">// good
+
+if (condition) {
+}
+
+set(&#39;attr&#39;, {
+    some: &#39;xxx&#39;,
+    any: &#39;yyy&#39;
+});
+
+function funcName() {
+}
+
+
+// bad
+
+if (condition){
+}
+
+set(&#39;attr&#39;,{
+    some: &#39;xxx&#39;,
+    any: &#39;yyy&#39;
+});
+
+function funcName(){
+}
+</code></pre>
+<p><strong>[MUST]</strong> Place 1 space after <code>if</code> / <code>else</code> / <code>for</code> / <code>while</code> / <code>function</code> / <code>switch</code> / <code>do</code> / <code>try</code> / <code>catch</code> / <code>finally</code>.</p>
+<pre><code class="lang-js">// good
+
+if (condition) {
+}
+
+while (condition) {
+}
+
+(function () {
+})();
+
+
+// bad
+
+if(condition) {
+}
+
+while(condition) {
+}
+
+(function() {
+})();
+</code></pre>
+<p><strong>[MUST]</strong> In the object creating statement, place 1 space after <code>:</code>, but no space before it.</p>
+<pre><code class="lang-js">// good
+var obj = {
+    a: 1,
+    b: 2,
+    c: 3
+};
+
+// bad
+var obj = {
+    a : 1,
+    b:2,
+    c :3
+};
+</code></pre>
+<p><strong>[MUST]</strong> Place no space between the function name and <code>(</code> in function declaration, expression of named function and function call.</p>
+<pre><code class="lang-js">// good
+
+function funcName() {
+}
+
+var funcName = function funcName() {
+};
+
+funcName();
+
+
+// bad
+
+function funcName () {
+}
+
+var funcName = function funcName () {
+};
+
+funcName ();
+</code></pre>
+<p><strong>[MUST]</strong> Place no space between <code>,</code> and <code>;</code>.</p>
+<pre><code class="lang-js">// good
+callFunc(a, b);
+
+// bad
+callFunc(a , b) ;
+</code></pre>
+<p><strong>[MUST]</strong> Place no space after <code>(</code> and <code>[</code> and before <code>)</code> and <code>]</code>.</p>
+<pre><code class="lang-js">// good
+
+callFunc(param1, param2, param3);
+
+save(this.list[this.indexes[i]]);
+
+needIncream &amp;&amp; (variable += increament);
+
+if (num &gt; list.length) {
+}
+
+while (len--) {
+}
+
+
+// bad
+
+callFunc( param1, param2, param3 );
+
+save( this.list[ this.indexes[ i ] ] );
+
+needIncreament &amp;&amp; ( variable += increament );
+
+if ( num &gt; list.length ) {
+}
+
+while ( len-- ) {
+}
+
+
+// good
+var arr1 = [];
+var arr2 = [1, 2, 3];
+var obj1 = {};
+var obj2 = {name: &#39;obj&#39;};
+var obj3 = {
+    name: &#39;obj&#39;,
+    age: 20,
+    sex: 1
+};
+
+// bad
+var arr1 = [ ];
+var arr2 = [ 1, 2, 3 ];
+var obj1 = { };
+var obj2 = { name: &#39;obj&#39; };
+var obj3 = {name: &#39;obj&#39;, age: 20, sex: 1};
+</code></pre>
+<p><strong>[MUST]</strong> Must no trailing space in each line.</p>
+<h3 id="line-break">Line Break</h3>
+<p><strong>[MUST]</strong> Place line break in the end of a statement.</p>
+<p><strong>[MUST]</strong> No more than 120 characters per line.</p>
+<p><strong>[MUST]</strong> Place operator at the beginning of a line if it break lines.</p>
+<pre><code class="lang-js">// good
+if (user.isAuthenticated()
+    &amp;&amp; user.isInRole(&#39;admin&#39;)
+    &amp;&amp; user.hasAuthority(&#39;add-admin&#39;)
+    || user.hasAuthority(&#39;delete-admin&#39;)
+) {
+    // Code
+}
+
+var result = number1 + number2 + number3
+    + number4 + number5;
+
+
+// bad
+if (user.isAuthenticated() &amp;&amp;
+    user.isInRole(&#39;admin&#39;) &amp;&amp;
+    user.hasAuthority(&#39;add-admin&#39;) ||
+    user.hasAuthority(&#39;delete-admin&#39;)) {
+    // Code
+}
+
+var result = number1 + number2 + number3 +
+    number4 + number5;
+</code></pre>
+<p><strong>[MUST]</strong> Start a new line for <code>)</code>, <code>]</code>, <code>}</code> if the content inside the brackets occupies multiple lines.
+Make the same indent as the line where the corresponding <code>(</code>, <code>[</code>, <code>{</code> placed.</p>
+<pre><code class="lang-js">// good
+if (product) {
+    product.load();
+    if (user.isAuthenticated()
+        &amp;&amp; user.isInRole(&#39;admin&#39;)
+        &amp;&amp; user.hasAuthority(&#39;add-admin&#39;)
+    ) {
+        sendProduct(user, product);
+    }
+}
+var arr = [
+    &#39;candy&#39;, &#39;sugar&#39;
+];
+
+// bad
+if (product) {
+    product.load();
+    if (user.isAuthenticated()
+        &amp;&amp; user.isInRole(&#39;admin&#39;)
+        &amp;&amp; user.hasAuthority(&#39;add-admin&#39;)) {
+        sendProduct(user, product);
+    }
+}
+var arr = [
+        &#39;candy&#39;, &#39;sugar&#39;
+    ];
+</code></pre>
+<p><strong>[MUST]</strong> Must not break lines before <code>,</code> or <code>;</code>.</p>
+<pre><code class="lang-js">// good
+var obj = {
+    a: 1,
+    b: 2,
+    c: 3
+};
+
+foo(
+    aVeryVeryLongArgument,
+    anotherVeryLongArgument,
+    callback
+);
+
+
+// bad
+var obj = {
+    a: 1
+    , b: 2
+    , c: 3
+};
+
+foo(
+    aVeryVeryLongArgument
+    , anotherVeryLongArgument
+    , callback
+);
+</code></pre>
+<p><strong>[SUGGEST]</strong> Suggestion about line break and indent:</p>
+<pre><code class="lang-js">if (user.isAuthenticated()
+    &amp;&amp; user.isInRole(&#39;admin&#39;)
+    &amp;&amp; user.hasAuthority(&#39;add-admin&#39;)
+) {
+    // Code
+}
+
+foo(
+    aVeryVeryLongArgument,
+    anotherVeryLongArgument,
+    callback
+);
+
+baidu.format(
+    dateFormatTemplate,
+    year, month, date, hour, minute, second
+);
+
+$(&#39;#items&#39;)
+    .find(&#39;.selected&#39;)
+    .highlight()
+    .end();
+
+var result = thisIsAVeryVeryLongCondition
+    ? resultA : resultB;
+
+var result = condition
+    ? thisIsAVeryVeryLongResult
+    : resultB;
+</code></pre>
+<p><strong>[MUST]</strong> Start a new line for <code>else</code> and <code>catch</code> if using multi-line blocks.</p>
+<pre><code class="lang-js">// good
+
+if (condition) {
+    // some statements;
+}
+else {
+    // some statements;
+}
+
+try {
+    // some statements;
+}
+catch (ex) {
+    // some statements;
+}
+
+
+// bad
+
+if (condition) {
+    // some statements;
+} else {
+    // some statements;
+}
+
+try {
+    // some statements;
+} catch (ex) {
+    // some statements;
+}
+</code></pre>
+<h3 id="statement">Statement</h3>
+<p><strong>[MUST]</strong> The comma must not be ignored at the end of a statement.</p>
+<p><strong>[MUST]</strong> The <code>{}</code> must not be ignored even if there is only one line.</p>
+<pre><code class="lang-js">// good
+if (condition) {
+    callFunc();
+}
+
+// bad
+if (condition) callFunc();
+if (condition)
+    callFunc();
+</code></pre>
+<p><strong>[MUST]</strong> Place no comma at the end of a function definition.</p>
+<pre><code class="lang-js">// good
+function funcName() {
+}
+
+// bad
+function funcName() {
+};
+
+// For function expression, the comma must not be ignored.
+var funcName = function () {
+};
+</code></pre>
+<p><strong>[MUST]</strong> No trailing comma in object and array declarations.</p>
+<pre><code class="lang-js">// good
+
+var obj = {
+    attr1: &#39;xxx&#39;,
+    attr2: &#39;yyy&#39;
+};
+
+var arr = [
+    &#39;xxx&#39;,
+    &#39;yyy&#39;
+];
+
+
+// bad
+
+var obj = {
+    attr1: &#39;xxx&#39;,
+    attr2: &#39;yyy&#39;,
+};
+
+var arr = [
+    &#39;xxx&#39;,
+    &#39;yyy&#39;,
+];
+</code></pre>
+<h3 id="naming-conventions">Naming Conventions</h3>
+<p><strong>[MUST]</strong> Use lowerCamelCase for variables, properties and function names.</p>
+<pre><code class="lang-js">var loadingModules = {};
+function loadProduct() {
+}
+</code></pre>
+<p><strong>[MUST]</strong> Use UpperCamelCase (Pascal) for class names.</p>
+<pre><code class="lang-js">function Element(options) {
+}
+</code></pre>
+<p><strong>[SUGGEST]</strong> All of the letters of a abbreviation should be both upper cases or both lower cases.</p>
+<pre><code class="lang-js">function parseSVG() {
+}
+var svgParser;
+</code></pre>
+<h2 id="language-features">Language features</h2>
+<h3 id="compatibility">Compatibility</h3>
+<p><strong>[MUST]</strong> The JavaScript code of ECharts should be based on <code>ECMAScript Language Specification Edition 3 (ES3)</code>. The language features that not supported by ES3 (namely, features that only support by ES5, ES6 or upper versions) must not be used.</p>
+<p>But there is an exception that ES Module can be used.</p>
+<p>Language features can be polyfilled by some utilities, but must not by modifying the prototype of the built-in JS objects.</p>
+<pre><code class="lang-js">// good
+
+import * as zrUtil from &#39;zrender/src/core/util&#39;;
+
+zrUtil.each(array, function (val, index) {
+    sum += val;
+});
+
+var result = zrUtil.map(array, function (val) {
+    return parse(val);
+});
+
+var pos = zrUtil.indexOf(array, val);
+
+var obj2 = zrUtil.extend({}, obj1);
+
+function Element() {
+    // ...
+}
+
+
+// bad
+
+array.forEach(function (val, index) {
+    sum += val;
+});
+
+let result = array.map(function (val) {
+    return parse(val);
+});
+
+const pos = array.indexOf(val);
+
+var obj2 = Object.assign({}, obj1);
+
+class Element {
+    // ...
+}
+
+
+// Forbidden
+
+String.prototype.trim = function () {
+};
+</code></pre>
+<h3 id="variable">Variable</h3>
+<p><strong>[MUST]</strong> Variables must be declared by <code>var</code>. And a <code>var</code> can not declares more than one variable.</p>
+<pre><code class="lang-js">// good
+var name = &#39;MyName&#39;;
+var hangModules = [];
+var missModules = [];
+var visited = {};
+
+// bad
+name = &#39;MyName&#39;;
+var hangModules = [],
+    missModules = [],
+    visited = {};
+</code></pre>
+<h3 id="condition">Condition</h3>
+<p><strong>[MUST]</strong> In equality expression, <code>==</code> can only be used on <code>null</code> or <code>undefined</code> detection. <code>===</code> should be used in the rest of cases .</p>
+<pre><code class="lang-js">// good
+if (age === 30) {
+    // ...
+}
+if (type == null) {
+    // ...
+}
+
+// bad
+if (age == 30) {
+    // ......
+}
+</code></pre>
+<p><strong>[SUGGEST]</strong> Use <code>xxx == null</code> to determine <code>null</code> or <code>undefined</code>.</p>
+<p><strong>[SUGGEST]</strong> Try best to make the meaning of <code>null</code> and <code>undefined</code> the same, namely, do not make users or developers distinguishing whether a variable is <code>null</code> or <code>undefined</code>.</p>
+<p><strong>[SUGGEST]</strong> The function expression or function declaration should not be placed inside a loop body.</p>
+<pre><code class="lang-js">// good
+function clicker() {
+    // ......
+}
+
+for (var i = 0, len = elements.length; i &lt; len; i++) {
+    var element = elements[i];
+    addListener(element, &#39;click&#39;, clicker);
+}
+
+
+// bad
+for (var i = 0, len = elements.length; i &lt; len; i++) {
+    var element = elements[i];
+    addListener(element, &#39;click&#39;, function () {});
+}
+</code></pre>
+<h3 id="type-conversion">Type Conversion</h3>
+<p><strong>[SUGGEST]</strong> Use <code>+ &#39;&#39;</code> to convert a value to string.</p>
+<pre><code class="lang-js">// good
+num + &#39;&#39;;
+
+// bad
+new String(num);
+num.toString();
+String(num);
+</code></pre>
+<p><strong>[SUGGEST]</strong> Use <code>+</code> to convert a value to number.</p>
+<pre><code class="lang-js">// good
++str;
+
+// bad
+Number(str);
+</code></pre>
+<p><strong>[MUST]</strong> The second parameter must not be ignored when using <code>parseInt</code>.</p>
+<pre><code class="lang-js">// good
+parseInt(str, 10);
+
+// bad
+parseInt(str);
+</code></pre>
+<h3 id="string-object-array">String, Object, Array</h3>
+<p><strong>[MUST]</strong> Use <code>&#39;</code> but not <code>&quot;</code> to define a string.</p>
+<p><strong>[MUST]</strong> Use object literal <code>{}</code> to create a plain object.</p>
+<pre><code class="lang-js">// good
+var obj = {};
+
+// bad
+var obj = new Object();
+</code></pre>
+<p><strong>[MUST]</strong> If all of the properties of an object literal do not need quotation marks, they should ignore them. If quotation marks is necessary, use <code>&#39;</code> but not <code>&quot;</code>.</p>
+<pre><code class="lang-js">// good
+var info = {
+    name: &#39;someone&#39;,
+    age: 28
+};
+
+// bad
+var info = {
+    &#39;name&#39;: &#39;someone&#39;,
+    &#39;age&#39;: 28
+};
+var info2 = {
+    &quot;age&quot;: 40
+};
+</code></pre>
+<p><strong>[MUST]</strong> The prototype of built-in objects must not be modified.</p>
+<pre><code class="lang-js">// Forbidden
+String.prototype.trim = function () {
+};
+</code></pre>
+<p><strong>[SUGGEST]</strong> Try best to use <code>.</code> but not <code>[]</code> to visit properties of an object.</p>
+<p><strong>[SUGGEST]</strong> <code>hasOwnProperty</code> should be used to when using <code>for ... in ...</code>, in case that some extra properties is added on the prototype of <code>Object</code> in some runtime environment.</p>
+<pre><code class="lang-js">var newInfo = {};
+for (var key in info) {
+    if (info.hasOwnProperty(key)) {
+        newInfo[key] = info[key];
+    }
+}
+</code></pre>
+<p><strong>[MUST]</strong> Use array literal <code>[]</code> to create an array, except intending to create an array with a given length.</p>
+<pre><code class="lang-js">// good
+var arr = [];
+var arr2 = new Array(1e4);
+
+// bad
+var arr = new Array();
+</code></pre>
+<p><strong>[MUST]</strong> Do not use <code>for in</code> in array traverse.</p>
+<h3 id="others">Others</h3>
+<p><strong>[MUST]</strong> Do not use <code>eval</code> and <code>with</code>. <code>new Function</code> can be used.</p>
+</div></div></div><script type="text/javascript" src="./vendors/bootstrap/js/bootstrap.min.js"></script><script type="text/javascript" src="./js/common.js"></script><script type="text/javascript">document.getElementById('nav-contribute').className = 'active';
+
+var $list = $('#standard-nav');
+$('.page-detail h2, .page-detail h3, .page-detail h4')
+    .each(function () {
+        var $this = $(this);
+        var text = $this.text();
+        var anchor = text.toLowerCase().replace(/[^\w]+/g, '-');
+        var tagName = $this.prop('tagName').toLowerCase();
+
+        if (tagName === 'h2') {
+            $list.append('<a href="#' + anchor + '"><h4 class="inner">' + text + '</h4></a>');
+        }
+        else {
+            $list.append('<a href="#' + anchor + '">' + text + '</a>');
+        }
+    });
+
+$('.page-nav a').click(function () {
+    $('.page-nav a').removeClass('active');
+    $(this).addClass('active');
+});
+
+// Fix scroll position covered by nav
+window.addEventListener('hashchange', function() {
+    scrollBy(0, -50);
+});</script><script type="text/javascript">var _hmt = _hmt || [];
+(function() {
+var hm = document.createElement("script");
+hm.src = "//hm.baidu.com/hm.js?4bad1df23f079e0d12bdbef5e65b072f";
+var s = document.getElementsByTagName("script")[0];
+s.parentNode.insertBefore(hm, s);
+})();</script></html>
\ No newline at end of file
diff --git a/committers.html b/committers.html
new file mode 100644
index 0000000..ea316d0
--- /dev/null
+++ b/committers.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
+    var el = document.createElement('style');
+    el.innerHTML = ''
+        + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
+        + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
+    document.head.insertBefore(el, document.getElementById('font-hack'));
+}
+</script><title>ECharts Committers</title><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./in [...]
+(function() {
+var hm = document.createElement("script");
+hm.src = "//hm.baidu.com/hm.js?4bad1df23f079e0d12bdbef5e65b072f";
+var s = document.getElementsByTagName("script")[0];
+s.parentNode.insertBefore(hm, s);
+})();</script></html>
\ No newline at end of file
diff --git a/css/main.css b/css/main.css
index e8abe7e..d578cef 100644
--- a/css/main.css
+++ b/css/main.css
@@ -1 +1 @@
-@font-face{font-family:'iconfont';src:url("font/iconfont.eot");src:url("font/iconfont.eot?#iefix") format("embedded-opentype"),url("font/iconfont.woff") format("woff"),url("font/iconfont.ttf") format("truetype"),url("font/iconfont.svg#iconfont") format("svg")}.iconfont{font-family:"iconfont" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{height:100%}body{height:10 [...]
+@font-face{font-family:'iconfont';src:url("font/iconfont.eot");src:url("font/iconfont.eot?#iefix") format("embedded-opentype"),url("font/iconfont.woff") format("woff"),url("font/iconfont.ttf") format("truetype"),url("font/iconfont.svg#iconfont") format("svg")}.iconfont{font-family:"iconfont" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{height:100%}body{height:10 [...]
diff --git a/dependencies.html b/dependencies.html
new file mode 100644
index 0000000..92d6d1f
--- /dev/null
+++ b/dependencies.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
+    var el = document.createElement('style');
+    el.innerHTML = ''
+        + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
+        + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
+    document.head.insertBefore(el, document.getElementById('font-hack'));
+}
+</script><title>ECharts Dependencies</title><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./in [...]
+(function() {
+var hm = document.createElement("script");
+hm.src = "//hm.baidu.com/hm.js?4bad1df23f079e0d12bdbef5e65b072f";
+var s = document.getElementsByTagName("script")[0];
+s.parentNode.insertBefore(hm, s);
+})();</script></html>
\ No newline at end of file
diff --git a/documents/en/api.json b/documents/en/api.json
index ce161ec..2a336b3 100644
--- a/documents/en/api.json
+++ b/documents/en/api.json
@@ -1 +1 @@
-{"$schema":"http://echarts.baidu.com/doc/json-schem","option":{"type":"Object","properties":{"echarts":{"type":["Object"],"description":"<p>Global echarts object, which can be accessed after including <code>echarts.js</code> in script tag or through <code>require(&#39;echarts&#39;)</code> in AMD environment.</p>\n","properties":{"init":{"type":["Function"],"description":"<pre><code class=\"lang-js\">(dom: HTMLDivElement|HTMLCanvasElement, theme?: Object|string, opts?: {\n    devicePixelR [...]
\ No newline at end of file
+{"$schema":"http://echarts.baidu.com/doc/json-schem","option":{"type":"Object","properties":{"echarts":{"type":["Object"],"description":"<p>Global echarts object, which can be accessed after including <code>echarts.js</code> in script tag or through <code>require(&#39;echarts&#39;)</code> in AMD environment.</p>\n","properties":{"init":{"type":["Function"],"description":"<pre><code class=\"lang-js\">(dom: HTMLDivElement|HTMLCanvasElement, theme?: Object|string, opts?: {\n    devicePixelR [...]
\ No newline at end of file
diff --git a/documents/en/option.json b/documents/en/option.json
index 7593e30..47f32db 100644
--- a/documents/en/option.json
+++ b/documents/en/option.json
@@ -1 +1 @@
-{"$schema":"http://echarts.baidu.com/doc/json-schem","option":{"type":"Object","properties":{"title":{"type":["Object"],"description":"<p>Title component, including main title and subtitle.</p>\n<p>In ECharts 2.x, a single instance of ECharts could contains one title component at most. However, in ECharts 3, there could be one or more than one title components. It is more useful when multiple diagrams in one instance all need titles.</p>\n<p><strong>Here are some instances of different a [...]
\ No newline at end of file
+{"$schema":"http://echarts.baidu.com/doc/json-schem","option":{"type":"Object","properties":{"title":{"type":["Object"],"description":"<p>Title component, including main title and subtitle.</p>\n<p>In ECharts 2.x, a single instance of ECharts could contains one title component at most. However, in ECharts 3, there could be one or more than one title components. It is more useful when multiple diagrams in one instance all need titles.</p>\n<p><strong>Here are some instances of different a [...]
\ No newline at end of file
diff --git a/documents/en/tutorial.json b/documents/en/tutorial.json
index 753a606..750a17b 100644
--- a/documents/en/tutorial.json
+++ b/documents/en/tutorial.json
@@ -1 +1 @@
-{"$schema":"http://echarts.baidu.com/doc/json-schem","option":{"type":"Object","properties":{"Get Started with ECharts in 5 minutes":{"type":["*"],"description":"<h2 id=\"get-echarts\">Get ECharts</h2>\n<p>You can get ECharts through the following ways.</p>\n<ol>\n<li><p>Choose the version you need and download from <a href=\"http://echarts.baidu.com/download.html\" target=\"_blank\">official download page</a>. Based on developer&#39;s varied need of function and package size, we provide [...]
\ No newline at end of file
+{"$schema":"http://echarts.baidu.com/doc/json-schem","option":{"type":"Object","properties":{"Get Started with ECharts in 5 minutes":{"type":["*"],"description":"<h2 id=\"get-echarts\">Get ECharts</h2>\n<p>You can get ECharts through the following ways.</p>\n<ol>\n<li><p>Choose the version you need and download from <a href=\"http://echarts.baidu.com/download.html\" target=\"_blank\">official download page</a>. Based on developer&#39;s varied need of function and package size, we provide [...]
\ No newline at end of file
diff --git a/download.html b/download.html
index 0fd24d6..768f035 100644
--- a/download.html
+++ b/download.html
@@ -1,66 +1,24 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="./vendors/bootstrap/css/bootstrap.min.css"><!-- HTML5 shim and Respond.js for IE8 [...]
+<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
     var el = document.createElement('style');
     el.innerHTML = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>ECharts Download</title><link rel="stylesheet" type="text/css" href="css/ecOption.css?_v_=1478158214015"><link rel="stylesheet" type="text/css" href="vendors/prettify/prettify.css"><link rel="stylesheet" type="text/css" href="vendors/perfect-scrollbar/0.6.8/css/perfect-scrollbar.min.css"><link rel="stylesheet" type="text/css" href="vendors/jquery-autocomplete/jquery.auto-complete.css"><script src="js/log.js"></script><script src="vendors/prettify/prettify.js"></script><sc [...]
-
-<style>
-    #download-main h3 {
-        width: 650px;
-    }
-    #download-main .d-section-version .circle-wrap {
-        line-height: 120px;
-        font-size: 20px;
-        font-family: Helvetica;
-        color: #214d62;
-        font-weight: normal;
-    }
-</style>
-
-<!--[if lte IE 8]>
-<body class="lower-ie">
-<![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div><div id="main">
-
-
-            <nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echart [...]
-                <li id="nav-doc" class="dropdown">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">DOCS<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="./tutorial.html">Tutorial</a></li>
-                        <li><a href="./api.html">API</a></li>
-                        <li><a href="./option.html">Option</a></li>
-                        <li><a href="./documents/en/changelog.html">Changelog</a></li>
-                    </ul>
-                </li>
-                <li id="nav-examples">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">WORKS<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="https://ecomfe.github.io/echarts-examples/public/index.html" target="_blank">Demo</a></li>
-                        <li><a href="http://gallery.echartsjs.com" target="_blank">Gallery</a></li>
-                    </ul>
-                </li>
-                <li id="nav-download">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">DOWNLOAD<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="./download.html">Download</a></li>
-                        <li><a href="http://echarts.baidu.com/builder.html" target="_blank">Online Builder</a></li>
-                    </ul>
-                </li>
-                <li id="nav-github">
-                    <a href="https://github.com/ecomfe/echarts"  target="_blank">GITHUB</a>
-                </li>
-                <li id="nav-index"><a href="http://echarts.baidu.com/index.html">HOME CN</a></li>
-            </ul></div></div></nav>
-
-
-<div id="download-main"><div class="d-section-version"><h2 id="tag-name"></h2><h3><span class="warn">Tip: the version "Source", which includes common warnings and hints, is recommanded for dev.</span></h3><div class="list-wrap"><ul id="download-list"></ul></div></div></div>
+</script><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><style>#download-main h3 {
+    width: 650px;
+}
+#download-main .d-section-version .circle-wrap {
+    line-height: 120px;
+    font-size: 20px;
+    font-family: Helvetica;
+    color: #214d62;
+    font-weight: normal;
+}
+</style><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echarts lo [...]
 
-<script type="text/javascript">
-    var list = [
+var list = [
         {
             label: 'Common',
             fileName: 'echarts.common.min.js',
@@ -109,13 +67,14 @@
             var url = 'https://raw.githubusercontent.com/ecomfe/echarts/' + tagName + '/dist/' + item.fileName;
 
             htmls.push(
-                '<li><a target="_blank" href="' + encodeHTML(url) + '" download="' + encodeHTML(item.fileName) + '" class="download-echarts"><div class="circle-wrap">' + encodeHTML(item.label) + '</div></a><div class="text">' + item.descHTML0 + '<br><span>' + item.descHTML1 + '</span></div></li>'
+                '<li class="col-md-3 col-md-6"><a target="_blank" href="' + encodeHTML(url) + '" download="' + encodeHTML(item.fileName) + '" class="download-echarts"><div class="circle-wrap">' + encodeHTML(item.label) + '</div></a><div class="text">' + item.descHTML0 + '<br><span>' + item.descHTML1 + '</span></div></li>'
             );
         }
         $('#download-list')[0].innerHTML = htmls.join('');
-    })
-
-
-</script>
-<script type="text/javascript" src="./vendors/bootstrap/js/bootstrap.min.js"></script><script type="text/javascript" src="./vendors/bootstrap/js/validator.js"></script>
-<script type="text/javascript" src="./js/hm.js"></script></html>
\ No newline at end of file
+    });</script><script type="text/javascript">var _hmt = _hmt || [];
+(function() {
+var hm = document.createElement("script");
+hm.src = "//hm.baidu.com/hm.js?4bad1df23f079e0d12bdbef5e65b072f";
+var s = document.getElementsByTagName("script")[0];
+s.parentNode.insertBefore(hm, s);
+})();</script></html>
\ No newline at end of file
diff --git a/faq.html b/faq.html
index d1c938a..4add13e 100644
--- a/faq.html
+++ b/faq.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
+<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
     var el = document.createElement('style');
     el.innerHTML = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav class="navbar navbar-default navbar-fixed-top"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span> [...]
+</script><title>ECharts FAQ</title><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body class="ECharts FAQ"></body><![endif]--><div id="main"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./ [...]
 (function() {
 var hm = document.createElement("script");
 hm.src = "//hm.baidu.com/hm.js?4bad1df23f079e0d12bdbef5e65b072f";
diff --git a/footer-en.html b/footer-en.html
new file mode 100644
index 0000000..4f4d81c
--- /dev/null
+++ b/footer-en.html
@@ -0,0 +1 @@
+<footer><div class="container"><div class="row"><div class="col-md-3 col-sm-4 logo"><img src="images/echarts-footer-logo.png"/></div><div id="footer-icon-panel" class="col-md-3"><div class="icon-panel"><a href="mailto:echarts@baidu.com?Body=%28Thanks%20for%20using%20ECharts.%20Email%20us%20if%20you%20have%20non-technical%20problems%20using%20ECharts.%20For%20technical%20support%2C%20please%20go%20to%20https%3A//github.com/ecomfe/echarts/issues%20.%29" class="footer-icon"><img src="images [...]
\ No newline at end of file
diff --git a/footer.html b/footer.html
new file mode 100644
index 0000000..4f4d81c
--- /dev/null
+++ b/footer.html
@@ -0,0 +1 @@
+<footer><div class="container"><div class="row"><div class="col-md-3 col-sm-4 logo"><img src="images/echarts-footer-logo.png"/></div><div id="footer-icon-panel" class="col-md-3"><div class="icon-panel"><a href="mailto:echarts@baidu.com?Body=%28Thanks%20for%20using%20ECharts.%20Email%20us%20if%20you%20have%20non-technical%20problems%20using%20ECharts.%20For%20technical%20support%2C%20please%20go%20to%20https%3A//github.com/ecomfe/echarts/issues%20.%29" class="footer-icon"><img src="images [...]
\ No newline at end of file
diff --git a/index.html b/index.html
index dbe7fba..af81c7c 100644
--- a/index.html
+++ b/index.html
@@ -22,7 +22,7 @@
 };
 void function(a,b,c,d,e,f,g){a.alogObjectName=e,a[e]=a[e]||function(){(a[e].q=a[e].q||[]).push(arguments)},a[e].l=a[e].l||+new Date,d="https:"===a.location.protocol?"https://fex.bdstatic.com"+d:"http://fex.bdstatic.com"+d;var h=!0;if(a.alogObjectConfig&&a.alogObjectConfig.sample){var i=Math.random();a.alogObjectConfig.rand=i,i>a.alogObjectConfig.sample&&(h=!1)}h&&(f=b.createElement(c),f.async=!0,f.src=d+"?v="+~(new Date/864e5)+~(new Date/864e5),g=b.getElementsByTagName(c)[0],g.parentNode [...]
 void function(n){var o=!1;n.onerror=function(n,e,t,c){var i=!0;return!e&&/^script error/i.test(n)&&(o?i=!1:o=!0),i&&alog("exception.send","exception",{msg:n,js:e,ln:t,col:c}),!1},alog("exception.on","catch",function(n){alog("exception.send","exception",{msg:n.msg,js:n.path,ln:n.ln,method:n.method,flag:"catch"})})}(window);
-</script><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements  [...]
+</script><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements  [...]
     var el = document.createElement('style');
     el.innerHTML = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
@@ -31,7 +31,7 @@ void function(n){var o=!1;n.onerror=function(n,e,t,c){var i=!0;return!e&&/^scrip
 }
 </script><title>ECharts</title><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script><script>alog('speed.set', 'ht', +new Date);
 </script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class= [...]
+<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></bu [...]
 </script>
 <script type="text/javascript">(function () {
     var ua = navigator.userAgent;
@@ -41,7 +41,7 @@ void function(n){var o=!1;n.onerror=function(n,e,t,c){var i=!0;return!e&&/^scrip
 })()
 
 </script><section id="feature-section"><div class="container"><div class="row features"><div class="col-sm-4"><div class="feature-icon-panel"><svg width="36px" height="33px" viewbox="0 0 36 33" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="feature-icon"><defs></defs><g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="01-首页-标注" transform="translate(-320.000000, -826.000000)" stroke="#333743" stroke-width [...]
-</script></div></div></section><section id="publication"><div class="container"><div class="col-sm-8 col"><h2>ECharts: A Declarative Framework for Rapid Construction of Web-based Visualization</h2><p class="note"><i class="note-icon"><img src="./images/note.svg" /></i> Please cite the following paper whenever you use ECharts in your R&D projects, products, research papers, technical reports, news reports, books, presentations, teaching, patents, and other related intelligence activities. [...]
+</script></div></div></section><section id="publication"><div class="container"><div class="col-sm-8 col"><h2>ECharts: A Declarative Framework for Rapid Construction of Web-based Visualization</h2><p class="note"><i class="note-icon"><img src="./images/note.svg" /></i> Please cite the following paper whenever you use ECharts in your R&D projects, products, research papers, technical reports, news reports, books, presentations, teaching, patents, and other related intelligence activities. [...]
 alog('speed.set', 'drt', +new Date);
 </script><script type="text/javascript">var _hmt = _hmt || [];
 (function() {
diff --git a/js/docTool/main.js b/js/docTool/main.js
index f3a3aa0..f83bb05 100644
--- a/js/docTool/main.js
+++ b/js/docTool/main.js
@@ -194,9 +194,11 @@ define(function (require) {
             var defs = [
                 ['tutorial', lang.quickLinkTutorial],
                 ['api', lang.quickLinkAPI],
-                ['option', lang.quickLinkOption],
-                ['option-gl', lang.quickLinkOptionGL]
+                ['option', lang.quickLinkOption]
             ];
+            if (lang.langCode === 'cn') {
+                defs.push(['option-gl', lang.quickLinkOptionGL]);
+            }
 
             var html = [];
 
diff --git a/license.html b/license.html
index 4d0443e..93d4895 100644
--- a/license.html
+++ b/license.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
+<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
     var el = document.createElement('style');
     el.innerHTML = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
@@ -6,7 +6,7 @@
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
 </script><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav class="navbar navbar-default navbar-fixed-top"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span> [...]
+<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./in [...]
 (function() {
 var hm = document.createElement("script");
 hm.src = "//hm.baidu.com/hm.js?4bad1df23f079e0d12bdbef5e65b072f";
diff --git a/maillist.html b/maillist.html
new file mode 100644
index 0000000..4ea8dd5
--- /dev/null
+++ b/maillist.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no"><meta name="description" content="ECharts, a powerful, interactive charting and visualization library for browser"><link rel="shortcut icon" href="images/favicon.png"><link rel="stylesheet" type="text/css" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css"><!-- HTML5 shim and Respo [...]
+    var el = document.createElement('style');
+    el.innerHTML = ''
+        + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
+        + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
+    document.head.insertBefore(el, document.getElementById('font-hack'));
+}
+</script><title>ECharts Mailing List</title><script type="text/javascript" src="./vendors/jquery/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="main"><nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./in [...]
+(function() {
+var hm = document.createElement("script");
+hm.src = "//hm.baidu.com/hm.js?4bad1df23f079e0d12bdbef5e65b072f";
+var s = document.getElementsByTagName("script")[0];
+s.parentNode.insertBefore(hm, s);
+})();</script></html>
\ No newline at end of file
diff --git a/nav-en.html b/nav-en.html
new file mode 100644
index 0000000..ae432dc
--- /dev/null
+++ b/nav-en.html
@@ -0,0 +1 @@
+<nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echarts logo" clas [...]
\ No newline at end of file
diff --git a/nav.html b/nav.html
new file mode 100644
index 0000000..f0c2d60
--- /dev/null
+++ b/nav.html
@@ -0,0 +1 @@
+<div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echarts logo" class="navbar-logo"/></a></div><div id="bs-example-navba [...]
\ No newline at end of file
diff --git a/option.html b/option.html
index ea30f61..6204ab1 100644
--- a/option.html
+++ b/option.html
@@ -10,37 +10,7 @@
 <![endif]-->
 <!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div><div id="main">
 
-
-            <nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echart [...]
-                <li id="nav-doc" class="dropdown">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">DOCS<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="./tutorial.html">Tutorial</a></li>
-                        <li><a href="./api.html">API</a></li>
-                        <li><a href="./option.html">Option</a></li>
-                        <li><a href="./documents/en/changelog.html">Changelog</a></li>
-                    </ul>
-                </li>
-                <li id="nav-examples">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">WORKS<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="https://ecomfe.github.io/echarts-examples/public/index.html" target="_blank">Demo</a></li>
-                        <li><a href="http://gallery.echartsjs.com" target="_blank">Gallery</a></li>
-                    </ul>
-                </li>
-                <li id="nav-download">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">DOWNLOAD<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="./download.html">Download</a></li>
-                        <li><a href="http://echarts.baidu.com/builder.html" target="_blank">Online Builder</a></li>
-                    </ul>
-                </li>
-                <li id="nav-github">
-                    <a href="https://github.com/ecomfe/echarts"  target="_blank">GITHUB</a>
-                </li>
-                <li id="nav-index"><a href="http://echarts.baidu.com/index.html">HOME CN</a></li>
-            </ul></div></div></nav>
-
+    <nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echarts logo"  [...]
 
 <div class="ecdoc-apidoc"></div></div><script type="text/javascript" src="./vendors/bootstrap/js/bootstrap.min.js"></script><script type="text/javascript" src="./vendors/bootstrap/js/validator.js"></script><script type="text/javascript">window.globalArgsExtra = {
     pageName: 'option',
diff --git a/tutorial.html b/tutorial.html
index 718a512..5021cc2 100644
--- a/tutorial.html
+++ b/tutorial.html
@@ -9,38 +9,7 @@
 <body class="lower-ie">
 <![endif]-->
 <!--[if (gt IE 8)|!(IE)]><body class="undefined"></body><![endif]--><div id="lowie-main"><img src="./images/forie.png" alt="ie tip"></div><div id="main">
-
-
-            <nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echart [...]
-                <li id="nav-doc" class="dropdown">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">DOCS<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="./tutorial.html">Tutorial</a></li>
-                        <li><a href="./api.html">API</a></li>
-                        <li><a href="./option.html">Option</a></li>
-                        <li><a href="./documents/en/changelog.html">Changelog</a></li>
-                    </ul>
-                </li>
-                <li id="nav-examples">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">WORKS<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="https://ecomfe.github.io/echarts-examples/public/index.html" target="_blank">Demo</a></li>
-                        <li><a href="http://gallery.echartsjs.com" target="_blank">Gallery</a></li>
-                    </ul>
-                </li>
-                <li id="nav-download">
-                    <a href="#" data-toggle="dropdown" class="dropdown-toggle">DOWNLOAD<b class="caret"></b></a>
-                    <ul class="dropdown-menu">
-                        <li><a href="./download.html">Download</a></li>
-                        <li><a href="http://echarts.baidu.com/builder.html" target="_blank">Online Builder</a></li>
-                    </ul>
-                </li>
-                <li id="nav-github">
-                    <a href="https://github.com/ecomfe/echarts"  target="_blank">GITHUB</a>
-                </li>
-                <li id="nav-index"><a href="http://echarts.baidu.com/index.html">HOME CN</a></li>
-            </ul></div></div></nav>
-
+    <nav class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="./index.html" class="navbar-brand"><img src="./images/logo.png" alt="echarts logo"  [...]
 
 
 <div class="ecdoc-apidoc"></div></div><script type="text/javascript" src="./vendors/bootstrap/js/bootstrap.min.js"></script><script type="text/javascript" src="./vendors/bootstrap/js/validator.js"></script><script type="text/javascript">$('#main').addClass('tutorial');


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org