helper.js 1.7 KB

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