fixed parameter testing
This commit is contained in:
parent
917266dfd2
commit
fdf69cd9f4
1 changed files with 42 additions and 48 deletions
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue