adaptor.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import { __rest } from "tslib";
  2. import { animation, interaction, scale, state, theme, tooltip } from '../../adaptor/common';
  3. import { interval } from '../../adaptor/geometries';
  4. import { pattern } from '../../adaptor/pattern';
  5. import { deepAssign, findGeometry, flow, transformLabel } from '../../utils';
  6. import { binHistogram } from '../../utils/transform/histogram';
  7. import { HISTOGRAM_X_FIELD, HISTOGRAM_Y_FIELD } from './constant';
  8. /**
  9. * geometry 处理
  10. * @param params
  11. */
  12. function geometry(params) {
  13. var chart = params.chart, options = params.options;
  14. var data = options.data, binField = options.binField, binNumber = options.binNumber, binWidth = options.binWidth, color = options.color, stackField = options.stackField, legend = options.legend, columnStyle = options.columnStyle;
  15. // 处理数据
  16. var plotData = binHistogram(data, binField, binWidth, binNumber, stackField);
  17. chart.data(plotData);
  18. var p = deepAssign({}, params, {
  19. options: {
  20. xField: HISTOGRAM_X_FIELD,
  21. yField: HISTOGRAM_Y_FIELD,
  22. seriesField: stackField,
  23. isStack: true,
  24. interval: {
  25. color: color,
  26. style: columnStyle,
  27. },
  28. },
  29. });
  30. interval(p);
  31. // 图例
  32. if (legend && stackField) {
  33. chart.legend(stackField, legend);
  34. }
  35. else {
  36. chart.legend(false);
  37. }
  38. return params;
  39. }
  40. /**
  41. * meta 配置
  42. * @param params
  43. */
  44. function meta(params) {
  45. var _a;
  46. var options = params.options;
  47. var xAxis = options.xAxis, yAxis = options.yAxis;
  48. return flow(scale((_a = {},
  49. _a[HISTOGRAM_X_FIELD] = xAxis,
  50. _a[HISTOGRAM_Y_FIELD] = yAxis,
  51. _a)))(params);
  52. }
  53. /**
  54. * axis 配置
  55. * @param params
  56. */
  57. function axis(params) {
  58. var chart = params.chart, options = params.options;
  59. var xAxis = options.xAxis, yAxis = options.yAxis;
  60. // 为 false 则是不显示轴
  61. if (xAxis === false) {
  62. chart.axis(HISTOGRAM_X_FIELD, false);
  63. }
  64. else {
  65. chart.axis(HISTOGRAM_X_FIELD, xAxis);
  66. }
  67. if (yAxis === false) {
  68. chart.axis(HISTOGRAM_Y_FIELD, false);
  69. }
  70. else {
  71. chart.axis(HISTOGRAM_Y_FIELD, yAxis);
  72. }
  73. return params;
  74. }
  75. /**
  76. * label 配置
  77. * @param params
  78. */
  79. function label(params) {
  80. var chart = params.chart, options = params.options;
  81. var label = options.label;
  82. var geometry = findGeometry(chart, 'interval');
  83. if (!label) {
  84. geometry.label(false);
  85. }
  86. else {
  87. var callback = label.callback, cfg = __rest(label, ["callback"]);
  88. geometry.label({
  89. fields: [HISTOGRAM_Y_FIELD],
  90. callback: callback,
  91. cfg: transformLabel(cfg),
  92. });
  93. }
  94. return params;
  95. }
  96. /**
  97. * 直方图适配器
  98. * @param chart
  99. * @param options
  100. */
  101. export function adaptor(params) {
  102. // flow 的方式处理所有的配置到 G2 API
  103. return flow(theme, pattern('columnStyle'), geometry, meta, axis, state, label, tooltip, interaction, animation)(params);
  104. }
  105. //# sourceMappingURL=adaptor.js.map