pack.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.pack = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var d3Hierarchy = tslib_1.__importStar(require("d3-hierarchy"));
  7. var util_2 = require("./util");
  8. var DEFAULT_OPTIONS = {
  9. field: 'value',
  10. as: ['x', 'y', 'r'],
  11. // 默认降序
  12. sort: function (a, b) { return b.value - a.value; },
  13. };
  14. function pack(data, options) {
  15. options = (0, util_1.assign)({}, DEFAULT_OPTIONS, options);
  16. var as = options.as;
  17. if (!(0, util_1.isArray)(as) || as.length !== 3) {
  18. throw new TypeError('Invalid as: it must be an array with 3 strings (e.g. [ "x", "y", "r" ])!');
  19. }
  20. var field;
  21. try {
  22. field = (0, util_2.getField)(options);
  23. }
  24. catch (e) {
  25. console.warn(e);
  26. }
  27. var packLayout = function (data) {
  28. return d3Hierarchy.pack().size(options.size).padding(options.padding)(d3Hierarchy
  29. .hierarchy(data)
  30. .sum(function (d) { return d[field]; })
  31. .sort(options.sort));
  32. };
  33. var root = packLayout(data);
  34. var x = as[0];
  35. var y = as[1];
  36. var r = as[2];
  37. root.each(function (node) {
  38. node[x] = node.x;
  39. node[y] = node.y;
  40. node[r] = node.r;
  41. });
  42. return (0, util_2.getAllNodes)(root);
  43. }
  44. exports.pack = pack;
  45. //# sourceMappingURL=pack.js.map