utils.js 4.1 KB

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