diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 9f710285b..d76b96d8e 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -4,11 +4,12 @@ iD.ui.Inspector = function() { presetData = iD.presetData(), initial = false, presetUI, - context, - tagList = iD.ui.Taglist(); + tagList, + context; function inspector(selection) { - var entity = selection.datum(); + var entity = selection.datum(), + presetMatch = presetData.matchTags(entity); var iwrap = selection.append('div') .attr('class','inspector content hide'), @@ -44,14 +45,14 @@ iD.ui.Inspector = function() { presetUI = iD.ui.preset() .on('change', function(tags) { - inspector.tags(_.extend(inspector.tags(), tags)); event.change(); }); - event.on('change.preset', function() { - var tags = inspector.tags(); - presetUI.change(tags); - }); + tagList = iD.ui.Taglist() + .context(context) + .on('change', function(tags) { + event.change(); + }); var inspectorpresetsearch = inspectorwrap.append('div') .attr('class', 'inspector-preset cf') @@ -80,22 +81,19 @@ iD.ui.Inspector = function() { var inspectorpreset = inspectorwrap.append('div') .attr('class', 'inspector-preset cf'); - inspectorwrap.append('h4') - .text(t('inspector.edit_tags')); + if (presetMatch) { + inspectorpreset.call(presetUI + .preset(presetMatch)); + } - inspectorwrap.call(tagList); + var taglistwrap = inspectorwrap.append('div').call(tagList); + + inspector.tags(entity.tags); inspectorbody.append('div') .attr('class', 'inspector-buttons pad1 fillD') .call(drawButtons); - var presetMatch = presetData.matchTags(entity); - if (presetMatch) { - inspectorpreset.call(presetUI - .preset(presetMatch) - .change(inspector.tags())); - } - iwrap.call(iD.ui.Toggle(true)); } @@ -140,7 +138,8 @@ iD.ui.Inspector = function() { if (!arguments.length) { return _.extend(presetUI.tags(), tagList.tags()); } else { - tagList.tags(tags); + presetUI.change(tags); + tagList.tags(_.omit(tags, _.keys(presetUI.tags() || {}))); } }; @@ -156,7 +155,6 @@ iD.ui.Inspector = function() { inspector.context = function(_) { context = _; - tagList.context(context); return inspector; }; diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index a4b77078e..d138236d5 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -98,7 +98,6 @@ iD.ui.preset = function() { showRawTags.text(hidden ? 'Hide raw tags' : 'Show raw tags'); if (hidden) sections.style('display', 'none'); else sections.style('display', ''); - event.change(clean(getTags())); }); sections = selection.selectAll('div.preset-section') .data(preset.main) @@ -118,7 +117,6 @@ iD.ui.preset = function() { .attr('class', 'col8 preset-input'), d); }); if (exttags) setTags(exttags); - key(); } presets.preset = function(_) { diff --git a/js/id/ui/taglist.js b/js/id/ui/taglist.js index 0bf8cf45c..b661939be 100644 --- a/js/id/ui/taglist.js +++ b/js/id/ui/taglist.js @@ -1,22 +1,19 @@ iD.ui.Taglist = function() { - var event = d3.dispatch('changeTags', 'close', 'change'), + var event = d3.dispatch('change'), taginfo = iD.taginfo(), initial = false, list, context; function taglist(selection) { - var entity = selection.datum(); - var wrap = selection.append('div'); - - wrap.append('h4') + selection.append('h4') .text(t('inspector.edit_tags')); - list = wrap.append('ul') + list = selection.append('ul') .attr('class', 'tag-list'); - var newTag = wrap.append('button') + var newTag = selection.append('button') .attr('class', 'add-tag'); newTag.on('click', function() { @@ -31,8 +28,6 @@ iD.ui.Taglist = function() { .attr('class', 'label') .text(t('inspector.new_tag')); - drawTags(entity.tags); - } function drawTags(tags) { @@ -233,22 +228,17 @@ iD.ui.Taglist = function() { } function addTag() { - var tags = inspector.tags(); + var tags = taglist.tags(); tags[''] = ''; drawTags(tags); } function removeTag(d) { - var tags = inspector.tags(); + var tags = taglist.tags(); delete tags[d.key]; drawTags(tags); } - function apply(entity) { - event.changeTags(entity, taglist.tags()); - event.close(entity); - } - taglist.tags = function(tags) { if (!arguments.length) { tags = {};