axis.js 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { __extends, __read, __spreadArray } from "tslib";
  2. import { parseAnimationOption } from '../../animation';
  3. import { GUI } from '../../core';
  4. import { ifShow, sampling, select } from '../../util';
  5. import { AXIS_BASE_DEFAULT_ATTR, CLASS_NAMES } from './constant';
  6. import { renderGrid } from './guides/grid';
  7. import { renderLabels } from './guides/labels';
  8. import { renderAxisLine } from './guides/line';
  9. import { renderTicks } from './guides/ticks';
  10. import { renderTitle } from './guides/title';
  11. function renderAxisMain(attributes, container, data, animation) {
  12. var showLine = attributes.showLine, showTick = attributes.showTick, showLabel = attributes.showLabel;
  13. /** line */
  14. var lineGroup = container.maybeAppendByClassName(CLASS_NAMES.lineGroup, 'g');
  15. var lineTransitions = ifShow(showLine, lineGroup, function (group) {
  16. return renderAxisLine(group, attributes, animation);
  17. }) || [];
  18. /** tick */
  19. var tickGroup = container.maybeAppendByClassName(CLASS_NAMES.tickGroup, 'g');
  20. var tickTransitions = ifShow(showTick, tickGroup, function (group) {
  21. return renderTicks(group, data, attributes, animation);
  22. }) || [];
  23. /** label */
  24. var labelGroup = container.maybeAppendByClassName(CLASS_NAMES.labelGroup, 'g');
  25. var labelTransitions = ifShow(showLabel, labelGroup, function (group) {
  26. return renderLabels(group, data, attributes, animation);
  27. }) || [];
  28. return __spreadArray(__spreadArray(__spreadArray([], __read(lineTransitions), false), __read(tickTransitions), false), __read(labelTransitions), false).filter(function (t) { return !!t; });
  29. }
  30. var Axis = /** @class */ (function (_super) {
  31. __extends(Axis, _super);
  32. function Axis(options) {
  33. return _super.call(this, options, AXIS_BASE_DEFAULT_ATTR) || this;
  34. }
  35. Axis.prototype.render = function (attributes, container, specificAnimation) {
  36. var _this = this;
  37. var titleText = attributes.titleText, data = attributes.data, animate = attributes.animate, showTitle = attributes.showTitle, showGrid = attributes.showGrid, dataThreshold = attributes.dataThreshold, truncRange = attributes.truncRange;
  38. var sampledData = sampling(data, dataThreshold).filter(function (_a) {
  39. var value = _a.value;
  40. if (truncRange && value > truncRange[0] && value < truncRange[1])
  41. return false;
  42. return true;
  43. });
  44. var finalAnimation = parseAnimationOption(specificAnimation === undefined ? animate : specificAnimation);
  45. /** grid */
  46. var gridGroup = select(container).maybeAppendByClassName(CLASS_NAMES.gridGroup, 'g');
  47. var gridTransitions = ifShow(showGrid, gridGroup, function (group) { return renderGrid(group, sampledData, attributes, finalAnimation); }) || [];
  48. /** main group */
  49. var mainGroup = select(container).maybeAppendByClassName(CLASS_NAMES.mainGroup, 'g');
  50. if (titleText && ((!this.initialized && finalAnimation.enter) || (this.initialized && finalAnimation.update))) {
  51. renderAxisMain(attributes, select(this.offscreenGroup), sampledData, parseAnimationOption(false));
  52. }
  53. // render
  54. var mainTransitions = renderAxisMain(attributes, select(mainGroup.node()), sampledData, finalAnimation);
  55. /** title */
  56. var titleGroup = select(container).maybeAppendByClassName(CLASS_NAMES.titleGroup, 'g');
  57. var titleTransitions = ifShow(showTitle, titleGroup, function (group) {
  58. return renderTitle(group, _this, attributes, finalAnimation);
  59. }) || [];
  60. return __spreadArray(__spreadArray(__spreadArray([], __read(gridTransitions), false), __read(mainTransitions), false), __read(titleTransitions), false).flat().filter(function (t) { return !!t; });
  61. };
  62. return Axis;
  63. }(GUI));
  64. export { Axis };
  65. //# sourceMappingURL=axis.js.map