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=418540fdca073f083044548aacfd31bd42afc4bd;hp=1d54a6f5be6f201e6a92412c38a6ec163c580123;hb=62d08615c5c4c76ee06a2429507186b7a94ef1ee;hpb=d6d948e60162217694351891cb385498d5f2546e diff --git a/skyquake/plugins/composer/src/src/libraries/utils.js b/skyquake/plugins/composer/src/src/libraries/utils.js index 1d54a6f5b..418540fdc 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; + } } } } @@ -301,9 +323,9 @@ export default { 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 (topLevel) { - results = this.getAbsoluteResults(topLevel, pathArray.splice(-i, i)); + // let topLevel = _.find(found[foundKey], {id: fieldKeyArray[1]}); + if (foundKey == fieldKeyArray[1]) { + results = this.getAbsoluteResults(found[foundKey], pathArray.splice(-i, i)); return results; } }