mirror of
https://github.com/FoggedLens/iD.git
synced 2026-03-19 01:23:25 +00:00
Only debounce taginfo for taglist autocompletion
This commit is contained in:
@@ -32,7 +32,7 @@ iD.taginfo = function() {
|
||||
}
|
||||
|
||||
function clean(parameters) {
|
||||
return _.omit(parameters, 'geometry');
|
||||
return _.omit(parameters, 'geometry', 'debounce');
|
||||
}
|
||||
|
||||
function shorten(parameters) {
|
||||
@@ -65,18 +65,23 @@ iD.taginfo = function() {
|
||||
|
||||
var debounced = _.debounce(d3.json, 100, true);
|
||||
|
||||
function request(url, callback) {
|
||||
function request(url, debounce, callback) {
|
||||
if (cache[url]) {
|
||||
callback(null, cache[url]);
|
||||
} else if (debounce) {
|
||||
debounced(url, done);
|
||||
} else {
|
||||
debounced(url, function(err, data) {
|
||||
if (!err) cache[url] = data;
|
||||
callback(err, data);
|
||||
});
|
||||
d3.json(url, done);
|
||||
}
|
||||
|
||||
function done(err, data) {
|
||||
if (!err) cache[url] = data;
|
||||
callback(err, data);
|
||||
}
|
||||
}
|
||||
|
||||
taginfo.keys = function(parameters, callback) {
|
||||
var debounce = parameters.debounce;
|
||||
parameters = clean(shorten(setSort(setFilter(parameters))));
|
||||
request(endpoint + 'keys/all?' +
|
||||
iD.util.qsString(_.extend({
|
||||
@@ -84,13 +89,14 @@ iD.taginfo = function() {
|
||||
sortname: 'count_all',
|
||||
sortorder: 'desc',
|
||||
page: 1
|
||||
}, parameters)), function(err, d) {
|
||||
}, parameters)), debounce, function(err, d) {
|
||||
if (err) return callback(err);
|
||||
callback(null, d.data.filter(popularKeys(parameters)).map(valKey));
|
||||
});
|
||||
};
|
||||
|
||||
taginfo.values = function(parameters, callback) {
|
||||
var debounce = parameters.debounce;
|
||||
parameters = clean(shorten(setSort(setFilter(parameters))));
|
||||
request(endpoint + 'key/values?' +
|
||||
iD.util.qsString(_.extend({
|
||||
@@ -98,16 +104,17 @@ iD.taginfo = function() {
|
||||
sortname: 'count_all',
|
||||
sortorder: 'desc',
|
||||
page: 1
|
||||
}, parameters)), function(err, d) {
|
||||
}, parameters)), debounce, function(err, d) {
|
||||
if (err) return callback(err);
|
||||
callback(null, d.data.filter(popularValues()).map(valKeyDescription), parameters);
|
||||
});
|
||||
};
|
||||
|
||||
taginfo.docs = function(parameters, callback) {
|
||||
var debounce = parameters.debounce;
|
||||
parameters = clean(setSort(parameters));
|
||||
request(endpoint + 'tag/wiki_pages?' +
|
||||
iD.util.qsString(parameters), callback);
|
||||
iD.util.qsString(parameters), debounce, callback);
|
||||
};
|
||||
|
||||
taginfo.endpoint = function(_) {
|
||||
|
||||
@@ -217,6 +217,7 @@ iD.ui.Taglist = function() {
|
||||
key.call(d3.combobox()
|
||||
.fetcher(function(_, __, callback) {
|
||||
taginfo.keys({
|
||||
debounce: true,
|
||||
geometry: geometry,
|
||||
query: keyinput.property('value')
|
||||
}, function(err, data) {
|
||||
@@ -228,6 +229,7 @@ iD.ui.Taglist = function() {
|
||||
value.call(d3.combobox()
|
||||
.fetcher(function(_, __, callback) {
|
||||
taginfo.values({
|
||||
debounce: true,
|
||||
key: keyinput.property('value'),
|
||||
geometry: geometry,
|
||||
query: valueinput.property('value')
|
||||
|
||||
@@ -233,6 +233,8 @@ d3.combobox = function() {
|
||||
input.node().focus();
|
||||
update('');
|
||||
|
||||
if (!container) return;
|
||||
|
||||
var entries = container.selectAll('a'),
|
||||
height = container.node().scrollHeight / entries[0].length,
|
||||
w = d3.select(window);
|
||||
|
||||
Reference in New Issue
Block a user