Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

ChartLayer.js 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /**
  2. * @Author: Caven
  3. * @Date: 2020-02-02 15:59:37
  4. */
  5. import State from '@dc-modules/state/State'
  6. import { DomUtil } from '@dc-modules/utils'
  7. import { Layer } from '@dc-modules/layer'
  8. class ChartLayer extends Layer {
  9. constructor(id, option) {
  10. super(id)
  11. this._option = option
  12. this._delegate = DomUtil.create('div', 'dc-chart')
  13. this._setWrapperStyle()
  14. this._chart = undefined
  15. this.type = Layer.getLayerType('chart')
  16. this._state = State.INITIALIZED
  17. }
  18. get chart() {
  19. return this._chart
  20. }
  21. set show(show) {
  22. this._show = show
  23. if (this._delegate) {
  24. this._delegate.style.visibility = show ? 'visible' : 'hidden'
  25. }
  26. }
  27. get show() {
  28. return this._show
  29. }
  30. /**
  31. *
  32. * @private
  33. */
  34. _setWrapperStyle() {
  35. this._delegate.style.position = 'absolute'
  36. this._delegate.style.top = '0px'
  37. this._delegate.style.left = '0px'
  38. this._delegate.style.pointerEvents = 'none'
  39. this._delegate.setAttribute('id', this._id)
  40. }
  41. /**
  42. *
  43. * @param viewer
  44. */
  45. _onAdd(viewer) {
  46. if (!viewer || !echarts) {
  47. return
  48. }
  49. this._viewer = viewer
  50. this._delegate.style.width = viewer.canvas.width + 'px'
  51. this._delegate.style.height = viewer.canvas.height + 'px'
  52. viewer.dcContainer.appendChild(this._delegate)
  53. echarts.viewer = viewer
  54. viewer.scene.canvas.setAttribute('tabIndex', 0)
  55. this._chart = echarts.init(this._delegate)
  56. this._option && this._chart.setOption(this._option)
  57. this._state = State.ADDED
  58. }
  59. /**
  60. *
  61. * @private
  62. */
  63. _onRemove() {
  64. if (this._delegate && this._viewer) {
  65. this._viewer.dcContainer.removeChild(this._delegate)
  66. this._chart.dispose()
  67. this._state = State.REMOVED
  68. }
  69. }
  70. /**
  71. *
  72. * @param option
  73. * @returns {ChartLayer}
  74. */
  75. setOption(option) {
  76. this._option = option
  77. this._chart && this._chart.setOption(this._option)
  78. return this
  79. }
  80. }
  81. Layer.registerType('chart')
  82. export default ChartLayer