From c592acb759da44f956b326e21d6ec05555a0de4e Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 27 Sep 2015 22:39:41 -0400 Subject: [PATCH] Improve autocompletion for raw tag editor (closes #2748) * Don't shorten the user's query * Drop pouplar key threshold from 10000 to 5000 * Always show key if it has a wiki page (`d.in_wiki`) --- js/id/services/taginfo.js | 15 +++------------ test/spec/taginfo.js | 6 +++--- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/js/id/services/taginfo.js b/js/id/services/taginfo.js index c2d4a0e71..a4f28c85d 100644 --- a/js/id/services/taginfo.js +++ b/js/id/services/taginfo.js @@ -39,19 +39,10 @@ iD.taginfo = function() { return _.omit(parameters, 'geometry', 'debounce'); } - function shorten(parameters) { - if (!parameters.query) { - delete parameters.query; - } else { - parameters.query = parameters.query.slice(0, 3); - } - return parameters; - } - function popularKeys(parameters) { var pop_field = 'count_all'; if (parameters.filter) pop_field = 'count_' + parameters.filter; - return function(d) { return parseFloat(d[pop_field]) > 10000; }; + return function(d) { return parseFloat(d[pop_field]) > 5000 || d.in_wiki; }; } function popularValues() { @@ -86,7 +77,7 @@ iD.taginfo = function() { taginfo.keys = function(parameters, callback) { var debounce = parameters.debounce; - parameters = clean(shorten(setSort(parameters))); + parameters = clean(setSort(parameters)); request(endpoint + 'keys/all?' + iD.util.qsString(_.extend({ rp: 10, @@ -101,7 +92,7 @@ iD.taginfo = function() { taginfo.values = function(parameters, callback) { var debounce = parameters.debounce; - parameters = clean(shorten(setSort(setFilter(parameters)))); + parameters = clean(setSort(setFilter(parameters))); request(endpoint + 'key/values?' + iD.util.qsString(_.extend({ rp: 25, diff --git a/test/spec/taginfo.js b/test/spec/taginfo.js index 32965a79b..dc1ca000d 100644 --- a/test/spec/taginfo.js +++ b/test/spec/taginfo.js @@ -25,11 +25,11 @@ describe("iD.taginfo", function() { server.respond(); expect(query(server.requests[0].url)).to.eql( - {query: "ame", page: "1", rp: "10", sortname: "count_all", sortorder: "desc"}); + {query: "amen", page: "1", rp: "10", sortname: "count_all", sortorder: "desc"}); expect(callback).to.have.been.calledWith(null, [{"value":"amenity"}]); }); - it("filters only popular nodes", function() { + it("filters only popular keys", function() { var callback = sinon.spy(); taginfo.keys({query: "amen"}, callback); @@ -42,7 +42,7 @@ describe("iD.taginfo", function() { expect(callback).to.have.been.calledWith(null, [{"value":"amenity"}]); }); - it("filters only popular nodes with an entity type filter", function() { + it("filters only popular keys with an entity type filter", function() { var callback = sinon.spy(); taginfo.keys({query: "amen", filter: "nodes"}, callback);