prepareCustom.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. var zrUtil = require("zrender/lib/core/util");
  2. function dataToCoordSize(dataSize, dataItem) {
  3. // dataItem is necessary in log axis.
  4. return zrUtil.map(['Radius', 'Angle'], function (dim, dimIdx) {
  5. var axis = this['get' + dim + 'Axis']();
  6. var val = dataItem[dimIdx];
  7. var halfSize = dataSize[dimIdx] / 2;
  8. var method = 'dataTo' + dim;
  9. var result = axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis[method](val - halfSize) - axis[method](val + halfSize));
  10. if (dim === 'Angle') {
  11. result = result * Math.PI / 180;
  12. }
  13. return result;
  14. }, this);
  15. }
  16. function _default(coordSys) {
  17. var radiusAxis = coordSys.getRadiusAxis();
  18. var angleAxis = coordSys.getAngleAxis();
  19. var radius = radiusAxis.getExtent();
  20. radius[0] > radius[1] && radius.reverse();
  21. return {
  22. coordSys: {
  23. type: 'polar',
  24. cx: coordSys.cx,
  25. cy: coordSys.cy,
  26. r: radius[1],
  27. r0: radius[0]
  28. },
  29. api: {
  30. coord: zrUtil.bind(function (data) {
  31. var radius = radiusAxis.dataToRadius(data[0]);
  32. var angle = angleAxis.dataToAngle(data[1]);
  33. var coord = coordSys.coordToPoint([radius, angle]);
  34. coord.push(radius, angle * Math.PI / 180);
  35. return coord;
  36. }),
  37. size: zrUtil.bind(dataToCoordSize, coordSys)
  38. }
  39. };
  40. }
  41. module.exports = _default;