mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-20 07:25:15 +02:00
Added specialized issue messages for the common types of way crossing issues
Fixed several linting issues involving crossing way validations
This commit is contained in:
+33
-3
@@ -883,20 +883,50 @@ en:
|
||||
error: error
|
||||
warning: warning
|
||||
disconnected_highway:
|
||||
message: "{highway} is disconnected from other highways"
|
||||
message: "{highway} is disconnected from other highways."
|
||||
tooltip: "Roads should be connected to other roads or building entrances."
|
||||
old_multipolygon:
|
||||
message: Multipolygon tags on outer way
|
||||
tooltip: "This style of multipolygon is deprecated. Please assign the tags to the parent multipolygon instead of the outer way."
|
||||
untagged_feature:
|
||||
message: "{feature} has no tags"
|
||||
message: "{feature} has no tags."
|
||||
tooltip: "Select a feature type that describes what this is."
|
||||
many_deletions:
|
||||
message: "You're deleting {n} features: {p} nodes, {l} lines, {a} areas, {r} relations. Are you sure you want to do this? This will delete them from the map that everyone else sees on openstreetmap.org."
|
||||
tag_suggests_area:
|
||||
message: "The tag {tag} suggests line should be area, but it is not an area"
|
||||
message: "The tag {tag} suggests line should be area, but it is not an area."
|
||||
deprecated_tags:
|
||||
message: "Deprecated tags: {tags}"
|
||||
building-building_crossing:
|
||||
message: "{building} intersect {building1} on the same layer."
|
||||
tooltip: "Buildings should not intersect except on separate layers."
|
||||
building-highway_crossing:
|
||||
message: "{highway} crosses {building} without a bridge, tunnel, or entrance."
|
||||
tooltip: "Highways crossing buildings should be connected with an entrance or use separate layers."
|
||||
building-railway_crossing:
|
||||
message: "{railway} crosses {building} without a bridge or tunnel."
|
||||
tooltip: "Railways crossing buildings should use separate layers."
|
||||
building-water_crossing:
|
||||
message: "{water} crosses {building} without a culvert."
|
||||
tooltip: "Waterways crossing buildings should use separate layers."
|
||||
highway-highway_crossing:
|
||||
message: "{highway} crosses {highway2} without a bridge, tunnel, or intersection."
|
||||
tooltip: "Crossing highways should be connected or use separate layers."
|
||||
highway-railway_crossing:
|
||||
message: "{highway} crosses {railway} without a bridge, tunnel, or level crossing."
|
||||
tooltip: "Highways crossing railways should be connected or use separate layers."
|
||||
highway-water_crossing:
|
||||
message: "{highway} crosses {water} without a bridge, tunnel, or ford."
|
||||
tooltip: "Highways crossing waterways should be connected with a ford or use separate layers."
|
||||
railway-railway_crossing:
|
||||
message: "{railway} crosses {railway2} without a bridge, tunnel, or connection."
|
||||
tooltip: "Crossing railways should be connected or use separate layers."
|
||||
railway-water_crossing:
|
||||
message: "{railway} crosses {water} without a bridge or tunnel."
|
||||
tooltip: "Railways crossing waterways should use separate layers."
|
||||
water-water_crossing:
|
||||
message: "{water} crosses {water2} without a culvert or connection."
|
||||
tooltip: "Crossing waterways should be connected or use separate layers."
|
||||
crossing_ways:
|
||||
message: Crossing ways without connection
|
||||
tooltip: "Roads are crossing other roads, buildings, railroads, or waterways without connection nodes or a bridge tag."
|
||||
|
||||
Vendored
+43
-3
@@ -1053,7 +1053,7 @@
|
||||
"warning": "warning"
|
||||
},
|
||||
"disconnected_highway": {
|
||||
"message": "{highway} is disconnected from other highways",
|
||||
"message": "{highway} is disconnected from other highways.",
|
||||
"tooltip": "Roads should be connected to other roads or building entrances."
|
||||
},
|
||||
"old_multipolygon": {
|
||||
@@ -1061,18 +1061,58 @@
|
||||
"tooltip": "This style of multipolygon is deprecated. Please assign the tags to the parent multipolygon instead of the outer way."
|
||||
},
|
||||
"untagged_feature": {
|
||||
"message": "{feature} has no tags",
|
||||
"message": "{feature} has no tags.",
|
||||
"tooltip": "Select a feature type that describes what this is."
|
||||
},
|
||||
"many_deletions": {
|
||||
"message": "You're deleting {n} features: {p} nodes, {l} lines, {a} areas, {r} relations. Are you sure you want to do this? This will delete them from the map that everyone else sees on openstreetmap.org."
|
||||
},
|
||||
"tag_suggests_area": {
|
||||
"message": "The tag {tag} suggests line should be area, but it is not an area"
|
||||
"message": "The tag {tag} suggests line should be area, but it is not an area."
|
||||
},
|
||||
"deprecated_tags": {
|
||||
"message": "Deprecated tags: {tags}"
|
||||
},
|
||||
"building-building_crossing": {
|
||||
"message": "{building} intersect {building1} on the same layer.",
|
||||
"tooltip": "Buildings should not intersect except on separate layers."
|
||||
},
|
||||
"building-highway_crossing": {
|
||||
"message": "{highway} crosses {building} without a bridge, tunnel, or entrance.",
|
||||
"tooltip": "Highways crossing buildings should be connected with an entrance or use separate layers."
|
||||
},
|
||||
"building-railway_crossing": {
|
||||
"message": "{railway} crosses {building} without a bridge or tunnel.",
|
||||
"tooltip": "Railways crossing buildings should use separate layers."
|
||||
},
|
||||
"building-water_crossing": {
|
||||
"message": "{water} crosses {building} without a culvert.",
|
||||
"tooltip": "Waterways crossing buildings should use separate layers."
|
||||
},
|
||||
"highway-highway_crossing": {
|
||||
"message": "{highway} crosses {highway2} without a bridge, tunnel, or intersection.",
|
||||
"tooltip": "Crossing highways should be connected or use separate layers."
|
||||
},
|
||||
"highway-railway_crossing": {
|
||||
"message": "{highway} crosses {railway} without a bridge, tunnel, or level crossing.",
|
||||
"tooltip": "Highways crossing railways should be connected or use separate layers."
|
||||
},
|
||||
"highway-water_crossing": {
|
||||
"message": "{highway} crosses {water} without a bridge, tunnel, or ford.",
|
||||
"tooltip": "Highways crossing waterways should be connected with a ford or use separate layers."
|
||||
},
|
||||
"railway-railway_crossing": {
|
||||
"message": "{railway} crosses {railway2} without a bridge, tunnel, or connection.",
|
||||
"tooltip": "Crossing railways should be connected or use separate layers."
|
||||
},
|
||||
"railway-water_crossing": {
|
||||
"message": "{railway} crosses {water} without a bridge or tunnel.",
|
||||
"tooltip": "Railways crossing waterways should use separate layers."
|
||||
},
|
||||
"water-water_crossing": {
|
||||
"message": "{water} crosses {water2} without a culvert or connection.",
|
||||
"tooltip": "Crossing waterways should be connected or use separate layers."
|
||||
},
|
||||
"crossing_ways": {
|
||||
"message": "Crossing ways without connection",
|
||||
"tooltip": "Roads are crossing other roads, buildings, railroads, or waterways without connection nodes or a bridge tag."
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import _clone from 'lodash-es/clone';
|
||||
import { geoExtent, geoLineIntersection } from '../geo';
|
||||
import { set as d3_set } from 'd3-collection';
|
||||
import { utilDisplayLabel } from '../util';
|
||||
import { t } from '../util/locale';
|
||||
import {
|
||||
ValidationIssueType,
|
||||
@@ -9,7 +10,7 @@ import {
|
||||
} from './validation_issue';
|
||||
|
||||
|
||||
export function validationHighwayCrossingOtherWays() {
|
||||
export function validationHighwayCrossingOtherWays(context) {
|
||||
// Check if the edge going from n1 to n2 crosses (without a connection node)
|
||||
// any edge on way. Return the corss point if so.
|
||||
function findEdgeToWayCrossCoords(n1, n2, way, graph, edgePairsVisited) {
|
||||
@@ -45,7 +46,7 @@ export function validationHighwayCrossingOtherWays() {
|
||||
var parentRels = graph.parentRelations(way);
|
||||
for (var i = 0; i < parentRels.length; i++) {
|
||||
var rel = parentRels[i];
|
||||
for (k in rel.tags) {
|
||||
for (var k in rel.tags) {
|
||||
if (!tags[k]) tags[k] = rel.tags[k];
|
||||
}
|
||||
}
|
||||
@@ -171,6 +172,7 @@ export function validationHighwayCrossingOtherWays() {
|
||||
for (var k = 0; k < crossCoords.length; k++) {
|
||||
edgeCrossInfos.push({
|
||||
ways: [entity, way],
|
||||
featureTypes: [entFeatureType, wayFeatureType],
|
||||
cross_point: crossCoords[k],
|
||||
});
|
||||
}
|
||||
@@ -187,13 +189,25 @@ export function validationHighwayCrossingOtherWays() {
|
||||
for (var i = 0; i < edited.length; i++) {
|
||||
var crosses = findCrossingsByWay(edited[i], graph, tree, edgePairsVisited);
|
||||
for (var j = 0; j < crosses.length; j++) {
|
||||
var crossing = crosses[j];
|
||||
|
||||
var crossingTypeID = crossing.featureTypes.sort().join('-') + '_crossing';
|
||||
|
||||
var messageDict = {};
|
||||
messageDict[crossing.featureTypes[0]] = utilDisplayLabel(crossing.ways[0], context);
|
||||
var key2 = crossing.featureTypes[1];
|
||||
if (crossing.featureTypes[0] === crossing.featureTypes[1]) {
|
||||
key2 += '2';
|
||||
}
|
||||
messageDict[key2] = utilDisplayLabel(crossing.ways[1], context);
|
||||
|
||||
issues.push(new validationIssue({
|
||||
type: ValidationIssueType.crossing_ways,
|
||||
severity: ValidationIssueSeverity.error,
|
||||
message: t('issues.crossing_ways.message'),
|
||||
tooltip: t('issues.crossing_ways.tooltip'),
|
||||
entities: crosses[j].ways,
|
||||
coordinates: crosses[j].cross_point,
|
||||
message: t('issues.'+crossingTypeID+'.message', messageDict),
|
||||
tooltip: t('issues.'+crossingTypeID+'.tooltip'),
|
||||
entities: crossing.ways,
|
||||
coordinates: crossing.cross_point,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -262,7 +262,7 @@ describe('iD.validations.crossing_ways', function () {
|
||||
iD.actionAddEntity(n6),
|
||||
iD.actionAddEntity(w2),
|
||||
iD.actionAddEntity(w3),
|
||||
iD.actionAddEntity(r1),
|
||||
iD.actionAddEntity(r1)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user