dodgeX.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. "use strict";
  2. var __rest = (this && this.__rest) || function (s, e) {
  3. var t = {};
  4. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
  5. t[p] = s[p];
  6. if (s != null && typeof Object.getOwnPropertySymbols === "function")
  7. for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  8. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
  9. t[p[i]] = s[p[i]];
  10. }
  11. return t;
  12. };
  13. Object.defineProperty(exports, "__esModule", { value: true });
  14. exports.DodgeX = void 0;
  15. const util_1 = require("@antv/util");
  16. const helper_1 = require("./utils/helper");
  17. const order_1 = require("./utils/order");
  18. /**
  19. * The dodge group marks into series by color or series channel,
  20. * and then produce new series channel for each series by specified order,
  21. * say to form horizontal "columns" by specified channels.
  22. */
  23. const DodgeX = (options = {}) => {
  24. const { groupBy = 'x', reverse = false, orderBy, padding } = options, rest = __rest(options, ["groupBy", "reverse", "orderBy", "padding"]);
  25. return (I, mark) => {
  26. const { data, encode, scale } = mark;
  27. const { series: scaleSeries } = scale;
  28. const [Y] = (0, helper_1.columnOf)(encode, 'y');
  29. const [S] = (0, helper_1.maybeColumnOf)(encode, 'series', 'color');
  30. const domainSeries = (0, order_1.domainOf)(S, scaleSeries);
  31. // Create groups and apply specified order for each group.
  32. const groups = (0, order_1.createGroups)(groupBy, I, mark);
  33. const createComparator = (0, order_1.normalizeComparator)(orderBy);
  34. const comparator = createComparator(data, Y, S);
  35. if (comparator)
  36. (0, order_1.applyOrder)(groups, comparator);
  37. // Update series for each mark related to series domain.
  38. const newS = new Array(I.length);
  39. for (const G of groups) {
  40. if (reverse)
  41. G.reverse();
  42. for (let i = 0; i < G.length; i++) {
  43. newS[G[i]] = domainSeries[i];
  44. }
  45. }
  46. return [
  47. I,
  48. (0, util_1.deepMix)({}, mark, {
  49. scale: {
  50. series: {
  51. domain: domainSeries,
  52. paddingInner: padding,
  53. },
  54. },
  55. encode: {
  56. series: (0, helper_1.column)(newS),
  57. },
  58. }),
  59. ];
  60. };
  61. };
  62. exports.DodgeX = DodgeX;
  63. exports.DodgeX.props = {};
  64. //# sourceMappingURL=dodgeX.js.map