mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-21 07:46:58 +02:00
addTags() -> setTags() / removeTags() -> unsetTags()
This avoids overriding the `addTags` and `removeTags` objects with functions
This commit is contained in:
@@ -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
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
})
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user