|
|
|
@ -3,50 +3,54 @@ import { debounce } from '@/utils' |
|
|
|
|
export default { |
|
|
|
|
data() { |
|
|
|
|
return { |
|
|
|
|
$_sidebarElm: null |
|
|
|
|
$_sidebarElm: null, |
|
|
|
|
$_resizeHandler: null |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
mounted() { |
|
|
|
|
this.$_initResizeEvent() |
|
|
|
|
this.$_initSidebarResizeEvent() |
|
|
|
|
}, |
|
|
|
|
beforeDestroy() { |
|
|
|
|
this.$_destroyResizeEvent() |
|
|
|
|
this.$_destroySidebarResizeEvent() |
|
|
|
|
this.initListener() |
|
|
|
|
}, |
|
|
|
|
activated() { |
|
|
|
|
this.$_initResizeEvent() |
|
|
|
|
this.$_initSidebarResizeEvent() |
|
|
|
|
if (!this.$_resizeHandler) { |
|
|
|
|
// avoid duplication init
|
|
|
|
|
this.initListener() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// when keep-alive chart activated, auto resize
|
|
|
|
|
this.resize() |
|
|
|
|
}, |
|
|
|
|
beforeDestroy() { |
|
|
|
|
this.destroyListener() |
|
|
|
|
}, |
|
|
|
|
deactivated() { |
|
|
|
|
this.$_destroyResizeEvent() |
|
|
|
|
this.$_destroySidebarResizeEvent() |
|
|
|
|
this.destroyListener() |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
$_resizeHandler() { |
|
|
|
|
return debounce(() => { |
|
|
|
|
if (this.chart) { |
|
|
|
|
this.chart.resize() |
|
|
|
|
} |
|
|
|
|
}, 100)() |
|
|
|
|
}, |
|
|
|
|
$_initResizeEvent() { |
|
|
|
|
window.addEventListener('resize', this.$_resizeHandler) |
|
|
|
|
}, |
|
|
|
|
$_destroyResizeEvent() { |
|
|
|
|
window.removeEventListener('resize', this.$_resizeHandler) |
|
|
|
|
}, |
|
|
|
|
// use $_ for mixins properties
|
|
|
|
|
// https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
|
|
|
|
|
$_sidebarResizeHandler(e) { |
|
|
|
|
if (e.propertyName === 'width') { |
|
|
|
|
this.$_resizeHandler() |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
$_initSidebarResizeEvent() { |
|
|
|
|
initListener() { |
|
|
|
|
this.$_resizeHandler = debounce(() => { |
|
|
|
|
this.resize() |
|
|
|
|
}, 100) |
|
|
|
|
window.addEventListener('resize', this.$_resizeHandler) |
|
|
|
|
|
|
|
|
|
this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] |
|
|
|
|
this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) |
|
|
|
|
}, |
|
|
|
|
$_destroySidebarResizeEvent() { |
|
|
|
|
destroyListener() { |
|
|
|
|
window.removeEventListener('resize', this.$_resizeHandler) |
|
|
|
|
this.$_resizeHandler = null |
|
|
|
|
|
|
|
|
|
this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) |
|
|
|
|
}, |
|
|
|
|
resize() { |
|
|
|
|
const { chart } = this |
|
|
|
|
chart && chart.resize() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|