| /** * Licensed to the Apache Software Foundation (ASF) under one or more * |
| contributor license agreements. See the NOTICE file distributed with * this work |
| for additional information regarding copyright ownership. * The ASF licenses |
| this file to You under the Apache License, Version 2.0 * (the "License"); you |
| may not use this file except in compliance with * the License. You may obtain a |
| copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless |
| required by applicable law or agreed to in writing, software * distributed under |
| the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR |
| CONDITIONS OF ANY KIND, either express or implied. * See the License for the |
| specific language governing permissions and * limitations under the License. */ |
| |
| <template> |
| <div class="echarts" :style="`height:${height};width:${width};`"></div> |
| </template> |
| |
| <script lang="ts"> |
| import Vue from 'vue'; |
| import { Component, Prop, Watch } from 'vue-property-decorator'; |
| import echarts from 'echarts/lib/echarts'; |
| import { Action } from 'vuex-class'; |
| @Component |
| export default class RkEcharts extends Vue { |
| @Prop() private option: any; |
| @Prop() private clickEvent: any; |
| @Prop({ default: false }) private uncombine!: boolean; |
| @Prop({ default: '100%' }) private height!: string; |
| @Prop({ default: '100%' }) private width!: string; |
| @Action('CLEAR_CHARTS') private CLEAR_CHARTS: any; |
| private myChart: any = {}; |
| private mounted(): void { |
| this.drawEcharts(); |
| window.addEventListener('resize', this.myChart.resize); |
| } |
| private beforeDestroy(): void { |
| if (this.myChart.dispose) { |
| this.myChart.dispose(); |
| } |
| window.removeEventListener('resize', this.myChart.resize); |
| } |
| @Watch('option', { deep: true }) |
| private onoptionChanged(newVal: any, oldVal: any): void { |
| if (this.myChart) { |
| if (newVal) { |
| this.myChart.setOption(newVal, true); // clear cache |
| } else { |
| this.myChart.setOption(oldVal, true); |
| } |
| } else { |
| this.drawEcharts(); |
| } |
| } |
| private drawEcharts(): void { |
| const el: any = this.$el; |
| this.myChart = echarts.init(el, ''); |
| this.myChart.setOption(this.option); |
| this.myChart.on('click', (params: any) => { |
| this.clickEvent(params); |
| }); |
| } |
| } |
| </script> |
| <style></style> |