mirror of
https://github.com/FoggedLens/iD.git
synced 2026-06-05 14:38:05 +02:00
Add ability to ignore warnings
Replace issue's array of entities with array of entity IDs Improve issue ID hashing
This commit is contained in:
@@ -47,10 +47,11 @@ export function validationAlmostJunction() {
|
||||
icon: 'iD-icon-abutment',
|
||||
title: t('issues.fix.connect_features.title'),
|
||||
onClick: function() {
|
||||
var endNode = this.issue.entities[1];
|
||||
var endNodeId = this.issue.entityIds[1];
|
||||
var endNode = context.entity(endNodeId);
|
||||
var targetEdge = this.issue.data.edge;
|
||||
var crossLoc = this.issue.data.cross_loc;
|
||||
var edgeNodes = [context.graph().entity(targetEdge[0]), context.graph().entity(targetEdge[1])];
|
||||
var edgeNodes = [context.entity(targetEdge[0]), context.entity(targetEdge[1])];
|
||||
var closestNodeInfo = geoSphericalClosestNode(edgeNodes, crossLoc);
|
||||
|
||||
var annotation = t('issues.fix.connect_almost_junction.annotation');
|
||||
@@ -76,7 +77,7 @@ export function validationAlmostJunction() {
|
||||
icon: 'maki-barrier',
|
||||
title: t('issues.fix.tag_as_disconnected.title'),
|
||||
onClick: function() {
|
||||
var nodeID = this.issue.entities[1].id;
|
||||
var nodeID = this.issue.entityIds[1];
|
||||
context.perform(
|
||||
actionChangeTags(nodeID, { noexit: 'yes' }),
|
||||
t('issues.fix.tag_as_disconnected.annotation')
|
||||
@@ -93,7 +94,7 @@ export function validationAlmostJunction() {
|
||||
feature2: utilDisplayLabel(edgeHighway, context)
|
||||
}),
|
||||
reference: showReference,
|
||||
entities: [entity, node, edgeHighway],
|
||||
entityIds: [entity.id, node.id, edgeHighway.id],
|
||||
loc: extendableNodeInfo.node.loc,
|
||||
data: {
|
||||
edge: extendableNodeInfo.edge,
|
||||
|
||||
@@ -489,7 +489,9 @@ export function validationCrossingWays() {
|
||||
severity: 'warning',
|
||||
message: t('issues.crossing_ways.message', messageDict),
|
||||
reference: showReference,
|
||||
entities: entities,
|
||||
entityIds: entities.map(function(entity) {
|
||||
return entity.id;
|
||||
}),
|
||||
data: {
|
||||
edges: crossing.edges,
|
||||
connectionTags: connectionTags
|
||||
@@ -521,8 +523,8 @@ export function validationCrossingWays() {
|
||||
if (selectedIDs.length !== 1) return;
|
||||
|
||||
var selectedID = selectedIDs[0];
|
||||
if (!this.issue.entities.some(function(entity) {
|
||||
return entity.id === selectedID;
|
||||
if (!this.issue.entityIds.some(function(entityId) {
|
||||
return entityId === selectedID;
|
||||
})) return;
|
||||
|
||||
var entity = context.hasEntity(selectedID);
|
||||
|
||||
@@ -69,7 +69,7 @@ export function validationDisconnectedWay() {
|
||||
title: t('issues.fix.delete_feature.title'),
|
||||
entityIds: [entity.id],
|
||||
onClick: function() {
|
||||
var id = this.issue.entities[0].id;
|
||||
var id = this.issue.entityIds[0];
|
||||
var operation = operationDelete([id], context);
|
||||
if (!operation.disabled()) {
|
||||
operation();
|
||||
@@ -83,7 +83,7 @@ export function validationDisconnectedWay() {
|
||||
severity: 'warning',
|
||||
message: t('issues.disconnected_way.highway.message', { highway: entityLabel }),
|
||||
reference: showReference,
|
||||
entities: [entity],
|
||||
entityIds: [entity.id],
|
||||
fixes: fixes
|
||||
})];
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ export function validationFixmeTag() {
|
||||
severity: 'warning',
|
||||
message: t('issues.fixme_tag.message', { feature: utilDisplayLabel(entity, context) }),
|
||||
reference: showReference,
|
||||
entities: [entity]
|
||||
entityIds: [entity.id]
|
||||
})];
|
||||
|
||||
function showReference(selection) {
|
||||
|
||||
@@ -59,17 +59,19 @@ export function validationGenericName() {
|
||||
severity: 'warning',
|
||||
message: t('issues.generic_name.message', {feature: preset.name(), name: generic}),
|
||||
reference: showReference,
|
||||
entities: [entity],
|
||||
entityIds: [entity.id],
|
||||
hash: generic,
|
||||
fixes: [
|
||||
new validationIssueFix({
|
||||
icon: 'iD-operation-delete',
|
||||
title: t('issues.fix.remove_generic_name.title'),
|
||||
onClick: function() {
|
||||
var entity = this.issue.entities[0];
|
||||
var entityId = this.issue.entityIds[0];
|
||||
var entity = context.entity(entityId);
|
||||
var tags = Object.assign({}, entity.tags); // shallow copy
|
||||
delete tags.name;
|
||||
context.perform(
|
||||
actionChangeTags(entity.id, tags),
|
||||
actionChangeTags(entityId, tags),
|
||||
t('issues.fix.remove_generic_name.annotation')
|
||||
);
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ export function validationImpossibleOneway() {
|
||||
title: t('issues.fix.reverse_feature.title'),
|
||||
entityIds: [way.id],
|
||||
onClick: function() {
|
||||
var id = this.issue.entities[0].id;
|
||||
var id = this.issue.entityIds[0];
|
||||
context.perform(actionReverse(id), t('operations.reverse.annotation'));
|
||||
}
|
||||
}));
|
||||
@@ -108,8 +108,8 @@ export function validationImpossibleOneway() {
|
||||
icon: 'iD-operation-continue' + (isFirst ? '-left' : ''),
|
||||
title: t('issues.fix.continue_from_' + (isFirst ? 'start' : 'end') + '.title'),
|
||||
onClick: function() {
|
||||
var entityID = this.issue.entities[0].id;
|
||||
var vertexID = this.issue.entities[1].id;
|
||||
var entityID = this.issue.entityIds[0];
|
||||
var vertexID = this.issue.entityIds[1];
|
||||
var way = context.entity(entityID);
|
||||
var vertex = context.entity(vertexID);
|
||||
continueDrawing(way, vertex, context);
|
||||
@@ -120,7 +120,7 @@ export function validationImpossibleOneway() {
|
||||
var placement = isFirst ? 'start' : 'end',
|
||||
messageID = wayType + '.',
|
||||
referenceID = wayType + '.';
|
||||
|
||||
|
||||
if (isWaterway) {
|
||||
messageID += 'connected.' + placement;
|
||||
referenceID += 'connected';
|
||||
@@ -137,7 +137,7 @@ export function validationImpossibleOneway() {
|
||||
feature: utilDisplayLabel(way, context)
|
||||
}),
|
||||
reference: getReference(referenceID),
|
||||
entities: [way, node],
|
||||
entityIds: [way.id, node.id],
|
||||
fixes: fixes
|
||||
})];
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ export function validationIncompatibleSource() {
|
||||
feature: utilDisplayLabel(entity, context),
|
||||
}),
|
||||
reference: getReference(invalidSource.id),
|
||||
entities: [entity],
|
||||
entityIds: [entity.id],
|
||||
fixes: [
|
||||
new validationIssueFix({
|
||||
title: t('issues.fix.remove_proprietary_data.title')
|
||||
|
||||
@@ -46,10 +46,11 @@ export function validationMissingRole() {
|
||||
relation: utilDisplayLabel(relation, context),
|
||||
}),
|
||||
reference: showReference,
|
||||
entities: [relation, way],
|
||||
entityIds: [relation.id, way.id],
|
||||
data: {
|
||||
member: member
|
||||
},
|
||||
hash: member.index.toString(),
|
||||
fixes: [
|
||||
makeAddRoleFix('inner', context),
|
||||
makeAddRoleFix('outer', context),
|
||||
@@ -58,7 +59,7 @@ export function validationMissingRole() {
|
||||
title: t('issues.fix.remove_from_relation.title'),
|
||||
onClick: function() {
|
||||
context.perform(
|
||||
actionDeleteMember(this.issue.entities[0].id, this.issue.data.member.index),
|
||||
actionDeleteMember(this.issue.entityIds[0], this.issue.data.member.index),
|
||||
t('operations.delete_member.annotation')
|
||||
);
|
||||
}
|
||||
@@ -83,9 +84,9 @@ export function validationMissingRole() {
|
||||
title: t('issues.fix.set_as_' + role + '.title'),
|
||||
onClick: function() {
|
||||
var oldMember = this.issue.data.member;
|
||||
var member = { id: this.issue.entities[1].id, type: oldMember.type, role: role };
|
||||
var member = { id: this.issue.entityIds[1], type: oldMember.type, role: role };
|
||||
context.perform(
|
||||
actionChangeMember(this.issue.entities[0].id, member, oldMember.index),
|
||||
actionChangeMember(this.issue.entityIds[0], member, oldMember.index),
|
||||
t('operations.change_role.annotation')
|
||||
);
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ export function validationMissingTag() {
|
||||
icon: 'iD-operation-delete',
|
||||
title: t('issues.fix.delete_feature.title'),
|
||||
onClick: function() {
|
||||
var id = this.issue.entities[0].id;
|
||||
var id = this.issue.entityIds[0];
|
||||
var operation = operationDelete([id], context);
|
||||
if (!operation.disabled()) {
|
||||
operation();
|
||||
@@ -113,7 +113,7 @@ export function validationMissingTag() {
|
||||
severity: severity,
|
||||
message: t('issues.' + messageID + '.message', messageObj),
|
||||
reference: showReference,
|
||||
entities: [entity],
|
||||
entityIds: [entity.id],
|
||||
fixes: fixes
|
||||
})];
|
||||
|
||||
|
||||
@@ -70,7 +70,8 @@ export function validationOutdatedTags() {
|
||||
severity: 'warning',
|
||||
message: t('issues.outdated_tags.message', { feature: utilDisplayLabel(entity, context) }),
|
||||
reference: showReference,
|
||||
entities: [entity],
|
||||
entityIds: [entity.id],
|
||||
hash: JSON.stringify(tagDiff),
|
||||
fixes: [
|
||||
new validationIssueFix({
|
||||
autoArgs: [doUpgrade, t('issues.fix.upgrade_tags.annotation')],
|
||||
@@ -143,7 +144,7 @@ export function validationOutdatedTags() {
|
||||
severity: 'warning',
|
||||
message: t('issues.old_multipolygon.message', { multipolygon: multipolygonLabel }),
|
||||
reference: showReference,
|
||||
entities: [outerWay, multipolygon],
|
||||
entityIds: [outerWay.id, multipolygon.id],
|
||||
fixes: [
|
||||
new validationIssueFix({
|
||||
autoArgs: [doUpgrade, t('issues.fix.move_tags.annotation')],
|
||||
|
||||
@@ -65,7 +65,7 @@ export function validationPrivateData() {
|
||||
feature: utilDisplayLabel(entity, context),
|
||||
}),
|
||||
reference: showReference,
|
||||
entities: [entity],
|
||||
entityIds: [entity.id],
|
||||
data: {
|
||||
newTags: keepTags
|
||||
},
|
||||
@@ -74,7 +74,7 @@ export function validationPrivateData() {
|
||||
icon: 'iD-operation-delete',
|
||||
title: t('issues.fix.' + fixID + '.title'),
|
||||
onClick: function() {
|
||||
var entityID = this.issue.entities[0].id;
|
||||
var entityID = this.issue.entityIds[0];
|
||||
var newTags = this.issue.data.newTags;
|
||||
context.perform(
|
||||
actionChangeTags(entityID, newTags),
|
||||
|
||||
@@ -43,7 +43,7 @@ export function validationTagSuggestsArea() {
|
||||
// make sure this will not create a self-intersection
|
||||
if (!geoHasSelfIntersections(testNodes, testNodes[0].id)) {
|
||||
connectEndpointsOnClick = function() {
|
||||
var way = this.issue.entities[0];
|
||||
var way = context.entity(this.issue.entityIds[0]);
|
||||
context.perform(
|
||||
actionMergeNodes([way.nodes[0], way.nodes[way.nodes.length-1]], nodes[0].loc),
|
||||
t('issues.fix.connect_endpoints.annotation')
|
||||
@@ -59,11 +59,12 @@ export function validationTagSuggestsArea() {
|
||||
// make sure this will not create a self-intersection
|
||||
if (!geoHasSelfIntersections(testNodes, testNodes[0].id)) {
|
||||
connectEndpointsOnClick = function() {
|
||||
var way = this.issue.entities[0];
|
||||
var wayId = this.issue.entityIds[0];
|
||||
var way = context.entity(wayId);
|
||||
var nodeId = way.nodes[0];
|
||||
var index = way.nodes.length;
|
||||
context.perform(
|
||||
actionAddVertex(way.id, nodeId, index),
|
||||
actionAddVertex(wayId, nodeId, index),
|
||||
t('issues.fix.connect_endpoints.annotation')
|
||||
);
|
||||
};
|
||||
@@ -80,13 +81,14 @@ export function validationTagSuggestsArea() {
|
||||
icon: 'iD-operation-delete',
|
||||
title: t('issues.fix.remove_tag.title'),
|
||||
onClick: function() {
|
||||
var entity = this.issue.entities[0];
|
||||
var entityId = this.issue.entityIds[0];
|
||||
var entity = context.entity(entityId);
|
||||
var tags = Object.assign({}, entity.tags); // shallow copy
|
||||
for (var key in tagSuggestingArea) {
|
||||
delete tags[key];
|
||||
}
|
||||
context.perform(
|
||||
actionChangeTags(entity.id, tags),
|
||||
actionChangeTags(entityId, tags),
|
||||
t('issues.fix.remove_tag.annotation')
|
||||
);
|
||||
}
|
||||
@@ -98,7 +100,8 @@ export function validationTagSuggestsArea() {
|
||||
severity: 'warning',
|
||||
message: t('issues.tag_suggests_area.message', { feature: featureLabel, tag: tagText }),
|
||||
reference: showReference,
|
||||
entities: [entity],
|
||||
entityIds: [entity.id],
|
||||
hash: JSON.stringify(tagSuggestingArea),
|
||||
fixes: fixes
|
||||
})];
|
||||
|
||||
|
||||
@@ -58,14 +58,14 @@ export function validationUnsquareWay() {
|
||||
context.validator().validate();
|
||||
};
|
||||
|
||||
return new validationIssue({
|
||||
return [new validationIssue({
|
||||
type: type,
|
||||
severity: 'warning',
|
||||
message: t('issues.unsquare_way.message', {
|
||||
feature: utilDisplayLabel(entity, context)
|
||||
}),
|
||||
reference: showReference,
|
||||
entities: [entity],
|
||||
entityIds: [entity.id],
|
||||
fixes: [
|
||||
new validationIssueFix({
|
||||
icon: 'iD-operation-orthogonalize',
|
||||
@@ -76,7 +76,7 @@ export function validationUnsquareWay() {
|
||||
}
|
||||
})
|
||||
]
|
||||
});
|
||||
})];
|
||||
|
||||
function showReference(selection) {
|
||||
selection.selectAll('.issue-reference')
|
||||
|
||||
Reference in New Issue
Block a user