grid.js 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.renderGrid = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var util_2 = require("../../../util");
  7. var grid_1 = require("../../grid");
  8. var constant_1 = require("../constant");
  9. var line_1 = require("./line");
  10. var utils_1 = require("./utils");
  11. function getGridVector(value, attr) {
  12. return (0, utils_1.getDirectionVector)(value, attr.gridDirection, attr);
  13. }
  14. function getGridCenter(attr) {
  15. var type = attr.type, gridCenter = attr.gridCenter;
  16. if (type === 'linear')
  17. return gridCenter;
  18. return gridCenter || attr.center;
  19. }
  20. function renderStraight(data, attr) {
  21. var gridLength = attr.gridLength;
  22. return data.map(function (_a, index) {
  23. var value = _a.value;
  24. var _b = tslib_1.__read((0, line_1.getValuePos)(value, attr), 2), x = _b[0], y = _b[1];
  25. var _c = tslib_1.__read((0, util_2.scale)(getGridVector(value, attr), gridLength), 2), dx = _c[0], dy = _c[1];
  26. return {
  27. id: index,
  28. points: [
  29. [x, y],
  30. [x + dx, y + dy],
  31. ],
  32. };
  33. });
  34. }
  35. function renderSurround(data, attr) {
  36. var controlAngles = attr.gridControlAngles;
  37. var center = getGridCenter(attr);
  38. if (!center)
  39. throw new Error('grid center is not provide');
  40. if (data.length < 2)
  41. throw new Error('Invalid grid data');
  42. if (!controlAngles || controlAngles.length === 0)
  43. throw new Error('Invalid gridControlAngles');
  44. var _a = tslib_1.__read(center, 2), cx = _a[0], cy = _a[1];
  45. return data.map(function (_a, index) {
  46. var value = _a.value;
  47. var _b = tslib_1.__read((0, line_1.getValuePos)(value, attr), 2), sx = _b[0], sy = _b[1];
  48. var _c = tslib_1.__read([sx - cx, sy - cy], 2), dx = _c[0], dy = _c[1];
  49. var points = [];
  50. controlAngles.forEach(function (angle) {
  51. var angleInRad = (0, util_2.degToRad)(angle);
  52. var _a = tslib_1.__read([Math.cos(angleInRad), Math.sin(angleInRad)], 2), cosa = _a[0], sina = _a[1];
  53. var x = dx * cosa - dy * sina + cx;
  54. var y = dx * sina + dy * cosa + cy;
  55. points.push([x, y]);
  56. });
  57. return { points: points, id: index };
  58. });
  59. }
  60. function renderGrid(container, data, attr, animate) {
  61. var gridAttr = (0, util_2.subStyleProps)(attr, 'grid');
  62. var type = gridAttr.type, areaFill = gridAttr.areaFill;
  63. var center = getGridCenter(attr);
  64. var finalData = (0, utils_1.filterExec)(data, attr.gridFilter);
  65. var gridItems = type === 'segment' ? renderStraight(finalData, attr) : renderSurround(finalData, attr);
  66. var style = tslib_1.__assign(tslib_1.__assign({}, gridAttr), { center: center, areaFill: (0, util_1.isFunction)(areaFill)
  67. ? finalData.map(function (datum, index) { return (0, util_2.getCallbackValue)(areaFill, [datum, index, finalData]); })
  68. : areaFill, animate: animate, data: gridItems });
  69. return container
  70. .selectAll(constant_1.CLASS_NAMES.grid.class)
  71. .data([1])
  72. .join(function (enter) { return enter.append(function () { return new grid_1.Grid({ style: style }); }).attr('className', constant_1.CLASS_NAMES.grid.name); }, function (update) {
  73. return update.transition(function () {
  74. return this.update(style);
  75. });
  76. }, function (exit) { return exit.remove(); })
  77. .transitions();
  78. }
  79. exports.renderGrid = renderGrid;
  80. //# sourceMappingURL=grid.js.map