adaptor.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.adaptor = exports.interaction = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var common_1 = require("../../adaptor/common");
  7. var polygon_1 = require("../../adaptor/geometries/polygon");
  8. var pattern_1 = require("../../adaptor/pattern");
  9. var utils_1 = require("../../utils");
  10. var padding_1 = require("../../utils/padding");
  11. var utils_2 = require("./utils");
  12. /**
  13. * 获取默认 option
  14. * @param params
  15. */
  16. function defaultOptions(params) {
  17. var options = params.options;
  18. var colorField = options.colorField;
  19. return (0, utils_1.deepAssign)({
  20. options: {
  21. rawFields: ['value'],
  22. tooltip: {
  23. fields: ['name', 'value', colorField, 'path'],
  24. formatter: function (data) {
  25. return {
  26. name: data.name,
  27. value: data.value,
  28. };
  29. },
  30. },
  31. },
  32. }, params);
  33. }
  34. /**
  35. * 字段
  36. * @param params
  37. */
  38. function geometry(params) {
  39. var chart = params.chart, options = params.options;
  40. var color = options.color, colorField = options.colorField, rectStyle = options.rectStyle, hierarchyConfig = options.hierarchyConfig, rawFields = options.rawFields;
  41. var data = (0, utils_2.transformData)({
  42. data: options.data,
  43. colorField: options.colorField,
  44. enableDrillDown: (0, utils_2.enableDrillInteraction)(options),
  45. hierarchyConfig: hierarchyConfig,
  46. });
  47. chart.data(data);
  48. // geometry
  49. (0, polygon_1.polygon)((0, utils_1.deepAssign)({}, params, {
  50. options: {
  51. xField: 'x',
  52. yField: 'y',
  53. seriesField: colorField,
  54. rawFields: rawFields,
  55. polygon: {
  56. color: color,
  57. style: rectStyle,
  58. },
  59. },
  60. }));
  61. // 做一个反转,这样配合排序,可以将最大值放到左上角,最小值放到右下角
  62. chart.coordinate().reflect('y');
  63. return params;
  64. }
  65. /**
  66. * 坐标轴
  67. * @param params
  68. */
  69. function axis(params) {
  70. var chart = params.chart;
  71. chart.axis(false);
  72. return params;
  73. }
  74. function adaptorInteraction(options) {
  75. var drilldown = options.drilldown, _a = options.interactions, interactions = _a === void 0 ? [] : _a;
  76. var enableDrillDown = (0, utils_2.enableDrillInteraction)(options);
  77. if (enableDrillDown) {
  78. return (0, utils_1.deepAssign)({}, options, {
  79. interactions: tslib_1.__spreadArray(tslib_1.__spreadArray([], interactions, true), [
  80. {
  81. type: 'drill-down',
  82. // 🚓 这不是一个规范的 API,后续会变更。慎重参考
  83. cfg: { drillDownConfig: drilldown, transformData: utils_2.transformData },
  84. },
  85. ], false),
  86. });
  87. }
  88. return options;
  89. }
  90. /**
  91. * Interaction 配置
  92. * @param params
  93. */
  94. function interaction(params) {
  95. var chart = params.chart, options = params.options;
  96. var interactions = options.interactions, drilldown = options.drilldown;
  97. (0, common_1.interaction)({
  98. chart: chart,
  99. options: adaptorInteraction(options),
  100. });
  101. // 适配 view-zoom
  102. var viewZoomInteraction = (0, utils_2.findInteraction)(interactions, 'view-zoom');
  103. if (viewZoomInteraction) {
  104. // 开启缩放 interaction 后,则阻止默认滚动事件,避免整个窗口的滚动
  105. if (viewZoomInteraction.enable !== false) {
  106. chart.getCanvas().on('mousewheel', function (ev) {
  107. ev.preventDefault();
  108. });
  109. }
  110. else {
  111. // 手动关闭后,清除。仅对声明 viewZoomInteraction 的清除。
  112. chart.getCanvas().off('mousewheel');
  113. }
  114. }
  115. // 适应下钻交互面包屑
  116. var enableDrillDown = (0, utils_2.enableDrillInteraction)(options);
  117. if (enableDrillDown) {
  118. // 为面包屑在底部留出 25px 的空间
  119. chart.appendPadding = (0, padding_1.getAdjustAppendPadding)(chart.appendPadding, (0, util_1.get)(drilldown, ['breadCrumb', 'position']));
  120. }
  121. return params;
  122. }
  123. exports.interaction = interaction;
  124. /**
  125. * 矩形树图
  126. * @param chart
  127. * @param options
  128. */
  129. function adaptor(params) {
  130. return (0, utils_1.flow)(defaultOptions, common_1.theme, (0, pattern_1.pattern)('rectStyle'), geometry, axis, common_1.legend, common_1.tooltip, interaction, common_1.animation, (0, common_1.annotation)())(params);
  131. }
  132. exports.adaptor = adaptor;
  133. //# sourceMappingURL=adaptor.js.map