adaptor.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.adaptor = exports.meta = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var common_1 = require("../../adaptor/common");
  7. var geometries_1 = require("../../adaptor/geometries");
  8. var utils_1 = require("../../utils");
  9. var utils_2 = require("./utils");
  10. /**
  11. * geometry 处理
  12. * @param params
  13. */
  14. function geometry(params) {
  15. var chart = params.chart, options = params.options;
  16. var bulletStyle = options.bulletStyle, targetField = options.targetField, rangeField = options.rangeField, measureField = options.measureField, xField = options.xField, color = options.color, layout = options.layout, size = options.size, label = options.label;
  17. // 处理数据
  18. var _a = (0, utils_2.transformData)(options), min = _a.min, max = _a.max, ds = _a.ds;
  19. chart.data(ds);
  20. // rangeGeometry
  21. var r = (0, utils_1.deepAssign)({}, params, {
  22. options: {
  23. xField: xField,
  24. yField: rangeField,
  25. seriesField: 'rKey',
  26. isStack: true,
  27. label: (0, util_1.get)(label, 'range'),
  28. interval: {
  29. color: (0, util_1.get)(color, 'range'),
  30. style: (0, util_1.get)(bulletStyle, 'range'),
  31. size: (0, util_1.get)(size, 'range'),
  32. },
  33. },
  34. });
  35. (0, geometries_1.interval)(r);
  36. // 范围值的 tooltip 隐藏掉
  37. chart.geometries[0].tooltip(false);
  38. // measureGeometry
  39. var m = (0, utils_1.deepAssign)({}, params, {
  40. options: {
  41. xField: xField,
  42. yField: measureField,
  43. seriesField: 'mKey',
  44. isStack: true,
  45. label: (0, util_1.get)(label, 'measure'),
  46. interval: {
  47. color: (0, util_1.get)(color, 'measure'),
  48. style: (0, util_1.get)(bulletStyle, 'measure'),
  49. size: (0, util_1.get)(size, 'measure'),
  50. },
  51. },
  52. });
  53. (0, geometries_1.interval)(m);
  54. // targetGeometry
  55. var t = (0, utils_1.deepAssign)({}, params, {
  56. options: {
  57. xField: xField,
  58. yField: targetField,
  59. seriesField: 'tKey',
  60. label: (0, util_1.get)(label, 'target'),
  61. point: {
  62. color: (0, util_1.get)(color, 'target'),
  63. style: (0, util_1.get)(bulletStyle, 'target'),
  64. size: (0, util_1.isFunction)((0, util_1.get)(size, 'target'))
  65. ? function (data) { return (0, util_1.get)(size, 'target')(data) / 2; }
  66. : (0, util_1.get)(size, 'target') / 2,
  67. shape: layout === 'horizontal' ? 'line' : 'hyphen',
  68. },
  69. },
  70. });
  71. (0, geometries_1.point)(t);
  72. // 水平的时候,要转换坐标轴
  73. if (layout === 'horizontal') {
  74. chart.coordinate().transpose();
  75. }
  76. return tslib_1.__assign(tslib_1.__assign({}, params), { ext: { data: { min: min, max: max } } });
  77. }
  78. /**
  79. * meta 配置
  80. * @param params
  81. */
  82. function meta(params) {
  83. var _a, _b;
  84. var options = params.options, ext = params.ext;
  85. var xAxis = options.xAxis, yAxis = options.yAxis, targetField = options.targetField, rangeField = options.rangeField, measureField = options.measureField, xField = options.xField;
  86. var extData = ext.data;
  87. return (0, utils_1.flow)((0, common_1.scale)((_a = {},
  88. _a[xField] = xAxis,
  89. _a[measureField] = yAxis,
  90. _a), (_b = {},
  91. _b[measureField] = { min: extData === null || extData === void 0 ? void 0 : extData.min, max: extData === null || extData === void 0 ? void 0 : extData.max, sync: true },
  92. _b[targetField] = {
  93. sync: "".concat(measureField),
  94. },
  95. _b[rangeField] = {
  96. sync: "".concat(measureField),
  97. },
  98. _b)))(params);
  99. }
  100. exports.meta = meta;
  101. /**
  102. * axis 配置
  103. * @param params
  104. */
  105. function axis(params) {
  106. var chart = params.chart, options = params.options;
  107. var xAxis = options.xAxis, yAxis = options.yAxis, xField = options.xField, measureField = options.measureField, rangeField = options.rangeField, targetField = options.targetField;
  108. chart.axis("".concat(rangeField), false);
  109. chart.axis("".concat(targetField), false);
  110. // 为 false 则是不显示轴
  111. if (xAxis === false) {
  112. chart.axis("".concat(xField), false);
  113. }
  114. else {
  115. chart.axis("".concat(xField), xAxis);
  116. }
  117. if (yAxis === false) {
  118. chart.axis("".concat(measureField), false);
  119. }
  120. else {
  121. chart.axis("".concat(measureField), yAxis);
  122. }
  123. return params;
  124. }
  125. /**
  126. * legend 配置
  127. * @param params
  128. */
  129. function legend(params) {
  130. var chart = params.chart, options = params.options;
  131. var legend = options.legend;
  132. chart.removeInteraction('legend-filter');
  133. // @TODO 后续看是否内部自定义一个 legend
  134. chart.legend(legend);
  135. // 默认关闭掉所在 color 字段的 legend, 从而不影响自定义的legend
  136. chart.legend('rKey', false);
  137. chart.legend('mKey', false);
  138. chart.legend('tKey', false);
  139. return params;
  140. }
  141. /**
  142. * label 配置
  143. * @param params
  144. */
  145. function label(params) {
  146. var chart = params.chart, options = params.options;
  147. var label = options.label, measureField = options.measureField, targetField = options.targetField, rangeField = options.rangeField;
  148. var _a = chart.geometries, rangeGeometry = _a[0], measureGeometry = _a[1], targetGeometry = _a[2];
  149. if ((0, util_1.get)(label, 'range')) {
  150. rangeGeometry.label("".concat(rangeField), tslib_1.__assign({ layout: [{ type: 'limit-in-plot' }] }, (0, utils_1.transformLabel)(label.range)));
  151. }
  152. else {
  153. rangeGeometry.label(false);
  154. }
  155. if ((0, util_1.get)(label, 'measure')) {
  156. measureGeometry.label("".concat(measureField), tslib_1.__assign({ layout: [{ type: 'limit-in-plot' }] }, (0, utils_1.transformLabel)(label.measure)));
  157. }
  158. else {
  159. measureGeometry.label(false);
  160. }
  161. if ((0, util_1.get)(label, 'target')) {
  162. targetGeometry.label("".concat(targetField), tslib_1.__assign({ layout: [{ type: 'limit-in-plot' }] }, (0, utils_1.transformLabel)(label.target)));
  163. }
  164. else {
  165. targetGeometry.label(false);
  166. }
  167. return params;
  168. }
  169. /**
  170. * 子弹图适配器
  171. * @param chart
  172. * @param options
  173. */
  174. function adaptor(params) {
  175. // flow 的方式处理所有的配置到 G2 API
  176. (0, utils_1.flow)(geometry, meta, axis, legend, common_1.theme, label, common_1.tooltip, common_1.interaction, common_1.animation)(params);
  177. }
  178. exports.adaptor = adaptor;
  179. //# sourceMappingURL=adaptor.js.map