scroll-bar.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. "use strict";
  2. exports.__esModule = true;
  3. exports.init = init;
  4. exports.clear = clear;
  5. exports.changeData = changeData;
  6. exports.clearInner = clearInner;
  7. exports.afterGeomDraw = afterGeomDraw;
  8. exports["default"] = void 0;
  9. var _helper = require("../interaction/helper");
  10. var _common = require("../util/common");
  11. var DEFAULT_CFG = {
  12. mode: 'x',
  13. xStyle: {
  14. backgroundColor: 'rgba(202, 215, 239, .2)',
  15. fillerColor: 'rgba(202, 215, 239, .5)',
  16. size: 4,
  17. lineCap: 'round',
  18. offsetX: 0,
  19. offsetY: 8
  20. },
  21. yStyle: {
  22. backgroundColor: 'rgba(202, 215, 239, .2)',
  23. fillerColor: 'rgba(202, 215, 239, .5)',
  24. size: 4,
  25. lineCap: 'round',
  26. offsetX: 8,
  27. offsetY: 0
  28. }
  29. };
  30. function init(chart) {
  31. chart.set('_limitRange', {});
  32. chart.scrollBar = function (cfg) {
  33. if (cfg === true) {
  34. cfg = DEFAULT_CFG;
  35. } else if ((0, _common.isObject)(cfg)) {
  36. cfg = (0, _common.deepMix)({}, DEFAULT_CFG, cfg);
  37. }
  38. this.set('_scrollBarCfg', cfg);
  39. };
  40. }
  41. function clear(chart) {
  42. chart.set('_limitRange', {});
  43. }
  44. function changeData(chart) {
  45. chart.set('_limitRange', {});
  46. }
  47. function clearInner(chart) {
  48. var hBar = chart.get('_horizontalBar');
  49. var vBar = chart.get('_verticalBar');
  50. hBar && hBar.remove(true);
  51. vBar && vBar.remove(true);
  52. chart.set('_horizontalBar', null);
  53. chart.set('_verticalBar', null);
  54. }
  55. function afterGeomDraw(chart) {
  56. var scrollBarCfg = chart.get('_scrollBarCfg');
  57. if (!scrollBarCfg) return;
  58. var data = chart.get('data');
  59. var plotRange = chart.get('plotRange');
  60. var backPlot = chart.get('backPlot');
  61. var canvas = chart.get('canvas');
  62. var canvasHeight = canvas.get('height');
  63. var limitRange = chart.get('_limitRange');
  64. var mode = scrollBarCfg.mode;
  65. if ((0, _common.directionEnabled)(mode, 'x')) {
  66. var _scrollBarCfg$xStyle = scrollBarCfg.xStyle,
  67. offsetX = _scrollBarCfg$xStyle.offsetX,
  68. offsetY = _scrollBarCfg$xStyle.offsetY,
  69. lineCap = _scrollBarCfg$xStyle.lineCap,
  70. backgroundColor = _scrollBarCfg$xStyle.backgroundColor,
  71. fillerColor = _scrollBarCfg$xStyle.fillerColor,
  72. size = _scrollBarCfg$xStyle.size;
  73. var xScale = chart.getXScale();
  74. var xLimitRange = limitRange[xScale.field];
  75. if (!xLimitRange) {
  76. xLimitRange = (0, _helper.getLimitRange)(data, xScale);
  77. limitRange[xScale.field] = xLimitRange;
  78. }
  79. var currentRange = (0, _helper.getFieldRange)(xScale, xLimitRange, xScale.type);
  80. var horizontalBar = chart.get('_horizontalBar');
  81. var yPos = canvasHeight - size / 2 + offsetY;
  82. if (horizontalBar) {
  83. var progressLine = horizontalBar.get('children')[1];
  84. progressLine.attr({
  85. x1: Math.max(plotRange.bl.x + plotRange.width * currentRange[0] + offsetX, plotRange.bl.x),
  86. x2: Math.min(plotRange.bl.x + plotRange.width * currentRange[1] + offsetX, plotRange.br.x)
  87. });
  88. } else {
  89. horizontalBar = backPlot.addGroup({
  90. className: 'horizontalBar'
  91. });
  92. horizontalBar.addShape('line', {
  93. attrs: {
  94. x1: plotRange.bl.x + offsetX,
  95. y1: yPos,
  96. x2: plotRange.br.x + offsetX,
  97. y2: yPos,
  98. lineWidth: size,
  99. stroke: backgroundColor,
  100. lineCap: lineCap
  101. }
  102. });
  103. horizontalBar.addShape('line', {
  104. attrs: {
  105. x1: Math.max(plotRange.bl.x + plotRange.width * currentRange[0] + offsetX, plotRange.bl.x),
  106. y1: yPos,
  107. x2: Math.min(plotRange.bl.x + plotRange.width * currentRange[1] + offsetX, plotRange.br.x),
  108. y2: yPos,
  109. lineWidth: size,
  110. stroke: fillerColor,
  111. lineCap: lineCap
  112. }
  113. });
  114. chart.set('_horizontalBar', horizontalBar);
  115. }
  116. }
  117. if ((0, _common.directionEnabled)(mode, 'y')) {
  118. var _scrollBarCfg$yStyle = scrollBarCfg.yStyle,
  119. _offsetX = _scrollBarCfg$yStyle.offsetX,
  120. _offsetY = _scrollBarCfg$yStyle.offsetY,
  121. _lineCap = _scrollBarCfg$yStyle.lineCap,
  122. _backgroundColor = _scrollBarCfg$yStyle.backgroundColor,
  123. _fillerColor = _scrollBarCfg$yStyle.fillerColor,
  124. _size = _scrollBarCfg$yStyle.size;
  125. var yScale = chart.getYScales()[0];
  126. var yLimitRange = limitRange[yScale.field];
  127. if (!yLimitRange) {
  128. yLimitRange = (0, _helper.getLimitRange)(data, yScale);
  129. limitRange[yScale.field] = yLimitRange;
  130. }
  131. var _currentRange = (0, _helper.getFieldRange)(yScale, yLimitRange, yScale.type);
  132. var verticalBar = chart.get('_verticalBar');
  133. var xPos = _size / 2 + _offsetX;
  134. if (verticalBar) {
  135. var _progressLine = verticalBar.get('children')[1];
  136. _progressLine.attr({
  137. y1: Math.max(plotRange.tl.y + plotRange.height * _currentRange[0] + _offsetY, plotRange.tl.y),
  138. y2: Math.min(plotRange.tl.y + plotRange.height * _currentRange[1] + _offsetY, plotRange.bl.y)
  139. });
  140. } else {
  141. verticalBar = backPlot.addGroup({
  142. className: 'verticalBar'
  143. });
  144. verticalBar.addShape('line', {
  145. attrs: {
  146. x1: xPos,
  147. y1: plotRange.tl.y + _offsetY,
  148. x2: xPos,
  149. y2: plotRange.bl.y + _offsetY,
  150. lineWidth: _size,
  151. stroke: _backgroundColor,
  152. lineCap: _lineCap
  153. }
  154. });
  155. verticalBar.addShape('line', {
  156. attrs: {
  157. x1: xPos,
  158. y1: Math.max(plotRange.tl.y + plotRange.height * _currentRange[0] + _offsetY, plotRange.tl.y),
  159. x2: xPos,
  160. y2: Math.min(plotRange.tl.y + plotRange.height * _currentRange[1] + _offsetY, plotRange.bl.y),
  161. lineWidth: _size,
  162. stroke: _fillerColor,
  163. lineCap: _lineCap
  164. }
  165. });
  166. chart.set('_verticalBar', verticalBar);
  167. }
  168. }
  169. }
  170. var _default = {
  171. init: init,
  172. clear: clear,
  173. changeData: changeData,
  174. clearInner: clearInner,
  175. afterGeomDraw: afterGeomDraw
  176. };
  177. exports["default"] = _default;