Extract iD.actions.ChangePreset

This commit is contained in:
John Firebaugh
2013-05-28 17:41:26 -07:00
parent 56f8b9e4a9
commit f9f72be9c8
4 changed files with 23 additions and 16 deletions
+1
View File
@@ -123,6 +123,7 @@
<script src='js/id/actions/add_entity.js'></script>
<script src='js/id/actions/add_vertex.js'></script>
<script src='js/id/actions/change_member.js'></script>
<script src='js/id/actions/change_preset.js'></script>
<script src='js/id/actions/change_tags.js'></script>
<script src='js/id/actions/connect.js'></script>
<script src='js/id/actions/delete_member.js'></script>
+12
View File
@@ -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}));
};
};
-11
View File
@@ -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;
};
+10 -5
View File
@@ -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;
};