| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1110,6 +1110,20 @@ ItemSet.prototype._onTouch = function (event) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  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 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					 * @param {Event} event | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1157,11 +1171,17 @@ ItemSet.prototype._onDragStart = function (event) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.touchParams.itemProps = [props]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.touchParams.selectedItem = item; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      var baseGroupIndex = this._getGroupIndex(item.data.group); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      this.touchParams.itemProps = this.getSelection().map(function (id) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        var item = me.items[id]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        var groupIndex = me._getGroupIndex(item.data.group); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        var props = { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          item: item, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          initialX: event.center.x, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          groupOffset: baseGroupIndex-groupIndex, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          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 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
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    this.touchParams.itemProps.forEach(function (props) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      var newProps = {}; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1294,13 +1330,15 @@ ItemSet.prototype._onDrag = function (event) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      var updateGroupAllowed = me.options.editable.updateGroup ||  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                               props.item.editable === true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if (updateGroupAllowed && (!props.dragLeft && !props.dragRight)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if (updateGroupAllowed && (!props.dragLeft && !props.dragRight) && newGroupBase!=null) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        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]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
 |