addTags() -> setTags() / removeTags() -> unsetTags()

This avoids overriding the `addTags` and `removeTags` objects with functions
This commit is contained in:
Bryan Housel
2018-11-21 12:59:43 -05:00
parent ed1ffed095
commit ea9e3008a5
4 changed files with 36 additions and 36 deletions
+7 -7
View File
@@ -1,11 +1,11 @@
export function actionChangePreset(entityId, oldPreset, newPreset) {
return function(graph) {
var entity = graph.entity(entityId),
geometry = entity.geometry(graph),
tags = entity.tags;
export function actionChangePreset(entityID, oldPreset, newPreset) {
return function action(graph) {
var entity = graph.entity(entityID);
var geometry = entity.geometry(graph);
var tags = entity.tags;
if (oldPreset) tags = oldPreset.removeTags(tags, geometry);
if (newPreset) tags = newPreset.applyTags(tags, geometry);
if (oldPreset) tags = oldPreset.unsetTags(tags, geometry);
if (newPreset) tags = newPreset.setTags(tags, geometry);
return graph.replace(entity.update({tags: tags}));
};
+11 -11
View File
@@ -1,5 +1,4 @@
import _clone from 'lodash-es/clone';
import _keys from 'lodash-es/keys';
import _omit from 'lodash-es/omit';
import { t } from '../util/locale';
@@ -94,9 +93,9 @@ export function presetPreset(id, preset, fields) {
};
var removeTags = preset.removeTags || preset.tags || {};
preset.removeTags = function(tags, geometry) {
tags = _omit(tags, _keys(removeTags));
preset.removeTags = preset.removeTags || preset.tags || {};
preset.unsetTags = function(tags, geometry) {
tags = _omit(tags, Object.keys(preset.removeTags));
for (var f in preset.fields) {
var field = preset.fields[f];
@@ -110,17 +109,18 @@ export function presetPreset(id, preset, fields) {
};
var applyTags = preset.addTags || preset.tags || {};
preset.applyTags = function(tags, geometry) {
preset.addTags = preset.addTags || preset.tags || {};
preset.setTags = function(tags, geometry) {
var addTags = preset.addTags;
var k;
tags = _clone(tags);
for (k in applyTags) {
if (applyTags[k] === '*') {
for (k in addTags) {
if (addTags[k] === '*') {
tags[k] = 'yes';
} else {
tags[k] = applyTags[k];
tags[k] = addTags[k];
}
}
@@ -128,12 +128,12 @@ export function presetPreset(id, preset, fields) {
// This is necessary if the geometry is already an area (e.g. user drew an area) AND any of:
// 1. chosen preset could be either an area or a line (`barrier=city_wall`)
// 2. chosen preset doesn't have a key in areaKeys (`railway=station`)
if (!applyTags.hasOwnProperty('area')) {
if (!addTags.hasOwnProperty('area')) {
delete tags.area;
if (geometry === 'area') {
var needsAreaTag = true;
if (preset.geometry.indexOf('line') === -1) {
for (k in applyTags) {
for (k in addTags) {
if (k in areaKeys) {
needsAreaTag = false;
break;
+2 -2
View File
@@ -85,11 +85,11 @@ export function uiFieldLocalized(field, context) {
.on('accept', function(d) {
var tags = _entity.tags;
var geometry = _entity.geometry(context.graph());
var removed = preset.removeTags(tags, geometry);
var removed = preset.unsetTags(tags, geometry);
for (var k in tags) {
tags[k] = removed[k]; // set removed tags to `undefined`
}
tags = d.suggestion.applyTags(tags, geometry);
tags = d.suggestion.setTags(tags, geometry);
dispatch.call('change', this, tags);
})
);