{ "id": "note", "name": { "en": "OpenStreetMap notes" }, "description": "This layer shows notes on OpenStreetMap. Having this layer in your theme will trigger the 'add new note' functionality in the 'addNewPoint'-popup (or if your theme has no presets, it'll enable adding notes)", "source": { "osmTags": "id~*", "geoJson": "https://api.openstreetmap.org/api/0.6/notes.json?limit=10000&closed=7&bbox={x_min},{y_min},{x_max},{y_max}", "geoJsonZoomLevel": 12, "maxCacheAge": 0 }, "minzoom": 10, "title": { "render": { "en": "Note" }, "mappings": [ { "if": "closed_at~*", "then": { "en": "Closed note" } } ] }, "calculatedTags": [ "_total_comments:=feat.get('comments').length", "_first_comment:=feat.get('comments')[0].text.toLowerCase()", "_opened_by_anonymous_user:=feat.get('comments')[0].user === undefined", "_first_user:=feat.get('comments')[0].user", "_first_user_lc:=feat.get('comments')[0].user?.toLowerCase()", "_first_user_id:=feat.get('comments')[0].uid", "_last_user_lc:=(() => {const comms = feat.get('comments'); return comms[comms.length - 1].user?.toLowerCase()})()", "_is_import_note:=(() => {const lines = feat.properties['_first_comment'].split('\\n'); const matchesMapCompleteURL = lines.map(l => l.match(\".*https://mapcomplete.osm.be/\\([a-zA-Z_-]+\\)\\(.html\\).*#import\")); const matchedIndexes = matchesMapCompleteURL.map((doesMatch, i) => [doesMatch !== null, i]).filter(v => v[0]).map(v => v[1]); return matchedIndexes[0] })()" ], "titleIcons": [ { "render": "" } ], "tagRenderings": [ { "id": "conversation", "render": "{visualize_note_comments()}" }, { "id": "add_image", "render": "{add_image_to_note()}" }, { "id": "comment", "render": "{add_note_comment()}" }, { "id": "report-contributor", "render": { "en": "Report {_first_user} as spam" }, "condition": "_opened_by_anonymous_user=false" }, { "id": "report-note", "render": { "en": "Report this note as spam or inappropriate" } } ], "mapRendering": [ { "location": [ "point", "centroid" ], "icon": { "render": "./assets/svg/note.svg", "mappings": [ { "if": "closed_at~*", "then": "./assets/svg/resolved.svg" } ] }, "iconSize": "40,40,bottom", "iconBadges": [ { "if": "_total_comments>1", "then": "speech_bubble" }, { "if": "_is_import_note~*", "then": "addSmall" } ] } ], "filter": [ { "id": "search", "options": [ { "osmTags": "_first_comment~.*{search}.*", "fields": [ { "name": "search" } ], "question": { "en": "Should mention {search} in the first comment" } } ] }, { "id": "not", "options": [ { "osmTags": "_first_comment!~.*{search}.*", "fields": [ { "name": "search" } ], "question": { "en": "Should not mention {search} in the first comment" } } ] }, { "id": "opened_by", "options": [ { "osmTags": "_first_user_lc~.*{search}.*", "fields": [ { "name": "search" } ], "question": { "en": "Opened by contributor {search}" } } ] }, { "id": "not_opened_by", "options": [ { "osmTags": "_first_user_lc!~.*{search}.*", "fields": [ { "name": "search" } ], "question": { "en": "Not opened by contributor {search}" } } ] }, { "id": "edited_by", "options": [ { "osmTags": "_last_user_lc~.*{search}.*", "fields": [ { "name": "search" } ], "question": { "en": "Last edited by contributor {search}" } } ] }, { "id": "not_edited_by", "options": [ { "osmTags": "_last_user_lc!~.*{search}.*", "fields": [ { "name": "search" } ], "question": { "en": "Opened after {search}" } } ] }, { "id": "opened_before", "options": [ { "osmTags": "date_created<{search}", "fields": [ { "name": "search", "type": "date" } ], "question": { "en": "Created before {search}" } } ] }, { "id": "opened_after", "options": [ { "osmTags": "date_created>{search}", "fields": [ { "name": "search", "type": "date" } ], "question": { "en": "Created after {search}" } } ] }, { "id": "anonymous", "options": [ { "osmTags": "_opened_by_anonymous_user=true", "question": { "en": "Only show notes opened by an anonymous contributor" } } ] }, { "id": "is_open", "options": [ { "osmTags": "closed_at=", "question": { "en": "Only show open notes" } } ] }, { "id": "no_imports", "options": [ { "osmTags": "_is_import_note=", "question": { "en": "Hide import notes" } } ] } ] }