diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
new file mode 100644
index 0000000000..2be0538b92
--- /dev/null
+++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
@@ -0,0 +1,625 @@
+{
+ "id": "mapcomplete-changes",
+ "title": {
+ "en": "Changes made with MapComplete"
+ },
+ "shortDescription": {
+ "en": "Shows changes made by MapComplete"
+ },
+ "description": {
+ "en": "This maps shows all the changes made with MapComplete"
+ },
+ "icon": "./assets/svg/logo.svg",
+ "hideFromOverview": true,
+ "startLat": 0,
+ "startLon": 0,
+ "startZoom": 1,
+ "widenFactor": 0.05,
+ "clustering": false,
+ "layers": [
+ {
+ "id": "mapcomplete-changes",
+ "name": {
+ "en": "Changeset centers"
+ },
+ "minzoom": 0,
+ "source": {
+ "osmTags": "editor~*",
+ "geoJson": "https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/mapcomplete-changes/tile_{z}_{x}_{y}.geojson",
+ "geoJsonZoomLevel": 8,
+ "maxCacheAge": 0
+ },
+ "title": {
+ "render": {
+ "en": "Changeset for {theme}"
+ }
+ },
+ "description": {
+ "en": "Shows all MapComplete changes"
+ },
+ "tagRenderings": [
+ {
+ "id": "show_changeset_id",
+ "render": {
+ "en": "Changeset {id}"
+ }
+ },
+ {
+ "id": "contributor",
+ "question": {
+ "en": "What contributor did make this change?"
+ },
+ "freeform": {
+ "key": "user"
+ },
+ "render": {
+ "en": "Change made by {user}"
+ }
+ },
+ {
+ "id": "theme-id",
+ "question": {
+ "en": "What theme was used to make this change?"
+ },
+ "freeform": {
+ "key": "theme"
+ },
+ "render": {
+ "en": "Change with theme {theme}"
+ }
+ },
+ {
+ "id": "locale",
+ "freeform": {
+ "key": "locale"
+ },
+ "question": {
+ "en": "What locale (language) was this change made in?"
+ },
+ "render": {
+ "en": "User locale is {locale}"
+ }
+ },
+ {
+ "id": "host",
+ "render": {
+ "en": "Change with with {host}"
+ },
+ "question": {
+ "en": "What host (website) was this change made with?"
+ },
+ "freeform": {
+ "key": "host"
+ },
+ "mappings": [
+ {
+ "if": "host=www.waldbrand-app.de",
+ "then": "waldbrand-app.de",
+ "hideInAnswer": true
+ },
+ {
+ "if": "host~https://pietervdvn.github.io/mc/develop/.*",
+ "then": "Develop",
+ "hideInAnswer": true
+ }
+ ]
+ },
+ {
+ "id": "version",
+ "question": {
+ "en": "What version of MapComplete was used to make this change?"
+ },
+ "render": {
+ "en": "Made with {editor}"
+ },
+ "freeform": {
+ "key": "editor"
+ }
+ }
+ ],
+ "pointRendering": [
+ {
+ "location": [
+ "point",
+ "centroid"
+ ],
+ "marker": [
+ {
+ "icon": {
+ "render": "teardrop:#00cc00",
+ "mappings": [
+ {
+ "if": "theme=advertising",
+ "then": "./assets/themes/advertising/icon.svg"
+ },
+ {
+ "if": "theme=aed",
+ "then": "./assets/themes/aed/aed.svg"
+ },
+ {
+ "if": "theme=artwork",
+ "then": "./assets/themes/artwork/artwork.svg"
+ },
+ {
+ "if": "theme=atm",
+ "then": "./assets/themes/atm/logo.svg"
+ },
+ {
+ "if": "theme=bag",
+ "then": "./assets/themes/bag/logo.svg"
+ },
+ {
+ "if": "theme=benches",
+ "then": "./assets/themes/benches/bench_poi.svg"
+ },
+ {
+ "if": "theme=bicycle_rental",
+ "then": "./assets/themes/bicycle_rental/logo.svg"
+ },
+ {
+ "if": "theme=bicyclelib",
+ "then": "./assets/themes/bicyclelib/logo.svg"
+ },
+ {
+ "if": "theme=binoculars",
+ "then": "./assets/layers/binocular/telescope.svg"
+ },
+ {
+ "if": "theme=blind_osm",
+ "then": "./assets/themes/blind_osm/Blindicon.svg"
+ },
+ {
+ "if": "theme=bookcases",
+ "then": "./assets/themes/bookcases/bookcase.svg"
+ },
+ {
+ "if": "theme=buurtnatuur",
+ "then": "./assets/themes/buurtnatuur/logo.svg"
+ },
+ {
+ "if": "theme=cafes_and_pubs",
+ "then": "./assets/layers/cafe_pub/pub.svg"
+ },
+ {
+ "if": "theme=campersite",
+ "then": "./assets/themes/campersite/caravan.svg"
+ },
+ {
+ "if": "theme=charging_stations",
+ "then": "./assets/themes/charging_stations/logo.svg"
+ },
+ {
+ "if": "theme=climbing",
+ "then": "./assets/themes/climbing/climbing_icon.svg"
+ },
+ {
+ "if": "theme=clock",
+ "then": "./assets/layers/clock/clock.svg"
+ },
+ {
+ "if": "theme=cycle_highways",
+ "then": "./assets/themes/cycle_highways/fietssnelwegen-logo.svg"
+ },
+ {
+ "if": "theme=cycle_infra",
+ "then": "./assets/themes/cycle_infra/cycle-infra.svg"
+ },
+ {
+ "if": "theme=cyclenodes",
+ "then": "./assets/themes/cyclenodes/logo.svg"
+ },
+ {
+ "if": "theme=cyclestreets",
+ "then": "./assets/themes/cyclestreets/logo.svg"
+ },
+ {
+ "if": "theme=cyclofix",
+ "then": "./assets/themes/cyclofix/logo.svg"
+ },
+ {
+ "if": "theme=drinking_water",
+ "then": "./assets/themes/drinking_water/logo.svg"
+ },
+ {
+ "if": "theme=education",
+ "then": "./assets/layers/school/college.svg"
+ },
+ {
+ "if": "theme=elongated_coin",
+ "then": "./assets/themes/elongated_coin/penny.svg"
+ },
+ {
+ "if": "theme=etymology",
+ "then": "./assets/layers/etymology/logo.svg"
+ },
+ {
+ "if": "theme=facadegardens",
+ "then": "./assets/themes/facadegardens/geveltuin.svg"
+ },
+ {
+ "if": "theme=food",
+ "then": "./assets/layers/food/restaurant.svg"
+ },
+ {
+ "if": "theme=fritures",
+ "then": "./assets/themes/fritures/logo.svg"
+ },
+ {
+ "if": "theme=fruit_trees",
+ "then": "./assets/themes/fruit_trees/fruit_tree.svg"
+ },
+ {
+ "if": "theme=ghostbikes",
+ "then": "./assets/themes/ghostbikes/logo.svg"
+ },
+ {
+ "if": "theme=grb",
+ "then": "./assets/themes/grb/logo.svg"
+ },
+ {
+ "if": "theme=grb_fixme",
+ "then": "./assets/svg/bug.svg"
+ },
+ {
+ "if": "theme=guideposts",
+ "then": "./assets/layers/guidepost/guidepost.svg"
+ },
+ {
+ "if": "theme=hackerspaces",
+ "then": "./assets/themes/hackerspaces/glider.svg"
+ },
+ {
+ "if": "theme=hailhydrant",
+ "then": "./assets/themes/hailhydrant/logo.svg"
+ },
+ {
+ "if": "theme=healthcare",
+ "then": "./assets/layers/doctors/doctors.svg"
+ },
+ {
+ "if": "theme=hotels",
+ "then": "./assets/layers/hotel/hotel.svg"
+ },
+ {
+ "if": "theme=icecream",
+ "then": "./assets/layers/ice_cream/ice_cream.svg"
+ },
+ {
+ "if": "theme=indoors",
+ "then": "./assets/layers/entrance/entrance.svg"
+ },
+ {
+ "if": "theme=kerbs_and_crossings",
+ "then": "./assets/layers/kerbs/KerbIcon.svg"
+ },
+ {
+ "if": "theme=maproulette",
+ "then": "./assets/layers/maproulette/logomark.svg"
+ },
+ {
+ "if": "theme=maps",
+ "then": "./assets/themes/maps/logo.svg"
+ },
+ {
+ "if": "theme=maxspeed",
+ "then": "./assets/themes/maxspeed/maxspeed_logo.svg"
+ },
+ {
+ "if": "theme=nature",
+ "then": "./assets/themes/nature/logo.svg"
+ },
+ {
+ "if": "theme=notes",
+ "then": "./assets/themes/notes/logo.svg"
+ },
+ {
+ "if": "theme=observation_towers",
+ "then": "./assets/layers/observation_tower/Tower_observation.svg"
+ },
+ {
+ "if": "theme=onwheels",
+ "then": "./assets/themes/onwheels/crest.svg"
+ },
+ {
+ "if": "theme=openwindpowermap",
+ "then": "./assets/themes/openwindpowermap/logo.svg"
+ },
+ {
+ "if": "theme=osm_community_index",
+ "then": "./assets/themes/osm_community_index/osm.svg"
+ },
+ {
+ "if": "theme=parkings",
+ "then": "./assets/themes/parkings/parkings.svg"
+ },
+ {
+ "if": "theme=personal",
+ "then": "./assets/svg/addSmall.svg"
+ },
+ {
+ "if": "theme=pets",
+ "then": "./assets/layers/dogpark/dog-park.svg"
+ },
+ {
+ "if": "theme=play_forests",
+ "then": "./assets/layers/play_forest/icon.svg"
+ },
+ {
+ "if": "theme=playgrounds",
+ "then": "./assets/themes/playgrounds/playground.svg"
+ },
+ {
+ "if": "theme=postal_codes",
+ "then": "./assets/themes/postal_codes/townhall.svg"
+ },
+ {
+ "if": "theme=postboxes",
+ "then": "./assets/layers/postboxes/postbox.svg"
+ },
+ {
+ "if": "theme=rainbow_crossings",
+ "then": "./assets/themes/rainbow_crossings/logo.svg"
+ },
+ {
+ "if": "theme=shops",
+ "then": "./assets/themes/shops/shop.svg"
+ },
+ {
+ "if": "theme=sidewalks",
+ "then": "./assets/svg/bug.svg"
+ },
+ {
+ "if": "theme=speelplekken",
+ "then": "./assets/themes/speelplekken/logo.svg"
+ },
+ {
+ "if": "theme=sport_pitches",
+ "then": "./assets/layers/sport_pitch/table_tennis.svg"
+ },
+ {
+ "if": "theme=sports",
+ "then": "./assets/themes/sports/sport.svg"
+ },
+ {
+ "if": "theme=stations",
+ "then": "./assets/themes/stations/rail-light.svg"
+ },
+ {
+ "if": "theme=street_lighting",
+ "then": "./assets/layers/street_lamps/street_lamp.svg"
+ },
+ {
+ "if": "theme=street_lighting_assen",
+ "then": "./assets/layers/street_lamps/street_lamp.svg"
+ },
+ {
+ "if": "theme=surveillance",
+ "then": "./assets/themes/surveillance/logo.svg"
+ },
+ {
+ "if": "theme=toerisme_vlaanderen",
+ "then": "./assets/themes/toerisme_vlaanderen/logo.svg"
+ },
+ {
+ "if": "theme=toilets",
+ "then": "./assets/themes/toilets/toilets.svg"
+ },
+ {
+ "if": "theme=transit",
+ "then": "./assets/layers/transit_stops/bus_stop.svg"
+ },
+ {
+ "if": "theme=trees",
+ "then": "./assets/themes/trees/logo.svg"
+ },
+ {
+ "if": "theme=uk_addresses",
+ "then": "./assets/themes/uk_addresses/housenumber_unknown.svg"
+ },
+ {
+ "if": "theme=vending_machine",
+ "then": "./assets/layers/vending_machine/vending_machine.svg"
+ },
+ {
+ "if": "theme=walkingnodes",
+ "then": "./assets/themes/walkingnodes/logo.svg"
+ },
+ {
+ "if": "theme=walls_and_buildings",
+ "then": "./assets/layers/walls_and_buildings/walls_and_buildings.png"
+ },
+ {
+ "if": "theme=waste",
+ "then": "./assets/layers/recycling/recycling-14.svg"
+ },
+ {
+ "if": "theme=waste_assen",
+ "then": "./assets/layers/recycling/recycling-14.svg"
+ },
+ {
+ "if": "theme=waste_basket",
+ "then": "./assets/themes/waste_basket/waste_basket.svg"
+ },
+ {
+ "if": "theme=width",
+ "then": "./assets/themes/width/icon.svg"
+ }
+ ]
+ }
+ }
+ ],
+ "iconSize": "30,30",
+ "anchor": "center"
+ }
+ ],
+ "filter": [
+ {
+ "id": "theme-search",
+ "options": [
+ {
+ "osmTags": "theme~i~.*{search}.*",
+ "fields": [
+ {
+ "name": "search"
+ }
+ ],
+ "question": {
+ "en": "Themename contains {search}"
+ }
+ }
+ ]
+ },
+ {
+ "id": "created_by",
+ "options": [
+ {
+ "osmTags": "user~i~.*{search}.*",
+ "fields": [
+ {
+ "name": "search"
+ }
+ ],
+ "question": {
+ "en": "Made by contributor {search}"
+ }
+ }
+ ]
+ },
+ {
+ "id": "not_created_by",
+ "options": [
+ {
+ "osmTags": "user!~i~.*{search}.*",
+ "fields": [
+ {
+ "name": "search"
+ }
+ ],
+ "question": {
+ "en": "Not made by contributor {search}"
+ }
+ }
+ ]
+ },
+ {
+ "id": "made_before",
+ "options": [
+ {
+ "osmTags": "date<{search}",
+ "fields": [
+ {
+ "name": "search",
+ "type": "date"
+ }
+ ],
+ "question": {
+ "en": "Made before {search}"
+ }
+ }
+ ]
+ },
+ {
+ "id": "made_after",
+ "options": [
+ {
+ "osmTags": "date>{search}",
+ "fields": [
+ {
+ "name": "search",
+ "type": "date"
+ }
+ ],
+ "question": {
+ "en": "Made after {search}"
+ }
+ }
+ ]
+ },
+ {
+ "id": "locale-filter",
+ "options": [
+ {
+ "osmTags": "locale~i~.*{search}.*",
+ "fields": [
+ {
+ "name": "search"
+ }
+ ],
+ "question": {
+ "en": "User language (iso-code) {search}"
+ }
+ }
+ ]
+ },
+ {
+ "id": "host_name",
+ "options": [
+ {
+ "osmTags": "host~i~.*{search}.*",
+ "fields": [
+ {
+ "name": "search"
+ }
+ ],
+ "question": {
+ "en": "Made with host {search}"
+ }
+ }
+ ]
+ },
+ {
+ "id": "added-image",
+ "options": [
+ {
+ "osmTags": "add-image>0",
+ "question": {
+ "en": "Changeset added at least one image"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "builtin": "current_view",
+ "override": {
+ "title": "Statistics on changesets in the current view",
+ "tagRenderings+": [
+ {
+ "id": "link_to_more",
+ "render": {
+ "en": "More statistics can be found here"
+ }
+ },
+ {
+ "id": "hist_themes",
+ "render": "{histogram(_embedded_cs:themes, Themename, Number of changesets)}"
+ },
+ {
+ "id": "hist_users",
+ "render": "{histogram(_embedded_cs:users, Contributor, Number of changesets)}"
+ }
+ ],
+ "calculatedTags": [
+ "_embedded_cs=overlapWith(feat)('mapcomplete-changes').map(f => f.feat.properties)",
+ "_embedded_cs:themes=feat.get('_embedded_cs').map(cs => cs.theme)",
+ "_embedded_cs:users=feat.get('_embedded_cs').map(cs => cs['_last_edit:contributor'])"
+ ],
+ "+pointRendering": [
+ {
+ "location": [
+ "point"
+ ],
+ "marker": [
+ {
+ "icon": "statistics:black"
+ }
+ ],
+ "iconSize": "30,30",
+ "anchor": "center"
+ }
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json
index 81e929aa97..d82eb30430 100644
--- a/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json
+++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json
@@ -123,9 +123,13 @@
"point",
"centroid"
],
- "icon": {
- "render": "teardrop:#00cc00"
- },
+ "marker": [
+ {
+ "icon": {
+ "render": "teardrop:#00cc00"
+ }
+ }
+ ],
"iconSize": "30,30",
"anchor": "center"
}
diff --git a/assets/themes/stations/stations.json b/assets/themes/stations/stations.json
index 9ca1c8f2a9..8a219926c8 100644
--- a/assets/themes/stations/stations.json
+++ b/assets/themes/stations/stations.json
@@ -31,16 +31,7 @@
"override": {
"minzoom": 18,
"passAllFeatures": true,
- "mapRendering": [
- {},
- {},
- {
- "label": {
- "render": null,
- "mappings": null
- },
- "iconSize": "0,0"
- }
+ "=pointRendering": [
]
}
},
@@ -55,7 +46,8 @@
"override": {
"title": null,
"name": null,
- "mapRendering": null
+ "pointRendering": null,
+ "lineRendering": "null"
}
},
{
@@ -125,9 +117,17 @@
},
"presets": null,
"minzoom": 18,
- "mapRendering": [
+ "pointRendering": [
{
- "icon": "circle:white;./assets/themes/stations/bicycle_parking.svg"
+ "marker": [
+ {
+ "icon": "circle",
+ "color": "white"
+ },
+ {
+ "icon": "./assets/themes/stations/bicycle_parking.svg"
+ }
+ ]
}
]
}
@@ -143,9 +143,17 @@
},
"presets": null,
"minzoom": 18,
- "mapRendering": [
+ "pointRendering": [
{
- "icon": "circle:white;./assets/themes/stations/rental_bicycle.svg"
+ "marker": [
+ {
+ "icon": "circle",
+ "color": "white"
+ },
+ {
+ "icon": "./assets/themes/stations/rental_bicycle.svg"
+ }
+ ]
}
]
}
@@ -177,7 +185,7 @@
},
"presets": null,
"minzoom": 18,
- "mapRendering+": [
+ "lineRendering+": [
{
"color": "#00f",
"width": "8"
@@ -196,7 +204,7 @@
},
"presets": null,
"minzoom": 18,
- "mapRendering+": [
+ "lineRendering+": [
{
"color": "yellow",
"width": "8"
@@ -223,9 +231,13 @@
"builtin": "bench",
"override": {
"minzoom": 18,
- "mapRendering": [
+ "lineRendering": [
{
- "icon": "./assets/themes/stations/bench.svg"
+ "marker": [
+ {
+ "icon": "./assets/themes/stations/bench.svg"
+ }
+ ]
}
]
}
@@ -234,9 +246,17 @@
"builtin": "drinking_water",
"override": {
"minzoom": 18,
- "mapRendering": [
+ "pointRendering": [
{
- "icon": "circle:white;./assets/themes/stations/drinking_water.svg"
+ "=marker": [
+ {
+ "icon": "circle",
+ "color": "white"
+ },
+ {
+ "icon": "./assets/themes/stations/drinking_water.svg"
+ }
+ ]
}
]
}
diff --git a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json
index f94ea61d9d..c28f8b61b2 100644
--- a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json
+++ b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json
@@ -164,7 +164,7 @@
"point",
"centroid"
],
- "=marker": [
+ "marker": [
{
"icon": {
"render": "./assets/themes/toerisme_vlaanderen/cycle_pump.svg",
diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts
index 438e0f1e0d..32f06ee64a 100644
--- a/scripts/generateLayerOverview.ts
+++ b/scripts/generateLayerOverview.ts
@@ -27,8 +27,6 @@ import { ExtraFunctions } from "../src/Logic/ExtraFunctions"
import { QuestionableTagRenderingConfigJson } from "../src/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson"
import LayerConfig from "../src/Models/ThemeConfig/LayerConfig"
import PointRenderingConfig from "../src/Models/ThemeConfig/PointRenderingConfig"
-
-import { ConfigMeta } from "../src/UI/Studio/configMeta"
import { ConversionContext } from "../src/Models/ThemeConfig/Conversion/ConversionContext"
// This scripts scans 'src/assets/layers/*.json' for layer definition files and 'src/assets/themes/*.json' for theme definition files.
@@ -397,9 +395,10 @@ class LayerOverviewUtils extends Script {
const mcChangesPath = "./assets/themes/mapcomplete-changes/mapcomplete-changes.json"
if (
- recompiledThemes.length > 0 &&
- !(recompiledThemes.length === 1 && recompiledThemes[0] === "mapcomplete-changes") &&
- (args.indexOf("--generate-change-map") >= 0 || !existsSync(mcChangesPath))
+ (recompiledThemes.length > 0 &&
+ !(recompiledThemes.length === 1 && recompiledThemes[0] === "mapcomplete-changes") &&
+ args.indexOf("--generate-change-map") >= 0) ||
+ !existsSync(mcChangesPath)
) {
// mapcomplete-changes shows an icon for each corresponding mapcomplete-theme
const iconsPerTheme = Array.from(sharedThemes.values()).map((th) => ({