vis-rails 1.0.2 → 2.0.0

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -1
  3. data/README.md +2 -0
  4. data/lib/vis/rails/version.rb +1 -1
  5. data/vendor/assets/javascripts/module/exports-only-timeline.js +55 -0
  6. data/vendor/assets/javascripts/vis-only-timeline.js +23 -0
  7. data/vendor/assets/javascripts/vis.js +3 -3
  8. data/vendor/assets/stylesheets/vis-only-timeline.css +3 -0
  9. data/vendor/assets/vis/DataSet.js +106 -130
  10. data/vendor/assets/vis/DataView.js +35 -37
  11. data/vendor/assets/vis/graph/Edge.js +225 -45
  12. data/vendor/assets/vis/graph/Graph.js +120 -24
  13. data/vendor/assets/vis/graph/Node.js +16 -16
  14. data/vendor/assets/vis/graph/graphMixins/HierarchicalLayoutMixin.js +1 -1
  15. data/vendor/assets/vis/graph/graphMixins/ManipulationMixin.js +143 -0
  16. data/vendor/assets/vis/graph/graphMixins/SelectionMixin.js +81 -3
  17. data/vendor/assets/vis/graph3d/Graph3d.js +3306 -0
  18. data/vendor/assets/vis/module/exports.js +2 -3
  19. data/vendor/assets/vis/timeline/Range.js +93 -80
  20. data/vendor/assets/vis/timeline/Timeline.js +525 -428
  21. data/vendor/assets/vis/timeline/component/Component.js +19 -53
  22. data/vendor/assets/vis/timeline/component/CurrentTime.js +57 -25
  23. data/vendor/assets/vis/timeline/component/CustomTime.js +55 -19
  24. data/vendor/assets/vis/timeline/component/Group.js +47 -50
  25. data/vendor/assets/vis/timeline/component/ItemSet.js +402 -206
  26. data/vendor/assets/vis/timeline/component/TimeAxis.js +112 -169
  27. data/vendor/assets/vis/timeline/component/css/animation.css +33 -0
  28. data/vendor/assets/vis/timeline/component/css/currenttime.css +1 -1
  29. data/vendor/assets/vis/timeline/component/css/customtime.css +1 -1
  30. data/vendor/assets/vis/timeline/component/css/item.css +1 -11
  31. data/vendor/assets/vis/timeline/component/css/itemset.css +13 -18
  32. data/vendor/assets/vis/timeline/component/css/labelset.css +8 -6
  33. data/vendor/assets/vis/timeline/component/css/panel.css +56 -13
  34. data/vendor/assets/vis/timeline/component/css/timeaxis.css +15 -8
  35. data/vendor/assets/vis/timeline/component/item/Item.js +16 -15
  36. data/vendor/assets/vis/timeline/component/item/ItemBox.js +30 -30
  37. data/vendor/assets/vis/timeline/component/item/ItemPoint.js +20 -21
  38. data/vendor/assets/vis/timeline/component/item/ItemRange.js +23 -24
  39. data/vendor/assets/vis/timeline/component/item/ItemRangeOverflow.js +10 -10
  40. data/vendor/assets/vis/timeline/stack.js +5 -5
  41. data/vendor/assets/vis/util.js +81 -35
  42. metadata +7 -4
  43. data/vendor/assets/vis/timeline/component/Panel.js +0 -170
  44. data/vendor/assets/vis/timeline/component/RootPanel.js +0 -176
@@ -1,73 +1,38 @@
1
1
  /**
2
2
  * Prototype for visual components
3
+ * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body]
4
+ * @param {Object} [options]
3
5
  */
4
- function Component () {
5
- this.id = null;
6
- this.parent = null;
7
- this.childs = null;
6
+ function Component (body, options) {
8
7
  this.options = null;
9
-
10
- this.top = 0;
11
- this.left = 0;
12
- this.width = 0;
13
- this.height = 0;
8
+ this.props = null;
14
9
  }
15
10
 
16
- // Turn the Component into an event emitter
17
- Emitter(Component.prototype);
18
-
19
11
  /**
20
- * Set parameters for the frame. Parameters will be merged in current parameter
21
- * set.
22
- * @param {Object} options Available parameters:
23
- * {String | function} [className]
24
- * {String | Number | function} [left]
25
- * {String | Number | function} [top]
26
- * {String | Number | function} [width]
27
- * {String | Number | function} [height]
12
+ * Set options for the component. The new options will be merged into the
13
+ * current options.
14
+ * @param {Object} options
28
15
  */
29
- Component.prototype.setOptions = function setOptions(options) {
16
+ Component.prototype.setOptions = function(options) {
30
17
  if (options) {
31
18
  util.extend(this.options, options);
32
-
33
- this.repaint();
34
19
  }
35
20
  };
36
21
 
37
22
  /**
38
- * Get an option value by name
39
- * The function will first check this.options object, and else will check
40
- * this.defaultOptions.
41
- * @param {String} name
42
- * @return {*} value
43
- */
44
- Component.prototype.getOption = function getOption(name) {
45
- var value;
46
- if (this.options) {
47
- value = this.options[name];
48
- }
49
- if (value === undefined && this.defaultOptions) {
50
- value = this.defaultOptions[name];
51
- }
52
- return value;
53
- };
54
-
55
- /**
56
- * Get the frame element of the component, the outer HTML DOM element.
57
- * @returns {HTMLElement | null} frame
23
+ * Repaint the component
24
+ * @return {boolean} Returns true if the component is resized
58
25
  */
59
- Component.prototype.getFrame = function getFrame() {
26
+ Component.prototype.redraw = function() {
60
27
  // should be implemented by the component
61
- return null;
28
+ return false;
62
29
  };
63
30
 
64
31
  /**
65
- * Repaint the component
66
- * @return {boolean} Returns true if the component is resized
32
+ * Destroy the component. Cleanup DOM and event listeners
67
33
  */
68
- Component.prototype.repaint = function repaint() {
34
+ Component.prototype.destroy = function() {
69
35
  // should be implemented by the component
70
- return false;
71
36
  };
72
37
 
73
38
  /**
@@ -76,11 +41,12 @@ Component.prototype.repaint = function repaint() {
76
41
  * @return {Boolean} Returns true if the component is resized
77
42
  * @protected
78
43
  */
79
- Component.prototype._isResized = function _isResized() {
80
- var resized = (this._previousWidth !== this.width || this._previousHeight !== this.height);
44
+ Component.prototype._isResized = function() {
45
+ var resized = (this.props._previousWidth !== this.props.width ||
46
+ this.props._previousHeight !== this.props.height);
81
47
 
82
- this._previousWidth = this.width;
83
- this._previousHeight = this.height;
48
+ this.props._previousWidth = this.props.width;
49
+ this.props._previousHeight = this.props.height;
84
50
 
85
51
  return resized;
86
52
  };
@@ -1,33 +1,33 @@
1
1
  /**
2
2
  * A current time bar
3
- * @param {Range} range
3
+ * @param {{range: Range, dom: Object, domProps: Object}} body
4
4
  * @param {Object} [options] Available parameters:
5
5
  * {Boolean} [showCurrentTime]
6
6
  * @constructor CurrentTime
7
7
  * @extends Component
8
8
  */
9
9
 
10
- function CurrentTime (range, options) {
11
- this.id = util.randomUUID();
10
+ function CurrentTime (body, options) {
11
+ this.body = body;
12
12
 
13
- this.range = range;
14
- this.options = options || {};
13
+ // default options
15
14
  this.defaultOptions = {
16
- showCurrentTime: false
15
+ showCurrentTime: true
17
16
  };
17
+ this.options = util.extend({}, this.defaultOptions);
18
18
 
19
19
  this._create();
20
+
21
+ this.setOptions(options);
20
22
  }
21
23
 
22
24
  CurrentTime.prototype = new Component();
23
25
 
24
- CurrentTime.prototype.setOptions = Component.prototype.setOptions;
25
-
26
26
  /**
27
27
  * Create the HTML DOM for the current time bar
28
28
  * @private
29
29
  */
30
- CurrentTime.prototype._create = function _create () {
30
+ CurrentTime.prototype._create = function() {
31
31
  var bar = document.createElement('div');
32
32
  bar.className = 'currenttime';
33
33
  bar.style.position = 'absolute';
@@ -38,25 +38,57 @@ CurrentTime.prototype._create = function _create () {
38
38
  };
39
39
 
40
40
  /**
41
- * Get the frame element of the current time bar
42
- * @returns {HTMLElement} frame
41
+ * Destroy the CurrentTime bar
42
+ */
43
+ CurrentTime.prototype.destroy = function () {
44
+ this.options.showCurrentTime = false;
45
+ this.redraw(); // will remove the bar from the DOM and stop refreshing
46
+
47
+ this.body = null;
48
+ };
49
+
50
+ /**
51
+ * Set options for the component. Options will be merged in current options.
52
+ * @param {Object} options Available parameters:
53
+ * {boolean} [showCurrentTime]
43
54
  */
44
- CurrentTime.prototype.getFrame = function getFrame() {
45
- return this.bar;
55
+ CurrentTime.prototype.setOptions = function(options) {
56
+ if (options) {
57
+ // copy all options that we know
58
+ util.selectiveExtend(['showCurrentTime'], this.options, options);
59
+ }
46
60
  };
47
61
 
48
62
  /**
49
63
  * Repaint the component
50
64
  * @return {boolean} Returns true if the component is resized
51
65
  */
52
- CurrentTime.prototype.repaint = function repaint() {
53
- var parent = this.parent;
54
-
55
- var now = new Date();
56
- var x = this.options.toScreen(now);
57
-
58
- this.bar.style.left = x + 'px';
59
- this.bar.title = 'Current time: ' + now;
66
+ CurrentTime.prototype.redraw = function() {
67
+ if (this.options.showCurrentTime) {
68
+ var parent = this.body.dom.backgroundVertical;
69
+ if (this.bar.parentNode != parent) {
70
+ // attach to the dom
71
+ if (this.bar.parentNode) {
72
+ this.bar.parentNode.removeChild(this.bar);
73
+ }
74
+ parent.appendChild(this.bar);
75
+
76
+ this.start();
77
+ }
78
+
79
+ var now = new Date();
80
+ var x = this.body.util.toScreen(now);
81
+
82
+ this.bar.style.left = x + 'px';
83
+ this.bar.title = 'Current time: ' + now;
84
+ }
85
+ else {
86
+ // remove the line from the DOM
87
+ if (this.bar.parentNode) {
88
+ this.bar.parentNode.removeChild(this.bar);
89
+ }
90
+ this.stop();
91
+ }
60
92
 
61
93
  return false;
62
94
  };
@@ -64,19 +96,19 @@ CurrentTime.prototype.repaint = function repaint() {
64
96
  /**
65
97
  * Start auto refreshing the current time bar
66
98
  */
67
- CurrentTime.prototype.start = function start() {
99
+ CurrentTime.prototype.start = function() {
68
100
  var me = this;
69
101
 
70
102
  function update () {
71
103
  me.stop();
72
104
 
73
105
  // determine interval to refresh
74
- var scale = me.range.conversion(me.parent.width).scale;
106
+ var scale = me.body.range.conversion(me.body.domProps.center.width).scale;
75
107
  var interval = 1 / scale / 10;
76
108
  if (interval < 30) interval = 30;
77
109
  if (interval > 1000) interval = 1000;
78
110
 
79
- me.repaint();
111
+ me.redraw();
80
112
 
81
113
  // start a timer to adjust for the new time
82
114
  me.currentTimeTimer = setTimeout(update, interval);
@@ -88,7 +120,7 @@ CurrentTime.prototype.start = function start() {
88
120
  /**
89
121
  * Stop auto refreshing the current time bar
90
122
  */
91
- CurrentTime.prototype.stop = function stop() {
123
+ CurrentTime.prototype.stop = function() {
92
124
  if (this.currentTimeTimer !== undefined) {
93
125
  clearTimeout(this.currentTimeTimer);
94
126
  delete this.currentTimeTimer;
@@ -1,35 +1,49 @@
1
1
  /**
2
2
  * A custom time bar
3
+ * @param {{range: Range, dom: Object}} body
3
4
  * @param {Object} [options] Available parameters:
4
5
  * {Boolean} [showCustomTime]
5
6
  * @constructor CustomTime
6
7
  * @extends Component
7
8
  */
8
9
 
9
- function CustomTime (options) {
10
- this.id = util.randomUUID();
10
+ function CustomTime (body, options) {
11
+ this.body = body;
11
12
 
12
- this.options = options || {};
13
+ // default options
13
14
  this.defaultOptions = {
14
15
  showCustomTime: false
15
16
  };
17
+ this.options = util.extend({}, this.defaultOptions);
16
18
 
17
19
  this.customTime = new Date();
18
20
  this.eventParams = {}; // stores state parameters while dragging the bar
19
21
 
20
22
  // create the DOM
21
23
  this._create();
24
+
25
+ this.setOptions(options);
22
26
  }
23
27
 
24
28
  CustomTime.prototype = new Component();
25
29
 
26
- CustomTime.prototype.setOptions = Component.prototype.setOptions;
30
+ /**
31
+ * Set options for the component. Options will be merged in current options.
32
+ * @param {Object} options Available parameters:
33
+ * {boolean} [showCustomTime]
34
+ */
35
+ CustomTime.prototype.setOptions = function(options) {
36
+ if (options) {
37
+ // copy all options that we know
38
+ util.selectiveExtend(['showCustomTime'], this.options, options);
39
+ }
40
+ };
27
41
 
28
42
  /**
29
43
  * Create the DOM for the custom time
30
44
  * @private
31
45
  */
32
- CustomTime.prototype._create = function _create () {
46
+ CustomTime.prototype._create = function() {
33
47
  var bar = document.createElement('div');
34
48
  bar.className = 'customtime';
35
49
  bar.style.position = 'absolute';
@@ -55,22 +69,44 @@ CustomTime.prototype._create = function _create () {
55
69
  };
56
70
 
57
71
  /**
58
- * Get the frame element of the custom time bar
59
- * @returns {HTMLElement} frame
72
+ * Destroy the CustomTime bar
60
73
  */
61
- CustomTime.prototype.getFrame = function getFrame() {
62
- return this.bar;
74
+ CustomTime.prototype.destroy = function () {
75
+ this.options.showCustomTime = false;
76
+ this.redraw(); // will remove the bar from the DOM
77
+
78
+ this.hammer.enable(false);
79
+ this.hammer = null;
80
+
81
+ this.body = null;
63
82
  };
64
83
 
65
84
  /**
66
85
  * Repaint the component
67
86
  * @return {boolean} Returns true if the component is resized
68
87
  */
69
- CustomTime.prototype.repaint = function () {
70
- var x = this.options.toScreen(this.customTime);
71
-
72
- this.bar.style.left = x + 'px';
73
- this.bar.title = 'Time: ' + this.customTime;
88
+ CustomTime.prototype.redraw = function () {
89
+ if (this.options.showCustomTime) {
90
+ var parent = this.body.dom.backgroundVertical;
91
+ if (this.bar.parentNode != parent) {
92
+ // attach to the dom
93
+ if (this.bar.parentNode) {
94
+ this.bar.parentNode.removeChild(this.bar);
95
+ }
96
+ parent.appendChild(this.bar);
97
+ }
98
+
99
+ var x = this.body.util.toScreen(this.customTime);
100
+
101
+ this.bar.style.left = x + 'px';
102
+ this.bar.title = 'Time: ' + this.customTime;
103
+ }
104
+ else {
105
+ // remove the line from the DOM
106
+ if (this.bar.parentNode) {
107
+ this.bar.parentNode.removeChild(this.bar);
108
+ }
109
+ }
74
110
 
75
111
  return false;
76
112
  };
@@ -81,7 +117,7 @@ CustomTime.prototype.repaint = function () {
81
117
  */
82
118
  CustomTime.prototype.setCustomTime = function(time) {
83
119
  this.customTime = new Date(time.valueOf());
84
- this.repaint();
120
+ this.redraw();
85
121
  };
86
122
 
87
123
  /**
@@ -114,13 +150,13 @@ CustomTime.prototype._onDrag = function (event) {
114
150
  if (!this.eventParams.dragging) return;
115
151
 
116
152
  var deltaX = event.gesture.deltaX,
117
- x = this.options.toScreen(this.eventParams.customTime) + deltaX,
118
- time = this.options.toTime(x);
153
+ x = this.body.util.toScreen(this.eventParams.customTime) + deltaX,
154
+ time = this.body.util.toTime(x);
119
155
 
120
156
  this.setCustomTime(time);
121
157
 
122
158
  // fire a timechange event
123
- this.emit('timechange', {
159
+ this.body.emitter.emit('timechange', {
124
160
  time: new Date(this.customTime.valueOf())
125
161
  });
126
162
 
@@ -137,7 +173,7 @@ CustomTime.prototype._onDragEnd = function (event) {
137
173
  if (!this.eventParams.dragging) return;
138
174
 
139
175
  // fire a timechanged event
140
- this.emit('timechanged', {
176
+ this.body.emitter.emit('timechanged', {
141
177
  time: new Date(this.customTime.valueOf())
142
178
  });
143
179
 
@@ -16,6 +16,7 @@ function Group (groupId, data, itemSet) {
16
16
  height: 0
17
17
  }
18
18
  };
19
+ this.className = null;
19
20
 
20
21
  this.items = {}; // items filtered by groupId of this group
21
22
  this.visibleItems = []; // items currently visible in window
@@ -49,8 +50,10 @@ Group.prototype._create = function() {
49
50
  this.dom.foreground = foreground;
50
51
 
51
52
  this.dom.background = document.createElement('div');
53
+ this.dom.background.className = 'group';
52
54
 
53
55
  this.dom.axis = document.createElement('div');
56
+ this.dom.axis.className = 'group';
54
57
 
55
58
  // create a hidden marker to detect when the Timelines container is attached
56
59
  // to the DOM, or the style of a parent of the Timeline is changed from
@@ -65,7 +68,7 @@ Group.prototype._create = function() {
65
68
  * Set the group data for this group
66
69
  * @param {Object} data Group data, can contain properties content and className
67
70
  */
68
- Group.prototype.setData = function setData(data) {
71
+ Group.prototype.setData = function(data) {
69
72
  // update contents
70
73
  var content = data && data.content;
71
74
  if (content instanceof Element) {
@@ -78,42 +81,34 @@ Group.prototype.setData = function setData(data) {
78
81
  this.dom.inner.innerHTML = this.groupId;
79
82
  }
80
83
 
84
+ if (!this.dom.inner.firstChild) {
85
+ util.addClassName(this.dom.inner, 'hidden');
86
+ }
87
+ else {
88
+ util.removeClassName(this.dom.inner, 'hidden');
89
+ }
90
+
81
91
  // update className
82
- var className = data && data.className;
83
- if (className) {
92
+ var className = data && data.className || null;
93
+ if (className != this.className) {
94
+ if (this.className) {
95
+ util.removeClassName(this.dom.label, className);
96
+ util.removeClassName(this.dom.foreground, className);
97
+ util.removeClassName(this.dom.background, className);
98
+ util.removeClassName(this.dom.axis, className);
99
+ }
84
100
  util.addClassName(this.dom.label, className);
101
+ util.addClassName(this.dom.foreground, className);
102
+ util.addClassName(this.dom.background, className);
103
+ util.addClassName(this.dom.axis, className);
85
104
  }
86
105
  };
87
106
 
88
- /**
89
- * Get the foreground container element
90
- * @return {HTMLElement} foreground
91
- */
92
- Group.prototype.getForeground = function getForeground() {
93
- return this.dom.foreground;
94
- };
95
-
96
- /**
97
- * Get the background container element
98
- * @return {HTMLElement} background
99
- */
100
- Group.prototype.getBackground = function getBackground() {
101
- return this.dom.background;
102
- };
103
-
104
- /**
105
- * Get the axis container element
106
- * @return {HTMLElement} axis
107
- */
108
- Group.prototype.getAxis = function getAxis() {
109
- return this.dom.axis;
110
- };
111
-
112
107
  /**
113
108
  * Get the width of the group label
114
109
  * @return {number} width
115
110
  */
116
- Group.prototype.getLabelWidth = function getLabelWidth() {
111
+ Group.prototype.getLabelWidth = function() {
117
112
  return this.props.label.width;
118
113
  };
119
114
 
@@ -125,7 +120,7 @@ Group.prototype.getLabelWidth = function getLabelWidth() {
125
120
  * @param {boolean} [restack=false] Force restacking of all items
126
121
  * @return {boolean} Returns true if the group is resized
127
122
  */
128
- Group.prototype.repaint = function repaint(range, margin, restack) {
123
+ Group.prototype.redraw = function(range, margin, restack) {
129
124
  var resized = false;
130
125
 
131
126
  this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range);
@@ -138,7 +133,7 @@ Group.prototype.repaint = function repaint(range, margin, restack) {
138
133
 
139
134
  util.forEach(this.items, function (item) {
140
135
  item.dirty = true;
141
- if (item.displayed) item.repaint();
136
+ if (item.displayed) item.redraw();
142
137
  });
143
138
 
144
139
  restack = true;
@@ -151,10 +146,6 @@ Group.prototype.repaint = function repaint(range, margin, restack) {
151
146
  else { // no stacking
152
147
  stack.nostack(this.visibleItems, margin);
153
148
  }
154
- for (var i = 0, ii = this.visibleItems.length; i < ii; i++) {
155
- var item = this.visibleItems[i];
156
- item.repositionY();
157
- }
158
149
 
159
150
  // recalculate the height of the group
160
151
  var height;
@@ -188,34 +179,40 @@ Group.prototype.repaint = function repaint(range, margin, restack) {
188
179
  foreground.style.height = height + 'px';
189
180
  this.dom.label.style.height = height + 'px';
190
181
 
182
+ // update vertical position of items after they are re-stacked and the height of the group is calculated
183
+ for (var i = 0, ii = this.visibleItems.length; i < ii; i++) {
184
+ var item = this.visibleItems[i];
185
+ item.repositionY();
186
+ }
187
+
191
188
  return resized;
192
189
  };
193
190
 
194
191
  /**
195
192
  * Show this group: attach to the DOM
196
193
  */
197
- Group.prototype.show = function show() {
194
+ Group.prototype.show = function() {
198
195
  if (!this.dom.label.parentNode) {
199
- this.itemSet.getLabelSet().appendChild(this.dom.label);
196
+ this.itemSet.dom.labelSet.appendChild(this.dom.label);
200
197
  }
201
198
 
202
199
  if (!this.dom.foreground.parentNode) {
203
- this.itemSet.getForeground().appendChild(this.dom.foreground);
200
+ this.itemSet.dom.foreground.appendChild(this.dom.foreground);
204
201
  }
205
202
 
206
203
  if (!this.dom.background.parentNode) {
207
- this.itemSet.getBackground().appendChild(this.dom.background);
204
+ this.itemSet.dom.background.appendChild(this.dom.background);
208
205
  }
209
206
 
210
207
  if (!this.dom.axis.parentNode) {
211
- this.itemSet.getAxis().appendChild(this.dom.axis);
208
+ this.itemSet.dom.axis.appendChild(this.dom.axis);
212
209
  }
213
210
  };
214
211
 
215
212
  /**
216
213
  * Hide this group: remove from the DOM
217
214
  */
218
- Group.prototype.hide = function hide() {
215
+ Group.prototype.hide = function() {
219
216
  var label = this.dom.label;
220
217
  if (label.parentNode) {
221
218
  label.parentNode.removeChild(label);
@@ -241,12 +238,12 @@ Group.prototype.hide = function hide() {
241
238
  * Add an item to the group
242
239
  * @param {Item} item
243
240
  */
244
- Group.prototype.add = function add(item) {
241
+ Group.prototype.add = function(item) {
245
242
  this.items[item.id] = item;
246
243
  item.setParent(this);
247
244
 
248
245
  if (item instanceof ItemRange && this.visibleItems.indexOf(item) == -1) {
249
- var range = this.itemSet.range; // TODO: not nice accessing the range like this
246
+ var range = this.itemSet.body.range; // TODO: not nice accessing the range like this
250
247
  this._checkIfVisible(item, this.visibleItems, range);
251
248
  }
252
249
  };
@@ -255,7 +252,7 @@ Group.prototype.add = function add(item) {
255
252
  * Remove an item from the group
256
253
  * @param {Item} item
257
254
  */
258
- Group.prototype.remove = function remove(item) {
255
+ Group.prototype.remove = function(item) {
259
256
  delete this.items[item.id];
260
257
  item.setParent(this.itemSet);
261
258
 
@@ -270,14 +267,14 @@ Group.prototype.remove = function remove(item) {
270
267
  * Remove an item from the corresponding DataSet
271
268
  * @param {Item} item
272
269
  */
273
- Group.prototype.removeFromDataSet = function removeFromDataSet(item) {
270
+ Group.prototype.removeFromDataSet = function(item) {
274
271
  this.itemSet.removeItem(item.id);
275
272
  };
276
273
 
277
274
  /**
278
275
  * Reorder the items
279
276
  */
280
- Group.prototype.order = function order() {
277
+ Group.prototype.order = function() {
281
278
  var array = util.toArray(this.items);
282
279
  this.orderedItems.byStart = array;
283
280
  this.orderedItems.byEnd = this._constructByEndArray(array);
@@ -292,7 +289,7 @@ Group.prototype.order = function order() {
292
289
  * @returns {ItemRange[]}
293
290
  * @private
294
291
  */
295
- Group.prototype._constructByEndArray = function _constructByEndArray(array) {
292
+ Group.prototype._constructByEndArray = function(array) {
296
293
  var endArray = [];
297
294
 
298
295
  for (var i = 0; i < array.length; i++) {
@@ -311,7 +308,7 @@ Group.prototype._constructByEndArray = function _constructByEndArray(array) {
311
308
  * @return {Item[]} visibleItems The new visible items.
312
309
  * @private
313
310
  */
314
- Group.prototype._updateVisibleItems = function _updateVisibleItems(orderedItems, visibleItems, range) {
311
+ Group.prototype._updateVisibleItems = function(orderedItems, visibleItems, range) {
315
312
  var initialPosByStart,
316
313
  newVisibleItems = [],
317
314
  i;
@@ -374,7 +371,7 @@ Group.prototype._updateVisibleItems = function _updateVisibleItems(orderedItems,
374
371
  * @returns {number}
375
372
  * @private
376
373
  */
377
- Group.prototype._binarySearch = function _binarySearch(orderedItems, range, byEnd) {
374
+ Group.prototype._binarySearch = function(orderedItems, range, byEnd) {
378
375
  var array = [];
379
376
  var byTime = byEnd ? 'end' : 'start';
380
377
  if (byEnd == true) {array = orderedItems.byEnd; }
@@ -435,7 +432,7 @@ Group.prototype._binarySearch = function _binarySearch(orderedItems, range, byEn
435
432
  * @returns {boolean}
436
433
  * @private
437
434
  */
438
- Group.prototype._checkIfInvisible = function _checkIfInvisible(item, visibleItems, range) {
435
+ Group.prototype._checkIfInvisible = function(item, visibleItems, range) {
439
436
  if (item.isVisible(range)) {
440
437
  if (!item.displayed) item.show();
441
438
  item.repositionX();
@@ -460,7 +457,7 @@ Group.prototype._checkIfInvisible = function _checkIfInvisible(item, visibleItem
460
457
  * @param {{start:number, end:number}} range
461
458
  * @private
462
459
  */
463
- Group.prototype._checkIfVisible = function _checkIfVisible(item, visibleItems, range) {
460
+ Group.prototype._checkIfVisible = function(item, visibleItems, range) {
464
461
  if (item.isVisible(range)) {
465
462
  if (!item.displayed) item.show();
466
463
  // reposition item horizontally