fixed parameter testing
This commit is contained in:
		
							parent
							
								
									917266dfd2
								
							
						
					
					
						commit
						fdf69cd9f4
					
				
					 1 changed files with 42 additions and 48 deletions
				
			
		|  | @ -77,63 +77,57 @@ export async function read(DATA_NAME, CLOUD = 0, PARAMETER_TEST = null) { | ||||||
| 
 | 
 | ||||||
| 	@param {dictionary} DATA_ALL the data | 	@param {dictionary} DATA_ALL the data | ||||||
| 	@param {object} DATA_PATH the path of the data | 	@param {object} DATA_PATH the path of the data | ||||||
|  | 	@param {object} PARAMETER_TEST what among the value to test | ||||||
| 	@return {object} the data | 	@return {object} the data | ||||||
| 	*/ | 	*/ | ||||||
| 	function find_data(DATA_ALL, DATA_PATH, PARAMETER_TEST) { | 	function find_data(DATA_ALL, DATA_PATH, PARAMETER_TEST) { | ||||||
| 		// Pull the data out.
 |  | ||||||
| 		let DATA_PATH_SELECTED = String(DATA_PATH.shift()).trim(); |  | ||||||
| 		let DATA_SELECTED = DATA_ALL; | 		let DATA_SELECTED = DATA_ALL; | ||||||
| 
 | 
 | ||||||
| 		// Only run when the data is valid.
 | 		// Pull the data out.
 | ||||||
| 		if (DATA_ALL) { | 		if (DATA_ALL && DATA_PATH && (DATA_PATH != null) ? DATA_PATH.length > 0 : false) { | ||||||
| 			if (DATA_SELECTED) { | 			let DATA_PATH_SELECTED = String(DATA_PATH.shift()).trim(); | ||||||
| 				// Get the selected data.
 |  | ||||||
| 				DATA_SELECTED = DATA_ALL[DATA_PATH_SELECTED]; |  | ||||||
| 			 | 			 | ||||||
| 				if (DATA_PATH.length > 0) { | 			// Get the selected data.
 | ||||||
| 					// Recursively run to make use of the existing data.
 | 			DATA_SELECTED = DATA_ALL[DATA_PATH_SELECTED]; | ||||||
| 					DATA_SELECTED = find_data(DATA_SELECTED, DATA_PATH, PARAMETER_TEST); | 
 | ||||||
|  | 			// must run if there is actually a parameter to test
 | ||||||
|  | 			if (DATA_PATH.length > 0 || (((PARAMETER_TEST != null) ? PARAMETER_TEST.length > 0 : false) ? PARAMETER_TEST[`field`] : false)) { | ||||||
|  | 				// Recursively run to make use of the existing data.
 | ||||||
|  | 				DATA_SELECTED = find_data(DATA_SELECTED, DATA_PATH, PARAMETER_TEST); | ||||||
|  | 			} | ||||||
|  | 		} else if ((PARAMETER_TEST) ? (!!PARAMETER_TEST[`field`] && !!PARAMETER_TEST[`test value`]) : false) { | ||||||
|  | 			let QUALIFIED = false; | ||||||
|  | 			let DATA_SELECTED_KEYS = Object.keys(DATA_SELECTED); | ||||||
|  | 
 | ||||||
|  | 			// Perform a sequential search.
 | ||||||
|  | 			for ( | ||||||
|  | 				let DATA_SELECTED_KEY_INDEX = 0; | ||||||
|  | 				(DATA_SELECTED_KEY_INDEX < DATA_SELECTED_KEYS.length) && !QUALIFIED; | ||||||
|  | 				DATA_SELECTED_KEY_INDEX++ | ||||||
|  | 			) { | ||||||
|  | 				PARAMETER_TEST[`value`] = | ||||||
|  | 					DATA_SELECTED[DATA_SELECTED_KEYS[DATA_SELECTED_KEY_INDEX]][ | ||||||
|  | 						PARAMETER_TEST[`field`] | ||||||
|  | 					]; | ||||||
|  | 				if (PARAMETER_TEST[`value`]) { | ||||||
|  | 					QUALIFIED = | ||||||
|  | 						new RegExp(String(PARAMETER_TEST[`value`])).test( | ||||||
|  | 							PARAMETER_TEST[`test value`], | ||||||
|  | 						) || | ||||||
|  | 						PARAMETER_TEST[`test value`].includes(PARAMETER_TEST[`value`]); | ||||||
| 				} | 				} | ||||||
| 			} else if (PARAMETER_TEST && DATA_SELECTED) { |  | ||||||
| 				let QUALIFIED = false; |  | ||||||
| 	 | 	 | ||||||
| 				// The expected keys are "field" and "test value"
 | 				if (QUALIFIED) { | ||||||
| 				DATA_SELECTED_KEYS = Object.keys(DATA_SELECTED); | 					DATA_SELECTED = | ||||||
| 				if (PARAMETER_TEST[`field`] && PARAMETER_TEST[`test value`]) { | 						DATA_SELECTED[DATA_SELECTED_KEYS[DATA_SELECTED_KEY_INDEX]]; | ||||||
| 					// Perform a sequential search.
 | 					break; | ||||||
| 					for ( |  | ||||||
| 						let DATA_SELECTED_KEY_INDEX = 0; |  | ||||||
| 						DATA_SELECTED_KEY_INDEX < DATA_SELECTED_KEYS.length || !QUALIFIED; |  | ||||||
| 						DATA_SELECTED_KEY_INDEX++ |  | ||||||
| 					) { |  | ||||||
| 						PARAMETER_TEST[`value`] = |  | ||||||
| 							DATA_SELECTED[DATA_SELECTED_KEYS[DATA_SELECTED_KEY_INDEX]][ |  | ||||||
| 								PARAMETER_TEST[`field`] |  | ||||||
| 							]; |  | ||||||
| 						if (PARAMETER_TEST[`value`]) { |  | ||||||
| 							QUALIFIED = |  | ||||||
| 								new RegExp(String(PARAMETER_TEST[`value`])).test( |  | ||||||
| 									PARAMETER_TEST[`test value`], |  | ||||||
| 								) || |  | ||||||
| 								PARAMETER_TEST[`test value`].includes(PARAMETER_TEST[`value`]); |  | ||||||
| 						} |  | ||||||
| 
 |  | ||||||
| 						if (QUALIFIED) { |  | ||||||
| 							DATA_SELECTED = |  | ||||||
| 								DATA_SELECTED[DATA_SELECTED_KEYS[DATA_SELECTED_KEY_INDEX]]; |  | ||||||
| 							break; |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 
 |  | ||||||
| 					if (!QUALIFIED) { |  | ||||||
| 						DATA_SELECTED = null; |  | ||||||
| 					} |  | ||||||
| 				} else { |  | ||||||
| 					// It is not valid, so do not return anything.
 |  | ||||||
| 					DATA_SELECTED = null; |  | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 	 | ||||||
|  | 			if (!QUALIFIED) { | ||||||
|  | 				DATA_SELECTED = null; | ||||||
|  | 			} | ||||||
|  | 		} else {return (null);} | ||||||
| 
 | 
 | ||||||
| 		// Now return the data.
 | 		// Now return the data.
 | ||||||
| 		return DATA_SELECTED; | 		return DATA_SELECTED; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue