Merge pull request #1796 from pietervdvn/RobinLinde-patch-1
New playground layer, additions to pressed penny theme
35
.vscode/settings.json
vendored
|
@ -7,6 +7,41 @@
|
|||
{
|
||||
"fileMatch": ["/assets/themes/*/*.json", "!/assets/themes/*/license_info.json"],
|
||||
"url": "./Docs/Schemas/LayoutConfigJson.schema.json"
|
||||
},
|
||||
{
|
||||
"fileMatch": ["/assets/themes/*/license_info.json", "/assets/layers/*/license_info.json"],
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"title": "License Info",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"type": "string",
|
||||
"description": "Path to the file"
|
||||
},
|
||||
"authors": {
|
||||
"type": "array",
|
||||
"description": "Authors of the file",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"license": {
|
||||
"type": "string",
|
||||
"description": "License of the file"
|
||||
},
|
||||
"sources": {
|
||||
"type": "array",
|
||||
"description": "Sources of the file",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["path", "authors", "license", "sources"]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"editor.tabSize": 2,
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
"osmTags": {
|
||||
"and": [
|
||||
"amenity=vending_machine",
|
||||
"vending=elongated_coin"
|
||||
"vending~.*elongated_coin.*"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -440,8 +440,5 @@
|
|||
"accepts_credit_cards"
|
||||
],
|
||||
"deletion": true,
|
||||
"allowMove": {
|
||||
"enableImproveAccuracy": true,
|
||||
"enableRelocation": true
|
||||
}
|
||||
}
|
||||
"allowMove": true
|
||||
}
|
BIN
assets/layers/playground_equipment/DeimosXL1.jpg
Normal file
After Width: | Height: | Size: 1 MiB |
2
assets/layers/playground_equipment/DeimosXL1.jpg.license
Normal file
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Damian stawowy
|
||||
SPDX-License-Identifier: CC-BY-SA 4.0
|
BIN
assets/layers/playground_equipment/Funnel_ball.jpg
Normal file
After Width: | Height: | Size: 56 KiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Pavtron (talk)
|
||||
SPDX-License-Identifier: Public domain
|
BIN
assets/layers/playground_equipment/Hinkelbaan_tegels.jpg
Normal file
After Width: | Height: | Size: 1.1 MiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: M.Minderhoud
|
||||
SPDX-License-Identifier: Public domain
|
BIN
assets/layers/playground_equipment/Hupfkissen.jpg
Normal file
After Width: | Height: | Size: 313 KiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Peter Wanders
|
||||
SPDX-License-Identifier: Public domain
|
After Width: | Height: | Size: 6.9 MiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Reda Kerbouche
|
||||
SPDX-License-Identifier: CC-BY-SA 4.0
|
After Width: | Height: | Size: 3.1 MiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Jleedev
|
||||
SPDX-License-Identifier: CC-BY-SA 4.0
|
BIN
assets/layers/playground_equipment/Playground_climbingwall.jpg
Normal file
After Width: | Height: | Size: 85 KiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Mktravel
|
||||
SPDX-License-Identifier: Public Domain
|
After Width: | Height: | Size: 469 KiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Roger Kidd
|
||||
SPDX-License-Identifier: CC-BY-SA 2.0
|
BIN
assets/layers/playground_equipment/Playground_swing_03.jpg
Normal file
After Width: | Height: | Size: 10 MiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Kritzolina
|
||||
SPDX-License-Identifier: CC-BY-SA 4.0
|
BIN
assets/layers/playground_equipment/Playhouse.jpg
Normal file
After Width: | Height: | Size: 125 KiB |
2
assets/layers/playground_equipment/Playhouse.jpg.license
Normal file
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Saku
|
||||
SPDX-License-Identifier: CC-BY-SA 3.0
|
BIN
assets/layers/playground_equipment/Rekstok.JPG
Normal file
After Width: | Height: | Size: 684 KiB |
2
assets/layers/playground_equipment/Rekstok.JPG.license
Normal file
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: self
|
||||
SPDX-License-Identifier: Public domain
|
BIN
assets/layers/playground_equipment/Seesaw-aa.jpg
Normal file
After Width: | Height: | Size: 64 KiB |
2
assets/layers/playground_equipment/Seesaw-aa.jpg.license
Normal file
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Itsmine
|
||||
SPDX-License-Identifier: Public domain
|
BIN
assets/layers/playground_equipment/Spinning_circle.jpg
Normal file
After Width: | Height: | Size: 1 MiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Jose1711
|
||||
SPDX-License-Identifier: CC0 1.0
|
After Width: | Height: | Size: 110 KiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Mc on avon
|
||||
SPDX-License-Identifier: Public domain
|
After Width: | Height: | Size: 3.6 MiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Pece
|
||||
SPDX-License-Identifier: CC-BY 3.0
|
After Width: | Height: | Size: 104 KiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Phil Champion
|
||||
SPDX-License-Identifier: CC-BY-SA 2.0
|
After Width: | Height: | Size: 90 KiB |
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Glogger
|
||||
SPDX-License-Identifier: CC-BY-SA 3.0
|
BIN
assets/layers/playground_equipment/Zandbakw.jpg
Normal file
After Width: | Height: | Size: 24 KiB |
2
assets/layers/playground_equipment/Zandbakw.jpg.license
Normal file
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Waerth
|
||||
SPDX-License-Identifier: CC-BY-SA 3.0
|
182
assets/layers/playground_equipment/license_info.json
Normal file
|
@ -0,0 +1,182 @@
|
|||
[
|
||||
{
|
||||
"path": "DeimosXL1.jpg",
|
||||
"license": "CC-BY-SA 4.0",
|
||||
"authors": [
|
||||
"Damian stawowy"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:DeimosXL1.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Funnel_ball.jpg",
|
||||
"license": "Public domain",
|
||||
"authors": [
|
||||
"Pavtron (talk)"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Funnel_ball.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Hinkelbaan_tegels.jpg",
|
||||
"license": "Public domain",
|
||||
"authors": [
|
||||
"M.Minderhoud"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Hinkelbaan_tegels.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Hupfkissen.jpg",
|
||||
"license": "Public domain",
|
||||
"authors": [
|
||||
"Peter Wanders"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:H%C3%BCpfkissen.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Manually_powered_carousel_on_a_playground_in_Saint-Petersburg.JPG",
|
||||
"license": "CC-BY-SA 4.0",
|
||||
"authors": [
|
||||
"Reda Kerbouche"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Manually_powered_carousel_on_a_playground_in_Saint-Petersburg.JPG"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Playground_Map,_Washington_Elementary.jpg",
|
||||
"license": "CC-BY-SA 4.0",
|
||||
"authors": [
|
||||
"Jleedev"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Playground_Map,_Washington_Elementary.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Playground_climbingwall.jpg",
|
||||
"license": "Public Domain",
|
||||
"authors": [
|
||||
"Mktravel"
|
||||
],
|
||||
"sources": [
|
||||
"https://wiki.openstreetmap.org/wiki/File:Playground_climbingwall.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Playground_in_Muchall_Park,_Wolverhampton_-_geograph.org.uk_-_2735437.jpg",
|
||||
"license": "CC-BY-SA 2.0",
|
||||
"authors": [
|
||||
"Roger Kidd"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Playground_in_Muchall_Park,_Wolverhampton_-_geograph.org.uk_-_2735437.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Playground_swing_03.jpg",
|
||||
"license": "CC-BY-SA 4.0",
|
||||
"authors": [
|
||||
"Kritzolina"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Playground_swing_03.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Playhouse.jpg",
|
||||
"license": "CC-BY-SA 3.0",
|
||||
"authors": [
|
||||
"Saku"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Playhouse.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Rekstok.JPG",
|
||||
"license": "Public domain",
|
||||
"authors": [
|
||||
"self"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Rekstok.JPG"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Seesaw-aa.jpg",
|
||||
"license": "Public domain",
|
||||
"authors": [
|
||||
"Itsmine"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Seesaw-aa.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Spinning_circle.jpg",
|
||||
"license": "CC0 1.0",
|
||||
"authors": [
|
||||
"Jose1711"
|
||||
],
|
||||
"sources": [
|
||||
"https://wiki.openstreetmap.org/wiki/File:Spinning_circle.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "SunwardCohousingPlayStructure2005.jpg",
|
||||
"license": "Public domain",
|
||||
"authors": [
|
||||
"Mc on avon"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:SunwardCohousingPlayStructure2005.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Szwedy_-_plac_zabaw_-_kotko_i_krzyzyk.jpg",
|
||||
"license": "CC-BY 3.0",
|
||||
"authors": [
|
||||
"Pece"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Szwedy_-_plac_zabaw_-_k%C3%B3%C5%82ko_i_krzy%C5%BCyk.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Teen_shelter_near_former_coastguard_lookout,_Watchet_-_geograph.org.uk_-_1714960.jpg",
|
||||
"license": "CC-BY-SA 2.0",
|
||||
"authors": [
|
||||
"Phil Champion"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Teen_shelter_near_former_coastguard_lookout,_Watchet_-_geograph.org.uk_-_1714960.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Urbeach-high-park-splashpad.jpg",
|
||||
"license": "CC-BY-SA 3.0",
|
||||
"authors": [
|
||||
"Glogger"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Urbeach-high-park-splashpad.jpg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "Zandbakw.jpg",
|
||||
"license": "CC-BY-SA 3.0",
|
||||
"authors": [
|
||||
"Waerth"
|
||||
],
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Zandbakw.jpg"
|
||||
]
|
||||
}
|
||||
]
|
337
assets/layers/playground_equipment/playground_equipment.json
Normal file
|
@ -0,0 +1,337 @@
|
|||
{
|
||||
"minzoom": 18,
|
||||
"pointRendering": [
|
||||
{
|
||||
"location": [
|
||||
"point",
|
||||
"centroid"
|
||||
],
|
||||
"marker": [
|
||||
{
|
||||
"icon": "circle",
|
||||
"color": "white"
|
||||
},
|
||||
{
|
||||
"icon": "./assets/themes/playgrounds/playground.svg"
|
||||
}
|
||||
],
|
||||
"iconSize": "20,20"
|
||||
}
|
||||
],
|
||||
"tagRenderings": [
|
||||
"images",
|
||||
{
|
||||
"render": {
|
||||
"en": "This is a {playground}"
|
||||
},
|
||||
"id": "type",
|
||||
"freeform": {
|
||||
"key": "playground",
|
||||
"placeholder": {
|
||||
"en": "Type of device"
|
||||
},
|
||||
"addExtraTags": [
|
||||
"fixme=Freeform input used"
|
||||
]
|
||||
},
|
||||
"question": {
|
||||
"en": "What kind of device is this?",
|
||||
"nl": "Wat voor speeltoestel is dit?"
|
||||
},
|
||||
"invalidValues": "playground=yes",
|
||||
"mappings": [
|
||||
{
|
||||
"if": "playground=swing",
|
||||
"then": {
|
||||
"en": "This is a swing",
|
||||
"nl": "Dit is een schommel"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=structure",
|
||||
"then": {
|
||||
"en": "This is a structure consisting of several connected playground devices"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/SunwardCohousingPlayStructure2005.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=slide",
|
||||
"then": {
|
||||
"en": "This is a slide"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=sandpit",
|
||||
"then": {
|
||||
"en": "This is a sand pit",
|
||||
"nl": "Dit is een zandbak"
|
||||
},
|
||||
"searchTerms": {
|
||||
"en": [
|
||||
"sandbox"
|
||||
]
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Zandbakw.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=springy",
|
||||
"then": {
|
||||
"en": "This is a spring rider",
|
||||
"nl": "Dit is een veertoestel"
|
||||
},
|
||||
"searchTerms": {
|
||||
"en": [
|
||||
"springy"
|
||||
],
|
||||
"nl": [
|
||||
"wipkip"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=climbingframe",
|
||||
"then": {
|
||||
"en": "This is a climbing frame",
|
||||
"nl": "Dit is een klimrek"
|
||||
},
|
||||
"searchTerms": {
|
||||
"en": [
|
||||
"jungle gym",
|
||||
"rope spider"
|
||||
]
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/DeimosXL1.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=seesaw",
|
||||
"then": {
|
||||
"en": "This is a seesaw",
|
||||
"nl": "Dit is een wipwap"
|
||||
},
|
||||
"searchTerms": {
|
||||
"en": [
|
||||
"teeter-totter",
|
||||
"teeterboard"
|
||||
]
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Seesaw-aa.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=playhouse",
|
||||
"then": {
|
||||
"en": "This is a playhouse"
|
||||
},
|
||||
"searchTerms": {
|
||||
"en": [
|
||||
"Wendyhouse"
|
||||
]
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Playhouse.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=roundabout",
|
||||
"then": {
|
||||
"en": "This is a roundabout"
|
||||
},
|
||||
"searchTerms": {
|
||||
"en": [
|
||||
"merry-go-round"
|
||||
]
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Manually_powered_carousel_on_a_playground_in_Saint-Petersburg.JPG",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=basketswing",
|
||||
"then": {
|
||||
"en": "This is a basket swing"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Playground_swing_03.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=zipwire",
|
||||
"then": {
|
||||
"en": "This is a zip wire"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=horizontal_bar",
|
||||
"then": {
|
||||
"en": "This is a horizontal bar",
|
||||
"nl": "Dit is een rekstok"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Rekstok.JPG",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=hopscotch",
|
||||
"then": {
|
||||
"en": "This is a hopscotch"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Hinkelbaan_tegels.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=splash_pad",
|
||||
"then": {
|
||||
"en": "This is a splash pad"
|
||||
},
|
||||
"searchTerms": {
|
||||
"en": "spray pool"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Urbeach-high-park-splashpad.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=climbingwall",
|
||||
"then": {
|
||||
"en": "This is a climbing wall"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Playground_climbingwall.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=map",
|
||||
"then": {
|
||||
"en": "This is a map"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Playground_Map,_Washington_Elementary.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=bridge",
|
||||
"then": {
|
||||
"en": "This is a bridge (either as a standalone device or as part of a larger structure)"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Playground_in_Muchall_Park,_Wolverhampton_-_geograph.org.uk_-_2735437.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=cushion",
|
||||
"then": {
|
||||
"en": "This is a bouncy cushion"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Hupfkissen.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=activitypanel",
|
||||
"then": {
|
||||
"en": "This is an activity panel"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Szwedy_-_plac_zabaw_-_kotko_i_krzyzyk.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=teenshelter",
|
||||
"then": {
|
||||
"en": "This is a teen shelter"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Teen_shelter_near_former_coastguard_lookout,_Watchet_-_geograph.org.uk_-_1714960.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=funnel_ball",
|
||||
"then": {
|
||||
"en": "This is a funnel used to play with funnel ball"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Funnel_ball.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "playground=spinning_circle",
|
||||
"then": {
|
||||
"en": "This is a spinning circle"
|
||||
},
|
||||
"icon": {
|
||||
"path": "./assets/layers/playground_equipment/Spinning_circle.jpg",
|
||||
"class": "large"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"builtin": "wheelchair-access",
|
||||
"override": {
|
||||
"question": {
|
||||
"en": "Is this device accessible by wheelchair?"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"lineRendering": [
|
||||
{
|
||||
"width": 1,
|
||||
"color": "blue"
|
||||
}
|
||||
],
|
||||
"id": "playground_equipment",
|
||||
"name": {
|
||||
"en": "Playground equipment"
|
||||
},
|
||||
"description": {
|
||||
"en": "Layer showing playground equipment"
|
||||
},
|
||||
"source": {
|
||||
"osmTags": "playground~*"
|
||||
},
|
||||
"title": {
|
||||
"render": {
|
||||
"en": "Playground device"
|
||||
}
|
||||
},
|
||||
"allowMove": true,
|
||||
"presets": [
|
||||
{
|
||||
"tags": [
|
||||
"playground=yes"
|
||||
],
|
||||
"title": {
|
||||
"en": "a playground device"
|
||||
},
|
||||
"description": {
|
||||
"en": "An exact type is asked later"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -552,6 +552,86 @@
|
|||
}
|
||||
],
|
||||
"filter": [
|
||||
"open_now"
|
||||
"open_now",
|
||||
{
|
||||
"id": "letter_from",
|
||||
"options": [
|
||||
{
|
||||
"question": {
|
||||
"en": "Offers letter posting"
|
||||
},
|
||||
"osmTags": {
|
||||
"and": [
|
||||
"post_office:letter_from~*",
|
||||
"post_office:letter_from!~i~no"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "parcel_from",
|
||||
"options": [
|
||||
{
|
||||
"question": {
|
||||
"en": "Offers parcel posting"
|
||||
},
|
||||
"osmTags": {
|
||||
"and": [
|
||||
"post_office:parcel_from~*",
|
||||
"post_office:parcel_from!~i~no"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "parcel_pickup",
|
||||
"options": [
|
||||
{
|
||||
"question": {
|
||||
"en": "Offers pickup of missed parcels"
|
||||
},
|
||||
"osmTags": {
|
||||
"and": [
|
||||
"post_office:parcel_pickup~*",
|
||||
"post_office:parcel_pickup!~i~no"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "parcel_to",
|
||||
"options": [
|
||||
{
|
||||
"question": {
|
||||
"en": "Accepts pickup of parcels sent here"
|
||||
},
|
||||
"osmTags": {
|
||||
"and": [
|
||||
"post_office:parcel_to~*",
|
||||
"post_office:parcel_to!~i~no"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "stamps",
|
||||
"options": [
|
||||
{
|
||||
"question": {
|
||||
"en": "Sells stamps"
|
||||
},
|
||||
"osmTags": {
|
||||
"and": [
|
||||
"post_office:stamps~*",
|
||||
"post_office:stamps!~i~no"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
10
assets/layers/souvenir_coin/license_info.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"path": "souvenir_coin.svg",
|
||||
"license": "CC0-1.0",
|
||||
"authors": [
|
||||
"Robin van der Linde"
|
||||
],
|
||||
"sources": []
|
||||
}
|
||||
]
|
160
assets/layers/souvenir_coin/souvenir_coin.json
Normal file
|
@ -0,0 +1,160 @@
|
|||
{
|
||||
"pointRendering": [
|
||||
{
|
||||
"location": [
|
||||
"point",
|
||||
"centroid"
|
||||
],
|
||||
"iconBadges": [
|
||||
{
|
||||
"if": "opening_hours~*",
|
||||
"then": "icons.isOpen"
|
||||
}
|
||||
],
|
||||
"marker": [
|
||||
{
|
||||
"icon": "circle",
|
||||
"color": "#FFFFFF00"
|
||||
},
|
||||
{
|
||||
"icon": "./assets/layers/souvenir_coin/souvenir_coin.svg"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tagRenderings": [
|
||||
"images",
|
||||
"opening_hours_24_7",
|
||||
{
|
||||
"builtin": "elongated_coin.designs",
|
||||
"id": "designs",
|
||||
"override": {
|
||||
"render": {
|
||||
"en": "This machine has {coin:design_count} designs available"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "coin:design_count=1",
|
||||
"then": {
|
||||
"en": "This machine has one design available"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "coin:design_count=2",
|
||||
"then": {
|
||||
"en": "This machine has two designs available"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "coin:design_count=3",
|
||||
"then": {
|
||||
"en": "This machine has three designs available"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "coin:design_count=4",
|
||||
"then": {
|
||||
"en": "This machine has four designs available"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"payment-options-split",
|
||||
"website",
|
||||
{
|
||||
"question": {
|
||||
"en": "How much does a souvenir coin cost?"
|
||||
},
|
||||
"id": "charge",
|
||||
"render": {
|
||||
"en": "A souvenir coins costs {charge}"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "charge",
|
||||
"placeholder": {
|
||||
"en": "Cost (e.g. 2 EUR)"
|
||||
}
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "charge=2 EUR",
|
||||
"then": {
|
||||
"en": "A souvenir coin costs 2 euro"
|
||||
},
|
||||
"hideInAnswer": "_currency!~.*EUR.*"
|
||||
}
|
||||
]
|
||||
},
|
||||
"denominations-coins",
|
||||
{
|
||||
"question": {
|
||||
"en": "Is this machine located indoors?"
|
||||
},
|
||||
"id": "indoor",
|
||||
"mappings": [
|
||||
{
|
||||
"if": "indoor=yes",
|
||||
"then": {
|
||||
"en": "This machine is located indoors."
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "indoor=no",
|
||||
"then": {
|
||||
"en": "This machine is located outdoors."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"level",
|
||||
"check_date"
|
||||
],
|
||||
"lineRendering": [
|
||||
{
|
||||
"width": 1,
|
||||
"color": "blue"
|
||||
}
|
||||
],
|
||||
"id": "souvenir_coin",
|
||||
"name": {
|
||||
"en": "Souvenir Coin Machines"
|
||||
},
|
||||
"description": {
|
||||
"en": "Layer showing machines selling souvenir coins"
|
||||
},
|
||||
"source": {
|
||||
"osmTags": {
|
||||
"and": [
|
||||
"amenity=vending_machine",
|
||||
"vending~.*souvenir_coins.*"
|
||||
]
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": {
|
||||
"en": "Souvenir Coin Machine"
|
||||
}
|
||||
},
|
||||
"presets": [
|
||||
{
|
||||
"title": {
|
||||
"en": "a souvenir coin machine"
|
||||
},
|
||||
"description": {
|
||||
"en": "Add a machine selling souvenir coins"
|
||||
},
|
||||
"tags": [
|
||||
"amenity=vending_machine",
|
||||
"vending=souvenir_coins"
|
||||
]
|
||||
}
|
||||
],
|
||||
"filter": [
|
||||
"open_now",
|
||||
"accepts_debit_cards",
|
||||
"accepts_credit_cards"
|
||||
],
|
||||
"deletion": true,
|
||||
"allowMove": true
|
||||
}
|
9
assets/layers/souvenir_coin/souvenir_coin.svg
Normal file
|
@ -0,0 +1,9 @@
|
|||
<svg width="250" height="250" viewBox="0 0 250 250" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="125" cy="125" r="121" fill="#CABFB9" stroke="#6D6662" stroke-width="8"/>
|
||||
<rect x="60" y="82.5" width="26" height="39" fill="#6D6662"/>
|
||||
<rect x="164" y="82.5" width="26" height="39" fill="#6D6662"/>
|
||||
<path d="M73 63L84.2583 82.5H61.7417L73 63Z" fill="#6D6662"/>
|
||||
<path d="M177 63L188.258 82.5H165.742L177 63Z" fill="#6D6662"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M60 121.5H190V186.5H138V160.5C138 153.32 132.18 147.5 125 147.5C117.82 147.5 112 153.32 112 160.5V186.5H60V121.5Z" fill="#6D6662"/>
|
||||
<circle cx="125" cy="125" r="109.5" stroke="#6D6662" stroke-dasharray="4 12"/>
|
||||
</svg>
|
After Width: | Height: | Size: 703 B |
2
assets/layers/souvenir_coin/souvenir_coin.svg.license
Normal file
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Robin van der Linde
|
||||
SPDX-License-Identifier: CC0-1.0
|
10
assets/layers/souvenir_note/license_info.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"path": "souvenir_note.svg",
|
||||
"license": "CC0-1.0",
|
||||
"authors": [
|
||||
"Robin van der Linde"
|
||||
],
|
||||
"sources": []
|
||||
}
|
||||
]
|
178
assets/layers/souvenir_note/souvenir_note.json
Normal file
|
@ -0,0 +1,178 @@
|
|||
{
|
||||
"pointRendering": [
|
||||
{
|
||||
"location": [
|
||||
"point",
|
||||
"centroid"
|
||||
],
|
||||
"iconBadges": [
|
||||
{
|
||||
"if": "opening_hours~*",
|
||||
"then": "icons.isOpen"
|
||||
}
|
||||
],
|
||||
"marker": [
|
||||
{
|
||||
"icon": "circle",
|
||||
"color": "#FFFFFF00"
|
||||
},
|
||||
{
|
||||
"icon": "./assets/layers/souvenir_note/souvenir_note.svg"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tagRenderings": [
|
||||
"images",
|
||||
"opening_hours_24_7",
|
||||
{
|
||||
"id": "designs",
|
||||
"question": {
|
||||
"en": "How many designs are available?"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "note:design_count",
|
||||
"type": "pnat",
|
||||
"placeholder": {
|
||||
"en": "Number of designs (e.g. 5)",
|
||||
"de": "Motivanzahl (z.B. 5)",
|
||||
"es": "Número de diseños (por ejemplo, 5)",
|
||||
"ca": "Nombre de dissenys (p. e. 5)",
|
||||
"cs": "Počet vzorů (např. 5)"
|
||||
}
|
||||
},
|
||||
"render": {
|
||||
"en": "This machine has {note:design_count} designs available."
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "note:design_count=1",
|
||||
"then": {
|
||||
"en": "This machine has one design available."
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "note:design_count=2",
|
||||
"then": {
|
||||
"en": "This machine has two designs available."
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "note:design_count=3",
|
||||
"then": {
|
||||
"en": "This machine has three designs available."
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "note:design_count=4",
|
||||
"then": {
|
||||
"en": "This machine has four designs available."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"payment-options-split",
|
||||
"website",
|
||||
{
|
||||
"question": {
|
||||
"en": "How much does a souvenir note cost?"
|
||||
},
|
||||
"id": "charge",
|
||||
"render": {
|
||||
"en": "A souvenir note costs {charge}"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "charge",
|
||||
"placeholder": {
|
||||
"en": "Cost (e.g. 2 EUR)"
|
||||
}
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "charge=2 EUR",
|
||||
"then": {
|
||||
"en": "A souvenir note costs 2 euro"
|
||||
},
|
||||
"hideInAnswer": "_currency!~.*EUR.*"
|
||||
},
|
||||
{
|
||||
"if": "charge=3 EUR",
|
||||
"then": {
|
||||
"en": "A souvenir note costs 3 euro"
|
||||
},
|
||||
"hideInAnswer": "_currency!~.*EUR.*"
|
||||
}
|
||||
]
|
||||
},
|
||||
"denominations-coins",
|
||||
{
|
||||
"question": {
|
||||
"en": "Is this machine located indoors?"
|
||||
},
|
||||
"id": "indoor",
|
||||
"mappings": [
|
||||
{
|
||||
"if": "indoor=yes",
|
||||
"then": {
|
||||
"en": "This machine is located indoors."
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "indoor=no",
|
||||
"then": {
|
||||
"en": "This machine is located outdoors."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"level",
|
||||
"check_date"
|
||||
],
|
||||
"lineRendering": [
|
||||
{
|
||||
"width": 1,
|
||||
"color": "blue"
|
||||
}
|
||||
],
|
||||
"id": "souvenir_note",
|
||||
"name": {
|
||||
"en": "Souvenir Banknote Machines"
|
||||
},
|
||||
"description": {
|
||||
"en": "Layer showing machines selling souvenir banknotes"
|
||||
},
|
||||
"source": {
|
||||
"osmTags": {
|
||||
"and": [
|
||||
"amenity=vending_machine",
|
||||
"vending~.*souvenir_notes.*"
|
||||
]
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": {
|
||||
"en": "Souvenir Banknote Machine"
|
||||
}
|
||||
},
|
||||
"presets": [
|
||||
{
|
||||
"title": {
|
||||
"en": "a souvenir banknote machine"
|
||||
},
|
||||
"description": {
|
||||
"en": "Add a machine selling souvenir banknotes"
|
||||
},
|
||||
"tags": [
|
||||
"amenity=vending_machine",
|
||||
"vending=souvenir_notes"
|
||||
]
|
||||
}
|
||||
],
|
||||
"filter": [
|
||||
"open_now",
|
||||
"accepts_debit_cards",
|
||||
"accepts_credit_cards"
|
||||
],
|
||||
"deletion": true,
|
||||
"allowMove": true
|
||||
}
|
12
assets/layers/souvenir_note/souvenir_note.svg
Normal file
|
@ -0,0 +1,12 @@
|
|||
<svg width="500" height="250" viewBox="0 0 500 250" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="140" height="250" fill="#F7EBF4"/>
|
||||
<rect x="140" width="360" height="250" fill="#E1BBD9"/>
|
||||
<rect x="4" y="4" width="492" height="242" stroke="black" stroke-width="8"/>
|
||||
<rect x="250" y="82.5" width="26" height="39" fill="#81576D"/>
|
||||
<rect x="354" y="82.5" width="26" height="39" fill="#81576D"/>
|
||||
<path d="M263 63L274.258 82.5H251.742L263 63Z" fill="#81576D"/>
|
||||
<path d="M367 63L378.258 82.5H355.742L367 63Z" fill="#81576D"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M250 121.5H380V186.5H328V160.5C328 153.32 322.18 147.5 315 147.5C307.82 147.5 302 153.32 302 160.5V186.5H250V121.5Z" fill="#81576D"/>
|
||||
<rect x="20" y="30" width="65" height="50" fill="#003399"/>
|
||||
<path d="M139.023 103.705C132.932 103.705 127.682 102.261 123.273 99.375C118.864 96.4659 115.466 92.2955 113.08 86.8636C110.693 81.4091 109.511 74.8523 109.534 67.1932C109.557 59.5341 110.75 53.0341 113.114 47.6932C115.5 42.3295 118.886 38.25 123.273 35.4545C127.682 32.6364 132.932 31.2273 139.023 31.2273C145.114 31.2273 150.364 32.6364 154.773 35.4545C159.205 38.25 162.614 42.3295 165 47.6932C167.386 53.0568 168.568 59.5568 168.545 67.1932C168.545 74.875 167.352 81.4432 164.966 86.8977C162.58 92.3523 159.182 96.5227 154.773 99.4091C150.386 102.273 145.136 103.705 139.023 103.705ZM139.023 89.8977C142.659 89.8977 145.602 88.0455 147.852 84.3409C150.102 80.6136 151.216 74.8977 151.193 67.1932C151.193 62.1477 150.682 57.9886 149.659 54.7159C148.636 51.4205 147.216 48.9659 145.398 47.3523C143.58 45.7386 141.455 44.9318 139.023 44.9318C135.409 44.9318 132.489 46.7614 130.261 50.4205C128.034 54.0568 126.909 59.6477 126.886 67.1932C126.864 72.3068 127.352 76.5455 128.352 79.9091C129.375 83.2727 130.807 85.7841 132.648 87.4432C134.489 89.0795 136.614 89.8977 139.023 89.8977Z" fill="#81576D"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
2
assets/layers/souvenir_note/souvenir_note.svg.license
Normal file
|
@ -0,0 +1,2 @@
|
|||
SPDX-FileCopyrightText: Robin van der Linde
|
||||
SPDX-License-Identifier: CC0-1.0
|
|
@ -21,6 +21,8 @@
|
|||
"startLat": 53.0565,
|
||||
"startLon": 8.7492,
|
||||
"layers": [
|
||||
"elongated_coin"
|
||||
"elongated_coin",
|
||||
"souvenir_coin",
|
||||
"souvenir_note"
|
||||
]
|
||||
}
|
179
assets/themes/ghostsigns/ghostsigns.json
Normal file
|
@ -0,0 +1,179 @@
|
|||
{
|
||||
"id": "ghostsigns",
|
||||
"title": {
|
||||
"en": "Ghost Signs"
|
||||
},
|
||||
"description": {
|
||||
"en": "A map showing disused signs on buildings"
|
||||
},
|
||||
"icon": "./assets/themes/advertising/wall_painting.svg",
|
||||
"layers": [
|
||||
{
|
||||
"id": "ghostsigns",
|
||||
"title": {
|
||||
"render": {
|
||||
"en": "Ghost Sign"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"en": "Layer showing disused signs on buildings"
|
||||
},
|
||||
"name": {
|
||||
"en": "Ghost Signs"
|
||||
},
|
||||
"source": {
|
||||
"osmTags": {
|
||||
"and": [
|
||||
"historic~*",
|
||||
"advertising=wall_painting"
|
||||
]
|
||||
}
|
||||
},
|
||||
"minzoom": 10,
|
||||
"allowMove": {
|
||||
"enableImproveAccuracy": true
|
||||
},
|
||||
"tagRenderings": [
|
||||
{
|
||||
"id": "historic",
|
||||
"question": {
|
||||
"en": "Is this a ghost sign?"
|
||||
},
|
||||
"questionHint": {
|
||||
"en": "Is this sign for a business that no longer exists or no longer being maintained?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "historic=advertising",
|
||||
"then": {
|
||||
"en": "This is a ghost sign"
|
||||
},
|
||||
"alsoShowIf": "historic=yes"
|
||||
},
|
||||
{
|
||||
"if": "historic=",
|
||||
"then": {
|
||||
"en": "This is not a ghost sign, answering this will hide the sign from the map"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"images",
|
||||
{
|
||||
"id": "name",
|
||||
"condition": "name~*",
|
||||
"render": {
|
||||
"*": "{name}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inscription",
|
||||
"question": {
|
||||
"en": "What is the text on the sign?"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "inscription",
|
||||
"type": "string",
|
||||
"placeholder": {
|
||||
"en": "Text on the sign"
|
||||
}
|
||||
},
|
||||
"render": {
|
||||
"en": "The text on the sign is: {inscription}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "brand",
|
||||
"question": {
|
||||
"en": "For what business was this sign made?"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "brand",
|
||||
"type": "string",
|
||||
"placeholder": {
|
||||
"en": "Business name"
|
||||
}
|
||||
},
|
||||
"render": {
|
||||
"en": "This sign was made for: {brand}"
|
||||
}
|
||||
}
|
||||
],
|
||||
"lineRendering": [
|
||||
{
|
||||
"color": "blue",
|
||||
"width": 2
|
||||
}
|
||||
],
|
||||
"pointRendering": [
|
||||
{
|
||||
"location": [
|
||||
"point",
|
||||
"centroid"
|
||||
],
|
||||
"marker": [
|
||||
{
|
||||
"icon": "./assets/themes/advertising/wall_painting.svg"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"presets": [
|
||||
{
|
||||
"tags": [
|
||||
"historic=advertising",
|
||||
"advertising=wall_painting"
|
||||
],
|
||||
"title": {
|
||||
"en": "a ghost sign"
|
||||
},
|
||||
"snapToLayer": [
|
||||
"walls_and_buildings"
|
||||
],
|
||||
"maxSnapDistance": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"builtin": "advertising",
|
||||
"override": {
|
||||
"source": {
|
||||
"osmTags": "advertising=wall_painting"
|
||||
},
|
||||
"minzoom": 18,
|
||||
"+tagRenderings": [
|
||||
{
|
||||
"id": "historic",
|
||||
"question": {
|
||||
"en": "Is this a ghost sign?"
|
||||
},
|
||||
"questionHint": {
|
||||
"en": "Is this sign for a business that no longer exists or no longer being maintained?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "historic=advertising",
|
||||
"then": {
|
||||
"en": "This is a ghost sign"
|
||||
},
|
||||
"alsoShowIf": "historic=yes"
|
||||
},
|
||||
{
|
||||
"if": "historic=",
|
||||
"then": {
|
||||
"en": "This is not a ghost sign"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"=presets": [],
|
||||
"pointRendering": [
|
||||
{
|
||||
"iconSize": "20,20"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -286,6 +286,10 @@
|
|||
"if": "theme=ghostbikes",
|
||||
"then": "./assets/themes/ghostbikes/logo.svg"
|
||||
},
|
||||
{
|
||||
"if": "theme=ghostsigns",
|
||||
"then": "./assets/themes/advertising/wall_painting.svg"
|
||||
},
|
||||
{
|
||||
"if": "theme=grb",
|
||||
"then": "./assets/themes/grb/logo.svg"
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
"startLon": 4.399,
|
||||
"layers": [
|
||||
"playground",
|
||||
"playground_equipment",
|
||||
{
|
||||
"builtin": [
|
||||
"bench",
|
||||
|
|
|
@ -54,7 +54,54 @@
|
|||
"layers": [
|
||||
"postboxes",
|
||||
"postoffices",
|
||||
"parcel_lockers"
|
||||
"parcel_lockers",
|
||||
{
|
||||
"builtin": "shops",
|
||||
"override": {
|
||||
"minzoom": 18,
|
||||
"minzoomVisible": 18,
|
||||
"description": {
|
||||
"en": "Add a new post partner to the map in an existing shop"
|
||||
},
|
||||
"+tagRenderings": [
|
||||
{
|
||||
"id": "post_partner",
|
||||
"question": {
|
||||
"en": "Is this shop a post partner?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "post_office=post_partner",
|
||||
"then": {
|
||||
"en": "This shop is a post partner"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "post_office=",
|
||||
"then": {
|
||||
"en": "This shop is not a post partner"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"shownByDefault": false,
|
||||
"=presets": [
|
||||
{
|
||||
"tags": [
|
||||
"shop=yes",
|
||||
"post_office=post_partner"
|
||||
],
|
||||
"title": {
|
||||
"en": "a missing shop that is a post partner"
|
||||
},
|
||||
"description": {
|
||||
"en": "If a shop is not yet on the map and is a post partner, you can add it here."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"widenFactor": 1.5,
|
||||
"clustering": {
|
||||
|
|
|
@ -69,6 +69,30 @@ interface CategoryQueryAPIResponse {
|
|||
}
|
||||
}
|
||||
|
||||
interface ImagesQueryAPIResponse {
|
||||
continue: {
|
||||
imcontinue: string
|
||||
continue: string
|
||||
}
|
||||
query: {
|
||||
normalized?: {
|
||||
from: string
|
||||
to: string
|
||||
}[]
|
||||
pages: {
|
||||
[key: string]: {
|
||||
pageid: number
|
||||
ns: number
|
||||
title: string
|
||||
images?: {
|
||||
ns: number
|
||||
title: string
|
||||
}[]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface TemplateQueryAPIResponse {
|
||||
batchcomplete: string
|
||||
query: {
|
||||
|
@ -96,13 +120,14 @@ const licenseMapping = {}
|
|||
// Map template names to license names
|
||||
const templateMapping = {
|
||||
"Template:PD": "Public Domain",
|
||||
"Template:CC0": "CC0 1.0",
|
||||
}
|
||||
|
||||
async function main(args: string[]) {
|
||||
if (args.length < 2) {
|
||||
console.log("Usage: downloadCommons.ts <output folder> <url> <?url> <?url> .. ")
|
||||
console.log(
|
||||
"Example: npx vite-node downloadCommons.ts -- assets/svg https://commons.wikimedia.org/wiki/File:Example.jpg"
|
||||
"Example: npx vite-node scripts/downloadCommons.ts -- assets/svg https://commons.wikimedia.org/wiki/File:Example.jpg"
|
||||
)
|
||||
process.exit(1)
|
||||
}
|
||||
|
@ -128,8 +153,24 @@ async function main(args: string[]) {
|
|||
for (const member of apiDetails.query.categorymembers) {
|
||||
await downloadImage(member.title, outputFolder, baseUrl)
|
||||
}
|
||||
} else {
|
||||
} else if (url.includes("File:")) {
|
||||
await downloadImage(commonsFileName, outputFolder, baseUrl)
|
||||
} else {
|
||||
// Probably a page url, try to get all images from the page
|
||||
const apiUrl = `${baseUrl}/w/api.php?action=query&format=json&prop=images&titles=${commonsFileName}&imlimit=250`
|
||||
const response = await fetch(apiUrl)
|
||||
const apiDetails: ImagesQueryAPIResponse = await response.json()
|
||||
const page = apiDetails.query.pages[Object.keys(apiDetails.query.pages)[0]]
|
||||
if (page.images) {
|
||||
for (const image of page.images) {
|
||||
await downloadImage(image.title, outputFolder, baseUrl)
|
||||
}
|
||||
} else {
|
||||
console.log(
|
||||
"\x1b[31m%s\x1b[0m",
|
||||
`URL ${url} doesn't seem to contain any images! Skipping...`
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log(
|
||||
|
@ -154,6 +195,12 @@ async function downloadImage(filename: string, outputFolder: string, baseUrl: st
|
|||
const apiDetails: ImageQueryAPIResponse = await response.json()
|
||||
const missingPage = apiDetails.query.pages["-1"]
|
||||
|
||||
// Check if the local file already exists, if it does, skip it
|
||||
if (existsSync(`${outputFolder}/${filename}`)) {
|
||||
console.log(`\x1b[33m%s\x1b[0m`, `${filename} already exists, skipping...`)
|
||||
return
|
||||
}
|
||||
|
||||
// Check if the file exists, locally or externally
|
||||
if (missingPage !== undefined) {
|
||||
// Image does not exist locally, check if it exists externally
|
||||
|
@ -271,8 +318,8 @@ async function downloadImage(filename: string, outputFolder: string, baseUrl: st
|
|||
// Save the license information
|
||||
const licenseInfo: SmallLicense = {
|
||||
path: cleanFileName,
|
||||
license: licenseMapping[license] || license,
|
||||
authors: [author],
|
||||
license: licenseMapping[license] || license.replace("CC BY", "CC-BY"),
|
||||
authors: [removeLinks(author)],
|
||||
sources: [wikiUrl],
|
||||
}
|
||||
|
||||
|
@ -293,4 +340,9 @@ async function downloadImage(filename: string, outputFolder: string, baseUrl: st
|
|||
}
|
||||
}
|
||||
|
||||
function removeLinks(text: string): string {
|
||||
// Remove <a> tags
|
||||
return text.replace(/<a.*?>(.*?)<\/a>/g, "$1")
|
||||
}
|
||||
|
||||
main(process.argv.slice(2))
|
||||
|
|
|
@ -5,7 +5,7 @@ import ScriptUtils from "./ScriptUtils"
|
|||
import Script from "./Script"
|
||||
|
||||
const knownLanguages = ["en", "nl", "de", "fr", "es", "gl", "ca"]
|
||||
|
||||
const ignoreTerms = ["searchTerms"]
|
||||
class TranslationPart {
|
||||
contents: Map<string, TranslationPart | string> = new Map<string, TranslationPart | string>()
|
||||
|
||||
|
@ -49,6 +49,7 @@ class TranslationPart {
|
|||
if (!translations.hasOwnProperty(translationsKey)) {
|
||||
continue
|
||||
}
|
||||
|
||||
const v = translations[translationsKey]
|
||||
if (typeof v != "string") {
|
||||
console.error(
|
||||
|
@ -106,6 +107,9 @@ class TranslationPart {
|
|||
if (!object.hasOwnProperty(key)) {
|
||||
continue
|
||||
}
|
||||
if (ignoreTerms.indexOf(key) >= 0) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (dontTranslateKeys?.indexOf(key) >= 0) {
|
||||
continue
|
||||
|
|