axisRadar.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. var __rest = (this && this.__rest) || function (s, e) {
  3. var t = {};
  4. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
  5. t[p] = s[p];
  6. if (s != null && typeof Object.getOwnPropertySymbols === "function")
  7. for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  8. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
  9. t[p[i]] = s[p[i]];
  10. }
  11. return t;
  12. };
  13. Object.defineProperty(exports, "__esModule", { value: true });
  14. exports.AxisRadar = void 0;
  15. const coordinate_1 = require("../utils/coordinate");
  16. const axis_1 = require("./axis");
  17. function inferTitleTransform(orientation) {
  18. const internalOrientation = orientation % (Math.PI * 2);
  19. if (internalOrientation === Math.PI / 2) {
  20. return { titleTransform: 'translate(0, 50%)' };
  21. }
  22. if (internalOrientation > -Math.PI / 2 && internalOrientation < Math.PI / 2) {
  23. return { titleTransform: 'translate(50%, 0)' };
  24. }
  25. if (internalOrientation > Math.PI / 2 &&
  26. internalOrientation < (Math.PI * 3) / 2) {
  27. return { titleTransform: 'translate(-50%, 0)' };
  28. }
  29. return {};
  30. }
  31. function inferAxisStyle(options, theme, coordinate, value) {
  32. const { radar } = options;
  33. const { scales: [{ name }], } = value;
  34. const [startAngle, endAngle] = (0, coordinate_1.angleOf)(coordinate);
  35. const { axisRadar: radarTheme = {} } = theme;
  36. return Object.assign(Object.assign({}, radarTheme), { grid: name === 'position', gridConnect: 'line', gridControlAngles: new Array(radar.count).fill(0).map((_, i) => {
  37. const angle = (endAngle - startAngle) / radar.count;
  38. return angle * i;
  39. }) });
  40. }
  41. const AxisRadar = (options) => {
  42. const { important = {} } = options, restOptions = __rest(options, ["important"]);
  43. return (context) => {
  44. const { theme, coordinate, value } = context;
  45. return (0, axis_1.LinearAxis)(Object.assign(Object.assign(Object.assign({}, restOptions), inferTitleTransform(options.orientation)), { important: Object.assign(Object.assign({}, inferAxisStyle(options, theme, coordinate, value)), important) }))(context);
  46. };
  47. };
  48. exports.AxisRadar = AxisRadar;
  49. exports.AxisRadar.props = Object.assign(Object.assign({}, axis_1.LinearAxis.props), { defaultPosition: 'center' });
  50. //# sourceMappingURL=axisRadar.js.map