render-sider.js 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import { size, valuesOfKey } from '@antv/util';
  2. import { isBetween } from '../../../utils';
  3. /**
  4. * 右侧 View 进行 slider 过滤
  5. * 由于双轴图是多 View , 需要监听左侧 Slider 的 change 事件来同步右侧 View
  6. * @param { View } view 右侧视图
  7. * @param { number[] } sliderValue 滑块当前值
  8. * @returns void
  9. */
  10. export var doSliderFilter = function (view, sliderValue) {
  11. var min = sliderValue[0], max = sliderValue[1];
  12. var data = view.getOptions().data;
  13. var xScale = view.getXScale();
  14. var dataSize = size(data);
  15. if (!xScale || !dataSize) {
  16. return;
  17. }
  18. var isHorizontal = true;
  19. var values = valuesOfKey(data, xScale.field);
  20. var xValues = isHorizontal ? values : values.reverse();
  21. var xTickCount = size(xValues);
  22. var minIndex = Math.floor(min * (xTickCount - 1));
  23. var maxIndex = Math.floor(max * (xTickCount - 1));
  24. // 增加 x 轴的过滤器
  25. view.filter(xScale.field, function (value) {
  26. var idx = xValues.indexOf(value);
  27. return idx > -1 ? isBetween(idx, minIndex, maxIndex) : true;
  28. });
  29. view.getRootView().render(true);
  30. };
  31. //# sourceMappingURL=render-sider.js.map