Mercurial > hg > batmud > maputils
changeset 1920:c058c135c33d
Factorize result JSON parsing and validation into a separate function.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 07 Nov 2017 19:37:54 +0200 |
parents | 9193e7a8c9ca |
children | 2761364c9044 |
files | www/search.js |
diffstat | 1 files changed, 28 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/www/search.js Tue Nov 07 19:35:48 2017 +0200 +++ b/www/search.js Tue Nov 07 19:37:54 2017 +0200 @@ -46,6 +46,24 @@ } +function mapValidateJSON(edata, elen) +{ + var results = JSON.parse(edata); + if (results && Array.isArray(results)) + { + for (var i = 0; i < results.length; i++) + { + var res = results[i]; + if (!Array.isArray(res) || res.length != elen) + return "Invalid data."; + } + return results; + } + else + return "Could not parse result dataset." +} + + function mapDoMapSearch() { // Check the search pattern for some sanity before @@ -109,19 +127,14 @@ else if (evt.data.substr(0, 7) == "RESULT:" && evt.data.length >= 9) { - var results = JSON.parse(evt.data.substr(7)); + var results = mapValidateJSON(evt.data.substr(7), 7); var str = ""; - if (results && Array.isArray(results)) + if (Array.isArray(results)) { for (var i = 0; i < results.length; i++) { var res = results[i]; - if (!Array.isArray(res) || res.length != 7) - { - str = "ERROR: Invalid data."; - break; - } str += "<div class=\"result\">"+ "<a target=\"_blank\" href=\"http://jeskko.pupunen.net/gmap2/?x="+ @@ -137,7 +150,7 @@ str = "No matches found."; } else - str = "ERROR: Could not parse result dataset." + str = "ERROR: "+ results; fieldRes.innerHTML = str; } @@ -181,31 +194,26 @@ else if (evt.data.substr(0, 5) == "MAPS:" && evt.data.length > 8) { - var results = JSON.parse(evt.data.substr(5)); - if (results && Array.isArray(results)) + var results = mapValidateJSON(evt.data.substr(5), 3); + if (Array.isArray(results)) { mapList = results; var str = ""; for (var i = 0; i < results.length; i++) { var res = results[i]; - if (!Array.isArray(res) || res.length != 3) - { - str = "ERROR: Invalid data."; - break; - } - var id = "map_"+ res[0]; str += "<input class=\"map\" id=\""+ id + "\" type=\"checkbox\" checked=\"checked\">"+ "<label for=\""+ id +"\">"+ mapCapitalize(res[0]) +"</label>"; } + var elem = document.getElementById("mapList"); elem.innerHTML = str; } else - fieldRes.innerHTML = "ERROR!"; + fieldRes.innerHTML = "ERROR: "+ results; } tmpWS.close(); @@ -271,19 +279,14 @@ else if (evt.data.substr(0, 7) == "RESULT:" && evt.data.length >= 9) { - var results = JSON.parse(evt.data.substr(7)); + var results = mapValidateJSON(evt.data.substr(7), 7); var str = ""; - if (results && Array.isArray(results)) + if (Array.isArray(results)) { for (var i = 0; i < results.length; i++) { var res = results[i]; - if (!Array.isArray(res) || res.length != 7) - { - str = "ERROR: Invalid data."; - break; - } str += "<div class=\"result\">"+ "<a target=\"_blank\" href=\""+ res[0] +".html#loc"+ res[1] +"_"+ res[2] +"\">"+ @@ -302,7 +305,7 @@ str = "No matches found."; } else - str = "ERROR: Could not parse result dataset." + str = "ERROR: "+ results; fieldRes.innerHTML = str; }