update-scale.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. "use strict";
  2. exports.__esModule = true;
  3. exports.updateLinearScale = updateLinearScale;
  4. exports.updateCatScale = updateCatScale;
  5. exports["default"] = void 0;
  6. var _helper = require("../helper");
  7. var _common = require("../../util/common");
  8. function updateLinearScale(field, min, max) {
  9. var chart = this.chart;
  10. var scale = (0, _helper.getScale)(chart, field); // const colDef = Helper.getColDef(chart, field);
  11. // chart.scale(field, Util.mix({}, colDef, {
  12. // min,
  13. // max,
  14. // nice: false
  15. // }));
  16. scale.change({
  17. min: min,
  18. max: max,
  19. nice: false
  20. });
  21. }
  22. function updateCatScale(field, newValues, ticks, values, minIndex, maxIndex) {
  23. var chart = this.chart; // const colDef = Helper.getColDef(chart, field);
  24. var scale = (0, _helper.getScale)(chart, field);
  25. scale.change({
  26. values: newValues,
  27. ticks: ticks,
  28. scale: function scale(value) {
  29. if (this.type === 'timeCat') {
  30. value = (0, _common.toTimeStamp)(value);
  31. }
  32. var rangeMin = this.rangeMin();
  33. var rangeMax = this.rangeMax();
  34. var range = rangeMax - rangeMin;
  35. var min;
  36. var max;
  37. var percent;
  38. var currentIndex = values.indexOf(value); // 在完整数据集中的索引值
  39. if (currentIndex >= 0 && currentIndex < minIndex) {
  40. // 不在范围内,左侧数据
  41. max = rangeMin > 0 ? -0.1 : rangeMin - 0.1;
  42. min = max - range;
  43. percent = currentIndex / minIndex;
  44. } else if (currentIndex >= 0 && currentIndex > maxIndex) {
  45. // 不在范围内,右侧数据
  46. min = rangeMax < 1 ? 1.1 : rangeMax + 0.1;
  47. max = min + range;
  48. percent = (currentIndex - maxIndex - 1) / (values.length - 1 - maxIndex);
  49. } else {
  50. // 数值在当前 this.values 范围内
  51. var index = this.translate(value);
  52. if (this.values.length === 1) {
  53. percent = index;
  54. } else {
  55. percent = index / (this.values.length - 1);
  56. }
  57. min = rangeMin;
  58. max = rangeMax;
  59. }
  60. return min + percent * (max - min);
  61. },
  62. getTicks: function getTicks() {
  63. var self = this;
  64. var ticks = this.ticks;
  65. var rst = [];
  66. (0, _common.each)(ticks, function (tick) {
  67. var obj;
  68. if ((0, _common.isObject)(tick)) {
  69. obj = tick;
  70. } else {
  71. var value = self.scale(tick);
  72. value = value >= 0 && value <= 1 ? value : NaN;
  73. obj = {
  74. text: (0, _common.isString)(tick) ? tick : self.getText(tick),
  75. value: value,
  76. tickValue: tick // 用于坐标轴上文本动画时确定前后帧的对应关系
  77. };
  78. }
  79. rst.push(obj);
  80. });
  81. return rst;
  82. }
  83. });
  84. }
  85. var _default = {
  86. updateLinearScale: updateLinearScale,
  87. updateCatScale: updateCatScale
  88. };
  89. exports["default"] = _default;