diff --git a/css/65_data.css b/css/65_data.css
index 146adde24..181d656fa 100644
--- a/css/65_data.css
+++ b/css/65_data.css
@@ -165,12 +165,19 @@
.osmose.category-1070,
.osmose.category-1080,
.osmose.category-1150,
+.osmose.category-1190,
.osmose.category-1280 {
color: #DCB000;
}
+.osmose.category-2110 {
+ color: #2CDCDC;
+}
+
.osmose.category-3040,
+.osmose.category-3090,
.osmose.category-3161,
+.osmose.category-3220,
.osmose.category-3250 {
color: #2D9359;
}
@@ -179,7 +186,12 @@
color: #F2F230;
}
-.osmose.category-7040 {
+.osmose.category-5070 {
+ color: #EC0000;
+}
+
+.osmose.category-7040,
+.osmose.category-7090 {
color: #9F16B4;
}
diff --git a/data/core.yaml b/data/core.yaml
index 027b6769b..c4c0b2421 100644
--- a/data/core.yaml
+++ b/data/core.yaml
@@ -860,21 +860,45 @@ en:
1150:
title: 'Overlapping Similar Areas'
description: '{0} and {1} overlap.'
+ 1190:
+ title: 'Approximate Way'
+ description: '{0} looks like it could be mapped more accurately.'
1280-1:
title: 'Incorrect Speed Camera'
description: '{0} should be on the highway or part of an "enforcement" relation.'
+ 2110-21101:
+ title: 'Unknown Named Object'
+ description: '{0} has a name but no main tag.'
+ 2110-21102:
+ title: 'Missing Relation Type'
+ description: '{0} is missing a "type" tag.'
3040-3040:
title: 'Unusual Tagging'
- description: '{0} has a non-conventional tag value: {1}.'
+ description: '{0} has a non-conventional tag value: "{1}".'
+ 3090-3090:
+ title: 'Invalid Date'
+ description: '{0} is tagged with an invalid date value: "{1}".'
3161:
title: 'Missing Parking Access'
description: 'There is no highway leading to {0}.'
+ 3220:
+ title: 'All Access Allowed'
+ description: '{0} has an "access=yes" or "access=permissive" tag which permits use by all transport modes (ski, horse, hazmat, etc.).'
3250-32501:
title: 'Invalid Opening Hours'
description: '{0} has an invalid value for the "opening_hours" tag.'
4080:
title: 'Object Mapped Twice'
description: '{0} and {1} both appear to represent the same object.'
+ 5070-50703:
+ title: 'Unexpected Symbol'
+ description: '{0} has an unexpected symbol, {2}, in the "{1}" tag.'
+ 5070-50704:
+ title: 'Unbalanced Punctuation'
+ description: '{0} has an unbalanced {1} character in its name.'
+ 5070-50705:
+ title: 'Unexpected Punctuation'
+ description: '{0} has an unexpected {1} character in its name.'
7040:
title: 'Unfinished Power Line'
description: 'A power line appears to be unfinished at {0}.'
@@ -884,6 +908,12 @@ en:
7040-4:
title: 'Extra Power Line Node'
description: 'Power lines should only have nodes at supports and {0} is not tagged as a pole or tower.'
+ 7090-1:
+ title: 'Disconnected Level Crossing'
+ description: '{0} is a level crossing at a non-junction node.'
+ 7090-3:
+ title: 'Disconnected Highway Feature'
+ description: '{0} is highway feature or barrier with no connected highway.'
8300:
title: 'Traffic Sign Suggestion'
description: 'Traffic signs detected by Mapillary suggest there may be an unmapped {0} nearby.'
diff --git a/data/qa_errors.json b/data/qa_errors.json
index 5bfeff88a..08ecf6c73 100644
--- a/data/qa_errors.json
+++ b/data/qa_errors.json
@@ -34,7 +34,27 @@
}
},
"osmose": {
- "items": ["0", "1040", "1050", "1070", "1150", "1280", "3040", "3161", "3250", "4080", "7040", "8300", "8360"],
+ "items": [
+ "0",
+ "1040",
+ "1050",
+ "1070",
+ "1150",
+ "1190",
+ "1280",
+ "2110",
+ "3040",
+ "3090",
+ "3161",
+ "3220",
+ "3250",
+ "4080",
+ "7040",
+ "7090",
+ "5070",
+ "8300",
+ "8360"
+ ],
"errorTypes": {
"0-1": {
"icon": "maki-home"
@@ -75,18 +95,42 @@
"1150-3": {
"icon": "far-clone"
},
+ "1190-10": {
+ "icon": "fas-share-alt"
+ },
+ "1190-20": {
+ "icon": "fas-share-alt"
+ },
+ "1190-30": {
+ "icon": "fas-share-alt"
+ },
"1280-1": {
"icon": "maki-attraction"
},
+ "2110-21101": {
+ "icon": "temaki-plaque"
+ },
+ "2110-21102": {
+ "icon": "fas-shapes"
+ },
"3040-3040": {
"icon": "far-times-circle"
},
+ "3090-3090": {
+ "icon": "fas-calendar-alt"
+ },
"3161-1": {
"icon": "maki-parking"
},
"3161-2": {
"icon": "maki-parking"
},
+ "3220-32200": {
+ "icon": "maki-roadblock"
+ },
+ "3220-32201": {
+ "icon": "maki-roadblock"
+ },
"3250-32501": {
"icon": "maki-watch"
},
@@ -99,6 +143,15 @@
"4080-3": {
"icon": "far-dot-circle"
},
+ "5070-50703": {
+ "icon": "fas-tint-slash"
+ },
+ "5070-50704": {
+ "icon": "fas-code"
+ },
+ "5070-50705": {
+ "icon": "fas-question"
+ },
"7040-1": {
"icon": "temaki-power_tower"
},
@@ -111,6 +164,12 @@
"7040-6": {
"icon": "temaki-power"
},
+ "7090-1": {
+ "icon": "maki-rail"
+ },
+ "7090-3": {
+ "icon": "maki-circle"
+ },
"8300-1": {
"icon": "fas-tachometer-alt"
},
diff --git a/dist/locales/en.json b/dist/locales/en.json
index e1434169f..37d9a553c 100644
--- a/dist/locales/en.json
+++ b/dist/locales/en.json
@@ -1046,10 +1046,18 @@
"title": "Overlapping Similar Areas",
"description": "{0} and {1} overlap."
},
+ "1190": {
+ "title": "Approximate Way",
+ "description": "{0} looks like it could be mapped more accurately."
+ },
"3161": {
"title": "Missing Parking Access",
"description": "There is no highway leading to {0}."
},
+ "3220": {
+ "title": "All Access Allowed",
+ "description": "{0} has an \"access=yes\" or \"access=permissive\" tag which permits use by all transport modes (ski, horse, hazmat, etc.)."
+ },
"4080": {
"title": "Object Mapped Twice",
"description": "{0} and {1} both appear to represent the same object."
@@ -1114,14 +1122,38 @@
"title": "Incorrect Speed Camera",
"description": "{0} should be on the highway or part of an \"enforcement\" relation."
},
+ "2110-21101": {
+ "title": "Unknown Named Object",
+ "description": "{0} has a name but no main tag."
+ },
+ "2110-21102": {
+ "title": "Missing Relation Type",
+ "description": "{0} is missing a \"type\" tag."
+ },
"3040-3040": {
"title": "Unusual Tagging",
- "description": "{0} has a non-conventional tag value: {1}."
+ "description": "{0} has a non-conventional tag value: \"{1}\"."
+ },
+ "3090-3090": {
+ "title": "Invalid Date",
+ "description": "{0} is tagged with an invalid date value: \"{1}\"."
},
"3250-32501": {
"title": "Invalid Opening Hours",
"description": "{0} has an invalid value for the \"opening_hours\" tag."
},
+ "5070-50703": {
+ "title": "Unexpected Symbol",
+ "description": "{0} has an unexpected symbol, {2}, in the \"{1}\" tag."
+ },
+ "5070-50704": {
+ "title": "Unbalanced Punctuation",
+ "description": "{0} has an unbalanced {1} character in its name."
+ },
+ "5070-50705": {
+ "title": "Unexpected Punctuation",
+ "description": "{0} has an unexpected {1} character in its name."
+ },
"7040-1": {
"title": "Lone Power Support",
"description": "{0} is a power tower or pole with no connected power lines."
@@ -1129,6 +1161,14 @@
"7040-4": {
"title": "Extra Power Line Node",
"description": "Power lines should only have nodes at supports and {0} is not tagged as a pole or tower."
+ },
+ "7090-1": {
+ "title": "Disconnected Level Crossing",
+ "description": "{0} is a level crossing at a non-junction node."
+ },
+ "7090-3": {
+ "title": "Disconnected Highway Feature",
+ "description": "{0} is highway feature or barrier with no connected highway."
}
}
},
diff --git a/modules/services/osmose.js b/modules/services/osmose.js
index 74648053e..6855e471e 100644
--- a/modules/services/osmose.js
+++ b/modules/services/osmose.js
@@ -174,6 +174,7 @@ export default {
});
},
+ // todo: &item=1090%2C1110%2C1120%2C3010%2C3020%2C3032%2C3050%2C3060%2C3091%2C3092%2C3150%2C3180%2C3190%2C3200%2C3210%2C4010%2C4030%2C5010%2C5020%2C5030%2C5040%2C5050%2C5080%2C6030%2C9000%2C9001%2C9004%2C9005%2C9010
loadErrorDetail(d, callback) {
// Error details only need to be fetched once
if (d.elems !== undefined) {
@@ -192,12 +193,20 @@ export default {
// Element links used in the error description
d.replacements = d.elems.map(linkEntity);
- // Special handling for some error types
- switch (d.item) {
- case 3040: {
- let [, key_value] = /Bad value for (.+)/i.exec(data.subtitle);
- d.replacements.push(key_value);
- break;
+ // Some error types have details in their subtitle
+ const special = {
+ '3040-3040': /Bad value for (.+)/i,
+ '3090-3090': /Incorrect date "(.+)"/i,
+ '5070-50703': /"(.+)"=".+" unexpected symbol char \(.+, (.+)\)/i,
+ '5070-50704': /Umbalanced (.+)/i,
+ '5070-50705': /Unexpected char (.+)/i
+ };
+ if (d.error_type in special) {
+ let [, ...details] = special[d.error_type].exec(data.subtitle);
+ d.replacements.push(...details);
+
+ if (d.error_type === '5070-50703') {
+ d.replacements[2] = String.fromCharCode(details[1]);
}
}
diff --git a/svg/fontawesome/fas-calendar-alt.svg b/svg/fontawesome/fas-calendar-alt.svg
new file mode 100644
index 000000000..872f8a4ee
--- /dev/null
+++ b/svg/fontawesome/fas-calendar-alt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/svg/fontawesome/fas-question.svg b/svg/fontawesome/fas-question.svg
new file mode 100644
index 000000000..2a3a5c663
--- /dev/null
+++ b/svg/fontawesome/fas-question.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/svg/fontawesome/fas-shapes.svg b/svg/fontawesome/fas-shapes.svg
new file mode 100644
index 000000000..46100668b
--- /dev/null
+++ b/svg/fontawesome/fas-shapes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/svg/fontawesome/fas-share-alt.svg b/svg/fontawesome/fas-share-alt.svg
new file mode 100644
index 000000000..40bb2fae5
--- /dev/null
+++ b/svg/fontawesome/fas-share-alt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/svg/fontawesome/fas-tint-slash.svg b/svg/fontawesome/fas-tint-slash.svg
new file mode 100644
index 000000000..e424cff65
--- /dev/null
+++ b/svg/fontawesome/fas-tint-slash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file