X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fplugins%2Fcomposer%2Fsrc%2Fsrc%2Flibraries%2Futils.js;h=75afab33a17fb9766b635ea4a95656fbfe6aa84e;hp=a182b1a90a4e1fafb6c850a6d27fe863458c6a59;hb=132f9b77e1c32b82eb1c27cea048a5c1f2bfcb56;hpb=30879fffbecf6d78cde249fecf68f6335555711a diff --git a/skyquake/plugins/composer/src/src/libraries/utils.js b/skyquake/plugins/composer/src/src/libraries/utils.js index a182b1a90..75afab33a 100644 --- a/skyquake/plugins/composer/src/src/libraries/utils.js +++ b/skyquake/plugins/composer/src/src/libraries/utils.js @@ -212,13 +212,35 @@ export default { let key = fragment.split('[')[0]; let searchObject = {}; searchObject[predicateKey] = predicateValue; - objectCopy = _.find(objectCopy[key], searchObject); - if (!objectCopy) { - return []; + let found = _.find(objectCopy[key], searchObject); + if (found) { + objectCopy = found; + } else { + // check for numerical value + if (predicateValue != "" && + predicateValue != null && + predicateValue != NaN && + predicateValue != Infinity && + predicateValue != -Infinity) { + let numericalPredicateValue = _.toNumber(predicateValue); + if (_.isNumber(numericalPredicateValue)) { + searchObject[predicateKey] = numericalPredicateValue; + found = _.find(objectCopy[key], searchObject); + } + } + if (found) { + objectCopy = found; + } else { + return []; + } } } else { // contains no predicate objectCopy = objectCopy[fragment]; + if (!objectCopy) { + // contains no value + break; + } } } } @@ -290,12 +312,27 @@ export default { for (let subKey in catalogs[key]) { let found = _.find(catalogs[key][subKey], {id: fieldKeyArray[0]}); if (found) { - results = this.getResults(found, pathArray.splice(-i, i)); + results = this.getAbsoluteResults(found, pathArray.splice(-i, i)); return results; } } } } else if (fieldKeyArray.length == 2) { + for (let key in catalogs) { + for (let subKey in catalogs[key]) { + let found = _.find(catalogs[key][subKey], {id: fieldKeyArray[0]}); + if (found) { + for (let foundKey in found) { + // let topLevel = _.find(found[foundKey], {id: fieldKeyArray[1]}); + if (foundKey == fieldKeyArray[1]) { + results = this.getAbsoluteResults(found[foundKey], pathArray.splice(-i, i)); + return results; + } + } + } + } + } + } else if (fieldKeyArray.length == 3) { for (let key in catalogs) { for (let subKey in catalogs[key]) { let found = _.find(catalogs[key][subKey], {id: fieldKeyArray[0]}); @@ -303,7 +340,7 @@ export default { for (let foundKey in found) { let topLevel = _.find(found[foundKey], {id: fieldKeyArray[1]}); if (topLevel) { - results = this.getResults(topLevel, pathArray.splice(-i, i)); + results = this.getAbsoluteResults(topLevel, pathArray.splice(-i, i)); return results; } }