修复charts切换侧边栏或者缩放窗口显示bug
This commit is contained in:
		
							parent
							
								
									56339214b6
								
							
						
					
					
						commit
						bc65e59fcb
					
				@ -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()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user