Cartesian.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. var zrUtil = require("zrender/lib/core/util");
  2. /**
  3. * Cartesian coordinate system
  4. * @module echarts/coord/Cartesian
  5. *
  6. */
  7. function dimAxisMapper(dim) {
  8. return this._axes[dim];
  9. }
  10. /**
  11. * @alias module:echarts/coord/Cartesian
  12. * @constructor
  13. */
  14. var Cartesian = function (name) {
  15. this._axes = {};
  16. this._dimList = [];
  17. /**
  18. * @type {string}
  19. */
  20. this.name = name || '';
  21. };
  22. Cartesian.prototype = {
  23. constructor: Cartesian,
  24. type: 'cartesian',
  25. /**
  26. * Get axis
  27. * @param {number|string} dim
  28. * @return {module:echarts/coord/Cartesian~Axis}
  29. */
  30. getAxis: function (dim) {
  31. return this._axes[dim];
  32. },
  33. /**
  34. * Get axes list
  35. * @return {Array.<module:echarts/coord/Cartesian~Axis>}
  36. */
  37. getAxes: function () {
  38. return zrUtil.map(this._dimList, dimAxisMapper, this);
  39. },
  40. /**
  41. * Get axes list by given scale type
  42. */
  43. getAxesByScale: function (scaleType) {
  44. scaleType = scaleType.toLowerCase();
  45. return zrUtil.filter(this.getAxes(), function (axis) {
  46. return axis.scale.type === scaleType;
  47. });
  48. },
  49. /**
  50. * Add axis
  51. * @param {module:echarts/coord/Cartesian.Axis}
  52. */
  53. addAxis: function (axis) {
  54. var dim = axis.dim;
  55. this._axes[dim] = axis;
  56. this._dimList.push(dim);
  57. },
  58. /**
  59. * Convert data to coord in nd space
  60. * @param {Array.<number>|Object.<string, number>} val
  61. * @return {Array.<number>|Object.<string, number>}
  62. */
  63. dataToCoord: function (val) {
  64. return this._dataCoordConvert(val, 'dataToCoord');
  65. },
  66. /**
  67. * Convert coord in nd space to data
  68. * @param {Array.<number>|Object.<string, number>} val
  69. * @return {Array.<number>|Object.<string, number>}
  70. */
  71. coordToData: function (val) {
  72. return this._dataCoordConvert(val, 'coordToData');
  73. },
  74. _dataCoordConvert: function (input, method) {
  75. var dimList = this._dimList;
  76. var output = input instanceof Array ? [] : {};
  77. for (var i = 0; i < dimList.length; i++) {
  78. var dim = dimList[i];
  79. var axis = this._axes[dim];
  80. output[dim] = axis[method](input[dim]);
  81. }
  82. return output;
  83. }
  84. };
  85. var _default = Cartesian;
  86. module.exports = _default;