Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
		
							parent
							
								
									a7c1a27e23
								
							
						
					
					
						commit
						2972356e7e
					
				
							
								
								
									
										163
									
								
								js/ui/mxgraph/src/js/model/mxCellPath.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								js/ui/mxgraph/src/js/model/mxCellPath.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,163 @@ | |||
| /** | ||||
|  * Copyright (c) 2006-2015, JGraph Ltd | ||||
|  * Copyright (c) 2006-2015, Gaudenz Alder | ||||
|  */ | ||||
| var mxCellPath = | ||||
| { | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Class: mxCellPath | ||||
| 	 *  | ||||
| 	 * Implements a mechanism for temporary cell Ids. | ||||
| 	 *  | ||||
| 	 * Variable: PATH_SEPARATOR | ||||
| 	 *  | ||||
| 	 * Defines the separator between the path components. Default is ".". | ||||
| 	 */ | ||||
| 	PATH_SEPARATOR: '.', | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Function: create | ||||
| 	 *  | ||||
| 	 * Creates the cell path for the given cell. The cell path is a | ||||
| 	 * concatenation of the indices of all ancestors on the (finite) path to | ||||
| 	 * the root, eg. "0.0.0.1". | ||||
| 	 *  | ||||
| 	 * Parameters: | ||||
| 	 *  | ||||
| 	 * cell - Cell whose path should be returned. | ||||
| 	 */ | ||||
| 	create: function(cell) | ||||
| 	{ | ||||
| 		var result = ''; | ||||
| 		 | ||||
| 		if (cell != null) | ||||
| 		{ | ||||
| 			var parent = cell.getParent(); | ||||
| 			 | ||||
| 			while (parent != null) | ||||
| 			{ | ||||
| 				var index = parent.getIndex(cell); | ||||
| 				result = index + mxCellPath.PATH_SEPARATOR + result; | ||||
| 				 | ||||
| 				cell = parent; | ||||
| 				parent = cell.getParent(); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		// Removes trailing separator
 | ||||
| 		var n = result.length; | ||||
| 		 | ||||
| 		if (n > 1) | ||||
| 		{ | ||||
| 			result = result.substring(0, n - 1); | ||||
| 		} | ||||
| 		 | ||||
| 		return result; | ||||
| 	}, | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Function: getParentPath | ||||
| 	 *  | ||||
| 	 * Returns the path for the parent of the cell represented by the given | ||||
| 	 * path. Returns null if the given path has no parent. | ||||
| 	 *  | ||||
| 	 * Parameters: | ||||
| 	 *  | ||||
| 	 * path - Path whose parent path should be returned. | ||||
| 	 */ | ||||
| 	getParentPath: function(path) | ||||
| 	{ | ||||
| 		if (path != null) | ||||
| 		{ | ||||
| 			var index = path.lastIndexOf(mxCellPath.PATH_SEPARATOR); | ||||
| 
 | ||||
| 			if (index >= 0) | ||||
| 			{ | ||||
| 				return path.substring(0, index); | ||||
| 			} | ||||
| 			else if (path.length > 0) | ||||
| 			{ | ||||
| 				return ''; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		return null; | ||||
| 	}, | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Function: resolve | ||||
| 	 *  | ||||
| 	 * Returns the cell for the specified cell path using the given root as the | ||||
| 	 * root of the path. | ||||
| 	 *  | ||||
| 	 * Parameters: | ||||
| 	 *  | ||||
| 	 * root - Root cell of the path to be resolved. | ||||
| 	 * path - String that defines the path. | ||||
| 	 */ | ||||
| 	resolve: function(root, path) | ||||
| 	{ | ||||
| 		var parent = root; | ||||
| 		 | ||||
| 		if (path != null) | ||||
| 		{ | ||||
| 			var tokens = path.split(mxCellPath.PATH_SEPARATOR); | ||||
| 			 | ||||
| 			for (var i=0; i<tokens.length; i++) | ||||
| 			{ | ||||
| 				parent = parent.getChildAt(parseInt(tokens[i])); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		return parent; | ||||
| 	}, | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Function: compare | ||||
| 	 *  | ||||
| 	 * Compares the given cell paths and returns -1 if p1 is smaller, 0 if | ||||
| 	 * p1 is equal and 1 if p1 is greater than p2. | ||||
| 	 */ | ||||
| 	compare: function(p1, p2) | ||||
| 	{ | ||||
| 		var min = Math.min(p1.length, p2.length); | ||||
| 		var comp = 0; | ||||
| 		 | ||||
| 		for (var i = 0; i < min; i++) | ||||
| 		{ | ||||
| 			if (p1[i] != p2[i]) | ||||
| 			{ | ||||
| 				if (p1[i].length == 0 || | ||||
| 					p2[i].length == 0) | ||||
| 				{ | ||||
| 					comp = (p1[i] == p2[i]) ? 0 : ((p1[i] > p2[i]) ? 1 : -1); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					var t1 = parseInt(p1[i]); | ||||
| 					var t2 = parseInt(p2[i]); | ||||
| 					 | ||||
| 					comp = (t1 == t2) ? 0 : ((t1 > t2) ? 1 : -1); | ||||
| 				} | ||||
| 				 | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		// Compares path length if both paths are equal to this point
 | ||||
| 		if (comp == 0) | ||||
| 		{ | ||||
| 			var t1 = p1.length; | ||||
| 			var t2 = p2.length; | ||||
| 			 | ||||
| 			if (t1 != t2) | ||||
| 			{ | ||||
| 				comp = (t1 > t2) ? 1 : -1; | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		return comp; | ||||
| 	} | ||||
| 
 | ||||
| }; | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user