adaptor.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import { animation, annotation, interaction, slider, theme } from '../../adaptor/common';
  2. import { schema } from '../../adaptor/geometries';
  3. import { AXIS_META_CONFIG_KEYS } from '../../constant';
  4. import { deepAssign, flow, pick } from '../../utils';
  5. import { TREND_DOWN, TREND_FIELD, TREND_UP, Y_FIELD } from './constant';
  6. import { getStockData } from './utils';
  7. /**
  8. * 图表配置处理
  9. * @param params
  10. */
  11. function geometry(params) {
  12. var chart = params.chart, options = params.options;
  13. var yField = options.yField;
  14. var data = options.data, risingFill = options.risingFill, fallingFill = options.fallingFill, tooltip = options.tooltip, stockStyle = options.stockStyle;
  15. chart.data(getStockData(data, yField));
  16. var tooltipOptions = tooltip;
  17. if (tooltipOptions !== false) {
  18. tooltipOptions = deepAssign({}, { fields: yField }, tooltipOptions);
  19. }
  20. schema(deepAssign({}, params, {
  21. options: {
  22. schema: {
  23. shape: 'candle',
  24. color: [risingFill, fallingFill],
  25. style: stockStyle,
  26. },
  27. yField: Y_FIELD,
  28. seriesField: TREND_FIELD,
  29. rawFields: yField,
  30. tooltip: tooltipOptions,
  31. },
  32. }));
  33. return params;
  34. }
  35. /**
  36. * meta 配置
  37. * @param params
  38. */
  39. export function meta(params) {
  40. var _a, _b;
  41. var chart = params.chart, options = params.options;
  42. var meta = options.meta, xAxis = options.xAxis, yAxis = options.yAxis, xField = options.xField;
  43. var baseMeta = (_a = {},
  44. _a[xField] = {
  45. type: 'timeCat',
  46. tickCount: 6,
  47. },
  48. _a[TREND_FIELD] = {
  49. values: [TREND_UP, TREND_DOWN],
  50. },
  51. _a);
  52. var scales = deepAssign(baseMeta, meta, (_b = {},
  53. _b[xField] = pick(xAxis, AXIS_META_CONFIG_KEYS),
  54. _b[Y_FIELD] = pick(yAxis, AXIS_META_CONFIG_KEYS),
  55. _b));
  56. chart.scale(scales);
  57. return params;
  58. }
  59. /**
  60. * axis 配置
  61. * @param params
  62. */
  63. export function axis(params) {
  64. var chart = params.chart, options = params.options;
  65. var xAxis = options.xAxis, yAxis = options.yAxis, xField = options.xField;
  66. // 为 false 则是不显示轴
  67. if (xAxis === false) {
  68. chart.axis(xField, false);
  69. }
  70. else {
  71. chart.axis(xField, xAxis);
  72. }
  73. if (yAxis === false) {
  74. chart.axis(Y_FIELD, false);
  75. }
  76. else {
  77. chart.axis(Y_FIELD, yAxis);
  78. }
  79. return params;
  80. }
  81. /**
  82. * tooltip 配置
  83. * @param params
  84. */
  85. export function tooltip(params) {
  86. var chart = params.chart, options = params.options;
  87. var tooltip = options.tooltip;
  88. if (tooltip !== false) {
  89. chart.tooltip(tooltip);
  90. }
  91. else {
  92. chart.tooltip(false);
  93. }
  94. return params;
  95. }
  96. /**
  97. * legend 配置
  98. * @param params
  99. */
  100. export function legend(params) {
  101. var chart = params.chart, options = params.options;
  102. var legend = options.legend;
  103. if (legend) {
  104. chart.legend(TREND_FIELD, legend);
  105. }
  106. else if (legend === false) {
  107. chart.legend(false);
  108. }
  109. return params;
  110. }
  111. /**
  112. * K线图适配器
  113. * @param chart
  114. * @param options
  115. */
  116. export function adaptor(params) {
  117. // flow 的方式处理所有的配置到 G2 API
  118. flow(theme, geometry, meta, axis, tooltip, legend, interaction, animation, annotation(), slider)(params);
  119. }
  120. //# sourceMappingURL=adaptor.js.map