From f45e97d727ef003608fa5cf97f14bf55a936d4e3 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 12 Dec 2018 16:13:32 -0500 Subject: [PATCH] Variable cleanups --- modules/services/taginfo.js | 149 ++++++++++++++++++++++-------------- 1 file changed, 92 insertions(+), 57 deletions(-) diff --git a/modules/services/taginfo.js b/modules/services/taginfo.js index 7ab7834f3..d40d22e2c 100644 --- a/modules/services/taginfo.js +++ b/modules/services/taginfo.js @@ -9,36 +9,37 @@ import { utilQsString } from '../util'; import { currentLocale } from '../util/locale'; -var apibase = 'https://taginfo.openstreetmap.org/api/4/', - inflight = {}, - popularKeys = {}, - taginfoCache = {}, - tag_sorts = { - point: 'count_nodes', - vertex: 'count_nodes', - area: 'count_ways', - line: 'count_ways' - }, - tag_sort_members = { - point: 'count_node_members', - vertex: 'count_node_members', - area: 'count_way_members', - line: 'count_way_members', - relation: 'count_relation_members' - }, - tag_filters = { - point: 'nodes', - vertex: 'nodes', - area: 'ways', - line: 'ways' - }, - tag_members_fractions = { - point: 'count_node_members_fraction', - vertex: 'count_node_members_fraction', - area: 'count_way_members_fraction', - line: 'count_way_members_fraction', - relation: 'count_relation_members_fraction' - }; +var apibase = 'https://taginfo.openstreetmap.org/api/4/'; +var _inflight = {}; +var _popularKeys = {}; +var _taginfoCache = {}; + +var tag_sorts = { + point: 'count_nodes', + vertex: 'count_nodes', + area: 'count_ways', + line: 'count_ways' +}; +var tag_sort_members = { + point: 'count_node_members', + vertex: 'count_node_members', + area: 'count_way_members', + line: 'count_way_members', + relation: 'count_relation_members' +}; +var tag_filters = { + point: 'nodes', + vertex: 'nodes', + area: 'ways', + line: 'ways' +}; +var tag_members_fractions = { + point: 'count_node_members_fraction', + vertex: 'count_node_members_fraction', + area: 'count_way_members_fraction', + line: 'count_way_members_fraction', + relation: 'count_relation_members_fraction' +}; function sets(params, n, o) { @@ -140,24 +141,24 @@ function sortKeys(a, b) { var debouncedRequest = _debounce(request, 500, { leading: false }); function request(url, params, exactMatch, callback, loaded) { - if (inflight[url]) return; + if (_inflight[url]) return; if (checkCache(url, params, exactMatch, callback)) return; - inflight[url] = d3_json(url, function (err, data) { - delete inflight[url]; + _inflight[url] = d3_json(url, function (err, data) { + delete _inflight[url]; loaded(err, data); }); } function checkCache(url, params, exactMatch, callback) { - var rp = params.rp || 25, - testQuery = params.query || '', - testUrl = url; + var rp = params.rp || 25; + var testQuery = params.query || ''; + var testUrl = url; do { - var hit = taginfoCache[testUrl]; + var hit = _taginfoCache[testUrl]; // exact match, or shorter match yielding fewer than max results (rp) if (hit && (url === testUrl || hit.length < rp)) { @@ -181,36 +182,49 @@ function checkCache(url, params, exactMatch, callback) { export default { init: function() { - inflight = {}; - taginfoCache = {}; - popularKeys = { + _inflight = {}; + _taginfoCache = {}; + _popularKeys = { postal_code: true // #5377 }; // Fetch popular keys. We'll exclude these from `values` // lookups because they stress taginfo, and they aren't likely // to yield meaningful autocomplete results.. see #3955 - var params = { rp: 100, sortname: 'values_all', sortorder: 'desc', page: 1, debounce: false, lang: currentLocale }; + var params = { + rp: 100, + sortname: 'values_all', + sortorder: 'desc', + page: 1, + debounce: false, + lang: currentLocale + }; this.keys(params, function(err, data) { if (err) return; data.forEach(function(d) { if (d.value === 'opening_hours') return; // exception - popularKeys[d.value] = true; + _popularKeys[d.value] = true; }); }); }, reset: function() { - _forEach(inflight, function(req) { req.abort(); }); - inflight = {}; + _forEach(_inflight, function(req) { req.abort(); }); + _inflight = {}; }, keys: function(params, callback) { var doRequest = params.debounce ? debouncedRequest : request; params = clean(setSort(params)); - params = _extend({ rp: 10, sortname: 'count_all', sortorder: 'desc', page: 1, lang: currentLocale }, params); + params = _extend({ + rp: 10, + sortname: 'count_all', + sortorder: 'desc', + page: 1, + lang: currentLocale + }, params); var url = apibase + 'keys/all?' + utilQsString(params); doRequest(url, params, false, callback, function(err, d) { @@ -219,7 +233,7 @@ export default { } else { var f = filterKeys(params.filter); var result = d.data.filter(f).sort(sortKeys).map(valKey); - taginfoCache[url] = result; + _taginfoCache[url] = result; callback(null, result); } }); @@ -229,9 +243,15 @@ export default { multikeys: function(params, callback) { var doRequest = params.debounce ? debouncedRequest : request; params = clean(setSort(params)); - params = _extend({ rp: 25, sortname: 'count_all', sortorder: 'desc', page: 1, lang: currentLocale }, params); - var prefix = params.query; + params = _extend({ + rp: 25, + sortname: 'count_all', + sortorder: 'desc', + page: 1, + lang: currentLocale + }, params); + var prefix = params.query; var url = apibase + 'keys/all?' + utilQsString(params); doRequest(url, params, true, callback, function(err, d) { if (err) { @@ -239,7 +259,7 @@ export default { } else { var f = filterMultikeys(prefix); var result = d.data.filter(f).map(valKey); - taginfoCache[url] = result; + _taginfoCache[url] = result; callback(null, result); } }); @@ -249,14 +269,20 @@ export default { values: function(params, callback) { // Exclude popular keys from values lookups.. see #3955 var key = params.key; - if (key && popularKeys[key]) { + if (key && _popularKeys[key]) { callback(null, []); return; } var doRequest = params.debounce ? debouncedRequest : request; params = clean(setSort(setFilter(params))); - params = _extend({ rp: 25, sortname: 'count_all', sortorder: 'desc', page: 1, lang: currentLocale }, params); + params = _extend({ + rp: 25, + sortname: 'count_all', + sortorder: 'desc', + page: 1, + lang: currentLocale + }, params); var url = apibase + 'key/values?' + utilQsString(params); doRequest(url, params, false, callback, function(err, d) { @@ -272,7 +298,7 @@ export default { var f = filterValues(allowUpperCase); var result = d.data.filter(f).map(valKeyDescription); - taginfoCache[url] = result; + _taginfoCache[url] = result; callback(null, result); } }); @@ -283,7 +309,13 @@ export default { var doRequest = params.debounce ? debouncedRequest : request; var geometry = params.geometry; params = clean(setSortMembers(params)); - params = _extend({ rp: 25, sortname: 'count_all_members', sortorder: 'desc', page: 1, lang: currentLocale }, params); + params = _extend({ + rp: 25, + sortname: 'count_all_members', + sortorder: 'desc', + page: 1, + lang: currentLocale + }, params); var url = apibase + 'relation/roles?' + utilQsString(params); doRequest(url, params, true, callback, function(err, d) { @@ -292,7 +324,7 @@ export default { } else { var f = filterRoles(geometry); var result = d.data.filter(f).map(roleKey); - taginfoCache[url] = result; + _taginfoCache[url] = result; callback(null, result); } }); @@ -304,15 +336,18 @@ export default { params = clean(setSort(params)); var path = 'key/wiki_pages?'; - if (params.value) path = 'tag/wiki_pages?'; - else if (params.rtype) path = 'relation/wiki_pages?'; + if (params.value) { + path = 'tag/wiki_pages?'; + } else if (params.rtype) { + path = 'relation/wiki_pages?'; + } var url = apibase + path + utilQsString(params); doRequest(url, params, true, callback, function(err, d) { if (err) { callback(err); } else { - taginfoCache[url] = d.data; + _taginfoCache[url] = d.data; callback(null, d.data); } });