Listen to both change and blur for role switcher, compare old v new

(closes #5449)
This commit is contained in:
Bryan Housel
2018-12-12 15:27:14 -05:00
parent e08bfb2add
commit 17615da0ea
2 changed files with 30 additions and 32 deletions
+13 -8
View File
@@ -59,12 +59,16 @@ export function uiRawMemberEditor(context) {
function changeRole(d) {
var role = d3_select(this).property('value');
var member = { id: d.id, type: d.type, role: role };
context.perform(
actionChangeMember(d.relation.id, member, d.index),
t('operations.change_role.annotation')
);
var oldRole = d.role;
var newRole = d3_select(this).property('value');
if (oldRole !== newRole) {
var member = { id: d.id, type: d.type, role: newRole };
context.perform(
actionChangeMember(d.relation.id, member, d.index),
t('operations.change_role.annotation')
);
}
}
@@ -217,6 +221,7 @@ export function uiRawMemberEditor(context) {
.attr('placeholder', t('inspector.role'))
.call(utilNoAuto)
.property('value', function(d) { return d.role; })
.on('blur', changeRole)
.on('change', changeRole);
wrapEnter
@@ -224,8 +229,8 @@ export function uiRawMemberEditor(context) {
.attr('tabindex', -1)
.attr('title', t('icons.remove'))
.attr('class', 'remove form-field-button member-delete')
.on('click', deleteMember)
.call(svgIcon('#iD-operation-delete'));
.call(svgIcon('#iD-operation-delete'))
.on('click', deleteMember);
if (taginfo) {
wrapEnter.each(bindTypeahead);
+17 -24
View File
@@ -44,13 +44,16 @@ export function uiRawMembershipEditor(context) {
function changeRole(d) {
var role = d3_select(this).property('value');
if (d === 0) return; // called on newrow (shoudn't happen)
var oldRole = d.member.role;
var newRole = d3_select(this).property('value');
context.perform(
actionChangeMember(d.relation.id, _extend({}, d.member, { role: role }), d.index),
t('operations.change_role.annotation')
);
if (oldRole !== newRole) {
context.perform(
actionChangeMember(d.relation.id, _extend({}, d.member, { role: newRole }), d.index),
t('operations.change_role.annotation')
);
}
}
@@ -225,28 +228,21 @@ export function uiRawMembershipEditor(context) {
.attr('maxlength', 255)
.attr('placeholder', t('inspector.role'))
.call(utilNoAuto)
.property('value', function(d) { return d.member.role; });
.property('value', function(d) { return d.member.role; })
.on('blur', changeRole)
.on('change', changeRole);
wrapEnter
.append('button')
.attr('tabindex', -1)
.attr('class', 'remove form-field-button member-delete')
.call(svgIcon('#iD-operation-delete'));
.call(svgIcon('#iD-operation-delete'))
.on('click', deleteMembership);
if (taginfo) {
wrapEnter.each(bindTypeahead);
}
// Update
items = items
.merge(itemsEnter);
items.selectAll('input.member-role')
.on('change', changeRole);
items.selectAll('button.member-delete')
.on('click', deleteMembership);
var newMembership = list.selectAll('.member-row-new')
.data(_showBlank ? [0] : []);
@@ -297,7 +293,10 @@ export function uiRawMembershipEditor(context) {
newMembership.selectAll('.member-entity-input')
.call(nearbyCombo
.on('accept', onAccept)
.on('accept', function (d) {
var role = list.selectAll('.member-row-new .member-role').property('value');
addMembership(d, role);
})
.on('cancel', function() { delete this.value; })
);
@@ -321,12 +320,6 @@ export function uiRawMembershipEditor(context) {
});
function onAccept(d) {
var role = list.selectAll('.member-row-new .member-role').property('value');
addMembership(d, role);
}
function bindTypeahead(d) {
var row = d3_select(this);
var role = row.selectAll('input.member-role');