@spider-analyzer/timeline 4.0.3 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CHANGELOG.md +80 -1
  2. package/README.md +275 -637
  3. package/dist/index.d.mts +132 -0
  4. package/dist/index.d.ts +132 -0
  5. package/dist/index.js +2913 -22
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +2906 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/timeline.css +139 -0
  10. package/package.json +52 -15
  11. package/src/Cursor.jsx +5 -13
  12. package/src/TimeLine.tsx +994 -0
  13. package/src/TimeLineResizer.jsx +2 -8
  14. package/src/ToolTip.jsx +7 -7
  15. package/src/cursorElements/CursorIcon.jsx +6 -29
  16. package/src/cursorElements/CursorSelection.jsx +4 -19
  17. package/src/cursorElements/DragOverlay.jsx +2 -12
  18. package/src/cursorElements/LeftHandle.jsx +3 -19
  19. package/src/cursorElements/LeftToolTip.jsx +2 -7
  20. package/src/cursorElements/RightHandle.jsx +3 -19
  21. package/src/cursorElements/RightToolTip.jsx +4 -13
  22. package/src/cursorElements/ZoomIn.jsx +5 -25
  23. package/src/cursorElements/ZoomOut.jsx +4 -21
  24. package/src/cursorElements/utils.js +1 -1
  25. package/src/index.js +6 -0
  26. package/src/index.ts +158 -0
  27. package/src/moment-shim.ts +169 -0
  28. package/src/styles.ts +15 -0
  29. package/src/time.ts +52 -0
  30. package/src/timeLineElements/Button.jsx +5 -30
  31. package/src/timeLineElements/HistoToolTip.jsx +3 -17
  32. package/src/timeLineElements/Histogram.jsx +4 -16
  33. package/src/timeLineElements/Legend.jsx +2 -16
  34. package/src/timeLineElements/QualityLine.jsx +4 -11
  35. package/src/timeLineElements/Tools.jsx +1 -1
  36. package/src/timeLineElements/XAxis.jsx +5 -8
  37. package/src/timeLineElements/XGrid.jsx +3 -7
  38. package/src/timeLineElements/YAxis.jsx +4 -7
  39. package/src/timeLineElements/YGrid.jsx +2 -6
  40. package/src/timeLineElements/axesStyles.jsx +0 -49
  41. package/src/timeline.css +139 -0
  42. package/src/utils.ts +60 -0
  43. package/.babelrc +0 -8
  44. package/.gitlab-ci.yml +0 -27
  45. package/Makefile +0 -20
  46. package/dist/Cursor.js +0 -290
  47. package/dist/TimeLine.js +0 -1177
  48. package/dist/TimeLineResizer.js +0 -70
  49. package/dist/ToolTip.js +0 -43
  50. package/dist/cursorElements/CursorIcon.js +0 -98
  51. package/dist/cursorElements/CursorSelection.js +0 -179
  52. package/dist/cursorElements/DragOverlay.js +0 -168
  53. package/dist/cursorElements/LeftHandle.js +0 -95
  54. package/dist/cursorElements/LeftToolTip.js +0 -70
  55. package/dist/cursorElements/RightHandle.js +0 -95
  56. package/dist/cursorElements/RightToolTip.js +0 -75
  57. package/dist/cursorElements/ZoomIn.js +0 -93
  58. package/dist/cursorElements/ZoomOut.js +0 -67
  59. package/dist/cursorElements/commonStyles.js +0 -28
  60. package/dist/cursorElements/handleHistoHovering.js +0 -79
  61. package/dist/cursorElements/utils.js +0 -30
  62. package/dist/theme.js +0 -59
  63. package/dist/timeLineElements/Button.js +0 -101
  64. package/dist/timeLineElements/HistoToolTip.js +0 -78
  65. package/dist/timeLineElements/Histogram.js +0 -110
  66. package/dist/timeLineElements/Legend.js +0 -70
  67. package/dist/timeLineElements/QualityLine.js +0 -81
  68. package/dist/timeLineElements/Tools.js +0 -115
  69. package/dist/timeLineElements/XAxis.js +0 -76
  70. package/dist/timeLineElements/XGrid.js +0 -47
  71. package/dist/timeLineElements/YAxis.js +0 -60
  72. package/dist/timeLineElements/YGrid.js +0 -46
  73. package/dist/timeLineElements/axesStyles.js +0 -57
  74. package/src/TimeLine.jsx +0 -1163
  75. package/src/cursorElements/commonStyles.js +0 -21
package/dist/TimeLine.js DELETED
@@ -1,1177 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
11
- var _d3Scale = require("d3-scale");
12
- var _merge2 = _interopRequireDefault(require("lodash-es/merge"));
13
- var _round2 = _interopRequireDefault(require("lodash-es/round"));
14
- var _max2 = _interopRequireDefault(require("lodash-es/max"));
15
- var _floor2 = _interopRequireDefault(require("lodash-es/floor"));
16
- var _isEqual = _interopRequireDefault(require("lodash-es/isEqual"));
17
- var _isFunction = _interopRequireDefault(require("lodash-es/isFunction"));
18
- var _Cursor = _interopRequireDefault(require("./Cursor"));
19
- var _Histogram = _interopRequireDefault(require("./timeLineElements/Histogram"));
20
- var _XAxis = _interopRequireDefault(require("./timeLineElements/XAxis"));
21
- var _YAxis = _interopRequireDefault(require("./timeLineElements/YAxis"));
22
- var _Legend = _interopRequireDefault(require("./timeLineElements/Legend"));
23
- var _Tools = _interopRequireDefault(require("./timeLineElements/Tools"));
24
- var _HistoToolTip = _interopRequireDefault(require("./timeLineElements/HistoToolTip"));
25
- var _theme = _interopRequireWildcard(require("./theme"));
26
- var _QualityLine = _interopRequireDefault(require("./timeLineElements/QualityLine"));
27
- var _YGrid = _interopRequireDefault(require("./timeLineElements/YGrid"));
28
- var _XGrid = _interopRequireDefault(require("./timeLineElements/XGrid"));
29
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
32
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
33
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
34
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
35
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
36
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
37
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
38
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
39
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
40
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
41
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
42
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
43
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
44
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
45
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
46
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
47
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
48
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
49
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
50
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
51
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
52
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
53
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
54
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
55
- var marginDefault = {
56
- left: 50,
57
- right: 45,
58
- top: 5,
59
- bottom: 5
60
- };
61
- var xAxisDefault = {
62
- height: 20,
63
- spaceBetweenTicks: 70,
64
- barsBetweenTicks: 8
65
- };
66
- var defaultZoomOutFactor = 1.25;
67
- var TimeLine = /*#__PURE__*/function (_Component) {
68
- _inherits(TimeLine, _Component);
69
- var _super = _createSuper(TimeLine);
70
- function TimeLine(props) {
71
- var _this;
72
- _classCallCheck(this, TimeLine);
73
- _this = _super.call(this, props);
74
- _defineProperty(_assertThisInitialized(_this), "shiftDomains", function (domains, _ref) {
75
- var min = _ref.min,
76
- max = _ref.max;
77
- //update domains if selection is outside domains
78
- var toUpdate = false;
79
- var biggestVisibleDomain = _this.props.biggestVisibleDomain;
80
- var newDomains = domains.map(function (domain, index) {
81
- if (min && min.isBefore(domain.min) || max && max.isAfter(domain.max)) {
82
- toUpdate = true;
83
- if (index === domains.length - 1) {
84
- //if last domain, increase domain
85
- var newDomain = {
86
- min: min && min.isBefore(domain.min) ? min : domain.min,
87
- max: max && max.isAfter(domain.max) ? max : domain.max
88
- };
89
- if (biggestVisibleDomain && (0, _momentTimezone["default"])(newDomain.min).add(biggestVisibleDomain).isSameOrBefore(newDomain.max)) {
90
- if (min.isBefore(domain.min)) {
91
- newDomain.max = (0, _momentTimezone["default"])(min).add(biggestVisibleDomain);
92
- } else {
93
- newDomain.min = (0, _momentTimezone["default"])(max).subtract(biggestVisibleDomain);
94
- }
95
- }
96
- return newDomain;
97
- } else {
98
- //if not last domain, shift domain
99
- if (min && min.isBefore(domain.min)) {
100
- return {
101
- min: min,
102
- max: (0, _momentTimezone["default"])(domain.max).subtract(domain.min.diff(min))
103
- };
104
- } else {
105
- return {
106
- min: (0, _momentTimezone["default"])(domain.min).add(max.diff(domain.max)),
107
- max: max
108
- };
109
- }
110
- }
111
- } else {
112
- return domain;
113
- }
114
- });
115
- return toUpdate ? newDomains : domains;
116
- });
117
- _defineProperty(_assertThisInitialized(_this), "onResizeLeftCursor", function (delta, mouse) {
118
- var newStart = (0, _momentTimezone["default"])(_this.xAxis.invert(_this.xAxis(_this.state.start) + delta));
119
- var newStop = _this.state.stop;
120
- var maxTimespan = false;
121
- if (newStart.isSameOrAfter(newStop)) {
122
- newStop = (0, _momentTimezone["default"])(_this.xAxis.invert(_this.xAxis(newStop) + delta));
123
- }
124
- if (_this.props.biggestTimeSpan) {
125
- var min = (0, _momentTimezone["default"])(newStop).subtract(_this.props.biggestTimeSpan);
126
- if (min.isSameOrAfter(newStart)) {
127
- newStart = min;
128
- maxTimespan = true;
129
- }
130
- }
131
- _this.handleAutoSliding(mouse, _this.onResizeLeftCursor);
132
- if (newStop !== _this.state.stop && newStop.isSameOrBefore(_this.state.domain.max) || newStart.isSameOrAfter(_this.state.domain.min)) {
133
- _this.setState({
134
- start: newStart,
135
- stop: newStop,
136
- maxTimespan: maxTimespan
137
- });
138
- }
139
- });
140
- _defineProperty(_assertThisInitialized(_this), "onResizeRightCursor", function (delta, mouse) {
141
- var newStop = (0, _momentTimezone["default"])(_this.xAxis.invert(_this.xAxis(_this.state.stop) + delta));
142
- var newStart = _this.state.start;
143
- var maxTimespan = false;
144
- if (newStop.isSameOrBefore(newStart)) {
145
- newStart = (0, _momentTimezone["default"])(_this.xAxis.invert(_this.xAxis(newStart) + delta));
146
- }
147
- if (_this.props.biggestTimeSpan) {
148
- var max = (0, _momentTimezone["default"])(newStart).add(_this.props.biggestTimeSpan);
149
- if (max.isSameOrBefore(newStop)) {
150
- newStop = max;
151
- maxTimespan = true;
152
- }
153
- }
154
- _this.handleAutoSliding(mouse, _this.onResizeRightCursor);
155
- if (newStop.isSameOrBefore(_this.state.domain.max) && newStart.isSameOrAfter(_this.state.domain.min)) {
156
- _this.setState({
157
- start: newStart,
158
- stop: newStop,
159
- maxTimespan: maxTimespan
160
- });
161
- }
162
- });
163
- _defineProperty(_assertThisInitialized(_this), "onDragCursor", function (delta, mouse) {
164
- _this.xAxis.clamp(false);
165
- var duration = _this.state.stop.diff(_this.state.start);
166
- var newStart = (0, _momentTimezone["default"])(_this.xAxis.invert(_this.xAxis(_this.state.start) + delta));
167
- var newStop = (0, _momentTimezone["default"])(newStart).add(duration, 'MILLISECONDS');
168
- _this.xAxis.clamp(true);
169
- var maxDomain = _this.props.maxDomain;
170
- if (maxDomain.min && newStart.isBefore(maxDomain.min)) {
171
- newStart = (0, _momentTimezone["default"])(maxDomain.min);
172
- }
173
- if (maxDomain.max && newStop.isAfter(maxDomain.max)) {
174
- newStop = (0, _momentTimezone["default"])(maxDomain.max);
175
- }
176
- _this.handleAutoSliding(mouse, _this.onDragCursor);
177
- _this.setState({
178
- start: newStart,
179
- stop: newStop
180
- });
181
- });
182
- _defineProperty(_assertThisInitialized(_this), "onStartDrawCursor", function (pos) {
183
- _this.setState({
184
- start: (0, _momentTimezone["default"])(_this.xAxis.invert(pos)),
185
- stop: (0, _momentTimezone["default"])(_this.xAxis.invert(pos + 1)),
186
- maxTimespan: false
187
- });
188
- });
189
- _defineProperty(_assertThisInitialized(_this), "onDrawCursor", function (delta, mouse) {
190
- var newStop = (0, _momentTimezone["default"])(_this.xAxis.invert(_this.xAxis(_this.state.stop) + delta));
191
- var newStart = _this.state.start;
192
- var maxTimespan = false;
193
- if (newStop.isSameOrBefore(newStart)) {
194
- newStart = (0, _momentTimezone["default"])(_this.xAxis.invert(_this.xAxis(newStart) + delta));
195
- }
196
- if (_this.props.biggestTimeSpan) {
197
- var max = (0, _momentTimezone["default"])(newStart).add(_this.props.biggestTimeSpan);
198
- if (max.isSameOrBefore(newStop)) {
199
- newStop = max;
200
- maxTimespan = true;
201
- }
202
- }
203
- _this.handleAutoSliding(mouse, _this.onDrawCursor);
204
- if (newStop.isSameOrBefore(_this.state.domain.max) && newStart.isSameOrAfter(_this.state.domain.min)) {
205
- _this.setState({
206
- start: newStart,
207
- stop: newStop,
208
- maxTimespan: maxTimespan
209
- });
210
- }
211
- });
212
- _defineProperty(_assertThisInitialized(_this), "stopAutoMove", function () {
213
- if (_this.autoMove) {
214
- _this.setAutoMove(false);
215
- }
216
- if (_this.isAutoMoving) {
217
- _this.isAutoMoving = false;
218
- _this.movedTimeLine();
219
- }
220
- });
221
- _defineProperty(_assertThisInitialized(_this), "onEndDrawCursor", function () {
222
- _this.stopAutoMove();
223
- var _this$props = _this.props,
224
- onCustomRange = _this$props.onCustomRange,
225
- selectBarOnClick = _this$props.selectBarOnClick;
226
- var _this$state = _this.state,
227
- start = _this$state.start,
228
- stop = _this$state.stop,
229
- barHovered = _this$state.barHovered;
230
- if (selectBarOnClick && _this.items && barHovered > -1) {
231
- var item = _this.items[barHovered];
232
- if (start.isSameOrAfter(item.start) && stop.isSameOrBefore(item.end)) {
233
- start = (0, _momentTimezone["default"])(item.start);
234
- stop = (0, _momentTimezone["default"])(item.end);
235
- _this.setState({
236
- start: start,
237
- stop: stop
238
- });
239
- }
240
- }
241
- onCustomRange(start, stop);
242
- });
243
- _defineProperty(_assertThisInitialized(_this), "onEndChangeCursor", function () {
244
- _this.stopAutoMove();
245
- var onCustomRange = _this.props.onCustomRange;
246
- var _this$state2 = _this.state,
247
- start = _this$state2.start,
248
- stop = _this$state2.stop;
249
- onCustomRange(start, stop);
250
- });
251
- _defineProperty(_assertThisInitialized(_this), "handleAutoSliding", function (mouse, action) {
252
- //slide domain when dragging and mouse out of histo
253
- if (mouse) {
254
- var posX = mouse[0];
255
- if (posX < 0) {
256
- _this.setAutoMove(true, action, posX);
257
- } else if (posX >= 0 && posX <= _this.state.histoWidth) {
258
- _this.setAutoMove(false);
259
- } else if (posX > _this.state.histoWidth) {
260
- _this.setAutoMove(true, action, posX - _this.state.histoWidth);
261
- }
262
- }
263
- });
264
- _defineProperty(_assertThisInitialized(_this), "setAutoMove", function (active, action, delta) {
265
- if (active) {
266
- //prevent creating timer to often if mouse did not move so much
267
- if (!_this.autoMove || _this.autoMove && Math.abs(_this.lastAutoMovingDelta - delta) > 5) {
268
- clearInterval(_this.autoMove);
269
- _this.autoMove = setInterval(function () {
270
- action(delta);
271
- _this.moveTimeLine(-delta);
272
- _this.isAutoMoving = true;
273
- _this.lastAutoMovingDelta = delta;
274
- }, 30);
275
- }
276
- } else if (!active) {
277
- clearInterval(_this.autoMove);
278
- _this.autoMove = null;
279
- }
280
- });
281
- _defineProperty(_assertThisInitialized(_this), "onWheel", function (event) {
282
- var _this$state3 = _this.state,
283
- waitForLoad = _this$state3.waitForLoad,
284
- maxZoom = _this$state3.maxZoom,
285
- minZoom = _this$state3.minZoom;
286
- var _this$props2 = _this.props,
287
- onShowMessage = _this$props2.onShowMessage,
288
- domains = _this$props2.domains;
289
- event.stopPropagation();
290
- var baseX = _this.timelineElement.current.getBoundingClientRect().left;
291
- var x = event.clientX - baseX - _this.state.margin.left;
292
- if (!waitForLoad) {
293
- if (event.deltaY < -50) {
294
- if (maxZoom) {
295
- onShowMessage(_this.labels.scrollMaxZoomMsg);
296
- } else {
297
- _this.zoomOnTarget(x);
298
- }
299
- } else if (event.deltaY > 50) {
300
- if (minZoom) {
301
- onShowMessage(_this.labels.minZoomMsg);
302
- } else if (domains.length > 1) {
303
- _this.zoomOut();
304
- } else {
305
- _this.zoomOutOfTarget(x);
306
- }
307
- }
308
- }
309
- });
310
- _defineProperty(_assertThisInitialized(_this), "onGotoCursor", function () {
311
- var middle = (0, _momentTimezone["default"])(_this.state.start).add(_this.state.stop.diff(_this.state.start) / 2);
312
- _this.xAxis.clamp(false);
313
- var currentX = _this.state.histoWidth / 2;
314
- var newX = _this.xAxis(middle);
315
- var newDomain = _this.moveTimeLineCore(currentX - newX);
316
- var domains = _toConsumableArray(_this.props.domains);
317
- //Replace current domain
318
- domains.splice(0, 1, newDomain);
319
-
320
- //Check if other domains should shift
321
- var newDomains = _this.shiftDomains(domains, newDomain);
322
- _this.props.onUpdateDomains(newDomains);
323
- _this.xAxis.clamp(true);
324
- });
325
- _defineProperty(_assertThisInitialized(_this), "onGoto", function (d) {
326
- var halfTimeAgg = _this.state.stop.diff(_this.state.start) / 2;
327
- var when = d || (0, _momentTimezone["default"])();
328
- var newStop = (0, _momentTimezone["default"])(when).add(halfTimeAgg);
329
- var newStart = (0, _momentTimezone["default"])(when).subtract(halfTimeAgg);
330
- _this.props.onCustomRange(newStart, newStop);
331
- });
332
- _defineProperty(_assertThisInitialized(_this), "zoomOnTarget", function (x) {
333
- var _this$xAxis$domain = _this.xAxis.domain(),
334
- _this$xAxis$domain2 = _slicedToArray(_this$xAxis$domain, 2),
335
- minOrigin = _this$xAxis$domain2[0],
336
- maxOrigin = _this$xAxis$domain2[1];
337
- var target = (0, _momentTimezone["default"])(_this.xAxis.invert(x));
338
- var min = (0, _momentTimezone["default"])(target).subtract(0.25 * target.diff((0, _momentTimezone["default"])(minOrigin)));
339
- var max = (0, _momentTimezone["default"])(target).add(0.25 * (0, _momentTimezone["default"])(maxOrigin).diff(target));
340
- _this.zoomOnDomain({
341
- min: min,
342
- max: max
343
- });
344
- });
345
- _defineProperty(_assertThisInitialized(_this), "zoomOutOfTarget", function (x) {
346
- var _this$xAxis$domain3 = _this.xAxis.domain(),
347
- _this$xAxis$domain4 = _slicedToArray(_this$xAxis$domain3, 2),
348
- minOrigin = _this$xAxis$domain4[0],
349
- maxOrigin = _this$xAxis$domain4[1];
350
- var target = (0, _momentTimezone["default"])(_this.xAxis.invert(x));
351
- var min = (0, _momentTimezone["default"])(target).subtract(1.25 * target.diff((0, _momentTimezone["default"])(minOrigin)));
352
- var max = (0, _momentTimezone["default"])(target).add(1.25 * (0, _momentTimezone["default"])(maxOrigin).diff(target));
353
- _this.zoomOutTo([{
354
- min: min,
355
- max: max
356
- }]);
357
- });
358
- _defineProperty(_assertThisInitialized(_this), "checkAndCorrectDomain", function (_ref2) {
359
- var domain = _ref2.domain;
360
- if (!domain) {
361
- return {
362
- domain: domain,
363
- maxZoom: false,
364
- minZoom: false,
365
- domainHasChanged: false
366
- };
367
- }
368
- var newDomain = _objectSpread({}, domain);
369
- var _this$props3 = _this.props,
370
- biggestVisibleDomain = _this$props3.biggestVisibleDomain,
371
- maxDomain = _this$props3.maxDomain,
372
- smallestResolution = _this$props3.smallestResolution;
373
- var histoWidth = _this.state.histoWidth;
374
- var domainHasChanged = false;
375
-
376
- //Maximum zoom?
377
- var duration = newDomain.max.diff(newDomain.min);
378
- var maxZoom = false;
379
-
380
- //We stop/recap zoom in when 15px = 1min
381
- var minRes = smallestResolution.asMilliseconds();
382
- if (duration <= histoWidth * minRes / 15) {
383
- maxZoom = true;
384
- newDomain.max = (0, _momentTimezone["default"])(newDomain.min).add(histoWidth * minRes / 15, 'ms');
385
- }
386
-
387
- //Minimum zoom?
388
- var minTime, maxTime;
389
- if (maxDomain.min && newDomain.min.isBefore(maxDomain.min)) {
390
- newDomain.min = (0, _momentTimezone["default"])(maxDomain.min);
391
- minTime = true;
392
- }
393
- if (maxDomain.max && newDomain.max.isAfter(maxDomain.max)) {
394
- newDomain.max = (0, _momentTimezone["default"])(maxDomain.max);
395
- maxTime = true;
396
- }
397
- var minZoom = false;
398
- if (biggestVisibleDomain && newDomain.max.isSameOrAfter((0, _momentTimezone["default"])(newDomain.min).add(biggestVisibleDomain))) {
399
- minZoom = true;
400
- newDomain.min = (0, _momentTimezone["default"])(newDomain.max).subtract(biggestVisibleDomain);
401
- }
402
- if (!(newDomain.min.isSame(domain.min) && newDomain.max.isSame(domain.max))) {
403
- domainHasChanged = true;
404
- }
405
- return {
406
- domain: domainHasChanged ? newDomain : domain,
407
- maxZoom: maxZoom,
408
- minZoom: minZoom,
409
- maxTime: maxTime,
410
- minTime: minTime,
411
- domainHasChanged: domainHasChanged
412
- };
413
- });
414
- _defineProperty(_assertThisInitialized(_this), "zoomOnDomain", function (targetDomain) {
415
- var _this$props4 = _this.props,
416
- onShowMessage = _this$props4.onShowMessage,
417
- onUpdateDomains = _this$props4.onUpdateDomains;
418
- if (!_this.state.waitForLoad) {
419
- if (!(targetDomain.min.isSame(_this.state.domain.min) && targetDomain.max.isSame(_this.state.domain.max))) {
420
- var _this$checkAndCorrect = _this.checkAndCorrectDomain({
421
- domain: targetDomain
422
- }),
423
- maxZoom = _this$checkAndCorrect.maxZoom,
424
- domain = _this$checkAndCorrect.domain;
425
- var currentMaxZoom = _this.state.maxZoom;
426
- if (maxZoom && maxZoom !== currentMaxZoom) {
427
- onShowMessage(_this.labels.zoomSelectionResolutionExtended);
428
- }
429
- var domains = [domain].concat(_toConsumableArray(_this.props.domains));
430
- _this.setState({
431
- maxZoom: maxZoom,
432
- minZoom: false,
433
- domain: domain
434
- });
435
- onUpdateDomains(domains);
436
- } else {
437
- onShowMessage(_this.labels.zoomInWithoutChangingSelectionMsg);
438
- }
439
- }
440
- });
441
- _defineProperty(_assertThisInitialized(_this), "zoomOutTo", function (domains) {
442
- var _this$checkAndCorrect2 = _this.checkAndCorrectDomain({
443
- domain: domains[0]
444
- }),
445
- minZoom = _this$checkAndCorrect2.minZoom,
446
- domain = _this$checkAndCorrect2.domain,
447
- domainHasChanged = _this$checkAndCorrect2.domainHasChanged,
448
- maxTime = _this$checkAndCorrect2.maxTime,
449
- minTime = _this$checkAndCorrect2.minTime;
450
- var _this$props5 = _this.props,
451
- onShowMessage = _this$props5.onShowMessage,
452
- onUpdateDomains = _this$props5.onUpdateDomains;
453
- if (minZoom) {
454
- onShowMessage(_this.labels.minZoomMsg);
455
- }
456
- if (minTime) {
457
- onShowMessage(_this.labels.minDomainMsg);
458
- }
459
- if (maxTime) {
460
- onShowMessage(_this.labels.maxDomainMsg);
461
- }
462
- var newDomains = domainHasChanged ? [domain].concat(_toConsumableArray(_this.props.domains.slice(1))) : domains;
463
- _this.setState({
464
- maxZoom: false,
465
- minZoom: minZoom,
466
- domain: domain
467
- });
468
- onUpdateDomains(newDomains);
469
- });
470
- _defineProperty(_assertThisInitialized(_this), "zoomIn", function () {
471
- var _this$state4 = _this.state,
472
- maxZoom = _this$state4.maxZoom,
473
- start = _this$state4.start,
474
- stop = _this$state4.stop;
475
- var onShowMessage = _this.props.onShowMessage;
476
- if (!maxZoom) {
477
- _this.zoomOnDomain({
478
- min: start,
479
- max: stop
480
- });
481
- } else {
482
- onShowMessage(_this.labels.doubleClickMaxZoomMsg);
483
- }
484
- });
485
- _defineProperty(_assertThisInitialized(_this), "zoomOut", function () {
486
- if (!_this.state.waitForLoad && !_this.state.minZoom) {
487
- var domains = _toConsumableArray(_this.props.domains);
488
- var zoomOutFactor = _this.props.zoomOutFactor;
489
- if (domains.length > 1) {
490
- domains.shift();
491
- } else {
492
- var _this$xAxis$domain5 = _this.xAxis.domain(),
493
- _this$xAxis$domain6 = _slicedToArray(_this$xAxis$domain5, 2),
494
- minOrigin = _this$xAxis$domain6[0],
495
- maxOrigin = _this$xAxis$domain6[1];
496
- var halfDuration = (0, _momentTimezone["default"])(maxOrigin).diff((0, _momentTimezone["default"])(minOrigin)) / 2;
497
- var target = (0, _momentTimezone["default"])(minOrigin).add(halfDuration);
498
- var min = (0, _momentTimezone["default"])(target).subtract(zoomOutFactor * halfDuration);
499
- var max = (0, _momentTimezone["default"])(target).add(zoomOutFactor * halfDuration);
500
- domains[0] = {
501
- min: min,
502
- max: max
503
- };
504
- }
505
- _this.zoomOutTo(domains);
506
- }
507
- });
508
- _defineProperty(_assertThisInitialized(_this), "moveTimeLineCore", function (delta) {
509
- var _this$props6 = _this.props,
510
- maxDomain = _this$props6.maxDomain,
511
- onShowMessage = _this$props6.onShowMessage;
512
- var _this$state5 = _this.state,
513
- currentDomain = _this$state5.domain,
514
- _this$state5$minTime = _this$state5.minTime,
515
- minTime = _this$state5$minTime === void 0 ? false : _this$state5$minTime,
516
- _this$state5$maxTime = _this$state5.maxTime,
517
- maxTime = _this$state5$maxTime === void 0 ? false : _this$state5$maxTime;
518
- var currentSpan = currentDomain.max.diff(currentDomain.min);
519
- if (minTime && delta > 0 || maxTime && delta < 0) {
520
- return _objectSpread(_objectSpread({}, currentDomain), {}, {
521
- moved: 0,
522
- minTime: minTime,
523
- maxTime: maxTime
524
- });
525
- } else {
526
- var min = (0, _momentTimezone["default"])(_this.xAxis.invert(-delta));
527
- var max = (0, _momentTimezone["default"])(_this.xAxis.invert(_this.state.histoWidth - delta));
528
- var moved = delta;
529
- if (maxDomain.min && min.isBefore(maxDomain.min)) {
530
- moved = _this.xAxis(maxDomain.min);
531
- min = (0, _momentTimezone["default"])(maxDomain.min);
532
- max = (0, _momentTimezone["default"])(min).add(currentSpan);
533
- minTime = true;
534
- onShowMessage(_this.labels.minDomainMsg);
535
- }
536
- if (maxDomain.max && max.isAfter(maxDomain.max)) {
537
- moved = _this.xAxis(maxDomain.max);
538
- max = (0, _momentTimezone["default"])(maxDomain.max);
539
- min = (0, _momentTimezone["default"])(max).subtract(currentSpan);
540
- maxTime = true;
541
- onShowMessage(_this.labels.maxDomainMsg);
542
- }
543
- return {
544
- min: min,
545
- max: max,
546
- moved: moved,
547
- minTime: minTime,
548
- maxTime: maxTime
549
- };
550
- }
551
- });
552
- _defineProperty(_assertThisInitialized(_this), "moveTimeLine", function (delta) {
553
- _this.xAxis.clamp(false);
554
- var _this$moveTimeLineCor = _this.moveTimeLineCore(delta),
555
- min = _this$moveTimeLineCor.min,
556
- max = _this$moveTimeLineCor.max,
557
- moved = _this$moveTimeLineCor.moved,
558
- minTime = _this$moveTimeLineCor.minTime,
559
- maxTime = _this$moveTimeLineCor.maxTime;
560
- if (moved !== 0) {
561
- _this.xAxis.domain([min, max]);
562
- _this.xAxis.clamp(true);
563
- var ticks = _this.xAxis.ticks((0, _floor2["default"])(_this.state.histoWidth / _this.props.xAxis.spaceBetweenTicks));
564
- _this.movedSinceLastFetched += moved;
565
- if (Math.abs(_this.movedSinceLastFetched) > 75 && _this.props.fetchWhileSliding) {
566
- _this.movedSinceLastFetched = 0;
567
- _this.getItems(_this.props, {
568
- min: min,
569
- max: max
570
- });
571
- }
572
- _this.setState({
573
- domain: {
574
- min: min,
575
- max: max
576
- },
577
- minTime: minTime,
578
- maxTime: maxTime,
579
- ticks: ticks
580
- });
581
- }
582
- });
583
- _defineProperty(_assertThisInitialized(_this), "movedTimeLine", function () {
584
- _this.movedSinceLastFetched = 0;
585
- var domain = _this.state.domain;
586
- var _this$props7 = _this.props,
587
- originalDomains = _this$props7.domains,
588
- onUpdateDomains = _this$props7.onUpdateDomains;
589
-
590
- //Replace current domain
591
- var domains = [domain].concat(_toConsumableArray(originalDomains.slice(1)));
592
-
593
- //Check if other domains should shift
594
- var newDomains = _this.shiftDomains(domains, domain);
595
- onUpdateDomains(newDomains);
596
- });
597
- _defineProperty(_assertThisInitialized(_this), "shiftTimeLine", function (delta) {
598
- var incr = delta / Math.abs(delta) * 8;
599
- var i = 0;
600
- function step() {
601
- this.moveTimeLine(incr);
602
- i += 8;
603
- if (i < Math.abs(delta)) {
604
- setTimeout(step.bind(this), 10);
605
- } else {
606
- this.movedTimeLine();
607
- }
608
- }
609
- step.bind(_assertThisInitialized(_this))();
610
- });
611
- _this.labels = (0, _merge2["default"])(_theme.defaultLabels, props.labels);
612
- _this.xAxis = null; //time axis computation function
613
-
614
- _this.state = _objectSpread({
615
- isActive: false,
616
- start: props.timeSpan.start,
617
- stop: props.timeSpan.stop,
618
- maxTimespan: false,
619
- waitForLoad: false,
620
- tooltipVisible: false,
621
- barHovered: null,
622
- dragging: false,
623
- ticks: [],
624
- verticalMarks: []
625
- }, _this.computeMarginAndWidth(props));
626
- _this.state = _objectSpread(_objectSpread({}, _this.state), _this.checkAndCorrectDomain({
627
- domain: props.domains[0]
628
- }));
629
- _this.widthOfLastUpdate = null;
630
- _this.timelineElement = /*#__PURE__*/_react["default"].createRef();
631
-
632
- //manage auto sliding
633
- _this.autoMove = null;
634
- _this.isAutoMoving = false;
635
- _this.lastAutoMovingDelta = 0;
636
- _this.movedSinceLastFetched = 0;
637
- return _this;
638
- }
639
- _createClass(TimeLine, [{
640
- key: "componentDidMount",
641
- value: function componentDidMount() {
642
- if (this.state.domain) {
643
- this.getItems(this.props, this.state.domain);
644
- } else {
645
- this.props.onLoadDefaultDomain();
646
- }
647
- this.computeMarginAndWidth(this.props);
648
- }
649
- }, {
650
- key: "componentDidUpdate",
651
- value: function componentDidUpdate(prevProps, prevState) {
652
- //reached max selection
653
- if (!prevState.maxTimespan && this.state.maxTimespan) {
654
- this.props.onShowMessage(this.labels.maxSelectionMsg);
655
- }
656
-
657
- //Change of width (big): update item
658
- if (prevProps.width !== this.props.width || !(0, _isEqual["default"])(prevProps.margin, this.props.margin)) {
659
- if (this.state.isActive) {
660
- this.getItems(this.props, this.state.domain, this.widthOfLastUpdate && Math.abs(this.props.width - this.widthOfLastUpdate) > 30);
661
- this.setState(this.computeMarginAndWidth(this.props));
662
- } else {
663
- this.setState(this.computeMarginAndWidth(this.props));
664
- }
665
- if (this.state.domain) {
666
- var _this$checkAndCorrect3 = this.checkAndCorrectDomain({
667
- domain: this.state.domain
668
- }),
669
- maxZoom = _this$checkAndCorrect3.maxZoom,
670
- minZoom = _this$checkAndCorrect3.minZoom,
671
- domain = _this$checkAndCorrect3.domain,
672
- domainHasChanged = _this$checkAndCorrect3.domainHasChanged,
673
- minTime = _this$checkAndCorrect3.minTime,
674
- maxTime = _this$checkAndCorrect3.maxTime;
675
- if (maxZoom !== this.state.maxZoom || minZoom !== this.state.minZoom) {
676
- this.setState({
677
- maxZoom: maxZoom,
678
- minZoom: minZoom,
679
- minTime: minTime,
680
- maxTime: maxTime,
681
- domain: domainHasChanged ? domain : this.state.domain
682
- });
683
- if (domainHasChanged) {
684
- var domains = [domain].concat(_toConsumableArray(this.props.domains.slice(1)));
685
- this.props.onUpdateDomains(domains);
686
- }
687
- }
688
- }
689
- }
690
-
691
- //If selection changed
692
- if (!prevProps.timeSpan.start.isSame(this.props.timeSpan.start) || !prevProps.timeSpan.stop.isSame(this.props.timeSpan.stop)) {
693
- var newDomains = this.shiftDomains(this.props.domains, {
694
- min: this.props.timeSpan.start,
695
- max: this.props.timeSpan.stop
696
- });
697
- if (newDomains !== this.props.domains) {
698
- this.props.onUpdateDomains(newDomains);
699
- }
700
-
701
- //Update cursor
702
- this.setState({
703
- start: this.props.timeSpan.start,
704
- stop: this.props.timeSpan.stop
705
- });
706
- }
707
-
708
- //If change in current domain, update items and state
709
- if (!prevProps.domains[0] && this.props.domains[0] || prevProps.domains[0] && (!prevProps.domains[0].min.isSame(this.props.domains[0].min) || !prevProps.domains[0].max.isSame(this.props.domains[0].max))) {
710
- //If current zoom changes and is changing min/max zoom attribute
711
- //then update min/maxZoom and crop domain
712
- var _this$checkAndCorrect4 = this.checkAndCorrectDomain({
713
- domain: this.props.domains[0]
714
- }),
715
- _maxZoom = _this$checkAndCorrect4.maxZoom,
716
- _minZoom = _this$checkAndCorrect4.minZoom,
717
- _domain = _this$checkAndCorrect4.domain,
718
- _domainHasChanged = _this$checkAndCorrect4.domainHasChanged,
719
- _minTime = _this$checkAndCorrect4.minTime,
720
- _maxTime = _this$checkAndCorrect4.maxTime;
721
- this.setState({
722
- maxZoom: _maxZoom,
723
- minZoom: _minZoom,
724
- minTime: _minTime,
725
- maxTime: _maxTime,
726
- domain: _domain
727
- });
728
-
729
- //if domain changed, update domain, and getItems will be done later
730
- if (_domainHasChanged) {
731
- var _domains = [_domain].concat(_toConsumableArray(this.props.domains.slice(1)));
732
- this.props.onUpdateDomains(_domains);
733
- } else {
734
- this.getItems(this.props, _domain);
735
- }
736
- }
737
-
738
- //If we got new histo change indicator
739
- if (prevProps.histo !== this.props.histo) {
740
- this.setState({
741
- waitForLoad: false
742
- });
743
- }
744
-
745
- //Recompute margin on legend change
746
- if (prevProps.metricsDefinition.legends !== this.props.metricsDefinition.legends) {
747
- this.computeMarginAndWidth(this.props);
748
- }
749
- }
750
- }, {
751
- key: "computeMarginAndWidth",
752
- value: function computeMarginAndWidth(props) {
753
- var _this$props8 = this.props,
754
- margin = _this$props8.margin,
755
- showLegend = _this$props8.showLegend,
756
- metricsDefinition = _this$props8.metricsDefinition,
757
- width = _this$props8.width;
758
- var localMargin = _objectSpread(_objectSpread({}, marginDefault), margin);
759
- if (showLegend) {
760
- var maxLength = (0, _max2["default"])(metricsDefinition.legends.map(function (s) {
761
- return s.length;
762
- }));
763
- localMargin.left = (0, _max2["default"])([5 + maxLength * 9, localMargin.left]);
764
- }
765
- return {
766
- margin: localMargin,
767
- histoWidth: width - localMargin.left - localMargin.right
768
- };
769
- }
770
- }, {
771
- key: "getItems",
772
- value: function getItems(props, domain) {
773
- var shouldReload = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
774
- var histoWidth = this.computeMarginAndWidth(this.props).histoWidth;
775
- this.xAxis = (0, _d3Scale.scaleTime)().domain([domain.min, domain.max]).range([0, histoWidth]);
776
- this.xAxis.clamp(true);
777
- var ticks = this.xAxis.ticks((0, _floor2["default"])(histoWidth / props.xAxis.spaceBetweenTicks));
778
- var intervalMs = (0, _max2["default"])([(0, _round2["default"])((0, _momentTimezone["default"])(ticks[1]).diff((0, _momentTimezone["default"])(ticks[0])) / props.xAxis.barsBetweenTicks), this.props.smallestResolution.asMilliseconds()]);
779
- this.setState({
780
- histoWidth: histoWidth,
781
- isActive: true,
782
- ticks: ticks
783
- });
784
- if (shouldReload && intervalMs) {
785
- this.widthOfLastUpdate = props.width;
786
- this.setState({
787
- waitForLoad: true
788
- });
789
- props.onLoadHisto(intervalMs, domain.min, domain.max);
790
- }
791
- }
792
- }, {
793
- key: "prepareVerticalScale",
794
- value: function prepareVerticalScale(_ref3) {
795
- var yAxis = _ref3.yAxis,
796
- xAxis = _ref3.xAxis,
797
- height = _ref3.height,
798
- histo = _ref3.histo,
799
- margin = _ref3.margin;
800
- var items = histo && histo.items;
801
- var maxHeight = height - margin.bottom - margin.top - (xAxis.height || xAxisDefault.height);
802
-
803
- //Y Axis computation
804
- var maxScale = items ? (0, _max2["default"])(items.map(function (i) {
805
- return i.total;
806
- })) || 0 : 0;
807
- var verticalScale = (0, _d3Scale.scaleLinear)().domain([0, maxScale]).range([0, maxHeight]);
808
- var verticalMarks = yAxis.spaceBetweenTicks && maxHeight > yAxis.spaceBetweenTicks * 2 ? verticalScale.ticks((0, _floor2["default"])(maxHeight / yAxis.spaceBetweenTicks)) : [maxScale];
809
- return {
810
- verticalScale: verticalScale,
811
- verticalMarks: verticalMarks,
812
- maxHeight: maxHeight
813
- };
814
- }
815
- }, {
816
- key: "prepareHistogram",
817
- value: function prepareHistogram(_ref4) {
818
- var _this2 = this;
819
- var histo = _ref4.histo,
820
- domain = _ref4.domain,
821
- verticalScale = _ref4.verticalScale;
822
- if (histo && histo.items && domain) {
823
- var min = domain.min,
824
- max = domain.max;
825
- return histo.items.filter(function (item) {
826
- return item.total > 0 && item.time.isSameOrAfter(min) && item.time.isBefore(max);
827
- }).map(function (item) {
828
- var start = (0, _momentTimezone["default"])(item.time);
829
- var end = (0, _momentTimezone["default"])(item.time).add(histo.intervalMs);
830
- return {
831
- x1: _this2.xAxis(start),
832
- x2: _this2.xAxis(end),
833
- start: start,
834
- end: end,
835
- metrics: item.metrics,
836
- total: item.total,
837
- height: verticalScale(item.total)
838
- };
839
- });
840
- } else {
841
- return [];
842
- }
843
- }
844
- }, {
845
- key: "render",
846
- value: function render() {
847
- var _this3 = this;
848
- var _this$props9 = this.props,
849
- width = _this$props9.width,
850
- height = _this$props9.height,
851
- histo = _this$props9.histo,
852
- tools = _this$props9.tools,
853
- quality = _this$props9.quality,
854
- qualityScale = _this$props9.qualityScale,
855
- metricsDefinition = _this$props9.metricsDefinition,
856
- classes = _this$props9.classes,
857
- rcToolTipPrefixCls = _this$props9.rcToolTipPrefixCls,
858
- showLegend = _this$props9.showLegend,
859
- onFormatTimeLegend = _this$props9.onFormatTimeLegend,
860
- onFormatMetricLegend = _this$props9.onFormatMetricLegend,
861
- onResetTime = _this$props9.onResetTime,
862
- onFormatTimeToolTips = _this$props9.onFormatTimeToolTips,
863
- xAxis = _this$props9.xAxis,
864
- yAxis = _this$props9.yAxis,
865
- showHistoToolTip = _this$props9.showHistoToolTip,
866
- HistoToolTip = _this$props9.HistoToolTip;
867
- var _this$state6 = this.state,
868
- isActive = _this$state6.isActive,
869
- domain = _this$state6.domain,
870
- histoWidth = _this$state6.histoWidth,
871
- margin = _this$state6.margin,
872
- start = _this$state6.start,
873
- stop = _this$state6.stop,
874
- maxZoom = _this$state6.maxZoom,
875
- minZoom = _this$state6.minZoom,
876
- maxTimespan = _this$state6.maxTimespan,
877
- barHovered = _this$state6.barHovered,
878
- tooltipVisible = _this$state6.tooltipVisible,
879
- ticks = _this$state6.ticks,
880
- dragging = _this$state6.dragging;
881
- var xAxisHeight = xAxis.height || xAxisDefault.height;
882
- var pointZero = {
883
- x: 0,
884
- y: height - margin.bottom - xAxisHeight
885
- };
886
- var originCursor = {
887
- x: 0,
888
- y: margin.top - 5
889
- };
890
- if ((0, _isFunction["default"])(this.xAxis)) {
891
- var _this$prepareVertical = this.prepareVerticalScale({
892
- yAxis: yAxis,
893
- xAxis: xAxis,
894
- height: height,
895
- histo: histo,
896
- margin: margin
897
- }),
898
- verticalScale = _this$prepareVertical.verticalScale,
899
- verticalMarks = _this$prepareVertical.verticalMarks,
900
- maxHeight = _this$prepareVertical.maxHeight;
901
- var items = this.prepareHistogram({
902
- histo: histo,
903
- domain: domain,
904
- verticalScale: verticalScale
905
- });
906
- this.items = items;
907
- return /*#__PURE__*/_react["default"].createElement("svg", {
908
- ref: this.timelineElement,
909
- width: width,
910
- height: height,
911
- onWheel: isActive ? this.onWheel : undefined
912
- }, /*#__PURE__*/_react["default"].createElement("g", {
913
- transform: "translate(".concat(margin.left, ",").concat(margin.top, ")")
914
- }, yAxis.showGrid && /*#__PURE__*/_react["default"].createElement(_YGrid["default"], {
915
- classes: classes,
916
- origin: pointZero,
917
- yAxis: verticalScale,
918
- marks: verticalMarks,
919
- xAxisWidth: histoWidth + 13
920
- }), xAxis.showGrid && /*#__PURE__*/_react["default"].createElement(_XGrid["default"], {
921
- classes: classes,
922
- origin: pointZero,
923
- xAxis: this.xAxis,
924
- marks: ticks,
925
- yAxisHeight: maxHeight
926
- }), isActive && /*#__PURE__*/_react["default"].createElement(_Histogram["default"], {
927
- classes: classes,
928
- origin: pointZero,
929
- items: items,
930
- histo: histo,
931
- verticalScale: verticalScale,
932
- metricsDefinition: metricsDefinition,
933
- barHovered: barHovered,
934
- dragging: dragging,
935
- tooltipVisible: tooltipVisible,
936
- onFormatTimeToolTips: onFormatTimeToolTips,
937
- onFormatMetricLegend: onFormatMetricLegend,
938
- HistoToolTip: HistoToolTip
939
- }), /*#__PURE__*/_react["default"].createElement(_XAxis["default"], {
940
- classes: classes,
941
- origin: pointZero,
942
- axisWidth: histoWidth + 13,
943
- min: domain && domain.min,
944
- max: domain && domain.max,
945
- xAxis: this.xAxis,
946
- marks: ticks,
947
- arrowPath: xAxis.arrowPath,
948
- yAxisHeight: maxHeight,
949
- showGrid: xAxis.showGrid,
950
- onFormatTimeLegend: onFormatTimeLegend
951
- }), /*#__PURE__*/_react["default"].createElement(_Tools["default"], {
952
- classes: classes,
953
- rcToolTipPrefixCls: rcToolTipPrefixCls,
954
- origin: pointZero,
955
- histoWidth: histoWidth,
956
- isActive: isActive,
957
- tools: tools,
958
- labels: this.labels,
959
- onGoto: this.onGoto,
960
- onResetTime: onResetTime,
961
- shiftTimeLine: this.shiftTimeLine
962
- }), /*#__PURE__*/_react["default"].createElement(_YAxis["default"], {
963
- classes: classes,
964
- origin: pointZero,
965
- maxHeight: maxHeight,
966
- yAxis: verticalScale,
967
- marks: verticalMarks,
968
- arrowPath: yAxis.arrowPath,
969
- showGrid: yAxis.showGrid,
970
- xAxisWidth: histoWidth + 13,
971
- onFormatMetricLegend: onFormatMetricLegend
972
- }), showLegend && /*#__PURE__*/_react["default"].createElement(_Legend["default"], {
973
- classes: classes,
974
- origin: {
975
- x: -5,
976
- y: margin.top + 2
977
- },
978
- metricsDefinition: metricsDefinition
979
- }), isActive && tools.cursor !== false && /*#__PURE__*/_react["default"].createElement(_Cursor["default"], {
980
- origin: originCursor,
981
- rcToolTipPrefixCls: rcToolTipPrefixCls,
982
- classes: classes,
983
- startPos: this.xAxis(start),
984
- startIsOutOfView: start.isBefore(domain.min) || start.isAfter(domain.max),
985
- endPos: this.xAxis(stop),
986
- endIsOutOfView: stop.isBefore(domain.min) || stop.isAfter(domain.max),
987
- cursorIsBeforeView: start.isBefore(domain.min) && stop.isBefore(domain.min),
988
- cursorIsAfterView: start.isAfter(domain.max) && stop.isAfter(domain.max),
989
- height: maxHeight,
990
- overlayHeight: height - margin.top,
991
- overlayWidth: histoWidth,
992
- tooltipVisible: tooltipVisible,
993
- barHovered: barHovered,
994
- setToolTipVisible: function setToolTipVisible(tooltipVisible) {
995
- return _this3.setState({
996
- tooltipVisible: tooltipVisible
997
- });
998
- },
999
- setBarHovered: function setBarHovered(barHovered) {
1000
- return _this3.setState({
1001
- barHovered: barHovered
1002
- });
1003
- },
1004
- items: items,
1005
- showHistoToolTip: showHistoToolTip,
1006
- dragging: dragging,
1007
- setDragging: function setDragging(dragging) {
1008
- return _this3.setState({
1009
- dragging: dragging
1010
- });
1011
- },
1012
- canZoom: true,
1013
- minZoom: minZoom,
1014
- maxZoom: maxZoom,
1015
- startText: onFormatTimeToolTips(start),
1016
- stopText: onFormatTimeToolTips(stop),
1017
- maxSize: maxTimespan,
1018
- tools: tools,
1019
- gotoCursorLabel: this.labels.gotoCursor,
1020
- zoomInLabel: this.labels.zoomInLabel,
1021
- zoomOutLabel: this.labels.zoomOutLabel,
1022
- zoomIn: this.zoomIn,
1023
- zoomOut: this.zoomOut,
1024
- onResizeLeftCursor: this.onResizeLeftCursor,
1025
- onResizeRightCursor: this.onResizeRightCursor,
1026
- onEndResizeCursor: this.onEndChangeCursor,
1027
- onDragCursor: this.onDragCursor,
1028
- onEndDragCursor: this.onEndChangeCursor,
1029
- onStartDrawCursor: this.onStartDrawCursor,
1030
- onDrawCursor: this.onDrawCursor,
1031
- onEndCursor: this.onEndDrawCursor,
1032
- onMoveDomain: this.moveTimeLine,
1033
- onMovedDomain: this.movedTimeLine,
1034
- onGotoCursor: this.onGotoCursor
1035
- }), isActive && quality && quality.items && /*#__PURE__*/_react["default"].createElement(_QualityLine["default"], {
1036
- classes: classes,
1037
- rcToolTipPrefixCls: rcToolTipPrefixCls,
1038
- origin: pointZero,
1039
- quality: quality,
1040
- qualityScale: qualityScale,
1041
- xAxis: this.xAxis
1042
- })));
1043
- } else {
1044
- return null;
1045
- }
1046
- }
1047
- }]);
1048
- return TimeLine;
1049
- }(_react.Component);
1050
- exports["default"] = TimeLine;
1051
- _defineProperty(TimeLine, "propTypes", {
1052
- className: _propTypes["default"].string,
1053
- classes: _propTypes["default"].object,
1054
- rcToolTipPrefixCls: _propTypes["default"].string,
1055
- timeSpan: _propTypes["default"].shape({
1056
- start: _propTypes["default"].instanceOf(_momentTimezone["default"]).isRequired,
1057
- stop: _propTypes["default"].instanceOf(_momentTimezone["default"]).isRequired
1058
- }).isRequired,
1059
- domains: _propTypes["default"].arrayOf(_propTypes["default"].shape({
1060
- min: _propTypes["default"].instanceOf(_momentTimezone["default"]).isRequired,
1061
- max: _propTypes["default"].instanceOf(_momentTimezone["default"]).isRequired
1062
- })).isRequired,
1063
- maxDomain: _propTypes["default"].shape({
1064
- min: _propTypes["default"].instanceOf(_momentTimezone["default"]),
1065
- max: _propTypes["default"].instanceOf(_momentTimezone["default"])
1066
- }),
1067
- biggestVisibleDomain: _propTypes["default"].object,
1068
- smallestResolution: _propTypes["default"].object.isRequired,
1069
- biggestTimeSpan: _propTypes["default"].object,
1070
- histo: _propTypes["default"].shape({
1071
- items: _propTypes["default"].arrayOf(_propTypes["default"].shape({
1072
- time: _propTypes["default"].instanceOf(_momentTimezone["default"]).isRequired,
1073
- metrics: _propTypes["default"].arrayOf(_propTypes["default"].number).isRequired,
1074
- total: _propTypes["default"].number.isRequired
1075
- })),
1076
- intervalMs: _propTypes["default"].number
1077
- }).isRequired,
1078
- showHistoToolTip: _propTypes["default"].bool,
1079
- HistoToolTip: _propTypes["default"].elementType,
1080
- quality: _propTypes["default"].shape({
1081
- items: _propTypes["default"].arrayOf(_propTypes["default"].shape({
1082
- time: _propTypes["default"].instanceOf(_momentTimezone["default"]).isRequired,
1083
- quality: _propTypes["default"].number.isRequired,
1084
- tip: _propTypes["default"].node
1085
- })),
1086
- intervalMin: _propTypes["default"].number
1087
- }),
1088
- qualityScale: _propTypes["default"].func,
1089
- zoomOutFactor: _propTypes["default"].number,
1090
- metricsDefinition: _propTypes["default"].shape({
1091
- count: _propTypes["default"].number.isRequired,
1092
- legends: _propTypes["default"].arrayOf(_propTypes["default"].string).isRequired,
1093
- colors: _propTypes["default"].arrayOf(_propTypes["default"].shape({
1094
- fill: _propTypes["default"].string.isRequired,
1095
- stroke: _propTypes["default"].string.isRequired,
1096
- text: _propTypes["default"].string.isRequired
1097
- })).isRequired
1098
- }).isRequired,
1099
- width: _propTypes["default"].number,
1100
- height: _propTypes["default"].number,
1101
- labels: _propTypes["default"].shape({
1102
- forwardButtonTip: _propTypes["default"].string,
1103
- backwardButtonTip: _propTypes["default"].string,
1104
- resetButtonTip: _propTypes["default"].string,
1105
- gotoNowButtonTip: _propTypes["default"].string,
1106
- doubleClickMaxZoomMsg: _propTypes["default"].string,
1107
- zoomInWithoutChangingSelectionMsg: _propTypes["default"].string,
1108
- zoomSelectionResolutionExtended: _propTypes["default"].string,
1109
- maxSelectionMsg: _propTypes["default"].string,
1110
- scrollMaxZoomMsg: _propTypes["default"].string,
1111
- minZoomMsg: _propTypes["default"].string,
1112
- maxDomainMsg: _propTypes["default"].string,
1113
- minDomainMsg: _propTypes["default"].string,
1114
- gotoCursor: _propTypes["default"].string,
1115
- zoomInLabel: _propTypes["default"].string,
1116
- zoomOutLabel: _propTypes["default"].string
1117
- }),
1118
- showLegend: _propTypes["default"].bool,
1119
- tools: _propTypes["default"].shape({
1120
- slideForward: _propTypes["default"].bool,
1121
- slideBackward: _propTypes["default"].bool,
1122
- resetTimeline: _propTypes["default"].bool,
1123
- gotoNow: _propTypes["default"].bool,
1124
- cursor: _propTypes["default"].bool,
1125
- zoomIn: _propTypes["default"].bool,
1126
- zoomOut: _propTypes["default"].bool
1127
- }),
1128
- fetchWhileSliding: _propTypes["default"].bool,
1129
- selectBarOnClick: _propTypes["default"].bool,
1130
- xAxis: _propTypes["default"].shape({
1131
- arrowPath: _propTypes["default"].string,
1132
- spaceBetweenTicks: _propTypes["default"].number.isRequired,
1133
- barsBetweenTicks: _propTypes["default"].number.isRequired,
1134
- showGrid: _propTypes["default"].bool,
1135
- height: _propTypes["default"].number
1136
- }),
1137
- yAxis: _propTypes["default"].shape({
1138
- path: _propTypes["default"].string,
1139
- spaceBetweenTicks: _propTypes["default"].number,
1140
- showGrid: _propTypes["default"].bool
1141
- }),
1142
- margin: _propTypes["default"].shape({
1143
- left: _propTypes["default"].number,
1144
- right: _propTypes["default"].number,
1145
- top: _propTypes["default"].number,
1146
- bottom: _propTypes["default"].number
1147
- }),
1148
- onLoadDefaultDomain: _propTypes["default"].func.isRequired,
1149
- onLoadHisto: _propTypes["default"].func.isRequired,
1150
- onCustomRange: _propTypes["default"].func.isRequired,
1151
- onShowMessage: _propTypes["default"].func.isRequired,
1152
- onUpdateDomains: _propTypes["default"].func.isRequired,
1153
- onResetTime: _propTypes["default"].func.isRequired,
1154
- onFormatTimeToolTips: _propTypes["default"].func.isRequired,
1155
- onFormatTimeLegend: _propTypes["default"].func.isRequired,
1156
- onFormatMetricLegend: _propTypes["default"].func.isRequired
1157
- });
1158
- _defineProperty(TimeLine, "defaultProps", {
1159
- classes: {},
1160
- rcToolTipPrefixCls: _theme["default"].rcToolTipPrefixCls,
1161
- tools: {
1162
- slideForward: true,
1163
- slideBackward: true,
1164
- resetTimeline: true,
1165
- gotoNow: true,
1166
- cursor: true,
1167
- zoomIn: true,
1168
- zoomOut: true
1169
- },
1170
- xAxis: xAxisDefault,
1171
- yAxis: {},
1172
- margin: marginDefault,
1173
- showLegend: true,
1174
- qualityScale: _theme.defaultQualityScale,
1175
- zoomOutFactor: defaultZoomOutFactor,
1176
- HistoToolTip: _HistoToolTip["default"]
1177
- });