From 748c9c9598ded39d33935331fedafdcc411c7976 Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Wed, 27 Mar 2019 17:15:10 -0400 Subject: [PATCH] Filter out deprecated tag values from combobox suggestions (close #6084) --- modules/osm/entity.js | 23 +++++++++++++++++++++++ modules/ui/fields/combo.js | 10 ++++++++++ 2 files changed, 33 insertions(+) diff --git a/modules/osm/entity.js b/modules/osm/entity.js index 9eae58d55..8663cac9e 100644 --- a/modules/osm/entity.js +++ b/modules/osm/entity.js @@ -50,6 +50,29 @@ osmEntity.key = function(entity) { return entity.id + 'v' + (entity.v || 0); }; +var _deprecatedTagValuesByKey; + +osmEntity.deprecatedTagValuesByKey = function() { + if (!_deprecatedTagValuesByKey) { + _deprecatedTagValuesByKey = {}; + dataDeprecated.forEach(function(d) { + var oldKeys = Object.keys(d.old); + if (oldKeys.length === 1) { + var oldKey = oldKeys[0]; + var oldValue = d.old[oldKey]; + if (oldValue !== '*') { + if (!_deprecatedTagValuesByKey[oldKey]) { + _deprecatedTagValuesByKey[oldKey] = [oldValue]; + } else { + _deprecatedTagValuesByKey[oldKey].push(oldValue); + } + } + } + }); + } + return _deprecatedTagValuesByKey; +}; + osmEntity.prototype = { diff --git a/modules/ui/fields/combo.js b/modules/ui/fields/combo.js index 3e9bd78ab..1d3317c0c 100644 --- a/modules/ui/fields/combo.js +++ b/modules/ui/fields/combo.js @@ -7,6 +7,7 @@ import { select as d3_select } from 'd3-selection'; +import { osmEntity } from '../../osm/entity'; import { t } from '../../util/locale'; import { services } from '../../services'; import { uiCombobox } from '../index'; @@ -185,6 +186,15 @@ export function uiFieldCombo(field, context) { taginfo[fn](params, function(err, data) { if (err) return; + + var deprecatedValues = osmEntity.deprecatedTagValuesByKey()[field.key]; + if (deprecatedValues) { + // don't suggest deprecated tag values + data = data.filter(function(d) { + return deprecatedValues.indexOf(d.value) === -1; + }); + } + if (hasCountryPrefix) { data = data.filter(function(d) { return d.value.toLowerCase().indexOf(_country + ':') === 0;