From ef1af7a731e51ebbec3e9c639b991e285af4076a Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Wed, 16 Jan 2013 14:51:34 -0500 Subject: [PATCH] Only show tags that appear in greater than a percentage of cases. --- js/id/services/taginfo.js | 25 +++++++++++++++++++++++-- js/id/ui/inspector.js | 8 ++------ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/js/id/services/taginfo.js b/js/id/services/taginfo.js index 20f1cd09a..3e7de3859 100644 --- a/js/id/services/taginfo.js +++ b/js/id/services/taginfo.js @@ -33,6 +33,21 @@ iD.taginfo = function() { return _.omit(parameters, 'geometry'); } + function popular(parameters) { + var pop_field = 'fraction'; + if (parameters) pop_field = 'count_' + parameters.filter + '_fraction'; + return function(d) { return parseFloat(d[pop_field]) > 0.01; }; + } + + function valKey(d) { return { value: d.key }; } + + function valKeyDescription(d) { + return { + value: d.value, + title: d.description + }; + } + taginfo.keys = function(parameters, callback) { parameters = clean(setSort(setFilter(parameters))); d3.json(endpoint + 'keys/all?' + @@ -41,7 +56,10 @@ iD.taginfo = function() { sortname: 'count_all', sortorder: 'desc', page: 1 - }, parameters)), callback); + }, parameters)), function(err, d) { + if (err) return callback(err); + callback(null, d.data.filter(popular(parameters)).map(valKey)); + }); }; taginfo.values = function(parameters, callback) { @@ -52,7 +70,10 @@ iD.taginfo = function() { sortname: 'count_all', sortorder: 'desc', page: 1 - }, parameters)), callback); + }, parameters)), function(err, d) { + if (err) return callback(err); + callback(null, d.data.filter(popular()).map(valKeyDescription)); + }); }; taginfo.docs = function(parameters, callback) { diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index f0db48166..dcae12d55 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -219,9 +219,7 @@ iD.ui.inspector = function() { geometry: geometry, query: key.property('value') }, function(err, data) { - callback(data.data.map(function (d) { - return {value: d.key}; - })); + if (!err) callback(data); }); }, 500))); @@ -232,9 +230,7 @@ iD.ui.inspector = function() { geometry: geometry, query: value.property('value') }, function(err, data) { - callback(data.data.map(function (d) { - return {value: d.value, title: d.description}; - })); + if (!err) callback(data); }); }, 500))); }