helper.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. "use strict";
  2. var TimeUtil = require('@antv/scale/lib/time-util');
  3. var Util = require('../util/common');
  4. module.exports = {
  5. getColDef: function getColDef(chart, field) {
  6. var colDef;
  7. if (chart.get('colDefs') && chart.get('colDefs')[field]) {
  8. colDef = chart.get('colDefs')[field];
  9. }
  10. return colDef;
  11. },
  12. getScale: function getScale(chart, field) {
  13. var scales = chart.get('scales');
  14. return scales[field];
  15. },
  16. getFieldRange: function getFieldRange(scale, limitRange, type) {
  17. if (!scale) return [0, 1];
  18. var minRatio = 0;
  19. var maxRatio = 0;
  20. if (type === 'linear') {
  21. var min = limitRange.min,
  22. max = limitRange.max;
  23. minRatio = (scale.min - min) / (max - min);
  24. maxRatio = (scale.max - min) / (max - min);
  25. } else {
  26. var originValues = limitRange;
  27. var values = scale.values || [];
  28. var firstIndex = originValues.indexOf(values[0]);
  29. var lastIndex = originValues.indexOf(values[values.length - 1]);
  30. minRatio = firstIndex / (originValues.length - 1);
  31. maxRatio = lastIndex / (originValues.length - 1);
  32. }
  33. return [minRatio, maxRatio];
  34. },
  35. getLimitRange: function getLimitRange(data, scale) {
  36. var result;
  37. var field = scale.field,
  38. type = scale.type;
  39. var values = Util.Array.values(data, field);
  40. if (type === 'linear') {
  41. result = Util.Array.getRange(values);
  42. if (scale.min < result.min) {
  43. result.min = scale.min;
  44. }
  45. if (scale.max > result.max) {
  46. result.max = scale.max;
  47. }
  48. } else if (type === 'timeCat') {
  49. Util.each(values, function (v, i) {
  50. values[i] = TimeUtil.toTimeStamp(v);
  51. });
  52. values.sort(function (v1, v2) {
  53. return v1 - v2;
  54. });
  55. result = values;
  56. } else {
  57. result = values;
  58. }
  59. return result;
  60. }
  61. };