adaptor.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.adaptor = exports.adjust = exports.legend = exports.axis = 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 data_1 = require("../../utils/data");
  10. /**
  11. * geometry 配置处理
  12. * @param params
  13. */
  14. function geometry(params) {
  15. var chart = params.chart, options = params.options;
  16. var data = options.data, color = options.color, lineStyle = options.lineStyle, lineShape = options.lineShape, pointMapping = options.point, areaMapping = options.area, seriesField = options.seriesField;
  17. var pointState = pointMapping === null || pointMapping === void 0 ? void 0 : pointMapping.state;
  18. var areaState = areaMapping === null || areaMapping === void 0 ? void 0 : areaMapping.state;
  19. chart.data(data);
  20. // line geometry 处理
  21. var primary = (0, utils_1.deepAssign)({}, params, {
  22. options: {
  23. shapeField: seriesField,
  24. line: {
  25. color: color,
  26. style: lineStyle,
  27. shape: lineShape,
  28. },
  29. // 颜色保持一致,因为如果颜色不一致,会导致 tooltip 中元素重复。
  30. // 如果存在,才设置,否则为空
  31. point: pointMapping && tslib_1.__assign({ color: color, shape: 'circle' }, pointMapping),
  32. // 面积配置
  33. area: areaMapping && tslib_1.__assign({ color: color }, areaMapping),
  34. // label 不传递给各个 geometry adaptor,由 label adaptor 处理
  35. label: undefined,
  36. },
  37. });
  38. var second = (0, utils_1.deepAssign)({}, primary, { options: { tooltip: false, state: pointState } });
  39. var areaParams = (0, utils_1.deepAssign)({}, primary, { options: { tooltip: false, state: areaState } });
  40. (0, geometries_1.line)(primary);
  41. (0, geometries_1.point)(second);
  42. (0, geometries_1.area)(areaParams);
  43. return params;
  44. }
  45. /**
  46. * meta 配置
  47. * @param params
  48. */
  49. function meta(params) {
  50. var _a, _b;
  51. var options = params.options;
  52. var xAxis = options.xAxis, yAxis = options.yAxis, xField = options.xField, yField = options.yField, data = options.data;
  53. return (0, utils_1.flow)((0, common_1.scale)((_a = {},
  54. _a[xField] = xAxis,
  55. _a[yField] = yAxis,
  56. _a), (_b = {},
  57. _b[xField] = {
  58. type: 'cat',
  59. },
  60. _b[yField] = (0, data_1.adjustYMetaByZero)(data, yField),
  61. _b)))(params);
  62. }
  63. exports.meta = meta;
  64. /**
  65. * 坐标系配置. 支持 reflect 镜像处理
  66. * @param params
  67. */
  68. function coordinate(params) {
  69. var chart = params.chart, options = params.options;
  70. var reflect = options.reflect;
  71. if (reflect) {
  72. var p = reflect;
  73. if (!(0, util_1.isArray)(p)) {
  74. p = [p];
  75. }
  76. var actions = p.map(function (d) { return ['reflect', d]; });
  77. chart.coordinate({ type: 'rect', actions: actions });
  78. }
  79. return params;
  80. }
  81. /**
  82. * axis 配置
  83. * @param params
  84. */
  85. function axis(params) {
  86. var chart = params.chart, options = params.options;
  87. var xAxis = options.xAxis, yAxis = options.yAxis, xField = options.xField, yField = options.yField;
  88. // 为 false 则是不显示轴
  89. if (xAxis === false) {
  90. chart.axis(xField, false);
  91. }
  92. else {
  93. chart.axis(xField, xAxis);
  94. }
  95. if (yAxis === false) {
  96. chart.axis(yField, false);
  97. }
  98. else {
  99. chart.axis(yField, yAxis);
  100. }
  101. return params;
  102. }
  103. exports.axis = axis;
  104. /**
  105. * legend 配置
  106. * @param params
  107. */
  108. function legend(params) {
  109. var chart = params.chart, options = params.options;
  110. var legend = options.legend, seriesField = options.seriesField;
  111. if (legend && seriesField) {
  112. chart.legend(seriesField, legend);
  113. }
  114. else if (legend === false) {
  115. chart.legend(false);
  116. }
  117. return params;
  118. }
  119. exports.legend = legend;
  120. /**
  121. * 数据标签
  122. * @param params
  123. */
  124. function label(params) {
  125. var chart = params.chart, options = params.options;
  126. var label = options.label, yField = options.yField;
  127. var lineGeometry = (0, utils_1.findGeometry)(chart, 'line');
  128. // label 为 false, 空 则不显示 label
  129. if (!label) {
  130. lineGeometry.label(false);
  131. }
  132. else {
  133. var callback = label.callback, cfg = tslib_1.__rest(label, ["callback"]);
  134. lineGeometry.label({
  135. fields: [yField],
  136. callback: callback,
  137. cfg: tslib_1.__assign({ layout: [
  138. { type: 'limit-in-plot' },
  139. { type: 'path-adjust-position' },
  140. { type: 'point-adjust-position' },
  141. { type: 'limit-in-plot', cfg: { action: 'hide' } },
  142. ] }, (0, utils_1.transformLabel)(cfg)),
  143. });
  144. }
  145. return params;
  146. }
  147. /**
  148. * 统一处理 adjust
  149. * @param params
  150. */
  151. function adjust(params) {
  152. var chart = params.chart, options = params.options;
  153. var isStack = options.isStack;
  154. if (isStack) {
  155. (0, util_1.each)(chart.geometries, function (g) {
  156. g.adjust('stack');
  157. });
  158. }
  159. return params;
  160. }
  161. exports.adjust = adjust;
  162. /**
  163. * 折线图适配器
  164. * @param chart
  165. * @param options
  166. */
  167. function adaptor(params) {
  168. // flow 的方式处理所有的配置到 G2 API
  169. return (0, utils_1.flow)(geometry, meta, adjust, common_1.theme, coordinate, axis, legend, common_1.tooltip, label, common_1.slider, common_1.scrollbar, common_1.interaction, common_1.animation, (0, common_1.annotation)(), common_1.limitInPlot)(params);
  170. }
  171. exports.adaptor = adaptor;
  172. //# sourceMappingURL=adaptor.js.map