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/16 03:58:52 UTC
[incubator-echarts-doc] branch live-example updated: example:
optimize ui component
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 8737a41 example: optimize ui component
8737a41 is described below
commit 8737a41346fed6c367375377f08935efd55905dc
Author: pissang <bm...@gmail.com>
AuthorDate: Tue Jun 16 11:58:37 2020 +0800
example: optimize ui component
---
src/components/OptionControl.vue | 14 +++++-
src/controls/ControlPercent.vue | 21 ++++++---
src/controls/ControlPercentVector.vue | 79 ++++++++++++++++++++++++++++++++++
src/controls/ControlVector.vue | 11 +++--
src/i18n.js | 8 ++--
src/main.js | 6 ++-
zh/option/partial/circular-layout.md | 4 ++
zh/option/partial/clip.md | 2 +
zh/option/partial/cursor.md | 2 +
zh/option/partial/large.md | 6 +++
zh/option/partial/legend-hover-link.md | 3 ++
zh/option/partial/rect-layout.md | 8 ++++
zh/option/partial/roam.md | 3 ++
zh/option/partial/show.md | 2 +
zh/option/partial/silent.md | 2 +
15 files changed, 157 insertions(+), 14 deletions(-)
diff --git a/src/components/OptionControl.vue b/src/components/OptionControl.vue
index 48102e7..23889ba 100644
--- a/src/components/OptionControl.vue
+++ b/src/components/OptionControl.vue
@@ -17,6 +17,7 @@ import ControlVector from '../controls/ControlVector.vue';
import ControlEnum from '../controls/ControlEnum.vue';
import ControlPercent from '../controls/ControlPercent.vue';
import {store, changeOption} from '../store';
+import ControlPercentVector from '../controls/ControlPercentVector.vue';
const uiComponentMap = {
boolean: ControlBoolean,
@@ -26,7 +27,8 @@ const uiComponentMap = {
enum: ControlEnum,
// Use number for angle temporary
angle: ControlNumber,
- percent: ControlPercent
+ percent: ControlPercent,
+ percentvector: ControlPercentVector
};
const uiComponentDefault = {
@@ -43,7 +45,15 @@ const uiComponentDefault = {
throw new Error('Must specify dims in vector');
}
return conntrolConfig.dims.split(',')
- .map(dim => 0)
+ .map(dim => 0).join(',');
+ },
+
+ percentvector: (conntrolConfig) => {
+ if (!conntrolConfig.dims) {
+ throw new Error('Must specify dims in vector');
+ }
+ return conntrolConfig.dims.split(',')
+ .map(dim => '50%').join(',');
}
}
diff --git a/src/controls/ControlPercent.vue b/src/controls/ControlPercent.vue
index e458eb6..4d5b172 100644
--- a/src/controls/ControlPercent.vue
+++ b/src/controls/ControlPercent.vue
@@ -1,8 +1,12 @@
<template>
<div class="control-percent">
- <el-switch v-model="absoluteMode" :active-text="$t('example.absoluteMode')"></el-switch>
+ <el-radio-group v-model="mode" size="mini">
+ <el-radio-button label="absolute">{{$t('example.absoluteMode')}}</el-radio-button>
+ <el-radio-button label="percent">{{$t('example.percentMode')}}</el-radio-button>
+ </el-radio-group>
+ <!-- <el-switch v-model="absoluteMode" :active-text="$t('example.absoluteMode')"></el-switch> -->
<el-input-number
- v-if="absoluteMode"
+ v-if="mode === 'absolute'"
controls-position="right"
v-model="absoluteValue"
size="mini"
@@ -38,13 +42,13 @@
<script>
export default {
- props: ['value', 'min', 'max', 'absolute', 'step'],
+ props: ['value', 'min', 'max', 'step'],
data() {
return {
percentValue: +this.value.replace('%', ''),
absoluteValue: 0,
- absoluteMode: this.value.indexOf('%') >= 0
+ mode: this.value.indexOf('%') < 0 ? 'absolute' : 'percent'
}
},
@@ -56,7 +60,7 @@ export default {
methods: {
onValueChange() {
- this.$emit('change', this.absoluteMode ? this.absoluteValue : this.percentValue + '%');
+ this.$emit('change', this.mode === 'absolute' ? this.absoluteValue : this.percentValue + '%');
},
formatTooltip(val) {
return val + '%';
@@ -80,5 +84,12 @@ export default {
width: 90px;
margin-left: 10px;
}
+ .el-radio-group {
+ margin-right: 10px;
+ }
+ .el-radio-button--mini .el-radio-button__inner {
+ padding: 5px 4px;
+ font-size: 10px;
+ }
}
</style>
\ No newline at end of file
diff --git a/src/controls/ControlPercentVector.vue b/src/controls/ControlPercentVector.vue
new file mode 100644
index 0000000..2a2123d
--- /dev/null
+++ b/src/controls/ControlPercentVector.vue
@@ -0,0 +1,79 @@
+<template>
+<div class="control-percent-vector">
+ <div v-for="(dim, index) in dimsArr"
+ :key="index">
+ <label>{{dim}}</label>
+ <ControlPercent
+ :value="innerValueArr[index]"
+ controls-position="right"
+ :min="min == null ? -1e4 : +min"
+ :max="max == null ? 1e4 : +max"
+ :step="step == null ? 1 : +step"
+ @change="(value) => onValueChange(index, value)"
+ ></ControlPercent>
+ </div>
+</div>
+</template>
+
+<script>
+
+import ControlPercent from './ControlPercent.vue';
+
+export default {
+
+ components: {
+ ControlPercent
+ },
+
+ props: ['value', 'min', 'max', "step", 'dims'],
+
+ data() {
+ return {
+ innerValueArr: this.value.split(',').map(val => val.trim())
+ };
+ },
+
+ computed: {
+ dimsArr() {
+ return this.dims.split(',').map(dim => dim.trim());
+ }
+ },
+
+ watch: {
+ value(newVal) {
+ this.innerValueArr = this.value.split(',').map(val => val.trim())
+ }
+ },
+
+ methods: {
+ onValueChange(index, value) {
+ this.innerValueArr[index] = value;
+ this.$emit('change', this.innerValueArr.slice());
+ }
+ }
+}
+</script>
+
+<style lang="scss">
+.control-percent-vector {
+ &>div {
+ margin-top: 3px;
+ font-size: 12px;
+ font-weight: bold;
+
+ &>label {
+ text-transform: uppercase;
+ margin-right: 5px;
+ }
+ }
+
+ .control-percent, label {
+ display: inline-block;
+ }
+
+
+ .control-percent .el-slider {
+ width: 100px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/src/controls/ControlVector.vue b/src/controls/ControlVector.vue
index eef11ee..2336dfc 100644
--- a/src/controls/ControlVector.vue
+++ b/src/controls/ControlVector.vue
@@ -4,7 +4,7 @@
<div v-if="innerSeparate" class="control-vector-group">
<div v-for="(dim, index) in dimsArr"
:key="index">
- <label>{{dim}}:</label>
+ <label>{{dim}}</label>
<el-input-number
v-model="innerValueArr[index]"
controls-position="right"
@@ -36,7 +36,7 @@ export default {
data() {
return {
innerSeparate: this.separate === 'true',
- innerValueArr: this.value.slice()
+ innerValueArr: this.value.split(',').map(val => +val.trim())
};
},
@@ -48,7 +48,7 @@ export default {
watch: {
value(newVal) {
- this.innerValueArr = newVal;
+ this.innerValueArr = this.value.split(',').map(val => +val.trim());
}
},
@@ -83,5 +83,10 @@ export default {
.el-input-number {
width: 90px;
}
+
+ label {
+ text-transform: uppercase;
+ margin-right: 5px;
+ }
}
</style>
\ No newline at end of file
diff --git a/src/i18n.js b/src/i18n.js
index a304331..1d98a29 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -26,8 +26,9 @@ export default {
defaultColor: 'Default Color',
booleanDesc: 'Enable',
- vectorSetSeparate: 'Separately',
- absoluteMode: 'Absolute',
+ vectorSetSeparate: 'SEPARATE',
+ absoluteMode: 'ABSOLUTE',
+ percentMode: 'PERCENT',
setOptionError: 'Something Unexpected Happerns. Click refresh to try again!',
@@ -61,10 +62,11 @@ export default {
tryDesc: '试一试',
defaultColor: '默认颜色',
- booleanDesc: '开启该功能',
+ booleanDesc: '开启',
vectorSetSeparate: '分别设置',
absoluteMode: '绝对值',
+ percentMode: '百分比',
setOptionError: '发生了一些意料之外的错误,点击刷新再试试!',
diff --git a/src/main.js b/src/main.js
index edd9431..9a9617f 100644
--- a/src/main.js
+++ b/src/main.js
@@ -21,7 +21,9 @@ import {
Select,
Option,
Alert,
- Slider
+ Slider,
+ RadioGroup,
+ RadioButton
} from 'element-ui';
import {preload} from './docHelper';
// import 'element-ui/lib/theme-chalk/index.css';
@@ -53,6 +55,8 @@ Vue.use(Select);
Vue.use(Option);
Vue.use(Alert);
Vue.use(Slider);
+Vue.use(RadioGroup);
+Vue.use(RadioButton);
/**
*
diff --git a/zh/option/partial/circular-layout.md b/zh/option/partial/circular-layout.md
index 31c1b91..7562ecf 100644
--- a/zh/option/partial/circular-layout.md
+++ b/zh/option/partial/circular-layout.md
@@ -5,6 +5,8 @@
## center(Array) = ${defaultCenter|default("['50%', '50%']")}
+<ExampleUIControlPercentVector dims="x,y" />
+
${componentName}的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标。
支持设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度。
@@ -19,6 +21,8 @@ center: ['50%', '50%']
## radius(number|string|Array) = ${defaultRadius}
+<ExampleUIControlPercentVector dims="inner,outer" default="0%, 75%" />
+
${componentName}的半径。可以为如下类型:
+ `number`:直接指定外半径值。
diff --git a/zh/option/partial/clip.md b/zh/option/partial/clip.md
index 4ade4e9..bc3d20a 100644
--- a/zh/option/partial/clip.md
+++ b/zh/option/partial/clip.md
@@ -2,6 +2,8 @@
#${prefix|default('#')} clip(boolean) = ${defaultClip|default(true)}
+<ExampleUIControlBoolean default="${defaultClip|default(true)}" />
+
{{ use: partial-version(
version=${version|default("4.4.0")}
) }}
diff --git a/zh/option/partial/cursor.md b/zh/option/partial/cursor.md
index f7e216d..9c39f8f 100644
--- a/zh/option/partial/cursor.md
+++ b/zh/option/partial/cursor.md
@@ -2,4 +2,6 @@
#${prefix|default('#')} cursor(string) = 'pointer'
+<ExampleUIControlEnum options="auto,pointer,move" default="pointer" />
+
鼠标悬浮时在图形元素上时鼠标的样式是什么。同 CSS 的 `cursor`。
diff --git a/zh/option/partial/large.md b/zh/option/partial/large.md
index c5f4875..8f7490b 100644
--- a/zh/option/partial/large.md
+++ b/zh/option/partial/large.md
@@ -1,6 +1,9 @@
{{target: partial-large }}
#${prefix} large(boolean) = ${defaultLarge|default(false)}
+
+<ExampleUIControlBoolean />
+
是否开启大数据量优化,在数据图形特别多而出现卡顿时候可以开启。
开启后配合 `largeThreshold` 在数据量大于指定阈值的时候对绘制进行优化。
@@ -8,4 +11,7 @@
缺点:优化后不能自定义设置单个数据项的样式。
#${prefix} largeThreshold(number) = ${defaultLargeThreshold|default(2000)}
+
+<ExampleUIControlNumber min="1" default="${defaultLargeThreshold|default(2000)}" />
+
开启绘制优化的阈值。
diff --git a/zh/option/partial/legend-hover-link.md b/zh/option/partial/legend-hover-link.md
index ff38219..a058e9e 100644
--- a/zh/option/partial/legend-hover-link.md
+++ b/zh/option/partial/legend-hover-link.md
@@ -1,3 +1,6 @@
{{ target: partial-legend-hover-link }}
## legendHoverLink(boolean) = true
+
+<ExampleUIControlBoolean default="true" />
+
是否启用[图例](~legend) hover 时的联动高亮。
diff --git a/zh/option/partial/rect-layout.md b/zh/option/partial/rect-layout.md
index de61f38..80ef349 100644
--- a/zh/option/partial/rect-layout.md
+++ b/zh/option/partial/rect-layout.md
@@ -10,6 +10,8 @@
#${prefix|default("#")} left(string|number) = ${defaultLeft|default("'auto'")}
+<ExampleUIControlPercent default="0%"/>
+
${componentName}组件离容器左侧的距离。
`left` 的值可以是像 `20` 这样的具体像素值,可以是像 `'20%'` 这样相对于容器高宽的百分比,也可以是 `'left'`, `'center'`, `'right'`。
@@ -18,6 +20,8 @@ ${componentName}组件离容器左侧的距离。
#${prefix|default("#")} top(string|number) = ${defaultTop|default("'auto'")}
+<ExampleUIControlPercent default="0%"/>
+
${componentName}组件离容器上侧的距离。
`top` 的值可以是像 `20` 这样的具体像素值,可以是像 `'20%'` 这样相对于容器高宽的百分比,也可以是 `'top'`, `'middle'`, `'bottom'`。
@@ -26,6 +30,8 @@ ${componentName}组件离容器上侧的距离。
#${prefix|default("#")} right(string|number) = ${defaultRight|default("'auto'")}
+<ExampleUIControlPercent default="0%"/>
+
${componentName}组件离容器右侧的距离。
`right` 的值可以是像 `20` 这样的具体像素值,可以是像 `'20%'` 这样相对于容器高宽的百分比。
@@ -34,6 +40,8 @@ ${componentName}组件离容器右侧的距离。
#${prefix|default("#")} bottom(string|number) = ${defaultBottom|default("'auto'")}
+<ExampleUIControlPercent default="0%"/>
+
${componentName}组件离容器下侧的距离。
bottom 的值可以是像 `20` 这样的具体像素值,可以是像 `'20%'` 这样相对于容器高宽的百分比。
diff --git a/zh/option/partial/roam.md b/zh/option/partial/roam.md
index 4b4b018..f2acf66 100644
--- a/zh/option/partial/roam.md
+++ b/zh/option/partial/roam.md
@@ -1,4 +1,7 @@
{{ target: partial-roam }}
+
+<ExampleUIControlEnum options="scale,move" />
+
是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 `'scale'` 或者 `'move'`。设置成 `true` 为都开启
{{ target: partial-scale-limit }}
diff --git a/zh/option/partial/show.md b/zh/option/partial/show.md
index 1b9c884..d49bfb4 100644
--- a/zh/option/partial/show.md
+++ b/zh/option/partial/show.md
@@ -1,3 +1,5 @@
{{target: partial-show}}
+<ExampleUIControlBoolean />
+
${componentName}组件是否显示,需要注意的是该属性只会影响组件是否展现,如果组件带有影响图表展示的功能,例如`dataRange`组件,`show`的开关并不会影响组件的功能。
diff --git a/zh/option/partial/silent.md b/zh/option/partial/silent.md
index bf13db7..ba86c8d 100644
--- a/zh/option/partial/silent.md
+++ b/zh/option/partial/silent.md
@@ -1,4 +1,6 @@
{{ target: partial-silent }}
${prefix}# silent(boolean) = false
+<ExampleUIControlBoolean />
+
图形是否不响应和触发鼠标事件,默认为 false,即响应和触发鼠标事件。
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org