diff --git a/data/index.js b/data/index.js index 0423aa9b4..2cdc5a6b8 100644 --- a/data/index.js +++ b/data/index.js @@ -1,7 +1,6 @@ import _values from 'lodash-es/values'; export { wikipedia as dataWikipedia } from 'wmf-sitematrix'; -export { default as dataSuggestions } from 'name-suggestion-index/name-suggestions.json'; export { dataAddressFormats } from './address-formats.json'; export { dataDeprecated } from './deprecated.json'; diff --git a/modules/ui/fields/localized.js b/modules/ui/fields/localized.js index fdc57b5a7..b1200694b 100644 --- a/modules/ui/fields/localized.js +++ b/modules/ui/fields/localized.js @@ -10,26 +10,26 @@ import { import { d3combobox as d3_combobox } from '../../lib/d3.combobox.js'; import { t } from '../../util/locale'; -import { dataSuggestions, dataWikipedia } from '../../../data'; +import { dataWikipedia } from '../../../data'; import { services } from '../../services'; import { svgIcon } from '../../svg'; import { tooltip } from '../../util/tooltip'; import { utilDetect } from '../../util/detect'; import { + utilEditDistance, utilGetSetValue, utilNoAuto, - utilRebind, - utilSuggestNames + utilRebind } from '../../util'; export function uiFieldLocalized(field, context) { - var dispatch = d3_dispatch('change', 'input'), - wikipedia = services.wikipedia, - input = d3_select(null), - localizedInputs = d3_select(null), - wikiTitles, - entity; + var dispatch = d3_dispatch('change', 'input'); + var wikipedia = services.wikipedia; + var input = d3_select(null); + var localizedInputs = d3_select(null); + var wikiTitles; + var _entity; function localized(selection) { @@ -46,12 +46,12 @@ export function uiFieldLocalized(field, context) { .merge(input); if (field.id === 'name') { - var preset = context.presets().match(entity, context.graph()); - input - .call(d3_combobox() - .container(context.container()) - .fetcher(utilSuggestNames(preset, dataSuggestions)) - ); + // var preset = context.presets().match(_entity, context.graph()); + // input + // .call(d3_combobox() + // .container(context.container()) + // .fetcher(suggestNames(preset, dataSuggestions)) + // ); } input @@ -86,6 +86,36 @@ export function uiFieldLocalized(field, context) { } + function suggestNames(preset, suggestions) { + preset = preset.id.split('/', 2); + var k = preset[0]; + var v = preset[1]; + + return function(value, callback) { + var result = []; + if (value && value.length > 2) { + if (suggestions[k] && suggestions[k][v]) { + for (var sugg in suggestions[k][v]) { + var dist = utilEditDistance(value, sugg.substring(0, value.length)); + if (dist < 3) { + result.push({ + title: sugg, + value: sugg, + dist: dist + }); + } + } + } + result.sort(function(a, b) { + return a.dist - b.dist; + }); + } + result = result.slice(0,3); + callback(result); + }; + } + + function addNew() { d3_event.preventDefault(); var data = localizedInputs.selectAll('div.entry').data(); @@ -115,12 +145,12 @@ export function uiFieldLocalized(field, context) { function changeLang(d) { - var lang = utilGetSetValue(d3_select(this)), - t = {}, - language = _find(dataWikipedia, function(d) { - return d[0].toLowerCase() === lang.toLowerCase() || - d[1].toLowerCase() === lang.toLowerCase(); - }); + var lang = utilGetSetValue(d3_select(this)); + var t = {}; + var language = _find(dataWikipedia, function(d) { + return d[0].toLowerCase() === lang.toLowerCase() || + d[1].toLowerCase() === lang.toLowerCase(); + }); if (language) lang = language[2]; @@ -164,8 +194,8 @@ export function uiFieldLocalized(field, context) { function render(selection, data) { - var wraps = selection.selectAll('div.entry'). - data(data, function(d) { return d.lang; }); + var wraps = selection.selectAll('div.entry') + .data(data, function(d) { return d.lang; }); wraps.exit() .transition() @@ -178,7 +208,8 @@ export function uiFieldLocalized(field, context) { var innerWrap = wraps.enter() .insert('div', ':first-child'); - innerWrap.attr('class', 'entry') + innerWrap + .attr('class', 'entry') .each(function() { var wrap = d3_select(this); var langcombo = d3_combobox() @@ -247,9 +278,9 @@ export function uiFieldLocalized(field, context) { var entry = selection.selectAll('.entry'); utilGetSetValue(entry.select('.localized-lang'), function(d) { - var lang = _find(dataWikipedia, function(lang) { return lang[2] === d.lang; }); - return lang ? lang[1] : d.lang; - }); + var lang = _find(dataWikipedia, function(lang) { return lang[2] === d.lang; }); + return lang ? lang[1] : d.lang; + }); utilGetSetValue(entry.select('.localized-value'), function(d) { return d.value; }); @@ -270,9 +301,9 @@ export function uiFieldLocalized(field, context) { utilGetSetValue(input, tags[field.key] || ''); - var postfixed = [], k, m; - for (k in tags) { - m = k.match(/^(.*):([a-zA-Z_-]+)$/); + var postfixed = []; + for (var k in tags) { + var m = k.match(/^(.*):([a-zA-Z_-]+)$/); if (m && m[1] === field.key && m[2]) { postfixed.push({ lang: m[2], value: tags[k] }); } @@ -287,9 +318,9 @@ export function uiFieldLocalized(field, context) { }; - localized.entity = function(_) { - if (!arguments.length) return entity; - entity = _; + localized.entity = function(val) { + if (!arguments.length) return _entity; + _entity = val; return localized; }; diff --git a/modules/util/index.js b/modules/util/index.js index bbca0d00a..420629e5a 100644 --- a/modules/util/index.js +++ b/modules/util/index.js @@ -25,7 +25,6 @@ export { utilRebind } from './rebind'; export { utilSetTransform } from './util'; export { utilSessionMutex } from './session_mutex'; export { utilStringQs } from './util'; -export { utilSuggestNames } from './suggest_names'; export { utilTagText } from './util'; export { utilTiler } from './tiler'; export { utilTriggerEvent } from './trigger_event'; diff --git a/modules/util/suggest_names.js b/modules/util/suggest_names.js deleted file mode 100644 index 1ced153c6..000000000 --- a/modules/util/suggest_names.js +++ /dev/null @@ -1,30 +0,0 @@ -import { utilEditDistance } from './util'; - -export function utilSuggestNames(preset, suggestions) { - preset = preset.id.split('/', 2); - var k = preset[0], - v = preset[1]; - - return function(value, callback) { - var result = []; - if (value && value.length > 2) { - if (suggestions[k] && suggestions[k][v]) { - for (var sugg in suggestions[k][v]) { - var dist = utilEditDistance(value, sugg.substring(0, value.length)); - if (dist < 3) { - result.push({ - title: sugg, - value: sugg, - dist: dist - }); - } - } - } - result.sort(function(a, b) { - return a.dist - b.dist; - }); - } - result = result.slice(0,3); - callback(result); - }; -} diff --git a/test/index.html b/test/index.html index c954aae87..e8fc05f68 100644 --- a/test/index.html +++ b/test/index.html @@ -139,7 +139,6 @@ - diff --git a/test/spec/util/suggest_names.js b/test/spec/util/suggest_names.js deleted file mode 100644 index 754e55a86..000000000 --- a/test/spec/util/suggest_names.js +++ /dev/null @@ -1,36 +0,0 @@ -describe('iD.utilSuggestNames', function() { - var suggestions = { - 'key': { - 'value': { - 'abcdef': {}, - 'ghijkl': {} - } - } - }; - - var preset = { - 'id': 'key/value' - }; - - var a = iD.utilSuggestNames(preset, suggestions); - - it('provides suggestions for an entered value', function(done) { - a('abcd', function(result) { - expect(result).to.eql([ - { - title: 'abcdef', - value: 'abcdef', - dist: 0 - } - ]); - done(); - }); - }); - - it('provides no suggestions for short values', function(done){ - a('ab', function(result) { - expect(result).to.eql([]); - done(); - }); - }); -});