diff --git a/index.html b/index.html index af3c68085..cd1177efb 100644 --- a/index.html +++ b/index.html @@ -123,6 +123,7 @@ + diff --git a/js/id/actions/change_preset.js b/js/id/actions/change_preset.js new file mode 100644 index 000000000..dbebf2890 --- /dev/null +++ b/js/id/actions/change_preset.js @@ -0,0 +1,12 @@ +iD.actions.ChangePreset = function(entityId, oldPreset, newPreset) { + return function(graph) { + var entity = graph.entity(entityId), + geometry = entity.geometry(graph), + tags = entity.tags; + + tags = oldPreset.removeTags(tags, geometry); + tags = newPreset.applyTags(tags, geometry); + + return graph.replace(entity.update({tags: tags})); + }; +}; diff --git a/js/id/ui/entity_editor.js b/js/id/ui/entity_editor.js index 4748f5ea3..bdfef6588 100644 --- a/js/id/ui/entity_editor.js +++ b/js/id/ui/entity_editor.js @@ -158,18 +158,7 @@ iD.ui.EntityEditor = function(context) { entityEditor.preset = function(_) { if (!arguments.length) return preset; - - var entity = context.entity(id), - geometry = context.geometry(id), - tags = preset.removeTags(entity.tags, geometry); - preset = _; - tags = preset.applyTags(tags, geometry); - - context.perform( - iD.actions.ChangeTags(id, tags), - t('operations.change_tags.annotation')); - return entityEditor; }; diff --git a/js/id/ui/preset_list.js b/js/id/ui/preset_list.js index 9b961c79a..dbb6d340e 100644 --- a/js/id/ui/preset_list.js +++ b/js/id/ui/preset_list.js @@ -1,7 +1,7 @@ iD.ui.PresetList = function(context) { var event = d3.dispatch('choose'), id, - preset, + currentPreset, autofocus = false; function presetList(selection) { @@ -16,7 +16,7 @@ iD.ui.PresetList = function(context) { var message = messagewrap.append('h3') .text(t('inspector.choose')); - if (preset) { + if (currentPreset) { messagewrap.append('button') .attr('class', 'preset-choose') .on('click', event.choose) @@ -106,7 +106,7 @@ iD.ui.PresetList = function(context) { items.enter().append('div') .attr('class', function(item) { return 'preset-list-item preset-' + item.preset.id.replace('/', '-'); }) - .classed('current', function(item) { return item.preset === preset; }) + .classed('current', function(item) { return item.preset === currentPreset; }) .each(function(item) { d3.select(this).call(item); }) @@ -193,6 +193,11 @@ iD.ui.PresetList = function(context) { item.choose = function() { context.presets().choose(preset); + + context.perform( + iD.actions.ChangePreset(id, currentPreset, preset), + t('operations.change_tags.annotation')); + event.choose(preset); }; @@ -220,8 +225,8 @@ iD.ui.PresetList = function(context) { }; presetList.preset = function(_) { - if (!arguments.length) return preset; - preset = _; + if (!arguments.length) return currentPreset; + currentPreset = _; return presetList; };