You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2020/06/14 07:31:09 UTC
[incubator-echarts-doc] branch live-example updated: add example
code
This is an automated email from the ASF dual-hosted git repository.
shenyi pushed a commit to branch live-example
in repository https://gitbox.apache.org/repos/asf/incubator-echarts-doc.git
The following commit(s) were added to refs/heads/live-example by this push:
new eced8c2 add example code
eced8c2 is described below
commit eced8c246e96424fb663327970d1331b0e4c0a78
Author: pissang <bm...@gmail.com>
AuthorDate: Sun Jun 14 15:30:51 2020 +0800
add example code
---
package-lock.json | 138 +++++++++++++++++++++++++++-------
package.json | 2 +
src/components/DocContent.vue | 2 +-
src/components/DocContentItemCard.vue | 5 +-
src/components/LiveExample.vue | 86 +++++++++++++++++++--
src/components/OptionControl.vue | 34 ++++++++-
src/controls/ControlBoolean.vue | 2 +-
src/controls/ControlColor.vue | 3 +-
src/controls/ControlNumber.vue | 8 +-
src/controls/ControlVector.vue | 18 ++---
src/directive/highlight.js | 3 +-
11 files changed, 238 insertions(+), 63 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index e1167ae..18e0a81 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1565,6 +1565,11 @@
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@@ -1890,8 +1895,7 @@
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"base": {
"version": "0.11.2",
@@ -2054,7 +2058,6 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -2520,6 +2523,11 @@
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"dev": true
},
+ "codemirror": {
+ "version": "5.54.0",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.54.0.tgz",
+ "integrity": "sha512-Pgf3surv4zvw+KaW3doUU7pGjF0BPU8/sj7eglWJjzni46U/DDW8pu3nZY0QgQKUcICDXRkq8jZmq0y6KhxM3Q=="
+ },
"collection-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
@@ -2554,8 +2562,7 @@
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
"commondir": {
"version": "1.0.1",
@@ -2619,8 +2626,7 @@
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"concat-stream": {
"version": "1.6.2",
@@ -2745,6 +2751,15 @@
}
}
},
+ "config-chain": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
+ "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
+ "requires": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
"connect-history-api-fallback": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
@@ -3299,6 +3314,17 @@
"stream-shift": "^1.0.0"
}
},
+ "editorconfig": {
+ "version": "0.15.3",
+ "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
+ "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
+ "requires": {
+ "commander": "^2.19.0",
+ "lru-cache": "^4.1.5",
+ "semver": "^5.6.0",
+ "sigmund": "^1.0.1"
+ }
+ },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -4025,8 +4051,7 @@
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
"version": "2.1.3",
@@ -4538,7 +4563,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
@@ -4547,14 +4571,12 @@
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "dev": true
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
},
"install": {
"version": "0.13.0",
@@ -4870,6 +4892,38 @@
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
+ "js-beautify": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz",
+ "integrity": "sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==",
+ "requires": {
+ "config-chain": "^1.1.12",
+ "editorconfig": "^0.15.3",
+ "glob": "^7.1.3",
+ "mkdirp": "~1.0.3",
+ "nopt": "^4.0.3"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
+ }
+ }
+ },
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -5642,7 +5696,6 @@
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
@@ -5862,7 +5915,6 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -6071,6 +6123,15 @@
"optimist": ">=0.3.4"
}
},
+ "nopt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -9770,7 +9831,6 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
"requires": {
"wrappy": "1"
}
@@ -9835,6 +9895,11 @@
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
"dev": true
},
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
"os-locale": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
@@ -9846,6 +9911,20 @@
"mem": "^4.0.0"
}
},
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
"p-defer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
@@ -9983,8 +10062,7 @@
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-is-inside": {
"version": "1.0.2",
@@ -10298,6 +10376,11 @@
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
"dev": true
},
+ "proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk="
+ },
"proxy-addr": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
@@ -10317,8 +10400,7 @@
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
"public-encrypt": {
"version": "4.0.3",
@@ -10860,8 +10942,7 @@
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
},
"send": {
"version": "0.17.1",
@@ -11052,6 +11133,11 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
+ },
"signal-exit": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
@@ -12881,8 +12967,7 @@
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"ws": {
"version": "6.2.1",
@@ -12908,8 +12993,7 @@
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
},
"yargs": {
"version": "14.2.3",
diff --git a/package.json b/package.json
index d081da9..d81a152 100644
--- a/package.json
+++ b/package.json
@@ -50,9 +50,11 @@
"yargs": "^14.2.3"
},
"dependencies": {
+ "codemirror": "^5.54.0",
"element-ui": "^2.13.2",
"highlight.js": "^9.18.1",
"html-entities": "^1.3.1",
+ "js-beautify": "^1.11.0",
"jsonpack": "^1.1.5",
"lodash.debounce": "^4.0.8",
"lodash.throttle": "^4.1.1",
diff --git a/src/components/DocContent.vue b/src/components/DocContent.vue
index 5deb783..82f52d8 100644
--- a/src/components/DocContent.vue
+++ b/src/components/DocContent.vue
@@ -212,7 +212,7 @@ export default {
const code = newVal && newVal[0] && newVal[0].code;
if (code) {
const func = new Function(code + '\n return option');
- this.shared.previewOption = func();
+ this.shared.previewOption = Object.freeze(func());
}
}
}
diff --git a/src/components/DocContentItemCard.vue b/src/components/DocContentItemCard.vue
index 9bf711e..44af60c 100644
--- a/src/components/DocContentItemCard.vue
+++ b/src/components/DocContentItemCard.vue
@@ -39,7 +39,10 @@
>{{type}}</span>
</div>
- <OptionControl v-if="enableUIControl" :controlConfig="uiControl"></OptionControl>
+ <OptionControl v-if="enableUIControl"
+ :controlConfig="uiControl"
+ :optionPath="nodeData.path"
+ ></OptionControl>
<div class="item-description"
v-html="desc"
diff --git a/src/components/LiveExample.vue b/src/components/LiveExample.vue
index 7cd3943..8f5a636 100644
--- a/src/components/LiveExample.vue
+++ b/src/components/LiveExample.vue
@@ -3,7 +3,12 @@
<div id="example-panel">
<h2>{{$t('example.title')}}</h2>
<p class="intro">{{$t('example.intro')}}</p>
- <div class="preview-main"></div>
+ <div class="preview-and-code">
+ <div class="preview-main"></div>
+ <div class="example-code">
+ <div class="codemirror-main"></div>
+ </div>
+ </div>
</div>
</template>
@@ -13,8 +18,11 @@
// 代码不能编辑,可以跳转到 examples 带上 base64,在 examples 页面编辑
import {store, getPagePath} from '../store';
-
-let chartInstance;
+import CodeMirror from 'codemirror';
+import 'codemirror/lib/codemirror.css';
+import 'codemirror/theme/paraiso-dark.css';
+import 'codemirror/mode/javascript/javascript.js'
+import beautify from 'js-beautify';
let echartsLoadPromise;
@@ -40,12 +48,15 @@ export default {
},
mounted() {
+ const self = this;
const examplePanel = this.$el;
const previewMain = examplePanel.querySelector('.preview-main');
// TODO use css?
function resize() {
examplePanel.style.width = examplePanel.parentNode.clientWidth * 0.45 + 'px';
- previewMain.style.height = previewMain.clientWidth * 3 / 4 + 'px';
+ if (self.chartInstance) {
+ self.chartInstance.resize();
+ }
}
window.addEventListener('resize', resize);
resize();
@@ -55,22 +66,52 @@ export default {
'shared.previewOption'(newVal) {
if (newVal) {
this.updateOption(newVal);
+ this.updateCode();
}
}
},
methods: {
updateOption(option) {
+ const viewport = this.$el.querySelector('.preview-main');
if (typeof echarts === 'undefined') {
fetchECharts().then(() => {
- chartInstance = echarts.init(this.$el.querySelector('.preview-main'));
- chartInstance.setOption(option);
+ if (!this.echartsInstance) {
+ this.chartInstance = echarts.init(viewport);
+ }
+ this.chartInstance.setOption(option);
})
}
else {
- chartInstance.setOption(option);
+ if (!this.echartsInstance) {
+ this.chartInstance = echarts.init(viewport);
+ }
+ this.chartInstance.setOption(option);
+ }
+ },
+
+ updateCode() {
+ if (!this.cmInstance) {
+ this.cmInstance = CodeMirror(this.$el.querySelector('.codemirror-main'), {
+ value: this.formattedOptionCodeStr,
+ mode: 'javascript',
+ theme: 'paraiso-dark'
+ });
+ }
+ else {
+ this.cmInstance.setValue(this.formattedOptionCodeStr);
}
}
+ },
+
+ computed: {
+ optionCodeStr() {
+ return `const option = ${JSON.stringify(this.shared.previewOption)}`;
+ },
+
+ formattedOptionCodeStr() {
+ return beautify.js(this.optionCodeStr);
+ }
}
}
</script>
@@ -100,11 +141,42 @@ export default {
p.intro {
color: #aaa;
padding-left: 20px;
+ margin: 5px 0;
+ font-size: 12px;
+ }
+
+ .preview-and-code {
+ position: absolute;
+ top: 90px;
+ bottom: 0;
+ left: 0;
+ right: 0;
}
.preview-main {
width: 100%;
background: #fefefe;
+ height: 50%;
+ }
+
+ .example-code {
+ width: 100%;
+ height: 50%;
+ position: relative;
+
+ // h4 {
+ // margin: 0 10px;
+ // padding: 0;
+ // }
+
+ .codemirror-main {
+ height: 100%;
+
+ .CodeMirror {
+ height: 100%;
+ overflow-y: scroll;
+ }
+ }
}
}
diff --git a/src/components/OptionControl.vue b/src/components/OptionControl.vue
index 72a78ce..5451d90 100644
--- a/src/components/OptionControl.vue
+++ b/src/components/OptionControl.vue
@@ -1,6 +1,10 @@
<template>
<div class="option-control">
- <component :is="uiComponent" v-bind="uiAttrs"></component>
+ <component
+ :is="uiComponent"
+ v-bind="uiAttrs"
+ value="default">
+ </component>
</div>
</template>
@@ -9,6 +13,7 @@ import ControlColor from '../controls/ControlColor.vue';
import ControlBoolean from '../controls/ControlBoolean.vue';
import ControlNumber from '../controls/ControlNumber.vue';
import ControlVector from '../controls/ControlVector.vue';
+import {store} from '../store';
const uiComponentMap = {
boolean: ControlBoolean,
@@ -17,10 +22,23 @@ const uiComponentMap = {
vector: ControlVector
};
-function omitType(obj) {
+const uiComponentDefault = {
+ boolean: () => false,
+ color: () => null,
+ number: () => 0,
+ vector: (conntrolConfig) => {
+ if (!conntrolConfig.dims) {
+ throw new Error('Must specify dims in vector');
+ }
+ return conntrolConfig.dims.split(',')
+ .map(dim => 0)
+ }
+}
+
+function omitTypeAndDefault(obj) {
const newObj = {};
for (let key in obj) {
- if (obj.hasOwnProperty(key) && key !== 'type') {
+ if (obj.hasOwnProperty(key) && key !== 'type' && key !== 'default') {
newObj[key] = obj[key];
}
}
@@ -34,6 +52,7 @@ export default {
data() {
return {
+ shared: store
};
},
@@ -43,7 +62,14 @@ export default {
},
uiAttrs() {
- return omitType(this.controlConfig);
+ return omitTypeAndDefault(this.controlConfig);
+ },
+
+ default() {
+ const controlConfig = this.controlConfig;
+ return controlConfig.default != null
+ ? controlConfig.default
+ : (uiComponentDefault[controlConfig.type] && uiComponentDefault[controlConfig.type](controlConfig));
}
}
}
diff --git a/src/controls/ControlBoolean.vue b/src/controls/ControlBoolean.vue
index 42240c0..f34741c 100644
--- a/src/controls/ControlBoolean.vue
+++ b/src/controls/ControlBoolean.vue
@@ -6,9 +6,9 @@
<script>
export default {
+ props: ['value'],
data() {
return {
- value: null
}
}
}
diff --git a/src/controls/ControlColor.vue b/src/controls/ControlColor.vue
index 35f2d1a..994cf16 100644
--- a/src/controls/ControlColor.vue
+++ b/src/controls/ControlColor.vue
@@ -10,11 +10,10 @@
<script>
export default {
- props: ['default'],
+ props: ['value'],
data() {
return {
- value: this.default
}
}
}
diff --git a/src/controls/ControlNumber.vue b/src/controls/ControlNumber.vue
index bf0aadc..665f8d4 100644
--- a/src/controls/ControlNumber.vue
+++ b/src/controls/ControlNumber.vue
@@ -6,7 +6,7 @@
:min="+min"
:max="max == null ? Infinity : +max"
:step="step == null ? 1 : +step"
- size="small"
+ size="mini"
></el-input-number>
</div>
</template>
@@ -14,12 +14,10 @@
<script>
export default {
- props: ['min', 'max', "step"],
+ props: ['value', 'min', 'max', 'step'],
data() {
- return {
- value: 0
- }
+ return {}
}
}
</script>
diff --git a/src/controls/ControlVector.vue b/src/controls/ControlVector.vue
index 09d5e66..5ef5dbe 100644
--- a/src/controls/ControlVector.vue
+++ b/src/controls/ControlVector.vue
@@ -2,7 +2,7 @@
<div class="control-vector">
<div v-for="(dim, index) in dimsArr"
:key="index">
- {{dim}}:
+ <label>{{dim}}:</label>
<el-input-number
v-model="value[index]"
controls-position="right"
@@ -18,19 +18,10 @@
<script>
export default {
- props: ['min', 'max', "step", 'default', 'dims'],
+ props: ['value', 'min', 'max', "step", 'dims'],
data() {
- if (!this.dims) {
- throw new Error('Must specify dims in vector');
- }
- const arr = this.default
- ? this.default.split(',').map(num => +num.trim())
- : this.dims.split(',').map(dim => 0);
-
- return {
- value: arr,
- };
+ return {};
},
computed: {
@@ -46,7 +37,8 @@ export default {
&>div {
display: inline-block;
margin-left: 8px;
- font-size: 14px;
+ font-size: 12px;
+ font-weight: bold;
}
.el-input-number {
width: 90px;
diff --git a/src/directive/highlight.js b/src/directive/highlight.js
index 2257359..ee57efd 100644
--- a/src/directive/highlight.js
+++ b/src/directive/highlight.js
@@ -4,10 +4,9 @@ import xml from 'highlight.js/lib/languages/xml';
hljs.registerLanguage('javascript', javascript);
hljs.registerLanguage('xml', xml);
import 'highlight.js/styles/github-gist.css';
+// import 'highlight.js/styles/monokai.css';
import Vue from 'vue';
-hljs.configure()
-
function doHighlight(el) {
el.querySelectorAll('pre code').forEach((block) => {
if (!block.classList.contains('hljs')) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org