Don't clear power output tag when changing between power presets (close #8159)

This commit is contained in:
Quincy Morgan
2020-12-21 13:17:18 -05:00
parent 6cd81df1a2
commit af4acaec79
2 changed files with 10 additions and 4 deletions

View File

@@ -4,7 +4,8 @@ export function actionChangePreset(entityID, oldPreset, newPreset, skipFieldDefa
var geometry = entity.geometry(graph);
var tags = entity.tags;
if (oldPreset) tags = oldPreset.unsetTags(tags, geometry);
// preserve tags that the new preset might care about, if any
if (oldPreset) tags = oldPreset.unsetTags(tags, geometry, newPreset && newPreset.addTags ? Object.keys(newPreset.addTags) : null);
if (newPreset) tags = newPreset.setTags(tags, geometry, skipFieldDefaults);
return graph.replace(entity.update({tags: tags}));

View File

@@ -172,8 +172,10 @@ export function presetPreset(presetID, preset, addable, allFields, allPresets) {
};
_this.unsetTags = (tags, geometry, skipFieldDefaults) => {
tags = utilObjectOmit(tags, Object.keys(_this.removeTags));
_this.unsetTags = (tags, geometry, ignoringKeys, skipFieldDefaults) => {
// allow manually keeping some tags
let removeTags = ignoringKeys ? utilObjectOmit(_this.removeTags, ignoringKeys) : _this.removeTags;
tags = utilObjectOmit(tags, Object.keys(removeTags));
if (geometry && !skipFieldDefaults) {
_this.fields().forEach(field => {
@@ -194,7 +196,10 @@ export function presetPreset(presetID, preset, addable, allFields, allPresets) {
for (let k in addTags) {
if (addTags[k] === '*') {
tags[k] = 'yes';
// if this tag is ancillary, don't override an existing value since any value is okay
if (_this.tags[k] || !tags[k] || tags[k] === 'no') {
tags[k] = 'yes';
}
} else {
tags[k] = addTags[k];
}