adaptor.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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 point_1 = require("../../adaptor/geometries/point");
  8. var utils_1 = require("../../utils");
  9. var padding_1 = require("../../utils/padding");
  10. var constant_1 = require("./constant");
  11. var utils_2 = require("./utils");
  12. /**
  13. * 获取默认 option
  14. * @param params
  15. */
  16. function defaultOptions(params) {
  17. var chart = params.chart;
  18. var diameter = Math.min(chart.viewBBox.width, chart.viewBBox.height);
  19. return (0, utils_1.deepAssign)({
  20. options: {
  21. size: function (_a) {
  22. var r = _a.r;
  23. return r * diameter;
  24. }, // 当autofit:false时,默认给固定半径
  25. },
  26. }, params);
  27. }
  28. /**
  29. * padding 配置
  30. * @param params
  31. */
  32. function padding(params) {
  33. var options = params.options, chart = params.chart;
  34. // 通过改变 padding,修改 coordinate 的绘制区域
  35. var containerSize = chart.viewBBox;
  36. var padding = options.padding, appendPadding = options.appendPadding, drilldown = options.drilldown;
  37. var tempAppendPadding = appendPadding;
  38. if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {
  39. var appendPaddingByDrilldown = (0, padding_1.getAdjustAppendPadding)(chart.appendPadding, (0, util_1.get)(drilldown, ['breadCrumb', 'position']));
  40. tempAppendPadding = (0, padding_1.resolveAllPadding)([appendPaddingByDrilldown, appendPadding]);
  41. }
  42. var finalPadding = (0, utils_2.resolvePaddingForCircle)(padding, tempAppendPadding, containerSize).finalPadding;
  43. chart.padding = finalPadding;
  44. chart.appendPadding = 0;
  45. return params;
  46. }
  47. /**
  48. * 字段
  49. * @param params
  50. */
  51. function geometry(params) {
  52. var chart = params.chart, options = params.options;
  53. var padding = chart.padding, appendPadding = chart.appendPadding;
  54. var color = options.color, colorField = options.colorField, pointStyle = options.pointStyle, hierarchyConfig = options.hierarchyConfig, sizeField = options.sizeField, _a = options.rawFields, rawFields = _a === void 0 ? [] : _a, drilldown = options.drilldown;
  55. var data = (0, utils_2.transformData)({
  56. data: options.data,
  57. hierarchyConfig: hierarchyConfig,
  58. enableDrillDown: drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled,
  59. rawFields: rawFields,
  60. });
  61. chart.data(data);
  62. var containerSize = chart.viewBBox;
  63. var finalSize = (0, utils_2.resolvePaddingForCircle)(padding, appendPadding, containerSize).finalSize;
  64. // 有sizeField的时候,例如 value ,可以选择映射 size 函数,自己计算出映射的半径
  65. var circleSize = function (_a) {
  66. var r = _a.r;
  67. return r * finalSize;
  68. }; // 默认配置
  69. if (sizeField) {
  70. circleSize = function (d) { return d[sizeField] * finalSize; }; // 目前只有 r 通道映射效果会正常
  71. }
  72. // geometry
  73. (0, point_1.point)((0, utils_1.deepAssign)({}, params, {
  74. options: {
  75. xField: 'x',
  76. yField: 'y',
  77. seriesField: colorField,
  78. sizeField: sizeField,
  79. rawFields: tslib_1.__spreadArray(tslib_1.__spreadArray([], constant_1.RAW_FIELDS, true), rawFields, true),
  80. point: {
  81. color: color,
  82. style: pointStyle,
  83. shape: 'circle',
  84. size: circleSize,
  85. },
  86. },
  87. }));
  88. return params;
  89. }
  90. /**
  91. * meta 配置
  92. * @param params
  93. */
  94. function meta(params) {
  95. return (0, utils_1.flow)((0, common_1.scale)({}, {
  96. // 必须强制为 nice
  97. x: { min: 0, max: 1, minLimit: 0, maxLimit: 1, nice: true },
  98. y: { min: 0, max: 1, minLimit: 0, maxLimit: 1, nice: true },
  99. }))(params);
  100. }
  101. exports.meta = meta;
  102. /**
  103. * tooltip 配置
  104. * @param params
  105. */
  106. function tooltip(params) {
  107. var chart = params.chart, options = params.options;
  108. var tooltip = options.tooltip;
  109. if (tooltip === false) {
  110. chart.tooltip(false);
  111. }
  112. else {
  113. var tooltipOptions = tooltip;
  114. // 设置了 fields,就不进行 customItems 了; 设置 formatter 时,需要搭配 fields
  115. if (!(0, util_1.get)(tooltip, 'fields')) {
  116. tooltipOptions = (0, utils_1.deepAssign)({}, {
  117. customItems: function (items) {
  118. return items.map(function (item) {
  119. var scales = (0, util_1.get)(chart.getOptions(), 'scales');
  120. var nameFormatter = (0, util_1.get)(scales, ['name', 'formatter'], function (v) { return v; });
  121. var valueFormatter = (0, util_1.get)(scales, ['value', 'formatter'], function (v) { return v; });
  122. return tslib_1.__assign(tslib_1.__assign({}, item), { name: nameFormatter(item.data.name), value: valueFormatter(item.data.value) });
  123. });
  124. },
  125. }, tooltipOptions);
  126. }
  127. chart.tooltip(tooltipOptions);
  128. }
  129. return params;
  130. }
  131. /**
  132. * 坐标轴, 默认关闭
  133. * @param params
  134. */
  135. function axis(params) {
  136. var chart = params.chart;
  137. chart.axis(false);
  138. return params;
  139. }
  140. function adaptorInteraction(options) {
  141. var drilldown = options.drilldown, _a = options.interactions, interactions = _a === void 0 ? [] : _a;
  142. if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {
  143. return (0, utils_1.deepAssign)({}, options, {
  144. interactions: tslib_1.__spreadArray(tslib_1.__spreadArray([], interactions, true), [
  145. {
  146. type: 'drill-down',
  147. cfg: { drillDownConfig: drilldown, transformData: utils_2.transformData, enableDrillDown: true },
  148. },
  149. ], false),
  150. });
  151. }
  152. return options;
  153. }
  154. /**
  155. * 交互配置
  156. * @param params
  157. * @returns
  158. */
  159. function interaction(params) {
  160. var chart = params.chart, options = params.options;
  161. (0, common_1.interaction)({
  162. chart: chart,
  163. options: adaptorInteraction(options),
  164. });
  165. return params;
  166. }
  167. /**
  168. * 矩形树图
  169. * @param chart
  170. * @param options
  171. */
  172. function adaptor(params) {
  173. return (0, utils_1.flow)((0, common_1.pattern)('pointStyle'), defaultOptions, padding, common_1.theme, meta, geometry, axis, common_1.legend, tooltip, interaction, common_1.animation, (0, common_1.annotation)())(params);
  174. }
  175. exports.adaptor = adaptor;
  176. //# sourceMappingURL=adaptor.js.map