mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-26 18:07:50 +02:00
Add name autocomplete
This commit is contained in:
+4
-2
@@ -17,7 +17,8 @@ iD.data = {
|
||||
path + 'data/feature-icons.json',
|
||||
path + 'data/operations-sprite.json',
|
||||
path + 'data/locales.json',
|
||||
path + 'dist/locales/en.json'
|
||||
path + 'dist/locales/en.json',
|
||||
path + 'data/name-suggestions.json'
|
||||
], d3.json, function (err, data) {
|
||||
|
||||
iD.data = {
|
||||
@@ -35,7 +36,8 @@ iD.data = {
|
||||
featureIcons: data[9],
|
||||
operations: data[10],
|
||||
locales: data[11],
|
||||
en: data[12]
|
||||
en: data[12],
|
||||
suggestions: data[13]
|
||||
};
|
||||
|
||||
callback();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
iD.ui.preset.localized = function(field) {
|
||||
iD.ui.preset.localized = function(field, context) {
|
||||
|
||||
var event = d3.dispatch('change'),
|
||||
wikipedia = iD.wikipedia(),
|
||||
@@ -18,6 +18,8 @@ iD.ui.preset.localized = function(field) {
|
||||
.on('blur', change)
|
||||
.on('change', change);
|
||||
|
||||
input.call(d3.combobox().fetcher(suggestNames));
|
||||
|
||||
var translateButton = selection.selectAll('.localized-add')
|
||||
.data([0]);
|
||||
|
||||
@@ -89,6 +91,35 @@ iD.ui.preset.localized = function(field) {
|
||||
event.change(t);
|
||||
}
|
||||
|
||||
function suggestNames(value, callback) {
|
||||
var suggest = [],
|
||||
s9s = iD.data.suggestions;
|
||||
if (value && value.length > 2) {
|
||||
var selected = context.selectedIDs(),
|
||||
entity = context.entity(selected),
|
||||
preset = context.presets().match(entity, context.graph());
|
||||
preset = preset.id.split('/', 2);
|
||||
var k = preset[0],
|
||||
v = preset[1];
|
||||
if (s9s[k] && s9s[k][v]) {
|
||||
for (var sugg in s9s[k][v]) {
|
||||
var dist = iD.util.editDistance(value, sugg.substring(0, value.length));
|
||||
if (dist < 5) {
|
||||
suggest.push({
|
||||
title: sugg,
|
||||
value: sugg,
|
||||
dist: dist
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
suggest.sort(function(a, b) {
|
||||
return a.dist - b.dist;
|
||||
});
|
||||
}
|
||||
callback(suggest);
|
||||
}
|
||||
|
||||
function fetcher(value, cb) {
|
||||
var v = value.toLowerCase();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user