utils.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import { __read } from "tslib";
  2. import { Marker } from '../marker';
  3. import { toPrecision } from '../../util';
  4. /**
  5. * 将值转换至步长tick上
  6. */
  7. export function getStepValueByValue(value, step, min) {
  8. var count = Math.round((value - min) / step);
  9. return min + count * step;
  10. }
  11. export function hiddenHandle(x, y, r) {
  12. // 长宽比
  13. var ratio = 1.4;
  14. var diffY = ratio * r;
  15. return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x + r, y + diffY], ['L', x - r, y + diffY], ['Z']];
  16. }
  17. // 控制手柄
  18. var HANDLE_HEIGHT_RATIO = 1.4;
  19. var HANDLE_TRIANGLE_RATIO = 0.4;
  20. // 纵向手柄
  21. export function verticalHandle(x, y, r) {
  22. var width = r;
  23. var height = width * HANDLE_HEIGHT_RATIO;
  24. var halfWidth = width / 2;
  25. var oneSixthWidth = width / 6;
  26. var triangleX = x + height * HANDLE_TRIANGLE_RATIO;
  27. return [
  28. ['M', x, y],
  29. ['L', triangleX, y + halfWidth],
  30. ['L', x + height, y + halfWidth],
  31. ['L', x + height, y - halfWidth],
  32. ['L', triangleX, y - halfWidth],
  33. ['Z'],
  34. // 绘制两条横线
  35. ['M', triangleX, y + oneSixthWidth],
  36. ['L', x + height - 2, y + oneSixthWidth],
  37. ['M', triangleX, y - oneSixthWidth],
  38. ['L', x + height - 2, y - oneSixthWidth],
  39. ];
  40. }
  41. // 横向手柄
  42. export function horizontalHandle(x, y, r) {
  43. var width = r;
  44. var height = width * HANDLE_HEIGHT_RATIO;
  45. var halfWidth = width / 2;
  46. var oneSixthWidth = width / 6;
  47. var triangleY = y + height * HANDLE_TRIANGLE_RATIO;
  48. return [
  49. ['M', x, y],
  50. ['L', x - halfWidth, triangleY],
  51. ['L', x - halfWidth, y + height],
  52. ['L', x + halfWidth, y + height],
  53. ['L', x + halfWidth, triangleY],
  54. ['Z'],
  55. // 绘制两条竖线
  56. ['M', x - oneSixthWidth, triangleY],
  57. ['L', x - oneSixthWidth, y + height - 2],
  58. ['M', x + oneSixthWidth, triangleY],
  59. ['L', x + oneSixthWidth, y + height - 2],
  60. ];
  61. }
  62. Marker.registerSymbol('hiddenHandle', hiddenHandle);
  63. Marker.registerSymbol('verticalHandle', verticalHandle);
  64. Marker.registerSymbol('horizontalHandle', horizontalHandle);
  65. export var ifH = function (orientation, a, b) {
  66. if (orientation === void 0) { orientation = 'horizontal'; }
  67. return (orientation === 'horizontal' ? a : b);
  68. };
  69. // 具体逻辑还没看,@chushen
  70. export function getSafetySelections(domain, newSelection, oldSelection, precision) {
  71. var _a;
  72. if (precision === void 0) { precision = 4; }
  73. var _b = __read(domain, 2), min = _b[0], max = _b[1];
  74. var _c = __read(newSelection, 2), start = _c[0], end = _c[1];
  75. var _d = __read(oldSelection, 2), prevStart = _d[0], prevEnd = _d[1];
  76. var _e = __read([start, end], 2), startVal = _e[0], endVal = _e[1];
  77. var range = endVal - startVal;
  78. // 交换startVal endVal
  79. if (startVal > endVal) {
  80. _a = __read([endVal, startVal], 2), startVal = _a[0], endVal = _a[1];
  81. }
  82. // 超出范围就全选
  83. if (range > max - min) {
  84. return [min, max];
  85. }
  86. if (startVal < min) {
  87. if (prevStart === min && prevEnd === endVal) {
  88. return [min, endVal];
  89. }
  90. return [min, range + min];
  91. }
  92. if (endVal > max) {
  93. if (prevEnd === max && prevStart === startVal) {
  94. return [startVal, max];
  95. }
  96. return [max - range, max];
  97. }
  98. // 保留小数
  99. return [toPrecision(startVal, precision), toPrecision(endVal, precision)];
  100. }
  101. export function ifHorizontal(orientation, a, b) {
  102. if (orientation === void 0) { orientation = 'horizontal'; }
  103. return orientation === 'horizontal' ? a : b;
  104. }
  105. //# sourceMappingURL=utils.js.map