adaptor.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.adaptor = exports.tooltip = exports.meta = exports.axis = 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 padding_1 = require("../../utils/padding");
  10. var constant_1 = require("./constant");
  11. var utils_2 = require("./utils");
  12. /**
  13. * geometry 配置处理
  14. * @param params
  15. */
  16. function geometry(params) {
  17. var chart = params.chart, options = params.options;
  18. var color = options.color, _a = options.colorField, colorField = _a === void 0 ? constant_1.SUNBURST_ANCESTOR_FIELD : _a, sunburstStyle = options.sunburstStyle, _b = options.rawFields, rawFields = _b === void 0 ? [] : _b, shape = options.shape;
  19. var data = (0, utils_2.transformData)(options);
  20. chart.data(data);
  21. // 特殊处理下样式,如果没有设置 fillOpacity 的时候,默认根据层级进行填充透明度
  22. var style;
  23. if (sunburstStyle) {
  24. style = function (datum) {
  25. return (0, utils_1.deepAssign)({}, {
  26. fillOpacity: Math.pow(0.85, datum.depth),
  27. }, (0, util_1.isFunction)(sunburstStyle) ? sunburstStyle(datum) : sunburstStyle);
  28. };
  29. }
  30. // geometry
  31. (0, geometries_1.polygon)((0, utils_1.deepAssign)({}, params, {
  32. options: {
  33. xField: 'x',
  34. yField: 'y',
  35. seriesField: colorField,
  36. rawFields: (0, util_1.uniq)(tslib_1.__spreadArray(tslib_1.__spreadArray([], constant_1.RAW_FIELDS, true), rawFields, true)),
  37. polygon: {
  38. color: color,
  39. style: style,
  40. shape: shape,
  41. },
  42. },
  43. }));
  44. return params;
  45. }
  46. /**
  47. * axis 配置
  48. * @param params
  49. */
  50. function axis(params) {
  51. var chart = params.chart;
  52. chart.axis(false);
  53. return params;
  54. }
  55. exports.axis = axis;
  56. /**
  57. * 数据标签
  58. * @param params
  59. */
  60. function label(params) {
  61. var chart = params.chart, options = params.options;
  62. var label = options.label;
  63. var geometry = (0, utils_1.findGeometry)(chart, 'polygon');
  64. // 默认不展示,undefined 也不展示
  65. if (!label) {
  66. geometry.label(false);
  67. }
  68. else {
  69. var _a = label.fields, fields = _a === void 0 ? ['name'] : _a, callback = label.callback, cfg = tslib_1.__rest(label, ["fields", "callback"]);
  70. geometry.label({
  71. fields: fields,
  72. callback: callback,
  73. cfg: (0, utils_1.transformLabel)(cfg),
  74. });
  75. }
  76. return params;
  77. }
  78. /**
  79. * coord 配置
  80. * @param params
  81. */
  82. function coordinate(params) {
  83. var chart = params.chart, options = params.options;
  84. var innerRadius = options.innerRadius, radius = options.radius, reflect = options.reflect;
  85. var coord = chart.coordinate({
  86. type: 'polar',
  87. cfg: {
  88. innerRadius: innerRadius,
  89. radius: radius,
  90. },
  91. });
  92. if (reflect) {
  93. coord.reflect(reflect);
  94. }
  95. return params;
  96. }
  97. /**
  98. * meta 配置
  99. * @param params
  100. */
  101. function meta(params) {
  102. var _a;
  103. var options = params.options;
  104. var hierarchyConfig = options.hierarchyConfig, meta = options.meta;
  105. return (0, utils_1.flow)((0, common_1.scale)({}, (_a = {},
  106. _a[constant_1.SUNBURST_Y_FIELD] = (0, util_1.get)(meta, (0, util_1.get)(hierarchyConfig, ['field'], 'value')),
  107. _a)))(params);
  108. }
  109. exports.meta = meta;
  110. /**
  111. * tooltip 配置
  112. * @param params
  113. */
  114. function tooltip(params) {
  115. var chart = params.chart, options = params.options;
  116. var tooltip = options.tooltip;
  117. if (tooltip === false) {
  118. chart.tooltip(false);
  119. }
  120. else {
  121. var tooltipOptions = tooltip;
  122. // 设置了 fields,就不进行 customItems 了; 设置 formatter 时,需要搭配 fields
  123. if (!(0, util_1.get)(tooltip, 'fields')) {
  124. tooltipOptions = (0, utils_1.deepAssign)({}, {
  125. customItems: function (items) {
  126. return items.map(function (item) {
  127. var scales = (0, util_1.get)(chart.getOptions(), 'scales');
  128. var pathFormatter = (0, util_1.get)(scales, [constant_1.SUNBURST_PATH_FIELD, 'formatter'], function (v) { return v; });
  129. var valueFormatter = (0, util_1.get)(scales, [constant_1.SUNBURST_Y_FIELD, 'formatter'], function (v) { return v; });
  130. return tslib_1.__assign(tslib_1.__assign({}, item), { name: pathFormatter(item.data[constant_1.SUNBURST_PATH_FIELD]), value: valueFormatter(item.data.value) });
  131. });
  132. },
  133. }, tooltipOptions);
  134. }
  135. chart.tooltip(tooltipOptions);
  136. }
  137. return params;
  138. }
  139. exports.tooltip = tooltip;
  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 },
  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. var drilldown = options.drilldown;
  162. (0, common_1.interaction)({
  163. chart: chart,
  164. options: adaptorInteraction(options),
  165. });
  166. // 适应下钻交互面包屑
  167. if (drilldown === null || drilldown === void 0 ? void 0 : drilldown.enabled) {
  168. // 为面包屑留出 25px 的空间
  169. chart.appendPadding = (0, padding_1.getAdjustAppendPadding)(chart.appendPadding, (0, util_1.get)(drilldown, ['breadCrumb', 'position']));
  170. }
  171. return params;
  172. }
  173. /**
  174. * 旭日图适配器
  175. * @param chart
  176. * @param options
  177. */
  178. function adaptor(params) {
  179. // flow 的方式处理所有的配置到 G2 API
  180. return (0, utils_1.flow)(common_1.theme, (0, common_1.pattern)('sunburstStyle'), geometry, axis, meta, common_1.legend, coordinate, tooltip, label, interaction, common_1.animation, (0, common_1.annotation)())(params);
  181. }
  182. exports.adaptor = adaptor;
  183. //# sourceMappingURL=adaptor.js.map