ticks.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.renderTicks = exports.getTickPoints = exports.getTickVector = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var animation_1 = require("../../../animation");
  7. var util_2 = require("../../../util");
  8. var constant_1 = require("../constant");
  9. var line_1 = require("./line");
  10. var utils_1 = require("./utils");
  11. function getTickVector(value, attr) {
  12. return (0, utils_1.getDirectionVector)(value, attr.tickDirection, attr);
  13. }
  14. exports.getTickVector = getTickVector;
  15. exports.getTickPoints = (0, util_1.memoize)(function (unitVector, tickLength) {
  16. var _a = tslib_1.__read(unitVector, 2), dx = _a[0], dy = _a[1];
  17. return [
  18. [0, 0],
  19. [dx * tickLength, dy * tickLength],
  20. ];
  21. }, function (unitVector, tickLength) { return tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(unitVector), false), [tickLength], false).join(); });
  22. function getTickLineLayout(datum, index, data, tickVector, attr) {
  23. var tickLength = attr.tickLength;
  24. var _a = tslib_1.__read((0, exports.getTickPoints)(tickVector, (0, util_2.getCallbackValue)(tickLength, [datum, index, data])), 2), _b = tslib_1.__read(_a[0], 2), x1 = _b[0], y1 = _b[1], _c = tslib_1.__read(_a[1], 2), x2 = _c[0], y2 = _c[1];
  25. return { x1: x1, x2: x2, y1: y1, y2: y2 };
  26. }
  27. function createTickEl(container, datum, index, data, attr) {
  28. var formatter = attr.tickFormatter;
  29. var tickVector = getTickVector(datum.value, attr);
  30. var el = 'line';
  31. if ((0, util_1.isFunction)(formatter))
  32. el = function () { return (0, util_2.getCallbackValue)(formatter, [datum, index, data, tickVector]); };
  33. return container.append(el).attr('className', constant_1.CLASS_NAMES.tickItem.name);
  34. }
  35. function applyTickStyle(datum, index, data, tick, group, attr, style) {
  36. var tickVector = getTickVector(datum.value, attr);
  37. var _a = getTickLineLayout(datum, index, data, tickVector, attr), x1 = _a.x1, x2 = _a.x2, y1 = _a.y1, y2 = _a.y2;
  38. var _b = tslib_1.__read((0, util_2.splitStyle)((0, utils_1.getCallbackStyle)(style, [datum, index, data, tickVector])), 2), tickStyle = _b[0], groupStyle = _b[1];
  39. tick.node().nodeName === 'line' && tick.styles(tslib_1.__assign({ x1: x1, x2: x2, y1: y1, y2: y2 }, tickStyle));
  40. group.attr(groupStyle);
  41. tick.styles(tickStyle);
  42. }
  43. function createTick(datum, index, data, attr, tickAttr, animate) {
  44. var tick = createTickEl((0, util_2.select)(this), datum, index, data, attr);
  45. applyTickStyle(datum, index, data, tick, this, attr, tickAttr);
  46. var _a = tslib_1.__read((0, line_1.getValuePos)(datum.value, attr), 2), x = _a[0], y = _a[1];
  47. return (0, animation_1.transition)(this, { x: x, y: y }, animate);
  48. }
  49. function renderTicks(container, axisData, attr, animate) {
  50. var finalData = (0, utils_1.filterExec)(axisData, attr.tickFilter);
  51. var tickAttr = (0, util_2.subStyleProps)(attr, 'tick');
  52. return container
  53. .selectAll(constant_1.CLASS_NAMES.tick.class)
  54. .data(finalData, function (d) { return d.id || d.label; })
  55. .join(function (enter) {
  56. return enter
  57. .append('g')
  58. .attr('className', constant_1.CLASS_NAMES.tick.name)
  59. .transition(function (datum, index) {
  60. return createTick.call(this, datum, index, finalData, attr, tickAttr, false);
  61. });
  62. }, function (update) {
  63. return update.transition(function (datum, index) {
  64. this.removeChildren();
  65. return createTick.call(this, datum, index, finalData, attr, tickAttr, animate.update);
  66. });
  67. }, function (exit) {
  68. return exit.transition(function () {
  69. var _this = this;
  70. var animation = (0, animation_1.fadeOut)(this, animate.exit);
  71. (0, animation_1.onAnimateFinished)(animation, function () { return _this.remove(); });
  72. return animation;
  73. });
  74. })
  75. .transitions();
  76. }
  77. exports.renderTicks = renderTicks;
  78. //# sourceMappingURL=ticks.js.map