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' + } + } } } }