diff --git a/frontend/src/views/chart/components/shape-attr/LabelSelector.vue b/frontend/src/views/chart/components/shape-attr/LabelSelector.vue
index e94542193d..c5059bc83e 100644
--- a/frontend/src/views/chart/components/shape-attr/LabelSelector.vue
+++ b/frontend/src/views/chart/components/shape-attr/LabelSelector.vue
@@ -17,7 +17,7 @@
-
+
@@ -84,27 +84,35 @@ export default {
labelForm: JSON.parse(JSON.stringify(DEFAULT_LABEL)),
fontSize: [],
isSetting: false,
- labelPosition: [
+ labelPosition: [],
+ labelPositionPie: [
{ name: this.$t('chart.inside'), value: 'inside' },
- { name: this.$t('chart.outside'), value: 'outside' },
- { name: this.$t('chart.center'), value: 'center' },
- { name: this.$t('chart.text_pos_top'), value: 'top' },
- { name: this.$t('chart.text_pos_bottom'), value: 'bottom' },
+ { name: this.$t('chart.outside'), value: 'outside' }
+ ],
+ labelPositionH: [
{ name: this.$t('chart.text_pos_left'), value: 'left' },
+ { name: this.$t('chart.center'), value: 'inside' },
{ name: this.$t('chart.text_pos_right'), value: 'right' }
],
+ labelPositionV: [
+ { name: this.$t('chart.text_pos_top'), value: 'top' },
+ { name: this.$t('chart.center'), value: 'inside' },
+ { name: this.$t('chart.text_pos_bottom'), value: 'bottom' }
+ ],
predefineColors: COLOR_PANEL
}
},
watch: {
'chart': {
handler: function() {
+ this.initOptions()
this.initData()
}
}
},
mounted() {
this.init()
+ this.initOptions()
this.initData()
},
methods: {
@@ -140,6 +148,18 @@ export default {
this.isSetting = false
}
this.$emit('onLabelChange', this.labelForm)
+ },
+ initOptions() {
+ const type = this.chart.type
+ if (type) {
+ if (type.includes('horizontal')) {
+ this.labelPosition = this.labelPositionH
+ } else if (type.includes('pie')) {
+ this.labelPosition = this.labelPositionPie
+ } else {
+ this.labelPosition = this.labelPositionV
+ }
+ }
}
}
}
diff --git a/frontend/src/views/chart/components/shape-attr/LabelSelectorAntV.vue b/frontend/src/views/chart/components/shape-attr/LabelSelectorAntV.vue
index 52c90ecdf3..50d23e7abc 100644
--- a/frontend/src/views/chart/components/shape-attr/LabelSelectorAntV.vue
+++ b/frontend/src/views/chart/components/shape-attr/LabelSelectorAntV.vue
@@ -17,7 +17,7 @@
-
+
@@ -62,29 +62,35 @@ export default {
labelForm: JSON.parse(JSON.stringify(DEFAULT_LABEL)),
fontSize: [],
isSetting: false,
- labelPosition: [
- { name: this.$t('chart.inside'), value: 'middle' },
- { name: this.$t('chart.outside'), value: 'outside' },
- { name: this.$t('chart.center'), value: 'center' },
- { name: this.$t('chart.text_pos_top'), value: 'top' },
- { name: this.$t('chart.text_pos_bottom'), value: 'bottom' },
+ labelPosition: [],
+ labelPositionPie: [
+ { name: this.$t('chart.inside'), value: 'inner' },
+ { name: this.$t('chart.outside'), value: 'outer' }
+ ],
+ labelPositionH: [
{ name: this.$t('chart.text_pos_left'), value: 'left' },
+ { name: this.$t('chart.center'), value: 'middle' },
{ name: this.$t('chart.text_pos_right'), value: 'right' }
],
+ labelPositionV: [
+ { name: this.$t('chart.text_pos_top'), value: 'top' },
+ { name: this.$t('chart.center'), value: 'middle' },
+ { name: this.$t('chart.text_pos_bottom'), value: 'bottom' }
+ ],
predefineColors: COLOR_PANEL
}
},
watch: {
'chart': {
handler: function() {
- this.initLabelPosition()
+ this.initOptions()
this.initData()
}
}
},
mounted() {
this.init()
- this.initLabelPosition()
+ this.initOptions()
this.initData()
},
methods: {
@@ -121,22 +127,16 @@ export default {
}
this.$emit('onLabelChange', this.labelForm)
},
- initLabelPosition() {
- if (this.chart && this.chart.type && this.chart.type.includes('pie')) {
- this.labelPosition = [
- { name: this.$t('chart.inside'), value: 'inner' },
- { name: this.$t('chart.outside'), value: 'outer' }
- ]
- } else {
- this.labelPosition = [
- { name: this.$t('chart.inside'), value: 'middle' },
- { name: this.$t('chart.outside'), value: 'outside' },
- { name: this.$t('chart.center'), value: 'center' },
- { name: this.$t('chart.text_pos_top'), value: 'top' },
- { name: this.$t('chart.text_pos_bottom'), value: 'bottom' },
- { name: this.$t('chart.text_pos_left'), value: 'left' },
- { name: this.$t('chart.text_pos_right'), value: 'right' }
- ]
+ initOptions() {
+ const type = this.chart.type
+ if (type) {
+ if (type.includes('horizontal')) {
+ this.labelPosition = this.labelPositionH
+ } else if (type.includes('pie')) {
+ this.labelPosition = this.labelPositionPie
+ } else {
+ this.labelPosition = this.labelPositionV
+ }
}
}
}
diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue
index e1e89fb7a5..e76b1c5fd5 100644
--- a/frontend/src/views/chart/view/ChartEdit.vue
+++ b/frontend/src/views/chart/view/ChartEdit.vue
@@ -141,7 +141,7 @@
class="render-select"
style="width: 100px"
size="mini"
- @change="calcData(true,'chart',true,true)"
+ @change="changeChartType()"
>
@@ -2066,6 +2066,36 @@ export default {
reset() {
this.getData(this.param.id)
+ },
+
+ changeChartType() {
+ this.setChartDefaultOptions()
+ this.calcData(true, 'chart', true, true)
+ },
+
+ setChartDefaultOptions() {
+ const type = this.view.type
+ if (type.includes('pie')) {
+ if (this.view.render === 'echarts') {
+ this.view.customAttr.label.position = 'inside'
+ } else {
+ this.view.customAttr.label.position = 'inner'
+ }
+ } else if (type.includes('line')) {
+ this.view.customAttr.label.position = 'top'
+ } else if (type.includes('treemap')) {
+ if (this.view.render === 'echarts') {
+ this.view.customAttr.label.position = 'inside'
+ } else {
+ this.view.customAttr.label.position = 'middle'
+ }
+ } else {
+ if (this.view.render === 'echarts') {
+ this.view.customAttr.label.position = 'inside'
+ } else {
+ this.view.customAttr.label.position = 'middle'
+ }
+ }
}
}
}