adaptor.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.adaptor = exports.slider = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var common_1 = require("../../adaptor/common");
  7. var base_1 = require("../../adaptor/geometries/base");
  8. var constant_1 = require("../../constant");
  9. var plot_1 = require("../../core/plot");
  10. var utils_1 = require("../../utils");
  11. var utils_2 = require("./utils");
  12. /**
  13. * geometry 处理
  14. * @param params
  15. */
  16. function multiView(params) {
  17. var chart = params.chart, options = params.options;
  18. var views = options.views, legend = options.legend;
  19. (0, util_1.each)(views, function (v) {
  20. var region = v.region, data = v.data, meta = v.meta, axes = v.axes, coordinate = v.coordinate, interactions = v.interactions, annotations = v.annotations, tooltip = v.tooltip, geometries = v.geometries;
  21. // 1. 创建 view
  22. var viewOfG2 = chart.createView({
  23. region: region,
  24. });
  25. // 2. data
  26. viewOfG2.data(data);
  27. // 3. meta
  28. var scales = {};
  29. if (axes) {
  30. (0, util_1.each)(axes, function (axis, field) {
  31. scales[field] = (0, utils_1.pick)(axis, constant_1.AXIS_META_CONFIG_KEYS);
  32. });
  33. }
  34. scales = (0, utils_1.deepAssign)({}, meta, scales);
  35. viewOfG2.scale(scales);
  36. // 4. x y axis
  37. if (!axes) {
  38. viewOfG2.axis(false);
  39. }
  40. else {
  41. (0, util_1.each)(axes, function (axis, field) {
  42. viewOfG2.axis(field, axis);
  43. });
  44. }
  45. // 5. coordinate
  46. viewOfG2.coordinate(coordinate);
  47. // 6. geometry
  48. (0, util_1.each)(geometries, function (geometry) {
  49. var ext = (0, base_1.geometry)({
  50. chart: viewOfG2,
  51. options: geometry,
  52. }).ext;
  53. // adjust
  54. var adjust = geometry.adjust;
  55. if (adjust) {
  56. ext.geometry.adjust(adjust);
  57. }
  58. });
  59. // 7. interactions
  60. (0, util_1.each)(interactions, function (interaction) {
  61. if (interaction.enable === false) {
  62. viewOfG2.removeInteraction(interaction.type);
  63. }
  64. else {
  65. viewOfG2.interaction(interaction.type, interaction.cfg);
  66. }
  67. });
  68. // 8. annotations
  69. (0, util_1.each)(annotations, function (annotation) {
  70. viewOfG2.annotation()[annotation.type](tslib_1.__assign({}, annotation));
  71. });
  72. // 9. animation (先做动画)
  73. if (typeof v.animation === 'boolean') {
  74. viewOfG2.animate(false);
  75. }
  76. else {
  77. viewOfG2.animate(true);
  78. // 9.1 所有的 Geometry 都使用同一动画(各个图形如有区别,todo 自行覆盖)
  79. (0, util_1.each)(viewOfG2.geometries, function (g) {
  80. g.animate(v.animation);
  81. });
  82. }
  83. if (tooltip) {
  84. // 10. tooltip
  85. viewOfG2.interaction('tooltip');
  86. viewOfG2.tooltip(tooltip);
  87. }
  88. });
  89. // legend
  90. if (!legend) {
  91. chart.legend(false);
  92. }
  93. else {
  94. (0, util_1.each)(legend, function (l, field) {
  95. chart.legend(field, l);
  96. });
  97. }
  98. // tooltip
  99. chart.tooltip(options.tooltip);
  100. return params;
  101. }
  102. /**
  103. * 支持嵌套使用 g2plot 内置图表
  104. * @param params
  105. */
  106. function multiPlot(params) {
  107. var chart = params.chart, options = params.options;
  108. var plots = options.plots, _a = options.data, data = _a === void 0 ? [] : _a;
  109. (0, util_1.each)(plots, function (plot) {
  110. var type = plot.type, region = plot.region, _a = plot.options, options = _a === void 0 ? {} : _a, top = plot.top;
  111. var tooltip = options.tooltip;
  112. if (top) {
  113. (0, utils_2.execPlotAdaptor)(type, chart, tslib_1.__assign(tslib_1.__assign({}, options), { data: data }));
  114. return;
  115. }
  116. var viewOfG2 = chart.createView(tslib_1.__assign({ region: region }, (0, utils_1.pick)(options, plot_1.PLOT_CONTAINER_OPTIONS)));
  117. if (tooltip) {
  118. // 配置 tooltip 交互
  119. viewOfG2.interaction('tooltip');
  120. }
  121. (0, utils_2.execPlotAdaptor)(type, viewOfG2, tslib_1.__assign({ data: data }, options));
  122. });
  123. return params;
  124. }
  125. /**
  126. * 处理缩略轴的 adaptor (mix)
  127. * @param params
  128. */
  129. function slider(params) {
  130. var chart = params.chart, options = params.options;
  131. chart.option('slider', options.slider);
  132. return params;
  133. }
  134. exports.slider = slider;
  135. /**
  136. * 图适配器
  137. * @param chart
  138. * @param options
  139. */
  140. function adaptor(params) {
  141. return (0, utils_1.flow)(common_1.animation, // 多 view 的图,动画配置放到最前面
  142. multiView, multiPlot, common_1.interaction, common_1.animation, common_1.theme, common_1.tooltip, slider, (0, common_1.annotation)()
  143. // ... 其他的 adaptor flow
  144. )(params);
  145. }
  146. exports.adaptor = adaptor;
  147. //# sourceMappingURL=adaptor.js.map