adaptor.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.adaptor = exports.statistic = 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 percent = options.percent, liquidStyle = options.liquidStyle, radius = options.radius, outline = options.outline, wave = options.wave, shape = options.shape, shapeStyle = options.shapeStyle, animation = options.animation;
  17. chart.scale({
  18. percent: {
  19. min: 0,
  20. max: 1,
  21. },
  22. });
  23. chart.data((0, utils_2.getLiquidData)(percent));
  24. var color = options.color || chart.getTheme().defaultColor;
  25. var p = (0, utils_1.deepAssign)({}, params, {
  26. options: {
  27. xField: 'type',
  28. yField: 'percent',
  29. // radius 放到 columnWidthRatio 中。
  30. // 保证横向的大小是根据 radius 生成的
  31. widthRatio: radius,
  32. interval: {
  33. color: color,
  34. style: liquidStyle,
  35. shape: 'liquid-fill-gauge',
  36. },
  37. },
  38. });
  39. var ext = (0, geometries_1.interval)(p).ext;
  40. var geometry = ext.geometry;
  41. var background = chart.getTheme().background;
  42. var customInfo = {
  43. percent: percent,
  44. radius: radius,
  45. outline: outline,
  46. wave: wave,
  47. shape: shape,
  48. shapeStyle: shapeStyle,
  49. background: background,
  50. animation: animation,
  51. };
  52. // 将 radius 传入到自定义 shape 中
  53. geometry.customInfo(customInfo);
  54. // 关闭组件
  55. chart.legend(false);
  56. chart.axis(false);
  57. chart.tooltip(false);
  58. return params;
  59. }
  60. /**
  61. * 统计指标文档
  62. * @param params
  63. */
  64. function statistic(params, updated) {
  65. var chart = params.chart, options = params.options;
  66. var statistic = options.statistic, percent = options.percent, meta = options.meta;
  67. // 先清空标注,再重新渲染
  68. chart.getController('annotation').clear(true);
  69. var metaFormatter = (0, util_1.get)(meta, ['percent', 'formatter']) || (function (v) { return "".concat((v * 100).toFixed(2), "%"); });
  70. var contentOpt = statistic.content;
  71. if (contentOpt) {
  72. contentOpt = (0, utils_1.deepAssign)({}, contentOpt, {
  73. content: !(0, util_1.isNil)(contentOpt.content) ? contentOpt.content : metaFormatter(percent),
  74. });
  75. }
  76. (0, utils_1.renderStatistic)(chart, { statistic: tslib_1.__assign(tslib_1.__assign({}, statistic), { content: contentOpt }), plotType: 'liquid' }, { percent: percent });
  77. if (updated) {
  78. chart.render(true);
  79. }
  80. return params;
  81. }
  82. exports.statistic = statistic;
  83. /**
  84. * 水波图适配器
  85. * @param chart
  86. * @param options
  87. */
  88. function adaptor(params) {
  89. // flow 的方式处理所有的配置到 G2 API (主题前置,会影响绘制的取色)
  90. return (0, utils_1.flow)(common_1.theme, (0, common_1.pattern)('liquidStyle'), geometry, statistic, (0, common_1.scale)({}), common_1.animation, common_1.interaction)(params);
  91. }
  92. exports.adaptor = adaptor;
  93. //# sourceMappingURL=adaptor.js.map