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