render-sider.js 1.3 KB

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