cleaned map data UI; commented sub-layer filtering

This commit is contained in:
Thomas Hervey
2018-08-09 14:19:01 -06:00
committed by Bryan Housel
parent 805dd394c9
commit 1335549ad3
11 changed files with 783 additions and 70 deletions
+8
View File
@@ -75,8 +75,11 @@
pointer-events: none !important;
}
/* NOTE: when more QA layers are added, replace kr_error with generic QA layer selector */
/* points, notes & QA */
/* points & notes */
g.kr_error .stroke,
g.note .stroke {
stroke: #222;
stroke-width: 1;
@@ -84,6 +87,7 @@ g.note .stroke {
opacity: 0.6;
}
g.kr_error.active .stroke,
g.note.active .stroke {
stroke: #222;
stroke-width: 1;
@@ -97,6 +101,7 @@ g.point .stroke {
fill: #fff;
}
g.kr_error .shadow,
g.point .shadow,
g.note .shadow {
fill: none;
@@ -105,6 +110,8 @@ g.note .shadow {
stroke-opacity: 0;
}
g.kr_error.related:not(.selected) .shadow,
g.kr_error.hover:not(.selected) .shadow,
g.note.related:not(.selected) .shadow,
g.note.hover:not(.selected) .shadow,
g.point.related:not(.selected) .shadow,
@@ -112,6 +119,7 @@ g.point.hover:not(.selected) .shadow {
stroke-opacity: 0.5;
}
g.kr_error.selected .shadow,
g.note.selected .shadow,
g.point.selected .shadow {
stroke-opacity: 0.7;
+1 -3
View File
@@ -20,9 +20,7 @@
}
.note-header-icon .note-shadow,
.layer-notes .note .note-shadow,
.kr_error-header-icon .kr_error-shadow,
.layer-keepRight .kr_error .kr_error-shadow {
.layer-notes .note .note-shadow {
color: #000;
}
+282 -1
View File
@@ -486,7 +486,9 @@ en:
zoom: Zoom to data
fill_area: Fill Areas
map_features: Map Features
QA: QA
QA:
title: Quality Assurance
keepRight: KeepRight
autohidden: "These features have been automatically hidden because too many would be shown on the screen. You can zoom in to edit them."
osmhidden: "These features have been automatically hidden because the OpenStreetMap layer is hidden."
feature:
@@ -912,6 +914,285 @@ en:
_390:
description: 'missing tracktype'
tooltip: This track doesn't have a tracktype
gpx:
local_layer: "Add a GPX"
drag_drop: "Drag and drop a .gpx, .geojson or .kml file on the page, or click the button to the right to browse"
zoom: "Zoom to layer"
browse: "Browse for a file"
mvt:
local_layer: "Add a MVT"
drag_drop: "Drag and drop a .mvt or .pbf file on the page, or click the button to the right to browse"
zoom: "Zoom to layer"
browse: "Browse for a file"
QA:
keepRight:
tooltip: automatically detected errors from keepright.at
description: Keep Right
title: Edit Error
detail_title: Error
detail_description: Description
inputPlaceholder: Enter a comment to share with other users.
newComment: New Comment
upload_explanation: Your comments will be publicly visible to all keepRight.at users.
upload_explanation_with_user: "Your comments as {user} will be publicly visible to all keepRight.at users."
resolve_comment: Comment and Resolve
ignore_comment: Comment and Ignore
resolve: Resolve
ignore: Ignore
toggle-on: All on
toggle-off: All off
entities:
node: node
way: way
relation: relation
highway: highway
cycleway: cycleway
waterway: waterway
riverbank: riverbank
errorTypes:
errors:
_30:
description: 'non-closed_areas'
tooltip: 'This way is tagged with {var1}={var2} and should be closed-loop'
_40:
description: 'dead-ended one-ways'
tooltip: 'The first node (id {var1}) of this one-way is not connected to any other way'
_41:
description: ''
tooltip: 'The last node (id {var1}) of this one-way is not connected to any other way'
_42:
description: ''
tooltip: 'This node cannot be reached because one-ways only lead away from here'
_43:
description: ''
tooltip: 'You cannot escape from this node because one-ways only lead to here'
_50:
description: 'almost-junctions'
tooltip: 'This node is very close but not connected to way #{var1}'
_70:
description: 'missing tags'
tooltip: 'This {var1} has an empty tag: {var2}'
_71:
description: 'way without tags'
tooltip: 'This way has no tags'
_72:
description: 'node without tags'
tooltip: 'This node is not member of any way and doesn''t have any tags'
_90:
description: 'motorways without ref'
tooltip: 'This way is tagged as motorway and therefore needs a ref nat_ref or int_ref tag'
_100:
description: 'places of worship without religion'
tooltip: 'This {var1} is tagged as place of worship and therefore needs a religion tag'
_110:
description: 'point of interest without name'
tooltip: 'This node is tagged as {var1} and therefore needs a name tag'
_120:
description: 'ways without nodes'
tooltip: 'This way has just one single node'
_130:
description: 'floating islands'
tooltip: 'This way is not connected to the rest of the map'
_150:
description: 'railway crossing without tag'
tooltip: 'This crossing of a highway and a railway needs to be tagged as railway=crossing or railway=level_crossing'
_160:
description: 'wrongly used railway tag'
tooltip: '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'
_170:
description: 'FIXME tagged items'
tooltip: '{var1}'
_180:
description: 'relations without type'
tooltip: 'This relation has no type tag which is mandatory for relations'
_190:
description: 'intersections without junctions'
tooltip: 'Finds way crossings on same layer without common node as a junction'
_191:
description: 'highway-highway'
tooltip: 'This {var1} intersects the {var2} #{var3} but there is no junction node'
_192:
description: 'highway-waterway'
tooltip: 'This {var1} intersects the {var2} #{var3}'
_193:
description: 'highway-riverbank'
tooltip: 'This {var1} intersects the {var2} #{var3}'
_194:
description: 'waterway-waterway'
tooltip: 'This {var1} intersects the {var2} #{var3} but there is no junction node'
_195:
description: 'cycleway-cycleway'
tooltip: 'This {var1} intersects the {var2} #{var3} but there is no junction node'
_196:
description: 'highway-cycleway'
tooltip: 'This {var1} intersects the {var2} #{var3} but there is no junction node'
_197:
description: 'cycleway-waterway'
tooltip: 'This {var1} intersects the {var2} #{var3}'
_198:
description: 'cycleway-riverbank'
tooltip: 'This {var1} intersects the {var2} #{var3}'
_200:
description: 'overlapping ways'
tooltip: 'Finds overlapping ways on same layer'
_201:
description: 'highway-highway'
tooltip: 'This {var1} overlaps the {var2} #{var3}'
_202:
description: 'highway-waterway'
tooltip: 'This {var1} overlaps the {var2} #{var3}'
_203:
description: 'highway-riverbank'
tooltip: 'This {var1} overlaps the {var2} #{var3}'
_204:
description: 'waterway-waterway'
tooltip: 'This {var1} overlaps the {var2} #{var3}'
_205:
description: 'cycleway-cycleway'
tooltip: 'This {var1} overlaps the {var2} #{var3}'
_206:
description: 'highway-cycleway'
tooltip: 'This {var1} overlaps the {var2} #{var3}'
_207:
description: 'cycleway-waterway'
tooltip: 'This {var1} overlaps the {var2} #{var3}'
_208:
description: 'cycleway-riverbank'
tooltip: 'This {var1} overlaps the {var2} #{var3}'
_210:
description: 'loopings'
tooltip: 'These errors contain self intersecting ways'
_211:
description: ''
tooltip: 'This way contains more than one node at least twice. Nodes are {var1}. This may or may not be an error'
_212:
description: ''
tooltip: 'This way has only two different nodes and contains one of them more than once'
_220:
description: 'misspelled tags'
tooltip: 'This {var1} is tagged {var2}={var3} where {var4} looks like {var5}'
_221:
description: ''
tooltip: 'The key of this {var1} tag is key {var2}'
_230:
description: 'layer conflicts'
tooltip: ''
_231:
description: 'mixed layers intersection'
tooltip: 'This node is a junction of ways on different layers: {var1}'
_232:
description: 'strange layers'
tooltip: 'This {var1} is tagged with layer {var2}. This need not be an error but it looks strange'
_270:
description: 'motorways connected directly'
tooltip: '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.'
_280:
description: 'boundaries'
tooltip: ''
_281:
description: 'missing name'
tooltip: 'This boundary has no name'
_282:
description: 'missing admin level'
tooltip: 'The boundary of {var1} has no valid numeric admin_level. Please do not use admin levels like for example 6;7. Always tag the lowest admin_level of all boundaries'
_283:
description: 'no closed loop'
tooltip: 'The boundary of {var1} is not closed-loop'
_284:
description: 'splitting boundary'
tooltip: 'The boundary of {var1} splits here'
_285:
description: 'admin_level too high'
tooltip: 'This boundary-way has admin_level {var1} but belongs to a relation with lower admin_level (higher priority); it should have the lowest admin_level of all relations'
_290:
description: 'restrictions'
tooltip: 'Analyses all relations tagged type=restriction or following variations type=restriction:hgv type=restriction:caravan type=restriction:motorcar type=restriction:bus type=restriction:agricultural type=restriction:motorcycle type=restriction:bicycle and type=restriction:hazmat'
_291:
description: 'missing type'
tooltip: 'This turn-restriction has no known restriction type'
_292:
description: 'missing from way'
tooltip: 'A turn-restriction needs exactly one {var1} member. This one has {var2}'
_293:
description: 'missing to way'
tooltip: 'A turn-restriction needs exactly one {var1} member. This one has {var2}'
_294:
description: 'from or to not a way'
tooltip: 'From- and To-members of turn restrictions need to be ways. {var1}'
_295:
description: 'via is not on the way ends'
tooltip: 'via (node #{var1}) is not the first or the last member of from (way #{var2})'
_296:
description: 'wrong restriction angle'
tooltip: 'restriction type is {var1} but angle is {var2} degrees. Maybe the restriction type is not appropriate?'
_297:
description: 'wrong direction of to member'
tooltip: 'wrong direction of to way {var1}'
_298:
description: 'already restricted by oneway'
tooltip: 'entry already prohibited by oneway tag on {var1}'
_310:
description: 'roundabouts'
tooltip: 'Analyses ways with tag junction=roundabout. More then one way can form a roundabout. It supports tag oneway=-1'
_311:
description: 'not closed loop'
tooltip: 'This way is part of a roundabout but is not closed-loop. (split carriageways approaching a roundabout should not be tagged as roundabout)'
_312:
description: 'wrong direction'
tooltip: 'If this roundabout is in a country with right-hand traffic then its orientation goes the wrong way around | If this roundabout is in a country with left-hand traffic then its orientation goes the wrong way around | If this mini_roundabout is in a country with right-hand traffic then its orientation goes the wrong way around | If this mini_roundabout is in a country with left-hand traffic then its orientation goes the wrong way around'
_313:
description: 'faintly connected'
tooltip: 'This roundabout has only {var1} other roads connected. Roundabouts typically have three'
_320:
description: '*_link connections'
tooltip: 'This way is tagged as highway={var1}_link but doesn''t have a connection to any other {var1} or {var1}_link'
_350:
description: 'bridge-tags'
tooltip: '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}'
_370:
description: 'doubled places'
tooltip: 'This node has tags in common with the surrounding way #{var1} and seems to be redundand | This node has tags in common with the surrounding way #{var1} (including the name {var2}) and seems to be redundand'
_380:
description: 'non-physical use of sport-tag'
tooltip: 'This way is tagged {var1} but has no physical tag like e.g. leisure, building, amenity or highway'
_400:
description: 'geometry glitches'
tooltip: ''
_401:
description: 'missing turn restriction'
tooltip: 'ways {var1} and {var2} join in a very sharp angle here and there is no oneway tag or turn restriction that prevents turning from way {var1} to {var2}'
_402:
description: 'impossible angles'
tooltip: 'this way bends in a very sharp angle here'
_410:
description: 'website'
tooltip: 'Web pages are analyzed. Web page is defined by any of the following tags website=* url=* website:mobile=* contact:website=* contact:url=* image=* source:website=* or source:url=*'
_411:
description: 'http error'
tooltip: 'The URL (<a target="_blank" href="{var1}">{var1}</a>) cannot be opened (HTTP status code {var2})'
_412:
description: 'domain hijacking'
tooltip: 'Possible domain squatting: <a target=\"_blank\" href="{var1}">{var1}</a>. Suspicious text is: "{var2}"'
_413:
description: 'non-match'
tooltip: 'Content of the URL (<a target=\"_blank\" href="{var1}">{var1}</a>) did not contain these keywords: ({var2})'
warnings:
_20:
description: 'multiple nodes on the same spot'
tooltip: 'There is more than one node in this spot. Offending node IDs: {var1}'
_60:
description: 'depreciated tags'
tooltip: 'This {var1} uses deprecated tag {var2}={var3}. Please use {var4} instead!'
_300:
description: 'missing maxspeed'
tooltip: 'missing maxspeed tag'
_360:
description: 'language unknown'
tooltip: 'It would be nice if this {var1} had an additional tag name:XX={var2} where XX shows the language of its name {var2}'
_390:
description: 'missing tracktype'
tooltip: This track doesn't have a tracktype
>>>>>>> cleaned map data UI; commented sub-layer filtering
streetside:
tooltip: "Streetside photos from Microsoft"
title: "Photo Overlay (Bing Streetside)"
+354 -5
View File
@@ -591,7 +591,10 @@
},
"fill_area": "Fill Areas",
"map_features": "Map Features",
"QA": "QA",
"QA": {
"title": "Quality Assurance",
"keepRight": "KeepRight"
},
"autohidden": "These features have been automatically hidden because too many would be shown on the screen. You can zoom in to edit them.",
"osmhidden": "These features have been automatically hidden because the OpenStreetMap layer is hidden."
},
@@ -1127,11 +1130,357 @@
},
"_360": {
"description": "language unknown",
"tooltip": "It would be nice if this {var1} had an additional tag name:XX={var2} where XX shows the language of its name {var2}"
"tooltip": "It would be nice if this {var1} had an additional tag name:XX={var2} where XX shows the language of its name {var2}",
"QA": {
"keepRight": {
"tooltip": "automatically detected errors from keepright.at",
"description": "Keep Right",
"title": "Edit Error",
"detail_title": "Error",
"detail_description": "Description",
"inputPlaceholder": "Enter a comment to share with other users.",
"newComment": "New Comment",
"upload_explanation": "Your comments will be publicly visible to all keepRight.at users.",
"upload_explanation_with_user": "Your comments as {user} will be publicly visible to all keepRight.at users.",
"resolve_comment": "Comment and Resolve",
"ignore_comment": "Comment and Ignore",
"resolve": "Resolve",
"ignore": "Ignore",
"toggle-on": "All on",
"toggle-off": "All off",
"entities": {
"node": "node",
"way": "way",
"relation": "relation",
"highway": "highway",
"cycleway": "cycleway",
"waterway": "waterway",
"riverbank": "riverbank"
},
"errorTypes": {
"errors": {
"_30": {
"description": "non-closed_areas",
"tooltip": "This way is tagged with {var1}={var2} and should be closed-loop"
},
"_40": {
"description": "dead-ended one-ways",
"tooltip": "The first node (id {var1}) of this one-way is not connected to any other way"
},
"_41": {
"description": "",
"tooltip": "The last node (id {var1}) of this one-way is not connected to any other way"
},
"_42": {
"description": "",
"tooltip": "This node cannot be reached because one-ways only lead away from here"
},
"_43": {
"description": "",
"tooltip": "You cannot escape from this node because one-ways only lead to here"
},
"_50": {
"description": "almost-junctions",
"tooltip": "This node is very close but not connected to way #{var1}"
},
"_70": {
"description": "missing tags",
"tooltip": "This {var1} has an empty tag: {var2}"
},
"_71": {
"description": "way without tags",
"tooltip": "This way has no tags"
},
"_72": {
"description": "node without tags",
"tooltip": "This node is not member of any way and doesn't have any tags"
},
"_90": {
"description": "motorways without ref",
"tooltip": "This way is tagged as motorway and therefore needs a ref nat_ref or int_ref tag"
},
"_100": {
"description": "places of worship without religion",
"tooltip": "This {var1} is tagged as place of worship and therefore needs a religion tag"
},
"_110": {
"description": "point of interest without name",
"tooltip": "This node is tagged as {var1} and therefore needs a name tag"
},
"_120": {
"description": "ways without nodes",
"tooltip": "This way has just one single node"
},
"_130": {
"description": "floating islands",
"tooltip": "This way is not connected to the rest of the map"
},
"_150": {
"description": "railway crossing without tag",
"tooltip": "This crossing of a highway and a railway needs to be tagged as railway=crossing or railway=level_crossing"
},
"_160": {
"description": "wrongly used railway tag",
"tooltip": "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"
},
"_170": {
"description": "FIXME tagged items",
"tooltip": "{var1}"
},
"_180": {
"description": "relations without type",
"tooltip": "This relation has no type tag which is mandatory for relations"
},
"_190": {
"description": "intersections without junctions",
"tooltip": "Finds way crossings on same layer without common node as a junction"
},
"_191": {
"description": "highway-highway",
"tooltip": "This {var1} intersects the {var2} #{var3} but there is no junction node"
},
"_192": {
"description": "highway-waterway",
"tooltip": "This {var1} intersects the {var2} #{var3}"
},
"_193": {
"description": "highway-riverbank",
"tooltip": "This {var1} intersects the {var2} #{var3}"
},
"_194": {
"description": "waterway-waterway",
"tooltip": "This {var1} intersects the {var2} #{var3} but there is no junction node"
},
"_195": {
"description": "cycleway-cycleway",
"tooltip": "This {var1} intersects the {var2} #{var3} but there is no junction node"
},
"_196": {
"description": "highway-cycleway",
"tooltip": "This {var1} intersects the {var2} #{var3} but there is no junction node"
},
"_197": {
"description": "cycleway-waterway",
"tooltip": "This {var1} intersects the {var2} #{var3}"
},
"_198": {
"description": "cycleway-riverbank",
"tooltip": "This {var1} intersects the {var2} #{var3}"
},
"_200": {
"description": "overlapping ways",
"tooltip": "Finds overlapping ways on same layer"
},
"_201": {
"description": "highway-highway",
"tooltip": "This {var1} overlaps the {var2} #{var3}"
},
"_202": {
"description": "highway-waterway",
"tooltip": "This {var1} overlaps the {var2} #{var3}"
},
"_203": {
"description": "highway-riverbank",
"tooltip": "This {var1} overlaps the {var2} #{var3}"
},
"_204": {
"description": "waterway-waterway",
"tooltip": "This {var1} overlaps the {var2} #{var3}"
},
"_205": {
"description": "cycleway-cycleway",
"tooltip": "This {var1} overlaps the {var2} #{var3}"
},
"_206": {
"description": "highway-cycleway",
"tooltip": "This {var1} overlaps the {var2} #{var3}"
},
"_207": {
"description": "cycleway-waterway",
"tooltip": "This {var1} overlaps the {var2} #{var3}"
},
"_208": {
"description": "cycleway-riverbank",
"tooltip": "This {var1} overlaps the {var2} #{var3}"
},
"_210": {
"description": "loopings",
"tooltip": "These errors contain self intersecting ways"
},
"_211": {
"description": "",
"tooltip": "This way contains more than one node at least twice. Nodes are {var1}. This may or may not be an error"
},
"_212": {
"description": "",
"tooltip": "This way has only two different nodes and contains one of them more than once"
},
"_220": {
"description": "misspelled tags",
"tooltip": "This {var1} is tagged {var2}={var3} where {var4} looks like {var5}"
},
"_221": {
"description": "",
"tooltip": "The key of this {var1} tag is key {var2}"
},
"_230": {
"description": "layer conflicts",
"tooltip": ""
},
"_231": {
"description": "mixed layers intersection",
"tooltip": "This node is a junction of ways on different layers: {var1}"
},
"_232": {
"description": "strange layers",
"tooltip": "This {var1} is tagged with layer {var2}. This need not be an error but it looks strange"
},
"_270": {
"description": "motorways connected directly",
"tooltip": "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."
},
"_280": {
"description": "boundaries",
"tooltip": ""
},
"_281": {
"description": "missing name",
"tooltip": "This boundary has no name"
},
"_282": {
"description": "missing admin level",
"tooltip": "The boundary of {var1} has no valid numeric admin_level. Please do not use admin levels like for example 6;7. Always tag the lowest admin_level of all boundaries"
},
"_283": {
"description": "no closed loop",
"tooltip": "The boundary of {var1} is not closed-loop"
},
"_284": {
"description": "splitting boundary",
"tooltip": "The boundary of {var1} splits here"
},
"_285": {
"description": "admin_level too high",
"tooltip": "This boundary-way has admin_level {var1} but belongs to a relation with lower admin_level (higher priority); it should have the lowest admin_level of all relations"
},
"_290": {
"description": "restrictions",
"tooltip": "Analyses all relations tagged type=restriction or following variations type=restriction:hgv type=restriction:caravan type=restriction:motorcar type=restriction:bus type=restriction:agricultural type=restriction:motorcycle type=restriction:bicycle and type=restriction:hazmat"
},
"_291": {
"description": "missing type",
"tooltip": "This turn-restriction has no known restriction type"
},
"_292": {
"description": "missing from way",
"tooltip": "A turn-restriction needs exactly one {var1} member. This one has {var2}"
},
"_293": {
"description": "missing to way",
"tooltip": "A turn-restriction needs exactly one {var1} member. This one has {var2}"
},
"_294": {
"description": "from or to not a way",
"tooltip": "From- and To-members of turn restrictions need to be ways. {var1}"
},
"_295": {
"description": "via is not on the way ends",
"tooltip": "via (node #{var1}) is not the first or the last member of from (way #{var2})"
},
"_296": {
"description": "wrong restriction angle",
"tooltip": "restriction type is {var1} but angle is {var2} degrees. Maybe the restriction type is not appropriate?"
},
"_297": {
"description": "wrong direction of to member",
"tooltip": "wrong direction of to way {var1}"
},
"_298": {
"description": "already restricted by oneway",
"tooltip": "entry already prohibited by oneway tag on {var1}"
},
"_310": {
"description": "roundabouts",
"tooltip": "Analyses ways with tag junction=roundabout. More then one way can form a roundabout. It supports tag oneway=-1"
},
"_311": {
"description": "not closed loop",
"tooltip": "This way is part of a roundabout but is not closed-loop. (split carriageways approaching a roundabout should not be tagged as roundabout)"
},
"_312": {
"description": "wrong direction",
"tooltip": "If this roundabout is in a country with right-hand traffic then its orientation goes the wrong way around | If this roundabout is in a country with left-hand traffic then its orientation goes the wrong way around | If this mini_roundabout is in a country with right-hand traffic then its orientation goes the wrong way around | If this mini_roundabout is in a country with left-hand traffic then its orientation goes the wrong way around"
},
"_313": {
"description": "faintly connected",
"tooltip": "This roundabout has only {var1} other roads connected. Roundabouts typically have three"
},
"_320": {
"description": "*_link connections",
"tooltip": "This way is tagged as highway={var1}_link but doesn't have a connection to any other {var1} or {var1}_link"
},
"_350": {
"description": "bridge-tags",
"tooltip": "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}"
},
"_370": {
"description": "doubled places",
"tooltip": "This node has tags in common with the surrounding way #{var1} and seems to be redundand | This node has tags in common with the surrounding way #{var1} (including the name {var2}) and seems to be redundand"
},
"_380": {
"description": "non-physical use of sport-tag",
"tooltip": "This way is tagged {var1} but has no physical tag like e.g. leisure, building, amenity or highway"
},
"_400": {
"description": "geometry glitches",
"tooltip": ""
},
"_401": {
"description": "missing turn restriction",
"tooltip": "ways {var1} and {var2} join in a very sharp angle here and there is no oneway tag or turn restriction that prevents turning from way {var1} to {var2}"
},
"_402": {
"description": "impossible angles",
"tooltip": "this way bends in a very sharp angle here"
},
"_410": {
"description": "website",
"tooltip": "Web pages are analyzed. Web page is defined by any of the following tags website=* url=* website:mobile=* contact:website=* contact:url=* image=* source:website=* or source:url=*"
},
"_411": {
"description": "http error",
"tooltip": "The URL (<a target=\"_blank\" href=\"{var1}\">{var1}</a>) cannot be opened (HTTP status code {var2})"
},
"_412": {
"description": "domain hijacking",
"tooltip": "Possible domain squatting: <a target=\\\"_blank\\\" href=\"{var1}\">{var1}</a>. Suspicious text is: \"{var2}\""
},
"_413": {
"description": "non-match",
"tooltip": "Content of the URL (<a target=\\\"_blank\\\" href=\"{var1}\">{var1}</a>) did not contain these keywords: ({var2})"
}
},
"_390": {
"description": "missing tracktype",
"tooltip": "This track doesn't have a tracktype"
"warnings": {
"_20": {
"description": "multiple nodes on the same spot",
"tooltip": "There is more than one node in this spot. Offending node IDs: {var1}"
},
"_60": {
"description": "depreciated tags",
"tooltip": "This {var1} uses deprecated tag {var2}={var3}. Please use {var4} instead!"
},
"_300": {
"description": "missing maxspeed",
"tooltip": "missing maxspeed tag"
},
"_360": {
"description": "language unknown",
"tooltip": "It would be nice if this {var1} had an additional tag name:XX={var2} where XX shows the language of its name {var2}"
},
"_390": {
"description": "missing tracktype",
"tooltip": "This track doesn't have a tracktype"
}
}
}
}
-1
View File
@@ -185,7 +185,6 @@ export default {
});
},
// get all cached errors covering the viewport
keepRight: function(projection) {
var viewport = projection.clipExtent();
+35 -4
View File
@@ -1,5 +1,7 @@
import _throttle from 'lodash-es/throttle';
import { select as d3_select } from 'd3-selection';
import { modeBrowse } from '../modes';
import { svgPointTransform } from './index';
import { services } from '../services';
@@ -10,6 +12,13 @@ export function svgKeepRight(projection, context, dispatch) {
var layer = d3_select(null);
var _keepRight;
function markerPath(selection, klass) {
selection
.attr('class', klass)
.attr('transform', 'translate(-4, -24)')
.attr('d', 'M11.6,6.2H7.1l1.4-5.1C8.6,0.6,8.1,0,7.5,0H2.2C1.7,0,1.3,0.3,1.3,0.8L0,10.2c-0.1,0.6,0.4,1.1,0.9,1.1h4.6l-1.8,7.6C3.6,19.4,4.1,20,4.7,20c0.3,0,0.6-0.2,0.8-0.5l6.9-11.9C12.7,7,12.3,6.2,11.6,6.2z');
}
function init() {
if (svgKeepRight.initialized) return; // run once
@@ -34,12 +43,31 @@ export function svgKeepRight(projection, context, dispatch) {
var service = getService();
if (!service) return;
editOn();
layer
.classed('disabled', false)
.style('opacity', 0)
.transition()
.duration(250)
.style('opacity', 1)
.on('end interrupt', function () {
dispatch.call('change');
});
}
function hideLayer() {
throttledRedraw.cancel();
editOff();
layer
.transition()
.duration(250)
.style('opacity', 0)
.on('end interrupt', function () {
layer.classed('disabled', true);
dispatch.call('change');
});
}
@@ -107,9 +135,9 @@ export function svgKeepRight(projection, context, dispatch) {
.attr('ry', 3)
.attr('class', 'stroke');
// kr_errorsEnter
// .append('path')
// .call(markerPath, 'kr_error-shadow');
kr_errorsEnter
.append('path')
.call(markerPath, 'shadow');
kr_errorsEnter
.append('use')
@@ -156,7 +184,7 @@ export function svgKeepRight(projection, context, dispatch) {
if (service && ~~context.map().zoom() >= minZoom) {
editOn();
update();
var options = { // TODO: change out these options and place as default
var options = {
ch: [0,30,40,50,70,90,100,110,120,130,150,160,170,180,191,192,193,194,195,196,197,198,201,202,203,204,205,206,207,208,210,220,231,232,270,281,282,283,284,285,291,292,293,294,295,296,297,298,311,312,313,320,350,370,380,401,402,411,412,413]
};
@@ -175,6 +203,9 @@ export function svgKeepRight(projection, context, dispatch) {
showLayer();
} else {
hideLayer();
if (context.selectedErrorID()) {
context.enter(modeBrowse(context));
}
}
dispatch.call('change');
return this;
+4 -4
View File
@@ -32,7 +32,7 @@ export function uiKeepRightDetails(context) {
_parent_error_type = '_' + base_error_type;
}
_titleBase = 'keepRight.errorTypes.' + _category + '.';
_titleBase = 'QA.keepRight.errorTypes.' + _category + '.';
}
@@ -64,7 +64,7 @@ export function uiKeepRightDetails(context) {
.attr('class', 'kr_error-details-title');
title.append('h4')
.text(function() { return t('keepRight.detail_title'); });
.text(function() { return t('QA.keepRight.detail_title'); });
title.append('div')
.text(function() {
@@ -72,7 +72,7 @@ export function uiKeepRightDetails(context) {
// if this is a subtype, append it's parent title
if (_parent_error_type) {
title = t(_titleBase + _parent_error_type + '.description') + ':\n';
title = t(_titleBase + _parent_error_type + '.description') + ': \n';
}
// append title
@@ -91,7 +91,7 @@ export function uiKeepRightDetails(context) {
description
.append('h4')
.text(function() { return t('keepRight.detail_description'); });
.text(function() { return t('QA.keepRight.detail_description'); });
description
.append('div')
+7 -7
View File
@@ -49,7 +49,7 @@ export function uiKeepRightEditor(context) {
headerEnter
.append('h3')
.text(t('keepRight.title'));
.text(t('QA.keepRight.title'));
var body = selection.selectAll('.body')
@@ -102,13 +102,13 @@ export function uiKeepRightEditor(context) {
.append('h4')
.attr('class', '.error-save-header')
.text(function() {
return t('keepRight.newComment');
return t('QA.keepRight.newComment');
});
errorSaveEnter
.append('textarea')
.attr('class', 'new-comment-input')
.attr('placeholder', t('keepRight.inputPlaceholder'))
.attr('placeholder', t('QA.keepRight.inputPlaceholder'))
.attr('maxlength', 1000)
.property('value', function(d) { return d.newComment; })
.call(utilNoAuto)
@@ -201,7 +201,7 @@ export function uiKeepRightEditor(context) {
prose = prose.enter()
.append('p')
.attr('class', 'error-save-prose')
.text(t('keepRight.upload_explanation'))
.text(t('QA.keepRight.upload_explanation'))
.merge(prose);
osm.userDetails(function(err, user) {
@@ -225,7 +225,7 @@ export function uiKeepRightEditor(context) {
.attr('target', '_blank');
prose
.html(t('keepRight.upload_explanation_with_user', { user: userLink.html() }));
.html(t('QA.keepRight.upload_explanation_with_user', { user: userLink.html() }));
});
}
@@ -295,7 +295,7 @@ export function uiKeepRightEditor(context) {
.attr('disabled', (hasAuth ? null : true))
.text(function(d) {
var andComment = (d.newComment ? '_comment' : '');
return t('keepRight.resolve' + andComment);
return t('QA.keepRight.resolve' + andComment);
})
.on('click.status', function(d) {
this.blur(); // avoid keeping focus on the button - #4641
@@ -312,7 +312,7 @@ export function uiKeepRightEditor(context) {
.attr('disabled', (hasAuth ? null : true))
.text(function(d) {
var andComment = (d.newComment ? '_comment' : '');
return t('keepRight.ignore' + andComment);
return t('QA.keepRight.ignore' + andComment);
})
.on('click.status', function(d) {
this.blur(); // avoid keeping focus on the button - #4641
+1 -1
View File
@@ -72,7 +72,7 @@ export function uiKeepRightHeader(context) {
headerEnter
.append('div')
.attr('class', 'kr_error-header-label')
.text(function(d) { return t('keepRight.entities.' + d.object_type) + ' '; })
.text(function(d) { return t('QA.keepRight.entities.' + d.object_type) + ' '; })
.append('span')
.append('a')
.text(function(d) { return d.object_id; })
+90 -43
View File
@@ -22,7 +22,8 @@ export function uiMapData(context) {
var key = t('map_data.key');
var features = context.features().keys();
var errors = Object.keys(errorTypes.errors); // TODO: add warnings
var QAs = ['keepRight'];
// var errors = Object.keys(errorTypes.errors); // TODO: add warnings
var layers = context.layers();
var fills = ['wireframe', 'partial', 'full'];
@@ -35,6 +36,7 @@ export function uiMapData(context) {
var _fillList = d3_select(null);
var _featureList = d3_select(null);
var _QAList = d3_select(null);
// var _KeepRightList = d3_select(null);
function showsFeature(d) {
@@ -43,6 +45,7 @@ export function uiMapData(context) {
function autoHiddenFeature(d) {
if (d.type === 'kr_error') return context.errors().autoHidden(d);
return context.features().autoHidden(d);
}
@@ -53,15 +56,31 @@ export function uiMapData(context) {
}
function showsError(d) {
// return context.errors().enabled(d);
function showsQA(d) {
var QAKeys = [d];
var QALayers = layers.all().filter(function(obj) { return QAKeys.indexOf(obj.id) !== -1; });
var data = QALayers.filter(function(obj) { return obj.layer.supported(); });
function layerSupported(d) {
return d.layer && d.layer.supported();
}
function layerEnabled(d) {
return layerSupported(d) && d.layer.enabled();
}
return layerEnabled(data[0]);
}
// function clickError(d) {
function clickError(d) {
// context.errors().toggle(d);
// update();
}
// }
// function showsError(d) {
// }
function showsFill(d) {
@@ -112,7 +131,7 @@ export function uiMapData(context) {
function drawPhotoItems(selection) {
var photoKeys = ['streetside', 'mapillary-images', 'mapillary-signs', 'openstreetcam-images', 'keepRight'];
var photoKeys = ['streetside', 'mapillary-images', 'mapillary-signs', 'openstreetcam-images'];
var photoLayers = layers.all().filter(function(obj) { return photoKeys.indexOf(obj.id) !== -1; });
var data = photoLayers.filter(function(obj) { return obj.layer.supported(); });
@@ -432,37 +451,43 @@ export function uiMapData(context) {
var QAButtons = d3_select('.layer-QA').selectAll('li').select('label').select('input');
var buttonSection = selection.selectAll('.QA-buttons')
.data([0]);
// function drawQAButtons(selection) {
// exit
buttonSection.exit()
.remove();
// var QAButtons = d3_select('.layer-QA').selectAll('li').select('label').select('input');
// enter
var buttonEnter = buttonSection.enter()
.append('div')
.attr('class', 'QA-buttons');
// var buttonSection = selection.selectAll('.QA-buttons')
// .data([0]);
buttonEnter
.append('button')
.attr('class', 'button QA-toggle-on action')
.text(t('keepRight.toggle-on'))
.on('click', function() {
QAButtons.property('checked', true);
dispatch.call('change');
});
// // exit
// buttonSection.exit()
// .remove();
buttonEnter
.append('button')
.attr('class', 'button QA-toggle-off action')
.text(t('keepRight.toggle-off'))
.on('click', function() {
QAButtons.property('checked', false);
dispatch.call('change');
});
// // enter
// var buttonEnter = buttonSection.enter()
// .append('div')
// .attr('class', 'QA-buttons');
buttonSection = buttonSection
.merge(buttonEnter);
}
// buttonEnter
// .append('button')
// .attr('class', 'button QA-toggle-on action')
// .text(t('QA.keepRight.toggle-on'))
// .on('click', function() {
// QAButtons.property('checked', true);
// dispatch.call('change');
// });
// buttonEnter
// .append('button')
// .attr('class', 'button QA-toggle-off action')
// .text(t('QA.keepRight.toggle-off'))
// .on('click', function() {
// QAButtons.property('checked', false);
// dispatch.call('change');
// });
// buttonSection = buttonSection
// .merge(buttonEnter);
// }
function drawListItems(selection, data, type, name, change, active) {
@@ -483,7 +508,8 @@ export function uiMapData(context) {
var tip = t(name + '.' + d + '.tooltip'),
key = (d === 'wireframe' ? t('area_fill.wireframe.key') : null);
if (name === 'feature' && autoHiddenFeature(d)) {
if ((name === 'feature' || name === 'keepRight') && autoHiddenFeature(d)) {
var msg = showsLayer('osm') ? t('map_data.autohidden') : t('map_data.osmhidden');
tip += '<div>' + msg + '</div>';
}
@@ -514,7 +540,7 @@ export function uiMapData(context) {
.selectAll('input')
.property('checked', active)
.property('indeterminate', function(d) {
return (name === 'feature' && autoHiddenFeature(d));
return ((name === 'feature' || name === 'keepRight') && autoHiddenFeature(d));
});
}
@@ -552,7 +578,7 @@ export function uiMapData(context) {
}
function renderQA(selection) {
function renderQAList(selection) {
var container = selection.selectAll('layer-QA')
.data([0]);
@@ -562,6 +588,16 @@ export function uiMapData(context) {
.merge(container);
}
// function renderKeepRightList(selection) {
// var container = selection.selectAll('layer-keepRight')
// .data([0]);
// _KeepRightList = container.enter()
// .append('ul')
// .attr('class', 'layer-list layer-keepRight')
// .merge(container);
// }
function update() {
_dataLayerContainer
@@ -577,9 +613,12 @@ export function uiMapData(context) {
.call(drawListItems, features, 'checkbox', 'feature', clickFeature, showsFeature);
_QAList
.call(drawListItems, errors, 'checkbox', 'keepRight.errorTypes.errors', clickError, showsError);
d3_select('.disclosure-wrap-QA')
.call(drawQAButtons);
.call(drawListItems, QAs, 'checkbox', 'QA', function(d) { toggleLayer(d); }, showsQA);
// _KeepRightList
// .call(drawListItems, errors, 'checkbox', 'QA.keepRight.errorTypes.errors', clickError, showsError);
// d3_select('.disclosure-wrap-QA')
// .call(drawQAButtons);
}
@@ -711,10 +750,19 @@ export function uiMapData(context) {
.append('div')
.attr('class', 'map-data-QA')
.call(uiDisclosure(context, 'QA', false)
.title(t('map_data.QA'))
.content(renderQA)
.title(t('map_data.QA.title'))
.content(renderQAList)
);
// // adding keepRight sublayers
// QA_list
// .append('div')
// .attr('class', 'keepRight-errors')
// .call(uiDisclosure(context, 'keepRight', false)
// .title(t('map_data.QA.keepRight'))
// .content(renderKeepRightList)
// );
// add listeners
context.features()
@@ -722,7 +770,6 @@ export function uiMapData(context) {
// context.errors()
// .on('change.map_data-update', update); // TODO: add errors list to context?
''
update();
setFill(_fillSelected);
+1 -1
View File
@@ -81,7 +81,7 @@ export function parseErrorDescriptions(entity) {
// if any variables contain common words, like node, way, relation, translate those
if (commonEntities.includes(currWord)) {
currWord = t('keepRight.entities.' + currWord);
currWord = t('QA.keepRight.entities.' + currWord);
}
parsedPhrase += currWord;