Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

134 linhas
3.9 KiB

  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.default = void 0;
  5. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  6. var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
  7. var _propTypes = _interopRequireDefault(require("prop-types"));
  8. var _react = _interopRequireDefault(require("react"));
  9. var _EventRowMixin = _interopRequireDefault(require("./EventRowMixin"));
  10. var _eventLevels = require("./utils/eventLevels");
  11. var _range = _interopRequireDefault(require("lodash/range"));
  12. var isSegmentInSlot = function isSegmentInSlot(seg, slot) {
  13. return seg.left <= slot && seg.right >= slot;
  14. };
  15. var eventsInSlot = function eventsInSlot(segments, slot) {
  16. return segments.filter(function (seg) {
  17. return isSegmentInSlot(seg, slot);
  18. }).length;
  19. };
  20. var EventEndingRow =
  21. /*#__PURE__*/
  22. function (_React$Component) {
  23. (0, _inheritsLoose2.default)(EventEndingRow, _React$Component);
  24. function EventEndingRow() {
  25. return _React$Component.apply(this, arguments) || this;
  26. }
  27. var _proto = EventEndingRow.prototype;
  28. _proto.render = function render() {
  29. var _this$props = this.props,
  30. segments = _this$props.segments,
  31. slots = _this$props.slotMetrics.slots;
  32. var rowSegments = (0, _eventLevels.eventLevels)(segments).levels[0];
  33. var current = 1,
  34. lastEnd = 1,
  35. row = [];
  36. while (current <= slots) {
  37. var key = '_lvl_' + current;
  38. var _ref = rowSegments.filter(function (seg) {
  39. return isSegmentInSlot(seg, current);
  40. })[0] || {},
  41. event = _ref.event,
  42. left = _ref.left,
  43. right = _ref.right,
  44. span = _ref.span; //eslint-disable-line
  45. if (!event) {
  46. current++;
  47. continue;
  48. }
  49. var gap = Math.max(0, left - lastEnd);
  50. if (this.canRenderSlotEvent(left, span)) {
  51. var content = _EventRowMixin.default.renderEvent(this.props, event);
  52. if (gap) {
  53. row.push(_EventRowMixin.default.renderSpan(slots, gap, key + '_gap'));
  54. }
  55. row.push(_EventRowMixin.default.renderSpan(slots, span, key, content));
  56. lastEnd = current = right + 1;
  57. } else {
  58. if (gap) {
  59. row.push(_EventRowMixin.default.renderSpan(slots, gap, key + '_gap'));
  60. }
  61. row.push(_EventRowMixin.default.renderSpan(slots, 1, key, this.renderShowMore(segments, current)));
  62. lastEnd = current = current + 1;
  63. }
  64. }
  65. return _react.default.createElement("div", {
  66. className: "rbc-row"
  67. }, row);
  68. };
  69. _proto.canRenderSlotEvent = function canRenderSlotEvent(slot, span) {
  70. var segments = this.props.segments;
  71. return (0, _range.default)(slot, slot + span).every(function (s) {
  72. var count = eventsInSlot(segments, s);
  73. return count === 1;
  74. });
  75. };
  76. _proto.renderShowMore = function renderShowMore(segments, slot) {
  77. var _this = this;
  78. var localizer = this.props.localizer;
  79. var count = eventsInSlot(segments, slot);
  80. return count ? _react.default.createElement("a", {
  81. key: 'sm_' + slot,
  82. href: "#",
  83. className: 'rbc-show-more',
  84. onClick: function onClick(e) {
  85. return _this.showMore(slot, e);
  86. }
  87. }, localizer.messages.showMore(count)) : false;
  88. };
  89. _proto.showMore = function showMore(slot, e) {
  90. e.preventDefault();
  91. this.props.onShowMore(slot, e.target);
  92. };
  93. return EventEndingRow;
  94. }(_react.default.Component);
  95. EventEndingRow.propTypes = process.env.NODE_ENV !== "production" ? (0, _extends2.default)({
  96. segments: _propTypes.default.array,
  97. slots: _propTypes.default.number,
  98. onShowMore: _propTypes.default.func
  99. }, _EventRowMixin.default.propTypes) : {};
  100. EventEndingRow.defaultProps = (0, _extends2.default)({}, _EventRowMixin.default.defaultProps);
  101. var _default = EventEndingRow;
  102. exports.default = _default;
  103. module.exports = exports["default"];