TimelineAxis.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. var zrUtil = require("zrender/lib/core/util");
  2. var Axis = require("../../coord/Axis");
  3. var axisHelper = require("../../coord/axisHelper");
  4. /**
  5. * Extend axis 2d
  6. * @constructor module:echarts/coord/cartesian/Axis2D
  7. * @extends {module:echarts/coord/cartesian/Axis}
  8. * @param {string} dim
  9. * @param {*} scale
  10. * @param {Array.<number>} coordExtent
  11. * @param {string} axisType
  12. * @param {string} position
  13. */
  14. var TimelineAxis = function (dim, scale, coordExtent, axisType) {
  15. Axis.call(this, dim, scale, coordExtent);
  16. /**
  17. * Axis type
  18. * - 'category'
  19. * - 'value'
  20. * - 'time'
  21. * - 'log'
  22. * @type {string}
  23. */
  24. this.type = axisType || 'value';
  25. /**
  26. * @private
  27. * @type {number}
  28. */
  29. this._autoLabelInterval;
  30. /**
  31. * Axis model
  32. * @param {module:echarts/component/TimelineModel}
  33. */
  34. this.model = null;
  35. };
  36. TimelineAxis.prototype = {
  37. constructor: TimelineAxis,
  38. /**
  39. * @public
  40. * @return {number}
  41. */
  42. getLabelInterval: function () {
  43. var timelineModel = this.model;
  44. var labelModel = timelineModel.getModel('label.normal');
  45. var labelInterval = labelModel.get('interval');
  46. if (labelInterval != null && labelInterval != 'auto') {
  47. return labelInterval;
  48. }
  49. var labelInterval = this._autoLabelInterval;
  50. if (!labelInterval) {
  51. labelInterval = this._autoLabelInterval = axisHelper.getAxisLabelInterval(zrUtil.map(this.scale.getTicks(), this.dataToCoord, this), axisHelper.getFormattedLabels(this, labelModel.get('formatter')), labelModel.getFont(), timelineModel.get('orient') === 'horizontal' ? 0 : 90, labelModel.get('rotate'));
  52. }
  53. return labelInterval;
  54. },
  55. /**
  56. * If label is ignored.
  57. * Automatically used when axis is category and label can not be all shown
  58. * @public
  59. * @param {number} idx
  60. * @return {boolean}
  61. */
  62. isLabelIgnored: function (idx) {
  63. if (this.type === 'category') {
  64. var labelInterval = this.getLabelInterval();
  65. return typeof labelInterval === 'function' && !labelInterval(idx, this.scale.getLabel(idx)) || idx % (labelInterval + 1);
  66. }
  67. }
  68. };
  69. zrUtil.inherits(TimelineAxis, Axis);
  70. var _default = TimelineAxis;
  71. module.exports = _default;