@antv/f2
Version: 
Charts for mobile visualization.
48 lines (47 loc) • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = calculateCatTicks;
var _util = require("@antv/util");
/**
 * 计算分类 ticks
 * @param cfg 度量的配置项
 * @returns 计算后的 ticks
 */
function calculateCatTicks(cfg) {
  var values = cfg.values,
    tickInterval = cfg.tickInterval,
    tickCount = cfg.tickCount,
    showLast = cfg.showLast;
  if ((0, _util.isNumber)(tickInterval)) {
    var ticks_1 = (0, _util.filter)(values, function (__, i) {
      return i % tickInterval === 0;
    });
    var lastValue = (0, _util.last)(values);
    if (showLast && (0, _util.last)(ticks_1) !== lastValue) {
      ticks_1.push(lastValue);
    }
    return ticks_1;
  }
  var len = values.length;
  var min = cfg.min,
    max = cfg.max;
  if ((0, _util.isNil)(min)) {
    min = 0;
  }
  if ((0, _util.isNil)(max)) {
    max = values.length - 1;
  }
  if (!(0, _util.isNumber)(tickCount) || tickCount >= len) return values.slice(min, max + 1);
  if (tickCount <= 0 || max <= 0) return [];
  var interval = tickCount === 1 ? len : Math.floor(len / (tickCount - 1));
  var ticks = [];
  var idx = min;
  for (var i = 0; i < tickCount; i++) {
    if (idx >= max) break;
    idx = Math.min(min + i * interval, max);
    if (i === tickCount - 1 && showLast) ticks.push(values[max]);else ticks.push(values[idx]);
  }
  return ticks;
}