cat.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { filter, isNil, isNumber, last } from '@antv/util';
  2. /**
  3. * 计算分类 ticks
  4. * @param cfg 度量的配置项
  5. * @returns 计算后的 ticks
  6. */
  7. export default function calculateCatTicks(cfg) {
  8. var values = cfg.values, tickInterval = cfg.tickInterval, tickCount = cfg.tickCount, showLast = cfg.showLast;
  9. if (isNumber(tickInterval)) {
  10. var ticks_1 = filter(values, function (__, i) { return i % tickInterval === 0; });
  11. var lastValue = last(values);
  12. if (showLast && last(ticks_1) !== lastValue) {
  13. ticks_1.push(lastValue);
  14. }
  15. return ticks_1;
  16. }
  17. var len = values.length;
  18. var min = cfg.min, max = cfg.max;
  19. if (isNil(min)) {
  20. min = 0;
  21. }
  22. if (isNil(max)) {
  23. max = values.length - 1;
  24. }
  25. if (!isNumber(tickCount) || tickCount >= len)
  26. return values.slice(min, max + 1);
  27. if (tickCount <= 0 || max <= 0)
  28. return [];
  29. var interval = tickCount === 1 ? len : Math.floor(len / (tickCount - 1));
  30. var ticks = [];
  31. var idx = min;
  32. for (var i = 0; i < tickCount; i++) {
  33. if (idx >= max)
  34. break;
  35. idx = Math.min(min + i * interval, max);
  36. if (i === tickCount - 1 && showLast)
  37. ticks.push(values[max]);
  38. else
  39. ticks.push(values[idx]);
  40. }
  41. return ticks;
  42. }
  43. //# sourceMappingURL=cat.js.map