helper.js 1.6 KB

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