utils.js 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.transformData = exports.resetDrillDown = exports.enableDrillInteraction = exports.enableInteraction = exports.findInteraction = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var drill_down_1 = require("../../interactions/actions/drill-down");
  7. var treemap_1 = require("../../utils/hierarchy/treemap");
  8. function findInteraction(interactions, interactionType) {
  9. if (!(0, util_1.isArray)(interactions))
  10. return undefined;
  11. return interactions.find(function (i) { return i.type === interactionType; });
  12. }
  13. exports.findInteraction = findInteraction;
  14. function enableInteraction(interactions, interactionType) {
  15. var interaction = findInteraction(interactions, interactionType);
  16. return interaction && interaction.enable !== false;
  17. }
  18. exports.enableInteraction = enableInteraction;
  19. /**
  20. * 是否允许下钻交互
  21. * @param interactions
  22. * @param interactionType
  23. * @returns
  24. */
  25. function enableDrillInteraction(options) {
  26. var interactions = options.interactions, drilldown = options.drilldown;
  27. // 兼容旧版本, treemap-drill-down
  28. return (0, util_1.get)(drilldown, 'enabled') || enableInteraction(interactions, 'treemap-drill-down');
  29. }
  30. exports.enableDrillInteraction = enableDrillInteraction;
  31. function resetDrillDown(chart) {
  32. var drillDownInteraction = chart.interactions['drill-down'];
  33. if (!drillDownInteraction)
  34. return;
  35. // @ts-ignore
  36. var drillDownAction = drillDownInteraction.context.actions.find(function (i) { return i.name === 'drill-down-action'; });
  37. drillDownAction.reset();
  38. }
  39. exports.resetDrillDown = resetDrillDown;
  40. function transformData(options) {
  41. var data = options.data, colorField = options.colorField, enableDrillDown = options.enableDrillDown, hierarchyConfig = options.hierarchyConfig;
  42. var nodes = (0, treemap_1.treemap)(data, tslib_1.__assign(tslib_1.__assign({}, hierarchyConfig), {
  43. // @ts-ignore
  44. type: 'hierarchy.treemap', field: 'value', as: ['x', 'y'] }));
  45. var result = [];
  46. nodes.forEach(function (node) {
  47. if (node.depth === 0) {
  48. return null;
  49. }
  50. // 开启下钻,仅加载 depth === 1 的数据
  51. if (enableDrillDown && node.depth !== 1) {
  52. return null;
  53. }
  54. // 不开启下钻,加载所有叶子节点
  55. if (!enableDrillDown && node.children) {
  56. return null;
  57. }
  58. // path 信息仅挑选必要祖先元素属性,因为在有些属性是不必要(x, y), 或是不准确的(下钻时的 depth),不对外透出
  59. var curPath = node.ancestors().map(function (n) { return ({
  60. data: n.data,
  61. height: n.height,
  62. value: n.value,
  63. }); });
  64. // 在下钻树图中,每次绘制的是当前层级信息,将父元素的层级信息(data.path) 做一层拼接。
  65. var path = enableDrillDown && (0, util_1.isArray)(data.path) ? curPath.concat(data.path.slice(1)) : curPath;
  66. var nodeInfo = Object.assign({}, node.data, tslib_1.__assign({ x: node.x, y: node.y, depth: node.depth, value: node.value, path: path }, node));
  67. if (!node.data[colorField] && node.parent) {
  68. var ancestorNode = node.ancestors().find(function (n) { return n.data[colorField]; });
  69. nodeInfo[colorField] = ancestorNode === null || ancestorNode === void 0 ? void 0 : ancestorNode.data[colorField];
  70. }
  71. else {
  72. nodeInfo[colorField] = node.data[colorField];
  73. }
  74. nodeInfo[drill_down_1.HIERARCHY_DATA_TRANSFORM_PARAMS] = { hierarchyConfig: hierarchyConfig, colorField: colorField, enableDrillDown: enableDrillDown };
  75. result.push(nodeInfo);
  76. });
  77. return result;
  78. }
  79. exports.transformData = transformData;
  80. //# sourceMappingURL=utils.js.map