| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1110,6 +1110,20 @@ ItemSet.prototype._onTouch = function (event) { | 
															
														
														
													
														
															
																 | 
																 | 
																  this.touchParams.itemProps = null; | 
																 | 
																 | 
																  this.touchParams.itemProps = null; | 
															
														
														
													
														
															
																 | 
																 | 
																}; | 
																 | 
																 | 
																}; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																/** | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * Given an group id, returns the index it has. | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * @param {Number} groupID | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * @private | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ItemSet.prototype._getGroupIndex = function(groupId) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    for (var i = 0; i < this.groupIds.length; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if (groupId == this.groupIds[i]) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            return i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																/** | 
																 | 
																 | 
																/** | 
															
														
														
													
														
															
																 | 
																 | 
																 * Start dragging the selected events | 
																 | 
																 | 
																 * Start dragging the selected events | 
															
														
														
													
														
															
																 | 
																 | 
																 * @param {Event} event | 
																 | 
																 | 
																 * @param {Event} event | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1157,11 +1171,17 @@ ItemSet.prototype._onDragStart = function (event) { | 
															
														
														
													
														
															
																 | 
																 | 
																      this.touchParams.itemProps = [props]; | 
																 | 
																 | 
																      this.touchParams.itemProps = [props]; | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																    else { | 
																 | 
																 | 
																    else { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																      this.touchParams.selectedItem = item; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																      var baseGroupIndex = this._getGroupIndex(item.data.group); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																      this.touchParams.itemProps = this.getSelection().map(function (id) { | 
																 | 
																 | 
																      this.touchParams.itemProps = this.getSelection().map(function (id) { | 
															
														
														
													
														
															
																 | 
																 | 
																        var item = me.items[id]; | 
																 | 
																 | 
																        var item = me.items[id]; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        var groupIndex = me._getGroupIndex(item.data.group); | 
															
														
														
													
														
															
																 | 
																 | 
																        var props = { | 
																 | 
																 | 
																        var props = { | 
															
														
														
													
														
															
																 | 
																 | 
																          item: item, | 
																 | 
																 | 
																          item: item, | 
															
														
														
													
														
															
																 | 
																 | 
																          initialX: event.center.x, | 
																 | 
																 | 
																          initialX: event.center.x, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          groupOffset: baseGroupIndex-groupIndex, | 
															
														
														
													
														
															
																 | 
																 | 
																          data: util.extend({}, item.data) // clone the items data
 | 
																 | 
																 | 
																          data: util.extend({}, item.data) // clone the items data
 | 
															
														
														
													
														
															
																 | 
																 | 
																        }; | 
																 | 
																 | 
																        }; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1238,6 +1258,22 @@ ItemSet.prototype._onDrag = function (event) { | 
															
														
														
													
														
															
																 | 
																 | 
																    var scale = this.body.util.getScale(); | 
																 | 
																 | 
																    var scale = this.body.util.getScale(); | 
															
														
														
													
														
															
																 | 
																 | 
																    var step = this.body.util.getStep(); | 
																 | 
																 | 
																    var step = this.body.util.getStep(); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    //only calculate the new group for the item that's actually dragged
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    var selectedItem = this.touchParams.selectedItem; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    var updateGroupAllowed = me.options.editable.updateGroup; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    var newGroupBase = null; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (updateGroupAllowed && selectedItem) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if (selectedItem.data.group != undefined) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          // drag from one group to another
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          var group = me.groupFromTarget(event); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          if (group) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            //we know the offset for all items, so the new group for all items
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            //will be relative to this one.
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            newGroupBase = this._getGroupIndex(group.groupId); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																    // move
 | 
																 | 
																 | 
																    // move
 | 
															
														
														
													
														
															
																 | 
																 | 
																    this.touchParams.itemProps.forEach(function (props) { | 
																 | 
																 | 
																    this.touchParams.itemProps.forEach(function (props) { | 
															
														
														
													
														
															
																 | 
																 | 
																      var newProps = {}; | 
																 | 
																 | 
																      var newProps = {}; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1294,13 +1330,15 @@ ItemSet.prototype._onDrag = function (event) { | 
															
														
														
													
														
															
																 | 
																 | 
																      var updateGroupAllowed = me.options.editable.updateGroup ||  | 
																 | 
																 | 
																      var updateGroupAllowed = me.options.editable.updateGroup ||  | 
															
														
														
													
														
															
																 | 
																 | 
																                               props.item.editable === true; | 
																 | 
																 | 
																                               props.item.editable === true; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																      if (updateGroupAllowed && (!props.dragLeft && !props.dragRight)) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																      if (updateGroupAllowed && (!props.dragLeft && !props.dragRight) && newGroupBase!=null) { | 
															
														
														
													
														
															
																 | 
																 | 
																        if (itemData.group != undefined) { | 
																 | 
																 | 
																        if (itemData.group != undefined) { | 
															
														
														
													
														
															
																 | 
																 | 
																          // drag from one group to another
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																          var group = me.groupFromTarget(event); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																          if (group) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            itemData.group = group.groupId; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																          } | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          var newOffset = newGroupBase - props.groupOffset; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          //make sure we stay in bounds
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          newOffset = Math.max(0, newOffset); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          newOffset = Math.min(me.groupIds.length-1, newOffset); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																          itemData.group = me.groupIds[newOffset]; | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																      } | 
																 | 
																 | 
																      } | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
 |