fixed parameter testing

This commit is contained in:
buzzcode2007 2024-04-02 14:58:44 +08:00
parent 917266dfd2
commit fdf69cd9f4

View file

@ -77,33 +77,32 @@ 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. // Get the selected data.
DATA_SELECTED = DATA_ALL[DATA_PATH_SELECTED]; DATA_SELECTED = DATA_ALL[DATA_PATH_SELECTED];
if (DATA_PATH.length > 0) { // 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. // Recursively run to make use of the existing data.
DATA_SELECTED = find_data(DATA_SELECTED, DATA_PATH, PARAMETER_TEST); DATA_SELECTED = find_data(DATA_SELECTED, DATA_PATH, PARAMETER_TEST);
} }
} else if (PARAMETER_TEST && DATA_SELECTED) { } else if ((PARAMETER_TEST) ? (!!PARAMETER_TEST[`field`] && !!PARAMETER_TEST[`test value`]) : false) {
let QUALIFIED = false; let QUALIFIED = false;
let DATA_SELECTED_KEYS = Object.keys(DATA_SELECTED);
// The expected keys are "field" and "test value"
DATA_SELECTED_KEYS = Object.keys(DATA_SELECTED);
if (PARAMETER_TEST[`field`] && PARAMETER_TEST[`test value`]) {
// Perform a sequential search. // Perform a sequential search.
for ( for (
let DATA_SELECTED_KEY_INDEX = 0; let DATA_SELECTED_KEY_INDEX = 0;
DATA_SELECTED_KEY_INDEX < DATA_SELECTED_KEYS.length || !QUALIFIED; (DATA_SELECTED_KEY_INDEX < DATA_SELECTED_KEYS.length) && !QUALIFIED;
DATA_SELECTED_KEY_INDEX++ DATA_SELECTED_KEY_INDEX++
) { ) {
PARAMETER_TEST[`value`] = PARAMETER_TEST[`value`] =
@ -128,12 +127,7 @@ export async function read(DATA_NAME, CLOUD = 0, PARAMETER_TEST = null) {
if (!QUALIFIED) { if (!QUALIFIED) {
DATA_SELECTED = null; DATA_SELECTED = null;
} }
} else { } else {return (null);}
// It is not valid, so do not return anything.
DATA_SELECTED = null;
}
}
}
// Now return the data. // Now return the data.
return DATA_SELECTED; return DATA_SELECTED;