From c398ee0ddc88579beabebe1324573c08115488b3 Mon Sep 17 00:00:00 2001
From: Pan <panfree23@gmail.com>
Date: Tue, 13 Mar 2018 18:36:11 +0800
Subject: [PATCH] perf[Charts]: add resize mixin

---
 src/components/Charts/keyboard.vue     |  2 ++
 src/components/Charts/lineMarker.vue   |  2 ++
 src/components/Charts/mixChart.vue     |  3 ++-
 src/components/Charts/mixins/resize.js | 15 +++++++++++++++
 4 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 src/components/Charts/mixins/resize.js

diff --git a/src/components/Charts/keyboard.vue b/src/components/Charts/keyboard.vue
index 4c2a0bbd..4b1bd499 100644
--- a/src/components/Charts/keyboard.vue
+++ b/src/components/Charts/keyboard.vue
@@ -4,8 +4,10 @@
 
 <script>
 import echarts from 'echarts'
+import resize from './mixins/resize'
 
 export default {
+  mixins: [resize],
   props: {
     className: {
       type: String,
diff --git a/src/components/Charts/lineMarker.vue b/src/components/Charts/lineMarker.vue
index e8dce6da..6ca7611f 100644
--- a/src/components/Charts/lineMarker.vue
+++ b/src/components/Charts/lineMarker.vue
@@ -4,8 +4,10 @@
 
 <script>
 import echarts from 'echarts'
+import resize from './mixins/resize'
 
 export default {
+  mixins: [resize],
   props: {
     className: {
       type: String,
diff --git a/src/components/Charts/mixChart.vue b/src/components/Charts/mixChart.vue
index 6454dd36..be382be0 100644
--- a/src/components/Charts/mixChart.vue
+++ b/src/components/Charts/mixChart.vue
@@ -4,8 +4,10 @@
 
 <script>
 import echarts from 'echarts'
+import resize from './mixins/resize'
 
 export default {
+  mixins: [resize],
   props: {
     className: {
       type: String,
@@ -31,7 +33,6 @@ export default {
   },
   mounted() {
     this.initChart()
-    this.chart = null
   },
   beforeDestroy() {
     if (!this.chart) {
diff --git a/src/components/Charts/mixins/resize.js b/src/components/Charts/mixins/resize.js
new file mode 100644
index 00000000..254e9052
--- /dev/null
+++ b/src/components/Charts/mixins/resize.js
@@ -0,0 +1,15 @@
+import { debounce } from '@/utils'
+
+export default {
+  mounted() {
+    this.__resizeHanlder = debounce(() => {
+      if (this.chart) {
+        this.chart.resize()
+      }
+    }, 100)
+    window.addEventListener('resize', this.__resizeHanlder)
+  },
+  beforeDestroy() {
+    window.removeEventListener('resize', this.__resizeHanlder)
+  }
+}
-- 
GitLab