TickUtils.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { getAngledRectangleWidth } from './CartesianUtils';
  2. import { getEveryNthWithCondition } from './getEveryNthWithCondition';
  3. export function getAngledTickWidth(contentSize, unitSize, angle) {
  4. var size = {
  5. width: contentSize.width + unitSize.width,
  6. height: contentSize.height + unitSize.height
  7. };
  8. return getAngledRectangleWidth(size, angle);
  9. }
  10. export function getTickBoundaries(viewBox, sign, sizeKey) {
  11. var isWidth = sizeKey === 'width';
  12. var x = viewBox.x,
  13. y = viewBox.y,
  14. width = viewBox.width,
  15. height = viewBox.height;
  16. if (sign === 1) {
  17. return {
  18. start: isWidth ? x : y,
  19. end: isWidth ? x + width : y + height
  20. };
  21. }
  22. return {
  23. start: isWidth ? x + width : y + height,
  24. end: isWidth ? x : y
  25. };
  26. }
  27. export function isVisible(sign, tickPosition, getSize, start, end) {
  28. /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating
  29. * the tick's size. */
  30. if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {
  31. return false;
  32. }
  33. var size = getSize();
  34. return sign * (tickPosition - sign * size / 2 - start) >= 0 && sign * (tickPosition + sign * size / 2 - end) <= 0;
  35. }
  36. export function getNumberIntervalTicks(ticks, interval) {
  37. return getEveryNthWithCondition(ticks, interval + 1);
  38. }