| | |
| | | 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()
|
| | | }
|
| | | }
|
| | | }
|