Rebind clickhandler in update selection (bc it uses wrap selection)

This commit is contained in:
Bryan Housel
2016-10-07 15:28:16 -04:00
parent 61fe3167dd
commit 84ba112ff4
2 changed files with 68 additions and 58 deletions
+20 -19
View File
@@ -94,28 +94,29 @@ export function uiRawMemberEditor(context) {
.attr('class', 'member-row form-field')
.classed('member-incomplete', function(d) { return !d.member; });
enter.each(function(d) {
if (d.member) {
var label = d3.select(this).append('label')
.attr('class', 'form-label')
.append('a')
.attr('href', '#')
.on('click', selectMember);
enter
.each(function(d) {
if (d.member) {
var label = d3.select(this).append('label')
.attr('class', 'form-label')
.append('a')
.attr('href', '#')
.on('click', selectMember);
label.append('span')
.attr('class', 'member-entity-type')
.text(function(d) { return context.presets().match(d.member, context.graph()).name(); });
label.append('span')
.attr('class', 'member-entity-type')
.text(function(d) { return context.presets().match(d.member, context.graph()).name(); });
label.append('span')
.attr('class', 'member-entity-name')
.text(function(d) { return utilDisplayName(d.member); });
label.append('span')
.attr('class', 'member-entity-name')
.text(function(d) { return utilDisplayName(d.member); });
} else {
d3.select(this).append('label')
.attr('class', 'form-label')
.text(t('inspector.incomplete'));
}
});
} else {
d3.select(this).append('label')
.attr('class', 'form-label')
.text(t('inspector.incomplete'));
}
});
enter
.append('input')
+48 -39
View File
@@ -47,7 +47,6 @@ export function uiRawMembershipEditor(context) {
} else {
var relation = coreRelation();
context.perform(
actionAddEntity(relation),
actionAddMember(relation.id, { id: id, type: context.entity(id).type, role: role }),
@@ -120,7 +119,7 @@ export function uiRawMembershipEditor(context) {
context.graph().parentRelations(entity).forEach(function(relation) {
relation.members.forEach(function(member, index) {
if (member.id === entity.id) {
memberships.push({relation: relation, member: member, index: index});
memberships.push({ relation: relation, member: member, index: index });
}
});
});
@@ -203,59 +202,68 @@ export function uiRawMembershipEditor(context) {
}
if (showBlank) {
var newrow = list.selectAll('.member-row-new')
.data([0]);
var newrow = list.selectAll('.member-row-new')
.data(showBlank ? [0] : []);
enter = newrow.enter()
.append('li')
.attr('class', 'member-row member-row-new form-field');
newrow.exit()
.remove();
enter
.append('input')
.attr('type', 'text')
.attr('class', 'member-entity-input')
.call(d3combobox()
.minItems(1)
.fetcher(function(value, callback) { callback(relations(value)); })
.on('accept', function(d) {
addMembership(d, list.selectAll('.member-row-new .member-role').property('value'));
})
);
enter = newrow.enter()
.append('li')
.attr('class', 'member-row member-row-new form-field');
enter
.append('input')
.attr('class', 'member-role')
.property('type', 'text')
.attr('maxlength', 255)
.attr('placeholder', t('inspector.role'))
.on('change', changeRole);
enter
.append('input')
.attr('type', 'text')
.attr('class', 'member-entity-input');
enter
.append('button')
.attr('tabindex', -1)
.attr('class', 'remove button-input-action member-delete minor')
.on('click', deleteMembership)
.call(svgIcon('#operation-delete'));
enter
.append('input')
.attr('class', 'member-role')
.property('type', 'text')
.attr('maxlength', 255)
.attr('placeholder', t('inspector.role'))
.on('change', changeRole);
} else {
list.selectAll('.member-row-new')
.remove();
}
enter
.append('button')
.attr('tabindex', -1)
.attr('class', 'remove button-input-action member-delete minor')
.on('click', deleteMembership)
.call(svgIcon('#operation-delete'));
newrow = newrow
.merge(enter);
newrow.selectAll('.member-entity-input')
.call(d3combobox()
.minItems(1)
.fetcher(function(value, callback) { callback(relations(value)); })
.on('accept', onAccept)
);
var addrel = wrap.selectAll('.add-relation')
.data([0]);
addrel.enter()
addrel = addrel.enter()
.append('button')
.attr('class', 'add-relation')
.merge(addrel);
addrel
.call(svgIcon('#icon-plus', 'light'))
.on('click', function() {
showBlank = true;
content(wrap);
list.selectAll('.member-entity-input').node().focus();
})
.call(svgIcon('#icon-plus', 'light'));
});
function onAccept(d) {
var role = list.selectAll('.member-row-new .member-role').property('value');
addMembership(d, role);
}
function bindTypeahead(d) {
@@ -289,6 +297,7 @@ export function uiRawMembershipEditor(context) {
}));
}
function unbind() {
var row = d3.select(this);