mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-13 12:55:05 +02:00
Add links to the main error object in KeepRight error messages
re: https://github.com/openstreetmap/iD/issues/5679#issuecomment-452281850
This commit is contained in:
@@ -2595,6 +2595,9 @@ input.key-trap {
|
||||
.kr_error-details-description {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.kr_error-details-description-text::first-letter {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
|
||||
/* Custom Data Editor
|
||||
|
||||
+90
-79
@@ -669,131 +669,142 @@ en:
|
||||
close_comment: Close and Comment
|
||||
ignore_comment: Ignore and Comment
|
||||
error_parts:
|
||||
node: node
|
||||
way: way
|
||||
relation: relation
|
||||
highway: highway
|
||||
railway: railway
|
||||
waterway: waterway
|
||||
cycleway: cycleway
|
||||
cycleway_footpath: 'cycleway/footpath'
|
||||
riverbank: riverbank
|
||||
bridge: bridge
|
||||
tunnel: tunnel
|
||||
node: 'this node'
|
||||
way: 'this way'
|
||||
relation: 'this relation'
|
||||
oneway: 'this oneway'
|
||||
highway: 'this highway'
|
||||
railway: 'this railway'
|
||||
waterway: 'this waterway'
|
||||
cycleway: 'this cycleway'
|
||||
cycleway_footpath: 'this cycleway/footpath'
|
||||
riverbank: 'this riverbank'
|
||||
crossing: 'this crossing'
|
||||
railway_crossing: 'this railway crossing'
|
||||
bridge: 'this bridge'
|
||||
tunnel: 'this tunnel'
|
||||
boundary: 'this boundary'
|
||||
turn_restriction: 'this turn restriction'
|
||||
roundabout: 'this roundabout'
|
||||
mini_roundabout: 'this mini-roundabout'
|
||||
track: 'this track'
|
||||
feature: 'this feature'
|
||||
place_of_worship: 'place of worship'
|
||||
pub: pub
|
||||
restaurant: restaurant
|
||||
school: school
|
||||
university: university
|
||||
hospital: hospital
|
||||
library: library
|
||||
theatre: theatre
|
||||
courthouse: courthouse
|
||||
bank: bank
|
||||
cinema: cinema
|
||||
pharmacy: pharmacy
|
||||
cafe: cafe
|
||||
pub: 'pub'
|
||||
restaurant: 'restaurant'
|
||||
school: 'school'
|
||||
university: 'university'
|
||||
hospital: 'hospital'
|
||||
library: 'library'
|
||||
theatre: 'theatre'
|
||||
courthouse: 'courthouse'
|
||||
bank: 'bank'
|
||||
cinema: 'cinema'
|
||||
pharmacy: 'pharmacy'
|
||||
cafe: 'cafe'
|
||||
fast_food: 'fast food'
|
||||
fuel: fuel
|
||||
from: from
|
||||
to: to
|
||||
fuel: 'fuel'
|
||||
from: 'from'
|
||||
to: 'to'
|
||||
left_hand: 'left-hand'
|
||||
right_hand: 'right-hand'
|
||||
errorTypes:
|
||||
20:
|
||||
title: 'Multiple nodes on the same spot'
|
||||
description: 'There is more than one node in this spot. Node IDs: {var1}.'
|
||||
30:
|
||||
title: 'Non-closed area'
|
||||
description: 'This way is tagged with "{var1}" and should be a closed loop.'
|
||||
description: '{var1} is tagged with "{var2}" and should be a closed loop.'
|
||||
40:
|
||||
title: 'Impossible oneway'
|
||||
description: 'The first node {var1} of this oneway is not connected to any other way.'
|
||||
description: 'The first node {var1} of {var2} is not connected to any other way.'
|
||||
41:
|
||||
description: 'The last node {var1} of this oneway is not connected to any other way.'
|
||||
description: 'The last node {var1} of {var2} is not connected to any other way.'
|
||||
42:
|
||||
description: 'You cannot reach this node because all ways leading from it are oneway.'
|
||||
description: 'You cannot reach {var1} because all ways leading from it are oneway.'
|
||||
43:
|
||||
description: 'You cannot escape from this node because all ways leading to it are oneway.'
|
||||
description: 'You cannot escape from {var1} because all ways leading to it are oneway.'
|
||||
50:
|
||||
title: 'Almost junction'
|
||||
description: 'This node is very close but not connected to way {var1}.'
|
||||
description: '{var1} is very close but not connected to way {var2}.'
|
||||
60:
|
||||
title: 'Deprecated tag'
|
||||
description: 'This {var1} uses deprecated tag "{var2}". Please use "{var3}" instead.'
|
||||
description: '{var1} uses deprecated tag "{var2}". Please use "{var3}" instead.'
|
||||
70:
|
||||
title: 'Missing tag'
|
||||
description: 'This {var1} has an empty tag: "{var2}".'
|
||||
description: '{var1} has an empty tag: "{var2}".'
|
||||
71:
|
||||
description: 'This way has no tags.'
|
||||
description: '{var1} has no tags.'
|
||||
72:
|
||||
description: 'This node is not member of any way and doesn''t have any tags.'
|
||||
description: '{var1} is not member of any way and doesn''t have any tags.'
|
||||
73:
|
||||
description: 'This way has a "{var1}" tag but no "highway" tag.'
|
||||
description: '{var1} has a "{var2}" tag but no "highway" tag.'
|
||||
74:
|
||||
description: 'This {var1} has an empty tag: "{var2}".'
|
||||
description: '{var1} has an empty tag: "{var2}".'
|
||||
75:
|
||||
description: 'This {var1} has a name "{var2}" but no other tags.'
|
||||
description: '{var1} has a name "{var2}" but no other tags.'
|
||||
90:
|
||||
title: 'Motorway without ref tag'
|
||||
description: 'This way is tagged as a motorway and therefore needs a "ref", "nat_ref", or "int_ref" tag.'
|
||||
description: '{var1} is tagged as a motorway and therefore needs a "ref", "nat_ref", or "int_ref" tag.'
|
||||
100:
|
||||
title: 'Place of worship without religion'
|
||||
description: 'This {var1} is tagged as a place of worship and therefore needs a religion tag.'
|
||||
description: '{var1} is tagged as a place of worship and therefore needs a religion tag.'
|
||||
110:
|
||||
title: 'Point of interest without name'
|
||||
description: 'This node is tagged as a "{var1}" and therefore needs a name tag.'
|
||||
description: '{var1} is tagged as a "{var2}" and therefore needs a name tag.'
|
||||
120:
|
||||
title: 'Way without nodes'
|
||||
description: 'This way has just one single node.'
|
||||
description: '{var1} has just one single node.'
|
||||
130:
|
||||
title: 'Disconnected way'
|
||||
description: 'This way is not connected to the rest of the map.'
|
||||
description: '{var1} is not connected to the rest of the map.'
|
||||
150:
|
||||
title: 'Railway crossing without tag'
|
||||
description: 'This crossing of a highway and a railway needs to be tagged as "railway=crossing" or "railway=level_crossing".'
|
||||
description: '{var1} of a highway and a railway needs to be tagged as "railway=crossing" or "railway=level_crossing".'
|
||||
160:
|
||||
title: 'Railway layer conflict'
|
||||
description: 'There are ways in different layers (e.g. tunnel or bridge) meeting at this railway crossing.'
|
||||
description: 'There are ways in different layers (e.g. tunnel or bridge) meeting at {var1}.'
|
||||
170:
|
||||
title: 'FIXME tagged item'
|
||||
description: '{var1}'
|
||||
description: '{var1} has a FIXME tag: {var2}'
|
||||
180:
|
||||
title: 'Relation without type'
|
||||
description: 'This relation is missing a "type" tag.'
|
||||
description: '{var1} is missing a "type" tag.'
|
||||
190:
|
||||
title: 'Intersection without junction'
|
||||
description: 'This {var1} intersects the {var2} {var3} but there is no junction node, bridge, or tunnel.'
|
||||
description: '{var1} intersects the {var2} {var3} but there is no junction node, bridge, or tunnel.'
|
||||
200:
|
||||
title: 'Overlapping ways'
|
||||
description: 'This {var1} overlaps the {var2} {var3}.'
|
||||
description: '{var1} overlaps the {var2} {var3}.'
|
||||
210:
|
||||
title: 'Self-intersecting way'
|
||||
description: 'There is an unspecified issue with self intersecting ways.'
|
||||
211:
|
||||
description: 'This way contains more than one node multiple times. Nodes are {var1}. This may or may not be an error.'
|
||||
description: '{var1} contains more than one node multiple times. Nodes are {var2}. This may or may not be an error.'
|
||||
212:
|
||||
description: 'This way has only two different nodes and contains one of them more than once.'
|
||||
description: '{var1} has only two different nodes and contains one of them more than once.'
|
||||
220:
|
||||
title: 'Misspelled tag'
|
||||
description: 'This {var1} is tagged "{var2}" where "{var3}" looks like "{var4}".'
|
||||
description: '{var1} is tagged "{var2}" where "{var3}" looks like "{var4}".'
|
||||
221:
|
||||
description: 'This {var1} has a suspicious tag "{var2}".'
|
||||
description: '{var1} has a suspicious tag "{var2}".'
|
||||
230:
|
||||
title: 'Layer conflict'
|
||||
description: 'This node is a junction of ways on different layers.'
|
||||
description: '{var1} is a junction of ways on different layers.'
|
||||
231:
|
||||
description: 'This node is a junction of ways on different layers: {var1}.'
|
||||
description: '{var1} is a junction of ways on different layers: {var2}.'
|
||||
layer: '(layer: {layer})'
|
||||
232:
|
||||
description: 'This {var1} is tagged with "layer={var2}". This need not be an error but it looks strange.'
|
||||
description: '{var1} is tagged with "layer={var2}". This need not be an error but it looks strange.'
|
||||
270:
|
||||
title: 'Unusual motorway connection'
|
||||
description: 'This node is a junction of a motorway and a highway other than "motorway", "motorway_link", "trunk", "rest_area", or "construction". Connection to "service" or "unclassified" is only valid if it has "access=no/private", or it leads to a motorway service area, or if it is a "service=parking_aisle".'
|
||||
description: '{var1} is a junction of a motorway and a highway other than "motorway", "motorway_link", "trunk", "rest_area", or "construction". Connection to "service" or "unclassified" is only valid if it has "access=no/private", or it leads to a motorway service area, or if it is a "service=parking_aisle".'
|
||||
280:
|
||||
title: 'Boundary issue'
|
||||
description: 'There is an unspecified issue with this boundary.'
|
||||
281:
|
||||
title: 'Boundary missing name'
|
||||
description: 'This boundary has no name.'
|
||||
description: '{var1} has no name.'
|
||||
282:
|
||||
title: 'Boundary missing admin level'
|
||||
description: 'The boundary of {var1} has no valid numeric admin_level. Please do not mix admin levels (e.g. "6;7"). Always tag the lowest admin_level of all boundaries.'
|
||||
@@ -805,68 +816,68 @@ en:
|
||||
description: 'The boundary of {var1} splits here.'
|
||||
285:
|
||||
title: 'Boundary admin_level too high'
|
||||
description: 'This boundary way has "admin_level={var1}" but belongs to a relation with lower "admin_level" (e.g. higher priority); it should have the lowest "admin_level" of all relations.'
|
||||
description: '{var1} has "admin_level={var2}" but belongs to a relation with lower "admin_level" (e.g. higher priority); it should have the lowest "admin_level" of all relations.'
|
||||
290:
|
||||
title: 'Restriction issue'
|
||||
description: 'There is an unspecified issue with this restriction.'
|
||||
291:
|
||||
title: 'Restriction missing type'
|
||||
description: 'This turn restriction has an unrecognized restriction type.'
|
||||
description: '{var1} has an unrecognized restriction type.'
|
||||
292:
|
||||
title: 'Restriction missing "from" way'
|
||||
description: 'A turn restriction needs exactly one "from" member. This one has {var1}.'
|
||||
description: '{var1} has {var2} "from" members, but it should have 1.'
|
||||
293:
|
||||
title: 'Restriction missing "to" way'
|
||||
description: 'A turn restriction needs exactly one "to" member. This one has {var1}.'
|
||||
description: '{var1} has {var2} "to" members, but it should have 1.'
|
||||
294:
|
||||
title: 'Restriction "from" or "to" is not a way'
|
||||
description: '"from" and "to" members of turn restrictions need to be ways. {var1}.'
|
||||
description: '{var1} has "from" or "to" members which should be ways. {var2}.'
|
||||
295:
|
||||
title: 'Restriction "via" is not an endpoint'
|
||||
description: '"via" (node {var1}) is not the first or the last member of "{var2}" (way {var3}).'
|
||||
description: '{var1} has a "via" (node {var2}) which is not the first or the last member of "{var3}" (way {var4}).'
|
||||
296:
|
||||
title: 'Unusual restriction angle'
|
||||
description: 'Restriction type is "{var1}" but angle is {var2} degrees. Maybe the restriction type is not appropriate?'
|
||||
description: '{var1} has a restriction type "{var2}" but the angle is {var3} degrees. Maybe the restriction type is not appropriate?'
|
||||
297:
|
||||
title: 'Wrong direction of to member'
|
||||
description: 'Wrong direction of "to" way {var1}.'
|
||||
description: '{var1} does not match the direction of "to" way {var2}.'
|
||||
298:
|
||||
title: 'Redundant restriction - oneway'
|
||||
description: 'Entry already prohibited by "oneway" tag on {var1}.'
|
||||
description: '{var1} may be redundant. Entry already prohibited by "oneway" tag on {var2}.'
|
||||
300:
|
||||
title: 'Missing maxspeed'
|
||||
description: 'This road is missing a "maxspeed" tag and is tagged as motorway, trunk, primary, or secondary.'
|
||||
description: '{var1} is missing a "maxspeed" tag and is tagged as motorway, trunk, primary, or secondary.'
|
||||
310:
|
||||
title: 'Roundabout issue'
|
||||
description: 'There is an unspecified issue with this roundabout.'
|
||||
311:
|
||||
title: 'Roundabout not closed loop'
|
||||
description: 'This way is part of a roundabout but is not closed-loop. (Split carriageways approaching a roundabout should not be tagged as roundabout).'
|
||||
description: '{var1} is part of a roundabout but is not closed-loop. (Split carriageways approaching a roundabout should not be tagged as roundabout).'
|
||||
312:
|
||||
title: 'Roundabout wrong direction'
|
||||
description: 'If this {var1} is in a country with {var2}-hand traffic then its orientation goes the wrong way around.'
|
||||
description: 'If {var1} is in a country with {var2} traffic then its orientation goes the wrong way around.'
|
||||
313:
|
||||
title: 'Roundabout weakly connected'
|
||||
description: 'This roundabout has only {var1} other road(s) connected. Roundabouts typically have 3 or more.'
|
||||
description: '{var1} has only {var2} other road(s) connected. Roundabouts typically have 3 or more.'
|
||||
320:
|
||||
title: 'Improper link connection'
|
||||
description: 'This way is tagged as "{var1}" but doesn''t have a connection to any other "{var2}" or "{var3}".'
|
||||
description: '{var1} is tagged as "{var2}" but doesn''t have a connection to any other "{var3}" or "{var4}".'
|
||||
350:
|
||||
title: 'Improper bridge tag'
|
||||
description: 'This bridge doesn''t have a tag in common with its surrounding ways that shows the purpose of this bridge. There should be one of these tags: {var1}.'
|
||||
description: '{var1} doesn''t have a tag in common with its surrounding ways that shows the purpose of this bridge. There should be one of these tags: {var2}.'
|
||||
360:
|
||||
title: 'Missing local name tag'
|
||||
description: 'It would be nice if this {var1} had a local name tag "name:XX={var2}" where XX shows the language of its common name "{var2}".'
|
||||
description: 'It would be nice if {var1} had a local name tag "name:XX={var2}" where XX shows the language of its common name "{var2}".'
|
||||
370:
|
||||
title: 'Doubled places'
|
||||
description: 'This node has tags in common with the surrounding way {var1} {var2} and seems to be redundant.'
|
||||
description: '{var1} has tags in common with the surrounding way {var2} {var3} and seems to be redundant.'
|
||||
including_the_name: "(including the name {name})"
|
||||
380:
|
||||
title: 'Non-physical use of sport tag'
|
||||
description: 'This way is tagged "{var1}" but has no physical tag (e.g. "leisure", "building", "amenity", or "highway").'
|
||||
description: '{var1} is tagged "{var2}" but has no physical tag (e.g. "leisure", "building", "amenity", or "highway").'
|
||||
390:
|
||||
title: 'Missing tracktype'
|
||||
description: This track doesn't have a "tracktype" tag.
|
||||
description: '{var1} doesn''t have a "tracktype" tag.'
|
||||
400:
|
||||
title: 'Geometry issue'
|
||||
description: 'There is an unspecified issue with the geometry here.'
|
||||
@@ -875,7 +886,7 @@ en:
|
||||
description: 'Ways {var1} and {var2} join in a very sharp angle here and there is no oneway tag or turn restriction that prevents turning.'
|
||||
402:
|
||||
title: 'Impossible angle'
|
||||
description: 'This way bends in a very sharp angle here.'
|
||||
description: '{var1} bends in a very sharp angle here.'
|
||||
410:
|
||||
title: 'Website issue'
|
||||
description: 'There is an unspecified issue with a contact website or URL.'
|
||||
|
||||
+152
-83
@@ -1,17 +1,26 @@
|
||||
{
|
||||
"localizeStrings": {
|
||||
"node": "node",
|
||||
"way": "way",
|
||||
"relation": "relation",
|
||||
"highway": "highway",
|
||||
"railway": "railway",
|
||||
"waterway": "waterway",
|
||||
"cycleway": "cycleway",
|
||||
"footpath": "footpath",
|
||||
"'cycleway/footpath": "cycleway_footpath",
|
||||
"riverbank": "riverbank",
|
||||
"bridge": "bridge",
|
||||
"tunnel": "tunnel",
|
||||
"this node": "node",
|
||||
"this way": "way",
|
||||
"this relation": "relation",
|
||||
"this one-way": "oneway",
|
||||
"this highway": "highway",
|
||||
"this railway": "railway",
|
||||
"this waterway": "waterway",
|
||||
"this cycleway": "cycleway",
|
||||
"this footpath": "footpath",
|
||||
"this cycleway/footpath": "cycleway_footpath",
|
||||
"this riverbank": "riverbank",
|
||||
"this crossing": "crossing",
|
||||
"this railway crossing": "railway_crossing",
|
||||
"this bridge": "bridge",
|
||||
"this tunnel": "tunnel",
|
||||
"this boundary": "boundary",
|
||||
"this turn-restriction": "turn_restriction",
|
||||
"this roundabout": "roundabout",
|
||||
"this mini-roundabout": "mini_roundabout",
|
||||
"this track": "track",
|
||||
"this feature": "feature",
|
||||
"place_of_worship": "place_of_worship",
|
||||
"pub": "pub",
|
||||
"restaurant": "restaurant",
|
||||
@@ -28,7 +37,9 @@
|
||||
"fast_food": "fast_food",
|
||||
"fuel": "fuel",
|
||||
"from": "from",
|
||||
"to": "to"
|
||||
"to": "to",
|
||||
"left-hand": "left_hand",
|
||||
"right-hand": "right_hand"
|
||||
},
|
||||
"errorTypes": {
|
||||
"20": {
|
||||
@@ -42,137 +53,167 @@
|
||||
"title": "non-closed_areas",
|
||||
"severity": "error",
|
||||
"description": "This way is tagged with '$1' and should be closed-loop.",
|
||||
"regex": "'(.+)'"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this way) is tagged with '(.+)'"
|
||||
},
|
||||
"40": {
|
||||
"title": "dead-ended one-ways",
|
||||
"severity": "error",
|
||||
"description": "The first node (id $1) of this one-way is not connected to any other way",
|
||||
"IDs": ["n"],
|
||||
"regex": "\\(id (\\d+)\\)"
|
||||
"IDs": ["n", "this"],
|
||||
"regex": "\\(id (\\d+)\\) of (this one-way)"
|
||||
},
|
||||
"41": {
|
||||
"title": "",
|
||||
"severity": "error",
|
||||
"description": "The last node (id $1) of this one-way is not connected to any other way",
|
||||
"IDs": ["n"],
|
||||
"regex": "\\(id (\\d+)\\)"
|
||||
"IDs": ["n", "this"],
|
||||
"regex": "\\(id (\\d+)\\) of (this one-way)"
|
||||
},
|
||||
"42": {
|
||||
"title": "",
|
||||
"severity": "error",
|
||||
"description": "This node cannot be reached because one-ways only lead away from here"
|
||||
"description": "This node cannot be reached because one-ways only lead away from here",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this node)"
|
||||
},
|
||||
"43": {
|
||||
"title": "",
|
||||
"severity": "error",
|
||||
"description": "You cannot escape from this node because one-ways only lead to here"
|
||||
"description": "You cannot escape from this node because one-ways only lead to here",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this node)"
|
||||
},
|
||||
"50": {
|
||||
"title": "almost-junctions",
|
||||
"severity": "error",
|
||||
"description": "This node is very close but not connected to way #$1",
|
||||
"IDs": ["w"],
|
||||
"regex": "way #(\\d+)"
|
||||
"IDs": ["this", "w"],
|
||||
"regex": "(this node) is very close but not connected to way #(\\d+)"
|
||||
},
|
||||
"60": {
|
||||
"title": "deprecated tags",
|
||||
"severity": "warning",
|
||||
"description": "This $1 uses deprecated tag $2. Please use $3 instead!",
|
||||
"regex": "This (node|way|relation) uses deprecated tag '(.+)'\\. Please use "(.+)""
|
||||
"IDs": ["this", "", ""],
|
||||
"regex": "(this (?:node|way|relation)) uses deprecated tag '(.+)'\\. Please use "(.+)""
|
||||
},
|
||||
"70": {
|
||||
"title": "missing tags",
|
||||
"severity": "error",
|
||||
"description": ""
|
||||
"description": "This $1 has an empty tag: $2",
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this (?:node|way|relation)) has an empty tag: "(.+)=""
|
||||
},
|
||||
"71": {
|
||||
"title": "",
|
||||
"severity": "error",
|
||||
"description": "This way has no tags"
|
||||
"description": "This way has no tags",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this way)"
|
||||
},
|
||||
"72": {
|
||||
"title": "",
|
||||
"severity": "error",
|
||||
"description": "This node is not member of any way and does not have any tags"
|
||||
"description": "This node is not member of any way and does not have any tags",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this node)"
|
||||
},
|
||||
"73": {
|
||||
"title": "",
|
||||
"severity": "error",
|
||||
"description": "This way has a $1 tag but no highway tag",
|
||||
"regex": "has a (.+) tag"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this way) has a (.+) tag"
|
||||
},
|
||||
"74": {
|
||||
"title": "missing tags",
|
||||
"severity": "error",
|
||||
"description": "This $1 has an empty tag: $2",
|
||||
"regex": "This (node|way|relation) has an empty tag: "(.+)=""
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this (?:node|way|relation)) has an empty tag: "(.+)=""
|
||||
},
|
||||
"75": {
|
||||
"description": "This (node|way|relation) has a name \\((.+)\\) but no other tag",
|
||||
"regex": "This (node|way|relation) has a name \\((.+)\\)"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this (?:node|way|relation)) has a name \\((.+)\\)"
|
||||
},
|
||||
"90": {
|
||||
"title": "motorways without ref",
|
||||
"severity": "error",
|
||||
"description": "This way is tagged as motorway and therefore needs a ref nat_ref or int_ref tag"
|
||||
"description": "This way is tagged as motorway and therefore needs a ref nat_ref or int_ref tag",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this way)"
|
||||
},
|
||||
"100": {
|
||||
"title": "places of worship without religion",
|
||||
"severity": "error",
|
||||
"description": "This $1 is tagged as place of worship and therefore needs a religion tag",
|
||||
"regex": "This (node|way|relation) is"
|
||||
"IDs": ["this"],
|
||||
"regex": "(this (?:node|way|relation))"
|
||||
},
|
||||
"110": {
|
||||
"title": "point of interest without name",
|
||||
"severity": "error",
|
||||
"description": "This node is tagged as $1 and therefore needs a name tag",
|
||||
"regex": "as (.+) and"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this (?:node|way|relation)) is tagged as (.+) and"
|
||||
},
|
||||
"120": {
|
||||
"title": "ways without nodes",
|
||||
"severity": "error",
|
||||
"description": "This way has just one single node"
|
||||
"description": "This way has just one single node",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this way)"
|
||||
},
|
||||
"130": {
|
||||
"title": "floating islands",
|
||||
"severity": "error",
|
||||
"description": "This way is not connected to the rest of the map"
|
||||
"description": "This way is not connected to the rest of the map",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this way)"
|
||||
},
|
||||
"150": {
|
||||
"title": "railway crossing without tag",
|
||||
"severity": "error",
|
||||
"description": "This crossing of a highway and a railway needs to be tagged as railway=crossing or railway=level_crossing"
|
||||
"description": "This crossing of a highway and a railway needs to be tagged as railway=crossing or railway=level_crossing",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this crossing)"
|
||||
},
|
||||
"160": {
|
||||
"title": "wrongly used railway tag",
|
||||
"severity": "error",
|
||||
"description": "There are ways in different layers coming together in this railway crossing. There are ways tagged as tunnel or bridge coming together in this railway crossing"
|
||||
"description": "There are ways in different layers coming together in this railway crossing. There are ways tagged as tunnel or bridge coming together in this railway crossing",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this railway crossing)"
|
||||
},
|
||||
"170": {
|
||||
"title": "FIXME tagged items",
|
||||
"severity": "error",
|
||||
"description": "(.*)",
|
||||
"regex": "(.*)"
|
||||
"description": "This feature has a FIXME tag: (.*)",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this feature) has a FIXME tag: (.*)"
|
||||
},
|
||||
"180": {
|
||||
"title": "relations without type",
|
||||
"severity": "error",
|
||||
"description": "This relation has no type tag which is mandatory for relations"
|
||||
"description": "This relation has no type tag which is mandatory for relations",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this relation)"
|
||||
},
|
||||
"190": {
|
||||
"title": "intersections without junctions",
|
||||
"severity": "error",
|
||||
"description": "This $1 intersects the $2 #$3 but there is no junction node",
|
||||
"IDs": ["", "", "w"],
|
||||
"regex": "This (.+) intersects the (.+) #(\\d+)"
|
||||
"IDs": ["this", "", "w"],
|
||||
"regex": "(this .+) intersects the (.+) #(\\d+)"
|
||||
},
|
||||
"200": {
|
||||
"title": "overlapping ways",
|
||||
"severity": "error",
|
||||
"IDs": ["", "","w"],
|
||||
"description": "This $1 overlaps the $2 #$3",
|
||||
"regex": "This (.+) overlaps the (.+) #(\\d+)"
|
||||
"IDs": ["this", "", "w"],
|
||||
"regex": "(this .+) overlaps the (.+) #(\\d+)"
|
||||
},
|
||||
"210": {
|
||||
"title": "loopings",
|
||||
@@ -183,48 +224,55 @@
|
||||
"title": "",
|
||||
"severity": "error",
|
||||
"description": "This way contains more than one node at least twice. Nodes are $1.",
|
||||
"IDs": ["211"],
|
||||
"regex": "Nodes are ((?:#\\d+(?:, )?)+)\\."
|
||||
"IDs": ["this", "211"],
|
||||
"regex": "(this way) contains more than one node at least twice. Nodes are ((?:#\\d+(?:, )?)+)\\."
|
||||
},
|
||||
"212": {
|
||||
"title": "",
|
||||
"severity": "error",
|
||||
"description": "This way has only two different nodes and contains one of them more than once"
|
||||
"description": "This way has only two different nodes and contains one of them more than once",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this way)"
|
||||
},
|
||||
"220": {
|
||||
"title": "misspelled tags",
|
||||
"severity": "error",
|
||||
"description": "This $1 is tagged '$2' where $3 looks like $4",
|
||||
"regex": "This (node|way|relation) is tagged '(.+)' where "(.+)" looks like "(.+)""
|
||||
"regex": "(this (?:node|way|relation)) is tagged '(.+)' where "(.+)" looks like "(.+)""
|
||||
},
|
||||
"221": {
|
||||
"title": "",
|
||||
"severity": "error",
|
||||
"description": "The key of this $1's tag is 'key': $2",
|
||||
"regex": "this (node|way|relation)\\'s tag is \\'key\\': (.+)"
|
||||
"regex": "(this (?:node|way|relation))\\'s tag is \\'key\\': (.+)"
|
||||
},
|
||||
"230": {
|
||||
"title": "layer conflicts",
|
||||
"severity": "error",
|
||||
"description": "Connected ways should be on the same layer. Crossings on intermediate nodes of ways on different layers are obviously wrong. Junctions on end-nodes of ways on different layers are also deprecated, but common practice. So you may ignore this part of the check and switch them off separately. Please note that bridges are set to layer +1, and tunnels to -1, anything else to layer 0 implicitly if no layer tag is present."
|
||||
"description": "This node is a junction of ways on different layers.",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this node)"
|
||||
},
|
||||
"231": {
|
||||
"title": "mixed layers intersection",
|
||||
"severity": "error",
|
||||
"description": "This node is a junction of ways on different layers: $1",
|
||||
"IDs": ["231"],
|
||||
"regex": "layers: (.+)"
|
||||
"IDs": ["this", "231"],
|
||||
"regex": "(this node) is a junction of ways on different layers: (.+)"
|
||||
},
|
||||
"232": {
|
||||
"title": "strange layers",
|
||||
"severity": "error",
|
||||
"description": "This $1 is tagged with layer $2. This need not be an error, but it looks strange",
|
||||
"regex": "This (bridge|tunnel) is tagged with layer (-?\\d+)\\."
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this (?:bridge|tunnel)) is tagged with layer (-?\\d+)\\."
|
||||
},
|
||||
"270": {
|
||||
"title": "motorways connected directly",
|
||||
"severity": "error",
|
||||
"description": "This node is a junction of a motorway and a highway other than motorway, motorway_link, trunk, rest_area or construction. Service or unclassified is only valid if it has access=no/private or it leads to a motorway service area or if it is a service=parking_aisle."
|
||||
"description": "This node is a junction of a motorway and a highway other than motorway, motorway_link, trunk, rest_area or construction. Service or unclassified is only valid if it has access=no/private or it leads to a motorway service area or if it is a service=parking_aisle.",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this node)"
|
||||
},
|
||||
"280": {
|
||||
"title": "boundaries",
|
||||
@@ -234,7 +282,9 @@
|
||||
"281": {
|
||||
"title": "missing name",
|
||||
"severity": "error",
|
||||
"description": "This boundary has no name"
|
||||
"description": "This boundary has no name",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this boundary)"
|
||||
},
|
||||
"282": {
|
||||
"title": "missing admin level",
|
||||
@@ -258,7 +308,8 @@
|
||||
"title": "admin_level too high",
|
||||
"severity": "error",
|
||||
"description": "This boundary-way has admin_level $1 but belongs to a relation with lower admin_level (higher priority); it should have the lowest admin_level of all relations",
|
||||
"regex": "admin_level (-?\\d+) but"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this boundary)-way has admin_level (-?\\d+) but"
|
||||
},
|
||||
"290": {
|
||||
"title": "restrictions",
|
||||
@@ -269,58 +320,64 @@
|
||||
"title": "missing type",
|
||||
"severity": "error",
|
||||
"description": "This turn-restriction has no (?:known )?restriction type",
|
||||
"regex": "This turn-restriction has no (?:known )?restriction type"
|
||||
"IDs": ["this"],
|
||||
"regex": "(this turn-restriction) has"
|
||||
},
|
||||
"292": {
|
||||
"title": "missing from way",
|
||||
"severity": "error",
|
||||
"description": "A turn-restriction needs exactly one from member. This one has $1",
|
||||
"regex": "has (\\d+)"
|
||||
"description": "This turn-restriction needs exactly one from member. This one has $1",
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this turn-restriction) needs.+has (\\d+)"
|
||||
},
|
||||
"293": {
|
||||
"title": "missing to way",
|
||||
"severity": "error",
|
||||
"description": "A turn-restriction needs exactly one to member. This one has $1",
|
||||
"regex": "has (\\d+)"
|
||||
"description": "This turn-restriction needs exactly one to member. This one has $1",
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this turn-restriction) needs.+has (\\d+)"
|
||||
},
|
||||
"294": {
|
||||
"title": "from or to not a way",
|
||||
"severity": "error",
|
||||
"description": "From- and To-members of turn restrictions need to be ways. $1",
|
||||
"IDs": ["294"],
|
||||
"regex": "ways\\. ((?:(?:from|to) (?:node|relation) #\\d+,?)+)"
|
||||
"description": "From- and To-members of this turn-restriction need to be ways. $1",
|
||||
"IDs": ["this", "294"],
|
||||
"regex": "(this turn-restriction)~.+ways\\. ((?:(?:from|to) (?:node|relation) #\\d+,?)+)"
|
||||
},
|
||||
"295": {
|
||||
"title": "via is not on the way ends",
|
||||
"severity": "error",
|
||||
"description": "via (node #$1) is not the first or the last member of (from|to) (way #$3)",
|
||||
"IDs": ["n", "", "w"],
|
||||
"regex": "via \\(node #(\\d+)\\) is not the first or the last member of (from|to) \\(way #(\\d+)\\)"
|
||||
"IDs": ["this", "n", "", "w"],
|
||||
"regex": "(this turn-restriction)~via \\(node #(\\d+)\\).+ of (from|to) \\(way #(\\d+)\\)"
|
||||
},
|
||||
"296": {
|
||||
"title": "wrong restriction angle",
|
||||
"severity": "error",
|
||||
"description": "restriction type is $1, but angle is $2 degrees. Maybe the restriction type is not appropriate?",
|
||||
"regex": "is (\\w+), but angle is (-?\\d+) degrees"
|
||||
"description": "This turn-restriction type is $1, but angle is $2 degrees. Maybe the restriction type is not appropriate?",
|
||||
"IDs": ["this", "", ""],
|
||||
"regex": "(this turn-restriction)~.+is (\\w+), but angle is (-?\\d+)"
|
||||
},
|
||||
"297": {
|
||||
"title": "wrong direction of to member",
|
||||
"severity": "error",
|
||||
"description": "wrong direction of to way $1",
|
||||
"IDs": ["w"],
|
||||
"regex": "way (\\d+)"
|
||||
"IDs": ["this", "w"],
|
||||
"regex": "(this turn-restriction)~.+to way (\\d+)"
|
||||
},
|
||||
"298": {
|
||||
"title": "already restricted by oneway",
|
||||
"severity": "error",
|
||||
"description": "entry already prohibited by oneway tag on $1",
|
||||
"IDs": ["w"],
|
||||
"regex": "on (\\d+)"
|
||||
"IDs": ["this", "w"],
|
||||
"regex": "(this turn-restriction)~.+tag on (\\d+)"
|
||||
},
|
||||
"300": {
|
||||
"title": "missing maxspeed",
|
||||
"severity": "warning",
|
||||
"description": "missing maxspeed tag"
|
||||
"description": "This highway is missing a maxspeed tag",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this highway)"
|
||||
},
|
||||
"310": {
|
||||
"title": "roundabouts",
|
||||
@@ -330,56 +387,66 @@
|
||||
"311": {
|
||||
"title": "not closed loop",
|
||||
"severity": "error",
|
||||
"description": "This way is part of a roundabout but is not closed-loop. (split carriageways approaching a roundabout should not be tagged as roundabout)"
|
||||
"description": "This way is part of a roundabout but is not closed-loop. (split carriageways approaching a roundabout should not be tagged as roundabout)",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this way)"
|
||||
},
|
||||
"312": {
|
||||
"title": "wrong direction",
|
||||
"severity": "error",
|
||||
"description": "If this ((?:mini_)?roundabout) is in a country with (left|right)-hand traffic then its orientation goes the wrong way around",
|
||||
"regex": "this ((?:mini_)?roundabout) is in a country with (left|right)-hand"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this (?:mini_)?roundabout) is in a country with ((?:left|right)-hand)"
|
||||
},
|
||||
"313": {
|
||||
"title": "faintly connected",
|
||||
"severity": "error",
|
||||
"description": "This roundabout has only $1 other roads connected. Roundabouts typically have three",
|
||||
"regex": "only (\\d) other"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this roundabout) has only (\\d) other"
|
||||
},
|
||||
"320": {
|
||||
"title": "*_link connections",
|
||||
"severity": "error",
|
||||
"description": "This way is tagged as highway=$1_link but doesn't have a connection to any other $1 or $1_link",
|
||||
"regex": "(highway=.+) but doesn't have a connection to any other (.+) or (.+)"
|
||||
"IDs": ["this", "", "", "", ""],
|
||||
"regex": "(this way) is tagged as (highway=.+) but doesn't have a connection to any other (.+) or (.+)"
|
||||
},
|
||||
"350": {
|
||||
"title": "bridge-tags",
|
||||
"severity": "error",
|
||||
"description": "This bridge does not have a tag in common with its surrounding ways that shows the purpose of this bridge. There should be one of these tags: (.+)",
|
||||
"NOTE": "Group can be arbitrary list of form: key=value,key=value,key=value...",
|
||||
"regex": "these tags: (.+)"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this bridge).*tags: (.+)"
|
||||
},
|
||||
"360": {
|
||||
"title": "language unknown",
|
||||
"severity": "warning",
|
||||
"description": "It would be nice if this (node|way|relation) had an additional tag 'name:XX=(.+)' where XX shows the language of its name '\\2'",
|
||||
"regex": "this (node|way|relation) had an additional tag 'name:XX=(.+)' where XX shows the language of its name '\\2'"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this (?:node|way|relation)) had an additional tag 'name:XX=(.+)' where"
|
||||
},
|
||||
"370": {
|
||||
"title": "doubled places",
|
||||
"severity": "error",
|
||||
"description": "This node has tags in common with the surrounding way #$1 ((?:\\(including the name '.+'\\) )?)and seems to be redundand",
|
||||
"IDs": ["w","370"],
|
||||
"regex": "way #(\\d+) ((?:\\(including the name '.+'\\) )?)and"
|
||||
"IDs": ["this", "w", "370"],
|
||||
"regex": "(this node) has tags in common with the surrounding way #(\\d+) ((?:\\(including the name '.+'\\) )?)and"
|
||||
},
|
||||
"380": {
|
||||
"title": "non-physical use of sport-tag",
|
||||
"severity": "error",
|
||||
"description": "This way is tagged sport=$1 but has no physical tag like e.g. leisure, building, amenity or highway",
|
||||
"regex": "(sport=.+) but"
|
||||
"IDs": ["this", ""],
|
||||
"regex": "(this way) is tagged (sport=.+) but"
|
||||
},
|
||||
"390": {
|
||||
"title": "missing tracktype",
|
||||
"severity": "warning",
|
||||
"description": "This track doesn''t have a tracktype"
|
||||
"description": "This track doesn''t have a tracktype",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this track)"
|
||||
},
|
||||
"400": {
|
||||
"title": "geometry glitches",
|
||||
@@ -396,7 +463,9 @@
|
||||
"402": {
|
||||
"title": "impossible angles",
|
||||
"severity": "error",
|
||||
"description": "this way bends in a very sharp angle here"
|
||||
"description": "this way bends in a very sharp angle here",
|
||||
"IDs": ["this"],
|
||||
"regex": "(this way)"
|
||||
},
|
||||
"410": {
|
||||
"title": "website",
|
||||
|
||||
Vendored
+76
-65
@@ -810,17 +810,26 @@
|
||||
"close_comment": "Close and Comment",
|
||||
"ignore_comment": "Ignore and Comment",
|
||||
"error_parts": {
|
||||
"node": "node",
|
||||
"way": "way",
|
||||
"relation": "relation",
|
||||
"highway": "highway",
|
||||
"railway": "railway",
|
||||
"waterway": "waterway",
|
||||
"cycleway": "cycleway",
|
||||
"cycleway_footpath": "cycleway/footpath",
|
||||
"riverbank": "riverbank",
|
||||
"bridge": "bridge",
|
||||
"tunnel": "tunnel",
|
||||
"node": "this node",
|
||||
"way": "this way",
|
||||
"relation": "this relation",
|
||||
"oneway": "this oneway",
|
||||
"highway": "this highway",
|
||||
"railway": "this railway",
|
||||
"waterway": "this waterway",
|
||||
"cycleway": "this cycleway",
|
||||
"cycleway_footpath": "this cycleway/footpath",
|
||||
"riverbank": "this riverbank",
|
||||
"crossing": "this crossing",
|
||||
"railway_crossing": "this railway crossing",
|
||||
"bridge": "this bridge",
|
||||
"tunnel": "this tunnel",
|
||||
"boundary": "this boundary",
|
||||
"turn_restriction": "this turn restriction",
|
||||
"roundabout": "this roundabout",
|
||||
"mini_roundabout": "this mini-roundabout",
|
||||
"track": "this track",
|
||||
"feature": "this feature",
|
||||
"place_of_worship": "place of worship",
|
||||
"pub": "pub",
|
||||
"restaurant": "restaurant",
|
||||
@@ -837,7 +846,9 @@
|
||||
"fast_food": "fast food",
|
||||
"fuel": "fuel",
|
||||
"from": "from",
|
||||
"to": "to"
|
||||
"to": "to",
|
||||
"left_hand": "left-hand",
|
||||
"right_hand": "right-hand"
|
||||
},
|
||||
"errorTypes": {
|
||||
"20": {
|
||||
@@ -846,123 +857,123 @@
|
||||
},
|
||||
"30": {
|
||||
"title": "Non-closed area",
|
||||
"description": "This way is tagged with \"{var1}\" and should be a closed loop."
|
||||
"description": "{var1} is tagged with \"{var2}\" and should be a closed loop."
|
||||
},
|
||||
"40": {
|
||||
"title": "Impossible oneway",
|
||||
"description": "The first node {var1} of this oneway is not connected to any other way."
|
||||
"description": "The first node {var1} of {var2} is not connected to any other way."
|
||||
},
|
||||
"41": {
|
||||
"description": "The last node {var1} of this oneway is not connected to any other way."
|
||||
"description": "The last node {var1} of {var2} is not connected to any other way."
|
||||
},
|
||||
"42": {
|
||||
"description": "You cannot reach this node because all ways leading from it are oneway."
|
||||
"description": "You cannot reach {var1} because all ways leading from it are oneway."
|
||||
},
|
||||
"43": {
|
||||
"description": "You cannot escape from this node because all ways leading to it are oneway."
|
||||
"description": "You cannot escape from {var1} because all ways leading to it are oneway."
|
||||
},
|
||||
"50": {
|
||||
"title": "Almost junction",
|
||||
"description": "This node is very close but not connected to way {var1}."
|
||||
"description": "{var1} is very close but not connected to way {var2}."
|
||||
},
|
||||
"60": {
|
||||
"title": "Deprecated tag",
|
||||
"description": "This {var1} uses deprecated tag \"{var2}\". Please use \"{var3}\" instead."
|
||||
"description": "{var1} uses deprecated tag \"{var2}\". Please use \"{var3}\" instead."
|
||||
},
|
||||
"70": {
|
||||
"title": "Missing tag",
|
||||
"description": "This {var1} has an empty tag: \"{var2}\"."
|
||||
"description": "{var1} has an empty tag: \"{var2}\"."
|
||||
},
|
||||
"71": {
|
||||
"description": "This way has no tags."
|
||||
"description": "{var1} has no tags."
|
||||
},
|
||||
"72": {
|
||||
"description": "This node is not member of any way and doesn't have any tags."
|
||||
"description": "{var1} is not member of any way and doesn't have any tags."
|
||||
},
|
||||
"73": {
|
||||
"description": "This way has a \"{var1}\" tag but no \"highway\" tag."
|
||||
"description": "{var1} has a \"{var2}\" tag but no \"highway\" tag."
|
||||
},
|
||||
"74": {
|
||||
"description": "This {var1} has an empty tag: \"{var2}\"."
|
||||
"description": "{var1} has an empty tag: \"{var2}\"."
|
||||
},
|
||||
"75": {
|
||||
"description": "This {var1} has a name \"{var2}\" but no other tags."
|
||||
"description": "{var1} has a name \"{var2}\" but no other tags."
|
||||
},
|
||||
"90": {
|
||||
"title": "Motorway without ref tag",
|
||||
"description": "This way is tagged as a motorway and therefore needs a \"ref\", \"nat_ref\", or \"int_ref\" tag."
|
||||
"description": "{var1} is tagged as a motorway and therefore needs a \"ref\", \"nat_ref\", or \"int_ref\" tag."
|
||||
},
|
||||
"100": {
|
||||
"title": "Place of worship without religion",
|
||||
"description": "This {var1} is tagged as a place of worship and therefore needs a religion tag."
|
||||
"description": "{var1} is tagged as a place of worship and therefore needs a religion tag."
|
||||
},
|
||||
"110": {
|
||||
"title": "Point of interest without name",
|
||||
"description": "This node is tagged as a \"{var1}\" and therefore needs a name tag."
|
||||
"description": "{var1} is tagged as a \"{var2}\" and therefore needs a name tag."
|
||||
},
|
||||
"120": {
|
||||
"title": "Way without nodes",
|
||||
"description": "This way has just one single node."
|
||||
"description": "{var1} has just one single node."
|
||||
},
|
||||
"130": {
|
||||
"title": "Disconnected way",
|
||||
"description": "This way is not connected to the rest of the map."
|
||||
"description": "{var1} is not connected to the rest of the map."
|
||||
},
|
||||
"150": {
|
||||
"title": "Railway crossing without tag",
|
||||
"description": "This crossing of a highway and a railway needs to be tagged as \"railway=crossing\" or \"railway=level_crossing\"."
|
||||
"description": "{var1} of a highway and a railway needs to be tagged as \"railway=crossing\" or \"railway=level_crossing\"."
|
||||
},
|
||||
"160": {
|
||||
"title": "Railway layer conflict",
|
||||
"description": "There are ways in different layers (e.g. tunnel or bridge) meeting at this railway crossing."
|
||||
"description": "There are ways in different layers (e.g. tunnel or bridge) meeting at {var1}."
|
||||
},
|
||||
"170": {
|
||||
"title": "FIXME tagged item",
|
||||
"description": "{var1}"
|
||||
"description": "{var1} has a FIXME tag: {var2}"
|
||||
},
|
||||
"180": {
|
||||
"title": "Relation without type",
|
||||
"description": "This relation is missing a \"type\" tag."
|
||||
"description": "{var1} is missing a \"type\" tag."
|
||||
},
|
||||
"190": {
|
||||
"title": "Intersection without junction",
|
||||
"description": "This {var1} intersects the {var2} {var3} but there is no junction node, bridge, or tunnel."
|
||||
"description": "{var1} intersects the {var2} {var3} but there is no junction node, bridge, or tunnel."
|
||||
},
|
||||
"200": {
|
||||
"title": "Overlapping ways",
|
||||
"description": "This {var1} overlaps the {var2} {var3}."
|
||||
"description": "{var1} overlaps the {var2} {var3}."
|
||||
},
|
||||
"210": {
|
||||
"title": "Self-intersecting way",
|
||||
"description": "There is an unspecified issue with self intersecting ways."
|
||||
},
|
||||
"211": {
|
||||
"description": "This way contains more than one node multiple times. Nodes are {var1}. This may or may not be an error."
|
||||
"description": "{var1} contains more than one node multiple times. Nodes are {var2}. This may or may not be an error."
|
||||
},
|
||||
"212": {
|
||||
"description": "This way has only two different nodes and contains one of them more than once."
|
||||
"description": "{var1} has only two different nodes and contains one of them more than once."
|
||||
},
|
||||
"220": {
|
||||
"title": "Misspelled tag",
|
||||
"description": "This {var1} is tagged \"{var2}\" where \"{var3}\" looks like \"{var4}\"."
|
||||
"description": "{var1} is tagged \"{var2}\" where \"{var3}\" looks like \"{var4}\"."
|
||||
},
|
||||
"221": {
|
||||
"description": "This {var1} has a suspicious tag \"{var2}\"."
|
||||
"description": "{var1} has a suspicious tag \"{var2}\"."
|
||||
},
|
||||
"230": {
|
||||
"title": "Layer conflict",
|
||||
"description": "This node is a junction of ways on different layers."
|
||||
"description": "{var1} is a junction of ways on different layers."
|
||||
},
|
||||
"231": {
|
||||
"description": "This node is a junction of ways on different layers: {var1}.",
|
||||
"description": "{var1} is a junction of ways on different layers: {var2}.",
|
||||
"layer": "(layer: {layer})"
|
||||
},
|
||||
"232": {
|
||||
"description": "This {var1} is tagged with \"layer={var2}\". This need not be an error but it looks strange."
|
||||
"description": "{var1} is tagged with \"layer={var2}\". This need not be an error but it looks strange."
|
||||
},
|
||||
"270": {
|
||||
"title": "Unusual motorway connection",
|
||||
"description": "This node is a junction of a motorway and a highway other than \"motorway\", \"motorway_link\", \"trunk\", \"rest_area\", or \"construction\". Connection to \"service\" or \"unclassified\" is only valid if it has \"access=no/private\", or it leads to a motorway service area, or if it is a \"service=parking_aisle\"."
|
||||
"description": "{var1} is a junction of a motorway and a highway other than \"motorway\", \"motorway_link\", \"trunk\", \"rest_area\", or \"construction\". Connection to \"service\" or \"unclassified\" is only valid if it has \"access=no/private\", or it leads to a motorway service area, or if it is a \"service=parking_aisle\"."
|
||||
},
|
||||
"280": {
|
||||
"title": "Boundary issue",
|
||||
@@ -970,7 +981,7 @@
|
||||
},
|
||||
"281": {
|
||||
"title": "Boundary missing name",
|
||||
"description": "This boundary has no name."
|
||||
"description": "{var1} has no name."
|
||||
},
|
||||
"282": {
|
||||
"title": "Boundary missing admin level",
|
||||
@@ -986,7 +997,7 @@
|
||||
},
|
||||
"285": {
|
||||
"title": "Boundary admin_level too high",
|
||||
"description": "This boundary way has \"admin_level={var1}\" but belongs to a relation with lower \"admin_level\" (e.g. higher priority); it should have the lowest \"admin_level\" of all relations."
|
||||
"description": "{var1} has \"admin_level={var2}\" but belongs to a relation with lower \"admin_level\" (e.g. higher priority); it should have the lowest \"admin_level\" of all relations."
|
||||
},
|
||||
"290": {
|
||||
"title": "Restriction issue",
|
||||
@@ -994,39 +1005,39 @@
|
||||
},
|
||||
"291": {
|
||||
"title": "Restriction missing type",
|
||||
"description": "This turn restriction has an unrecognized restriction type."
|
||||
"description": "{var1} has an unrecognized restriction type."
|
||||
},
|
||||
"292": {
|
||||
"title": "Restriction missing \"from\" way",
|
||||
"description": "A turn restriction needs exactly one \"from\" member. This one has {var1}."
|
||||
"description": "{var1} has {var2} \"from\" members, but it should have 1."
|
||||
},
|
||||
"293": {
|
||||
"title": "Restriction missing \"to\" way",
|
||||
"description": "A turn restriction needs exactly one \"to\" member. This one has {var1}."
|
||||
"description": "{var1} has {var2} \"to\" members, but it should have 1."
|
||||
},
|
||||
"294": {
|
||||
"title": "Restriction \"from\" or \"to\" is not a way",
|
||||
"description": "\"from\" and \"to\" members of turn restrictions need to be ways. {var1}."
|
||||
"description": "{var1} has \"from\" or \"to\" members which should be ways. {var2}."
|
||||
},
|
||||
"295": {
|
||||
"title": "Restriction \"via\" is not an endpoint",
|
||||
"description": "\"via\" (node {var1}) is not the first or the last member of \"{var2}\" (way {var3})."
|
||||
"description": "{var1} has a \"via\" (node {var2}) which is not the first or the last member of \"{var3}\" (way {var4})."
|
||||
},
|
||||
"296": {
|
||||
"title": "Unusual restriction angle",
|
||||
"description": "Restriction type is \"{var1}\" but angle is {var2} degrees. Maybe the restriction type is not appropriate?"
|
||||
"description": "{var1} has a restriction type \"{var2}\" but the angle is {var3} degrees. Maybe the restriction type is not appropriate?"
|
||||
},
|
||||
"297": {
|
||||
"title": "Wrong direction of to member",
|
||||
"description": "Wrong direction of \"to\" way {var1}."
|
||||
"description": "{var1} does not match the direction of \"to\" way {var2}."
|
||||
},
|
||||
"298": {
|
||||
"title": "Redundant restriction - oneway",
|
||||
"description": "Entry already prohibited by \"oneway\" tag on {var1}."
|
||||
"description": "{var1} may be redundant. Entry already prohibited by \"oneway\" tag on {var2}."
|
||||
},
|
||||
"300": {
|
||||
"title": "Missing maxspeed",
|
||||
"description": "This road is missing a \"maxspeed\" tag and is tagged as motorway, trunk, primary, or secondary."
|
||||
"description": "{var1} is missing a \"maxspeed\" tag and is tagged as motorway, trunk, primary, or secondary."
|
||||
},
|
||||
"310": {
|
||||
"title": "Roundabout issue",
|
||||
@@ -1034,40 +1045,40 @@
|
||||
},
|
||||
"311": {
|
||||
"title": "Roundabout not closed loop",
|
||||
"description": "This way is part of a roundabout but is not closed-loop. (Split carriageways approaching a roundabout should not be tagged as roundabout)."
|
||||
"description": "{var1} is part of a roundabout but is not closed-loop. (Split carriageways approaching a roundabout should not be tagged as roundabout)."
|
||||
},
|
||||
"312": {
|
||||
"title": "Roundabout wrong direction",
|
||||
"description": "If this {var1} is in a country with {var2}-hand traffic then its orientation goes the wrong way around."
|
||||
"description": "If {var1} is in a country with {var2} traffic then its orientation goes the wrong way around."
|
||||
},
|
||||
"313": {
|
||||
"title": "Roundabout weakly connected",
|
||||
"description": "This roundabout has only {var1} other road(s) connected. Roundabouts typically have 3 or more."
|
||||
"description": "{var1} has only {var2} other road(s) connected. Roundabouts typically have 3 or more."
|
||||
},
|
||||
"320": {
|
||||
"title": "Improper link connection",
|
||||
"description": "This way is tagged as \"{var1}\" but doesn't have a connection to any other \"{var2}\" or \"{var3}\"."
|
||||
"description": "{var1} is tagged as \"{var2}\" but doesn't have a connection to any other \"{var3}\" or \"{var4}\"."
|
||||
},
|
||||
"350": {
|
||||
"title": "Improper bridge tag",
|
||||
"description": "This bridge doesn't have a tag in common with its surrounding ways that shows the purpose of this bridge. There should be one of these tags: {var1}."
|
||||
"description": "{var1} doesn't have a tag in common with its surrounding ways that shows the purpose of this bridge. There should be one of these tags: {var2}."
|
||||
},
|
||||
"360": {
|
||||
"title": "Missing local name tag",
|
||||
"description": "It would be nice if this {var1} had a local name tag \"name:XX={var2}\" where XX shows the language of its common name \"{var2}\"."
|
||||
"description": "It would be nice if {var1} had a local name tag \"name:XX={var2}\" where XX shows the language of its common name \"{var2}\"."
|
||||
},
|
||||
"370": {
|
||||
"title": "Doubled places",
|
||||
"description": "This node has tags in common with the surrounding way {var1} {var2} and seems to be redundant.",
|
||||
"description": "{var1} has tags in common with the surrounding way {var2} {var3} and seems to be redundant.",
|
||||
"including_the_name": "(including the name {name})"
|
||||
},
|
||||
"380": {
|
||||
"title": "Non-physical use of sport tag",
|
||||
"description": "This way is tagged \"{var1}\" but has no physical tag (e.g. \"leisure\", \"building\", \"amenity\", or \"highway\")."
|
||||
"description": "{var1} is tagged \"{var2}\" but has no physical tag (e.g. \"leisure\", \"building\", \"amenity\", or \"highway\")."
|
||||
},
|
||||
"390": {
|
||||
"title": "Missing tracktype",
|
||||
"description": "This track doesn't have a \"tracktype\" tag."
|
||||
"description": "{var1} doesn't have a \"tracktype\" tag."
|
||||
},
|
||||
"400": {
|
||||
"title": "Geometry issue",
|
||||
@@ -1079,7 +1090,7 @@
|
||||
},
|
||||
"402": {
|
||||
"title": "Impossible angle",
|
||||
"description": "This way bends in a very sharp angle here."
|
||||
"description": "{var1} bends in a very sharp angle here."
|
||||
},
|
||||
"410": {
|
||||
"title": "Website issue",
|
||||
|
||||
@@ -109,8 +109,11 @@ function tokenReplacements(d) {
|
||||
capture = parseError(capture, idType);
|
||||
} else if (htmlRegex.test(capture)) { // escape any html in non-IDs
|
||||
capture = '\\' + capture + '\\';
|
||||
} else if (localizeStrings[capture]) { // some replacement strings can be localized
|
||||
capture = t('QA.keepRight.error_parts.' + localizeStrings[capture]);
|
||||
} else {
|
||||
var compare = capture.toLowerCase();
|
||||
if (localizeStrings[compare]) { // some replacement strings can be localized
|
||||
capture = t('QA.keepRight.error_parts.' + localizeStrings[compare]);
|
||||
}
|
||||
}
|
||||
|
||||
replacements['var' + i] = capture;
|
||||
@@ -121,9 +124,18 @@ function tokenReplacements(d) {
|
||||
|
||||
|
||||
function parseError(capture, idType) {
|
||||
var compare = capture.toLowerCase();
|
||||
if (localizeStrings[compare]) { // some replacement strings can be localized
|
||||
capture = t('QA.keepRight.error_parts.' + localizeStrings[compare]);
|
||||
}
|
||||
|
||||
switch (idType) {
|
||||
// simple case just needs a linking span
|
||||
// link a string like "this node"
|
||||
case 'this':
|
||||
capture = linkErrorObject(capture);
|
||||
break;
|
||||
|
||||
// link an entity ID
|
||||
case 'n':
|
||||
case 'w':
|
||||
case 'r':
|
||||
@@ -151,6 +163,10 @@ function parseError(capture, idType) {
|
||||
return capture;
|
||||
|
||||
|
||||
function linkErrorObject(d) {
|
||||
return '<a class="kr_error_object_link">' + d + '</a>';
|
||||
}
|
||||
|
||||
function linkEntity(d) {
|
||||
return '<a class="kr_error_entity_link">' + d + '</a>';
|
||||
}
|
||||
@@ -305,6 +321,28 @@ export default {
|
||||
// try to handle error type directly, fallback to parent error type.
|
||||
var whichType = errorTemplate ? errorType : parentErrorType;
|
||||
|
||||
// Rewrite a few of the errors at this point..
|
||||
// This is done to make them easier to linkify and translate.
|
||||
switch (whichType) {
|
||||
case '170':
|
||||
props.description = 'This feature has a FIXME tag: ' + props.description;
|
||||
break;
|
||||
case '292':
|
||||
case '293':
|
||||
props.description = props.description.replace('A turn-', 'This turn-');
|
||||
break;
|
||||
case '294':
|
||||
case '295':
|
||||
case '296':
|
||||
case '297':
|
||||
case '298':
|
||||
props.description = 'This turn-restriction~' + props.description;
|
||||
break;
|
||||
case '300':
|
||||
props.description = 'This highway is missing a maxspeed tag';
|
||||
break;
|
||||
}
|
||||
|
||||
// - move markers slightly so it doesn't obscure the geometry,
|
||||
// - then move markers away from other coincident markers
|
||||
var coincident = false;
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
import { dataEn } from '../../data';
|
||||
import { modeSelect } from '../modes';
|
||||
import { t } from '../util/locale';
|
||||
import { utilDisplayName, utilEntityOrMemberSelector } from '../util';
|
||||
import { utilDisplayName, utilEntityOrMemberSelector, utilEntityRoot } from '../util';
|
||||
|
||||
|
||||
export function uiKeepRightDetails(context) {
|
||||
@@ -31,7 +31,8 @@ export function uiKeepRightDetails(context) {
|
||||
} else {
|
||||
detail = unknown;
|
||||
}
|
||||
return detail.substr(0, 1).toUpperCase() + detail.substr(1);
|
||||
|
||||
return detail;
|
||||
}
|
||||
|
||||
|
||||
@@ -65,10 +66,13 @@ export function uiKeepRightDetails(context) {
|
||||
.html(errorDetail);
|
||||
|
||||
// If there are entity links in the error message..
|
||||
descriptionEnter.selectAll('.kr_error_entity_link')
|
||||
descriptionEnter.selectAll('.kr_error_entity_link, .kr_error_object_link')
|
||||
.each(function() {
|
||||
var link = d3_select(this);
|
||||
var entityID = this.innerText;
|
||||
var isObjectLink = link.classed('kr_error_object_link');
|
||||
var entityID = isObjectLink ?
|
||||
(utilEntityRoot(_error.object_type) + _error.object_id)
|
||||
: this.textContent;
|
||||
var entity = context.hasEntity(entityID);
|
||||
|
||||
// Add click handler
|
||||
@@ -87,15 +91,24 @@ export function uiKeepRightDetails(context) {
|
||||
if (!osmlayer.enabled()) {
|
||||
osmlayer.enabled(true);
|
||||
}
|
||||
|
||||
context.map().centerZoom(_error.loc, 20);
|
||||
context.enter(modeSelect(context, [entityID]));
|
||||
|
||||
if (entity) {
|
||||
context.enter(modeSelect(context, [entityID]));
|
||||
} else {
|
||||
context.loadEntity(entityID, function() {
|
||||
context.enter(modeSelect(context, [entityID]));
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Replace with friendly name if possible
|
||||
// (The entity may not yet be loaded into the graph)
|
||||
if (entity) {
|
||||
var name = utilDisplayName(entity); // try to use common name
|
||||
if (!name) {
|
||||
|
||||
if (!name && !isObjectLink) {
|
||||
var preset = context.presets().match(entity, context.graph());
|
||||
name = preset && !preset.isFallback() && preset.name(); // fallback to preset name
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user