Fix adding localized value before name (#1797)

This commit is contained in:
John Firebaugh
2013-10-11 16:31:54 -07:00
parent 2f419f789e
commit b51cfd5d84
2 changed files with 31 additions and 11 deletions
+14 -10
View File
@@ -55,26 +55,30 @@ iD.ui.preset.localized = function(field, context) {
function key(lang) { return field.key + ':' + lang; }
function changeLang(d) {
var value = d3.select(this).value(),
var lang = d3.select(this).value(),
t = {},
language = _.find(iD.data.wikipedia, function(d) {
return d[0].toLowerCase() === value.toLowerCase() ||
d[1].toLowerCase() === value.toLowerCase();
return d[0].toLowerCase() === lang.toLowerCase() ||
d[1].toLowerCase() === lang.toLowerCase();
});
if (language) value = language[2];
if (language) lang = language[2];
if (d.lang && d.lang !== value) {
if (d.lang && d.lang !== lang) {
t[key(d.lang)] = undefined;
}
if (value && d.value) {
t[key(value)] = d.value;
} else if (value && wikiTitles && wikiTitles[d.lang]) {
t[key(value)] = wikiTitles[d.lang];
var value = d3.select(this.parentNode)
.selectAll('.localized-value')
.value();
if (lang && value) {
t[key(lang)] = value;
} else if (lang && wikiTitles && wikiTitles[d.lang]) {
t[key(lang)] = wikiTitles[d.lang];
}
d.lang = value;
d.lang = lang;
event.change(t);
}
+17 -1
View File
@@ -42,7 +42,7 @@ describe('iD.ui.preset.localized', function() {
happen.once(selection.selectAll('.localized-value').node(), {type: 'blur'});
});
it("creates a tag when the language and value are both set", function() {
it("creates a tag after setting language then value", function() {
var localized = iD.ui.preset.localized(field, {});
selection.call(localized);
happen.click(selection.selectAll('.localized-add').node());
@@ -58,6 +58,22 @@ describe('iD.ui.preset.localized', function() {
happen.once(selection.selectAll('.localized-value').node(), {type: 'change'});
});
it("creates a tag after setting value then language", function() {
var localized = iD.ui.preset.localized(field, {});
selection.call(localized);
happen.click(selection.selectAll('.localized-add').node());
selection.selectAll('.localized-value').value('Value');
happen.once(selection.selectAll('.localized-value').node(), {type: 'change'});
localized.on('change', function(tags) {
expect(tags).to.eql({'name:de': 'Value'});
});
selection.selectAll('.localized-lang').value('Deutsch');
happen.once(selection.selectAll('.localized-lang').node(), {type: 'change'});
});
it("changes an existing language", function() {
var localized = iD.ui.preset.localized(field, {});
selection.call(localized);