forked from MapComplete/MapComplete
Add first version of the food theme
This commit is contained in:
parent
23af637a81
commit
92e8f3f89d
20 changed files with 629 additions and 30 deletions
|
@ -2,7 +2,7 @@ import { Utils } from "../Utils";
|
|||
|
||||
export default class Constants {
|
||||
|
||||
public static vNumber = "0.9.3";
|
||||
public static vNumber = "0.9.4";
|
||||
|
||||
// The user journey states thresholds when a new feature gets unlocked
|
||||
public static userJourney = {
|
||||
|
|
|
@ -23,7 +23,10 @@ export default class Attribution extends Combine {
|
|||
const reportBug = new Link(Svg.bug_ui().SetClass("small-image"), "https://github.com/pietervdvn/MapComplete/issues", true);
|
||||
|
||||
const layoutId = layoutToUse?.data?.id;
|
||||
const osmChaLink = `https://osmcha.org/?filters=%7B%22comment%22%3A%5B%7B%22label%22%3A%22%23${layoutId}%22%2C%22value%22%3A%22%23${layoutId}%22%7D%5D%2C%22date__gte%22%3A%5B%7B%22label%22%3A%222020-07-05%22%2C%22value%22%3A%222020-07-05%22%7D%5D%2C%22editor%22%3A%5B%7B%22label%22%3A%22MapComplete%22%2C%22value%22%3A%22MapComplete%22%7D%5D%7D`
|
||||
const now = new Date()
|
||||
// Note: getMonth is zero-index, we want 1-index but with one substracted, so it checks out!
|
||||
const startDate = now.getFullYear()+"-"+now.getMonth()+"-"+now.getDate()
|
||||
const osmChaLink = `https://osmcha.org/?filters=%7B%22comment%22%3A%5B%7B%22label%22%3A%22%23${layoutId}%22%2C%22value%22%3A%22%23${layoutId}%22%7D%5D%2C%22date__gte%22%3A%5B%7B%22label%22%3A%22${startDate}%22%2C%22value%22%3A%222020-07-05%22%7D%5D%2C%22editor%22%3A%5B%7B%22label%22%3A%22MapComplete%22%2C%22value%22%3A%22MapComplete%22%7D%5D%7D`
|
||||
const stats = new Link(Svg.statistics_ui().SetClass("small-image"), osmChaLink, true)
|
||||
|
||||
|
||||
|
|
|
@ -256,6 +256,9 @@ export class OH {
|
|||
start?: string,
|
||||
end?: string
|
||||
} {
|
||||
if(str === undefined){
|
||||
return null
|
||||
}
|
||||
str = str.trim();
|
||||
if (!str.startsWith("PH")) {
|
||||
return null;
|
||||
|
|
|
@ -111,9 +111,10 @@ export class Translation extends BaseUIElement {
|
|||
rtext = date.toLocaleString();
|
||||
} else if (el.ConstructElement === undefined) {
|
||||
console.error("ConstructElement is not defined", el);
|
||||
throw "ConstructElement is not defined, you are working with a "+(typeof el)+":"+(el.constructor.name)
|
||||
throw "ConstructElement is not defined, you are working with a " + (typeof el) + ":" + (el.constructor.name)
|
||||
}else if(el["translations"] !== undefined){
|
||||
rtext = el["translations"][lang]
|
||||
} else {
|
||||
Translation.forcedLanguage = lang; // This is a very dirty hack - it'll bite me one day
|
||||
rtext = el.ConstructElement().innerHTML;
|
||||
|
||||
}
|
||||
|
@ -126,7 +127,6 @@ export class Translation extends BaseUIElement {
|
|||
}
|
||||
newTranslations[lang] = template;
|
||||
}
|
||||
Translation.forcedLanguage = undefined;
|
||||
return new Translation(newTranslations);
|
||||
|
||||
}
|
||||
|
|
BIN
assets/layers/.DS_Store
vendored
BIN
assets/layers/.DS_Store
vendored
Binary file not shown.
31
assets/layers/food/Vegetarian-mark.svg
Normal file
31
assets/layers/food/Vegetarian-mark.svg
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.0"
|
||||
width="340pt"
|
||||
height="362pt"
|
||||
viewBox="0 0 340 362">
|
||||
<title>Vegetarian mark</title>
|
||||
<metadata>
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Vegetarian mark</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="matrix(0.1,0,0,-0.1,0,362)"
|
||||
style="fill:#000000;stroke:none">
|
||||
<path
|
||||
d="m 3190,3550 c -80,-21 -249,-59 -375,-84 -321,-63 -372,-82 -515,-188 -203,-151 -345,-443 -344,-708 1,-101 16,-173 33,-154 4,5 18,34 30,64 61,147 238,371 389,492 77,62 232,123 232,91 0,-11 -53,-77 -116,-143 -59,-63 -79,-89 -190,-250 -115,-169 -265,-471 -366,-740 -98,-261 -170,-469 -218,-625 -81,-267 -154,-478 -167,-482 -16,-6 -60,137 -152,492 -143,556 -204,747 -350,1095 -100,237 -232,427 -500,718 -147,161 -356,315 -482,357 -82,28 -89,14 -27,-55 292,-329 461,-573 640,-920 151,-295 255,-588 444,-1260 48,-172 154,-610 188,-780 38,-189 80,-374 91,-403 4,-9 19,-21 34,-25 34,-9 198,-9 233,0 52,15 62,56 134,528 48,319 89,510 171,795 139,486 287,842 377,900 13,8 77,24 144,35 260,43 469,158 617,341 99,122 125,212 150,512 13,159 21,204 51,299 19,62 32,118 30,125 -7,18 -23,16 -186,-27 z"
|
||||
style="fill:#017f00" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
25
assets/layers/food/fastfood.svg
Normal file
25
assets/layers/food/fastfood.svg
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.1"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
id="svg2">
|
||||
<metadata id="metadata8">
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title/>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs id="defs6"/>
|
||||
<rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/>
|
||||
<path d="M 5,3 C 2,3 0.960032,5.000799 1,6 L 1,7 13,7 13,6 C 13,5 12,3 9,3 z M 1,8 C 0,8 0,9 1,9 l 12,0 c 1,0 1,-1 0,-1 z m 0,2.03125 0,0.625 C 1,11.34045 1.81579,12 2.5,12 l 9,0 c 0.68421,0 1.5,-0.65955 1.5,-1.34375 l 0,-0.625 z" id="fast-food" style="fill:#C77400;fill-opacity:1;stroke:none" transform="translate(1,1)"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
381
assets/layers/food/food.json
Normal file
381
assets/layers/food/food.json
Normal file
|
@ -0,0 +1,381 @@
|
|||
{
|
||||
"id": "food",
|
||||
"name": {
|
||||
"nl": "Eetgelegenheden",
|
||||
"en": "Restaurants and fast food"
|
||||
},
|
||||
"source": {
|
||||
"osmTags": {
|
||||
"or": [
|
||||
"amenity=fast_food",
|
||||
"amenity=restaurant"
|
||||
]
|
||||
}
|
||||
},
|
||||
"wayHandling": 1,
|
||||
"icon": {
|
||||
"render": "circle:white;./assets/layers/food/restaurant.svg",
|
||||
"mappings": [
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"amenity=fast_food",
|
||||
"cuisine=friture"
|
||||
]
|
||||
},
|
||||
"then": "circle:white;./assets/layers/food/fries.svg"
|
||||
},
|
||||
{
|
||||
"if": "amenity=fast_food",
|
||||
"then": "circle:white;./assets/layers/food/fastfood.svg"
|
||||
}
|
||||
]
|
||||
},
|
||||
"iconOverlays": [
|
||||
{
|
||||
"if": "opening_hours~*",
|
||||
"then": "isOpen",
|
||||
"badge": true
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"or": [
|
||||
"diet:vegetarian=yes",
|
||||
"diet:vegan=yes"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"render": "circle:white;./assets/themes/fritures/Vegetarian-mark.svg"
|
||||
},
|
||||
"badge": true
|
||||
}
|
||||
],
|
||||
"label": {
|
||||
"mappings": [
|
||||
{
|
||||
"if": "name~*",
|
||||
"then": "<div style='background: white; padding: 0.25em; border-radius:0.5em'>{name}</div>"
|
||||
}
|
||||
]
|
||||
},
|
||||
"presets": [
|
||||
{
|
||||
"title": {
|
||||
"en": "restaurant",
|
||||
"nl": "restaurant"
|
||||
},
|
||||
"tags": [
|
||||
"amenity=restaurant"
|
||||
],
|
||||
"description": {
|
||||
"nl": "Een eetgegelegenheid waar je aan tafel wordt bediend",
|
||||
"en": "A formal eating place with sit-down facilities selling full meals served by waiters"
|
||||
},
|
||||
"preciseInput": {
|
||||
"preferredBackground": "map"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"en": "fastfood",
|
||||
"nl": "fastfood-zaak"
|
||||
},
|
||||
"tags": [
|
||||
"amenity=fast_food"
|
||||
],
|
||||
"description": {
|
||||
"nl": "Een zaak waar je snel bediend wordt, vaak met de focus op afhalen. Zitgelegenheid is eerder beperkt tot afwezig"
|
||||
},
|
||||
"preciseInput": {
|
||||
"preferredBackground": "map"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"en": "Friture",
|
||||
"nl": "Friture"
|
||||
},
|
||||
"tags": [
|
||||
"amenity=fast_food",
|
||||
"cuisine=friture"
|
||||
],
|
||||
"description": {
|
||||
"nl": "Een fastfood-zaak waar je frieten koopt"
|
||||
},
|
||||
"preciseInput": {
|
||||
"preferredBackground": "map"
|
||||
}
|
||||
}
|
||||
],
|
||||
"title": {
|
||||
"render": {
|
||||
"nl": "Eetgelegenheid"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"name~*",
|
||||
"amenity=restaurant"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Restaurant <i>{name}</i>",
|
||||
"en": "Restaurant <i>{name}</i>"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"name~*",
|
||||
"amenity=fast_food"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Fastfood-zaak <i>{name}</i>",
|
||||
"en": "Fastfood <i>{name}</i>"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"tagRenderings": [
|
||||
"images",
|
||||
{
|
||||
"question": {
|
||||
"nl": "Wat is de naam van deze eetgelegenheid?"
|
||||
},
|
||||
"render": {
|
||||
"nl": "De naam van deze eetgelegeheid is {name}"
|
||||
},
|
||||
"freeform": {
|
||||
"key": "name"
|
||||
}
|
||||
},
|
||||
"opening_hours",
|
||||
"website",
|
||||
"email",
|
||||
"phone",
|
||||
|
||||
{
|
||||
"question": {
|
||||
"nl": "Heeft deze eetgelegenheid een vegetarische optie?",
|
||||
"en": "Does this restaurant have a vegetarian option?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "diet:vegetarian=no",
|
||||
"then": {
|
||||
"nl": "Geen vegetarische opties beschikbaar"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "diet:vegetarian=limited",
|
||||
"then": {
|
||||
"nl": "Beperkte vegetarische opties zijn beschikbaar"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "diet:vegetarian=yes",
|
||||
"then": {
|
||||
"nl": "Vegetarische opties zijn beschikbaar"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "diet:vegetarian=only",
|
||||
"then": {
|
||||
"nl": "Enkel vegetarische opties zijn beschikbaar"
|
||||
}
|
||||
}
|
||||
],
|
||||
"condition": "cuisine!=friture"
|
||||
},
|
||||
|
||||
{
|
||||
"question": {
|
||||
"nl": "Heeft deze eetgelegenheid een veganistische optie?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "diet:vegan=no",
|
||||
"then": {
|
||||
"nl": "Geen veganistische opties beschikbaar"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "diet:vegan=limited",
|
||||
"then": {
|
||||
"nl": "Beperkte veganistische opties zijn beschikbaar"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "diet:vegan=yes",
|
||||
"then": {
|
||||
"nl": "Veganistische opties zijn beschikbaar"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "diet:vegan=only",
|
||||
"then": {
|
||||
"nl": "Enkel veganistische opties zijn beschikbaar"
|
||||
}
|
||||
}
|
||||
],
|
||||
"condition": "cuisine!=friture"
|
||||
},
|
||||
|
||||
{
|
||||
"question": {
|
||||
"nl": "Heeft deze frituur vegetarische snacks?",
|
||||
"fr": "Cette friterie est-elle équipée de snacks végétariens ?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"diet:vegetarian=yes"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Er zijn vegetarische snacks aanwezig",
|
||||
"fr": "Des collations végétariennes sont disponibles"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"diet:vegetarian=limited"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Slechts enkele vegetarische snacks",
|
||||
"fr": "Quelques snacks végétariens seulement"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"diet:vegetarian=no"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Geen vegetarische snacks beschikbaar",
|
||||
"fr": "Pas d'en-cas végétariens disponibles"
|
||||
}
|
||||
}
|
||||
],
|
||||
"condition": "cuisine=friture"
|
||||
},
|
||||
{
|
||||
"question": {
|
||||
"nl": "Heeft deze frituur veganistische snacks?",
|
||||
"fr": "Cette friterie est-elle équipée de snacks végétaliens ?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"diet:vegan=yes"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Er zijn veganistische snacks aanwezig",
|
||||
"fr": "Des collations végétaliens sont disponibles"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"diet:vegan=limited"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Slechts enkele veganistische snacks",
|
||||
"fr": "Quelques snacks végétaliens seulement"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"diet:vegetarian=no"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Geen veganistische snacks beschikbaar",
|
||||
"fr": "Pas d'en-cas végétaliens disponibles"
|
||||
}
|
||||
}
|
||||
],
|
||||
"condition": "cuisine=friture"
|
||||
},
|
||||
{
|
||||
"question": {
|
||||
"nl": "Bakt deze frituur met dierlijk vet of met plantaardige olie?",
|
||||
"fr": "Cette friteuse fonctionne-t-elle avec de la graisse animale ou végétale ?"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"friture:oil=vegetable"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Plantaardige olie",
|
||||
"fr": "Huile végétale"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"friture:oil=animal"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"nl": "Dierlijk vet",
|
||||
"fr": "Graisse animale"
|
||||
}
|
||||
}
|
||||
],
|
||||
"condition": "cuisine=friture"
|
||||
},
|
||||
{
|
||||
"question": {
|
||||
"nl": "Als je je eigen container (bv. kookpot of kleine potjes voor saus) meeneemt, gebruikt de frituur deze dan om je bestelling in te doen?",
|
||||
"en": "If you bring your own container (such as a cooking pot and small pots), is it used to package your order?<br/>",
|
||||
"ja": "お客様が持参容器(調理用の鍋や小さな鍋など)をもってきた場合は、注文の梱包に使用されますか?<br/>",
|
||||
"fr": "Est-il proposé d’utiliser ses propres contenants pour sa commande ?<br/>"
|
||||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "bulk_purchase=yes",
|
||||
"then": {
|
||||
"nl": "Je mag je <b>eigen containers</b> meenemen om je bestelling in mee te nemen en zo minder afval te maken",
|
||||
"en": "You can bring <b>your own containers</b> to get your order, saving on single-use packaging material and thus waste",
|
||||
"ja": "<b>自分の容器</b>を持ってきて、注文を受け取ることができ、使い捨ての梱包材を節約して、無駄を省くことができます",
|
||||
"fr": "Vous pouvez <b>apporter vos contenants</b> pour votre commande, limitant l’usage de matériaux à usage unique et les déchets"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "bulk_purchase=no",
|
||||
"then": {
|
||||
"nl": "Je mag <b>geen</b> eigen containers meenemen om je bestelling in mee te nemen",
|
||||
"en": "Bringing your own container is <b>not allowed</b>",
|
||||
"ja": "独自の容器を持参することは<b>できません</b>",
|
||||
"ru": "Приносить свою тару <b>не разрешено</b>",
|
||||
"fr": "Apporter ses propres contenants <b>n’est pas permis</b>"
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": "bulk_purchase=only",
|
||||
"then": {
|
||||
"nl": "Je <b>moet</b> je eigen containers meenemen om je bestelling in mee te nemen.",
|
||||
"en": "You <b>must</b> bring your own container to order here.",
|
||||
"ja": "自身の容器が注文に<b>必要</b>。",
|
||||
"fr": "Il est <b>obligatoire</b> d’apporter ses propres contenants"
|
||||
}
|
||||
}
|
||||
],
|
||||
"condition": "cuisine=friture"
|
||||
}
|
||||
]
|
||||
}
|
1
assets/layers/food/fries.svg
Normal file
1
assets/layers/food/fries.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg viewBox="-158 0 511 511.99966" xmlns="http://www.w3.org/2000/svg"><path d="m131.976562 9.859375v208.125h-44.277343v-192.0625c0-3.320313 1.679687-6.417969 4.460937-8.234375l24.589844-16.070312c6.550781-4.273438 15.226562.421874 15.226562 8.242187zm0 0" fill="#ffbd48"/><path d="m130.183594 46.851562c-11.25 0-20.746094 8.417969-22.078125 19.566407l-3.921875 32.734375v-15.71875c0-7.519532-3.761719-14.472656-10.066406-18.582032l-6.417969-4.191406v157.328125h44.277343v-171.0625c-.597656-.050781-1.195312-.074219-1.792968-.074219zm0 0" fill="#ff9c26"/><path d="m62.953125 25.921875v142.863281h-44.277344v-158.925781c0-7.820313 8.675781-12.515625 15.226563-8.242187l24.589844 16.070312c2.78125 1.816406 4.460937 4.914062 4.460937 8.234375zm0 0" fill="#ffdf4a"/><path d="m57.402344 45.152344c1.882812 0 3.75.246094 5.550781.722656v122.910156h-27.773437v-101.410156c0-12.25 9.972656-22.222656 22.222656-22.222656zm0 0" fill="#ffbd48"/><path d="m162.417969 89.109375-.886719 7.429687-16.109375 134.429688-40.085937-4.8125-3.882813-.464844 18.925781-157.800781c.925782-7.757813 10.09375-11.386719 16.089844-6.367187l22.507812 18.882812c2.546876 2.132812 3.84375 5.40625 3.441407 8.703125zm0 0" fill="#ffdf4a"/><path d="m161.53125 96.539062-16.109375 134.429688-40.085937-4.8125 31.140624-111.175781c2.03125-7.242188 7.53125-12.917969 14.703126-15.175781zm0 0" fill="#ffbd48"/><path d="m91.816406 226.304688h-44.277344v-158.929688c0-7.816406 8.675782-12.511719 15.222657-8.238281l24.597656 16.066406c2.78125 1.816406 4.457031 4.914063 4.457031 8.238281zm0 0" fill="#ffdf4a"/><path d="m109.835938 255.886719 42.636718 11.945312 42.878906-153.035156c2.109376-7.527344-4.976562-14.390625-12.433593-12.039063l-28.019531 8.832032c-3.167969 1-5.621094 3.53125-6.515626 6.726562zm0 0" fill="#ffdf4a"/><path d="m194.777344 208.085938-32.523438 68.703124-59.0625 124.753907-49.621094 104.8125c-4.492187 9.488281-18.730468 6.292969-18.730468-4.203125l-11.15625-123.386719-13.144532-145.441406-9.992187-110.484375c-.898437-9.921875 11.761719-14.652344 17.707031-6.667969 46.894532 62.964844 133.945313 75.429687 168.34375 77.882813 6.902344.496093 11.136719 7.777343 8.179688 14.03125zm0 0" fill="#ff5656"/><path d="m194.777344 208.085938-32.523438 68.703124-59.058594 124.753907-49.625 104.8125c-4.492187 9.488281-18.726562 6.292969-18.726562-4.203125l-.3125-3.390625 145.988281-305.199219c2.175781.195312 4.203125.359375 6.078125.492188 6.902344.496093 11.136719 7.777343 8.179688 14.03125zm0 0" fill="#f72d2d"/><path d="m162.304688 276.789062-59.058594 124.753907-19.480469-5.582031-60.027344-17.195313-1.804687-19.964844-8.210938-90.859375-3.128906-34.613281 132.777344 38.03125zm0 0" fill="#fe9e80"/><path d="m162.304688 276.789062-59.058594 124.753907-19.480469-5.582031 59.605469-124.601563zm0 0" fill="#fe835f"/><path d="m56.722656 314.019531c0 21.59375-14.816406 39.726563-34.839844 44.78125l-8.210937-90.859375c24.042969 1.605469 43.050781 21.621094 43.050781 46.078125zm0 0" fill="#ffdf4a"/></svg>
|
After Width: | Height: | Size: 2.9 KiB |
42
assets/layers/food/license_info.json
Normal file
42
assets/layers/food/license_info.json
Normal file
|
@ -0,0 +1,42 @@
|
|||
[
|
||||
{
|
||||
"authors": [
|
||||
"OSM Carto"
|
||||
],
|
||||
"path": "fastfood.svg",
|
||||
"license": "CC0",
|
||||
"sources": [
|
||||
"https://wiki.openstreetmap.org/w/images/1/1f/Fast-food-16.svg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"authors": [
|
||||
"OSM Carto"
|
||||
],
|
||||
"path": "restaurant.svg",
|
||||
"license": "CC0",
|
||||
"sources": [
|
||||
"https://wiki.openstreetmap.org/w/images/b/bb/Restaurant-14.svg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"authors": [
|
||||
"European Vegetarian Union"
|
||||
],
|
||||
"path": "Vegetarian-mark.svg",
|
||||
"license": "PD",
|
||||
"sources": [
|
||||
"https://commons.wikimedia.org/wiki/File:Vegetarian-mark.svg"
|
||||
]
|
||||
},
|
||||
{
|
||||
"authors": [
|
||||
"Freepik"
|
||||
],
|
||||
"path": "fries.svg",
|
||||
"license": "CC-BY",
|
||||
"sources": [
|
||||
"https://www.flaticon.com/free-icon/french-fries_1144288"
|
||||
]
|
||||
}
|
||||
]
|
31
assets/layers/food/restaurant.svg
Normal file
31
assets/layers/food/restaurant.svg
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 14 14"
|
||||
height="14"
|
||||
width="14"
|
||||
id="svg109"
|
||||
version="1.1">
|
||||
<metadata
|
||||
id="metadata115">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs113" />
|
||||
<path
|
||||
id="restaurant"
|
||||
d="M 1.5 0 C 1.25 0 1 0.25 1 0.75 L 1 7 C 1 8 2.75 8 2.75 9 L 2.25 14 L 4.75 14 L 4.25 9 C 4.25 8 6 8 6 7 L 6 0.75 C 6 -0.25 5 -0.25 5 0.75 L 5 6 C 5 6.5632885 4 6.5632884 4 6 L 4 0.75 C 4 -0.25 3 -0.25 3 0.75 L 3 6 C 3 6.5273339 2 6.5273339 2 6 L 2 0.75 C 2 0.25 1.75 0 1.5 0 z M 10 0 C 9 0 7 2 7 5 C 7 8 9.25 9 9.25 9 L 8.75 14 L 11.25 14 L 10.75 9 C 10.75 9 13 8 13 5 C 13 2 11 0 10 0 z "
|
||||
style="fill:#C77400" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
26
assets/themes/food/food.json
Normal file
26
assets/themes/food/food.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"id": "food",
|
||||
"title": {
|
||||
"nl": "Eetgelegenheden",
|
||||
"en": "Restaurants and fast food"
|
||||
},
|
||||
"description": {
|
||||
"nl": "Restaurants en fast food"
|
||||
},
|
||||
"language": [
|
||||
"nl",
|
||||
"fr",
|
||||
"en"
|
||||
],
|
||||
"maintainer": "",
|
||||
"icon": "./assets/layers/food/restaurant.svg",
|
||||
"version": "0",
|
||||
"startLat": 0,
|
||||
"startLon": 0,
|
||||
"startZoom": 1,
|
||||
"widenFactor": 0.05,
|
||||
"socialImage": "",
|
||||
"layers": [
|
||||
"food"
|
||||
]
|
||||
}
|
|
@ -229,7 +229,7 @@
|
|||
},
|
||||
{
|
||||
"question": {
|
||||
"nl": "Bakt deze frituur in dierlijk vetof plantaardig olie?",
|
||||
"nl": "Bakt deze frituur met dierlijk vet of met plantaardige olie?",
|
||||
"fr": "Cette friteuse fonctionne-t-elle avec de la graisse animale ou végétale ?"
|
||||
},
|
||||
"mappings": [
|
||||
|
@ -266,7 +266,7 @@
|
|||
},
|
||||
"mappings": [
|
||||
{
|
||||
"if": "bulk_purchase=yes",
|
||||
"if": "reusable_packaging:accept=yes",
|
||||
"then": {
|
||||
"nl": "Je mag je <b>eigen containers</b> meenemen om je bestelling in mee te nemen en zo minder afval te maken",
|
||||
"en": "You can bring <b>your own containers</b> to get your order, saving on single-use packaging material and thus waste",
|
||||
|
@ -275,7 +275,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"if": "bulk_purchase=no",
|
||||
"if": "reusable_packaging:accept=no",
|
||||
"then": {
|
||||
"nl": "Je mag <b>geen</b> eigen containers meenemen om je bestelling in mee te nemen",
|
||||
"en": "Bringing your own container is <b>not allowed</b>",
|
||||
|
@ -285,7 +285,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"if": "bulk_purchase=only",
|
||||
"if": "reusable_packaging:accept=only",
|
||||
"then": {
|
||||
"nl": "Je <b>moet</b> je eigen containers meenemen om je bestelling in mee te nemen.",
|
||||
"en": "You <b>must</b> bring your own container to order here.",
|
||||
|
|
4
index.ts
4
index.ts
|
@ -21,6 +21,7 @@ import * as L from "leaflet";
|
|||
import ValidatedTextField from "./UI/Input/ValidatedTextField";
|
||||
import AvailableBaseLayers from "./Logic/Actors/AvailableBaseLayers";
|
||||
import LayoutConfig from "./Models/ThemeConfig/LayoutConfig";
|
||||
import Constants from "./Models/Constants";
|
||||
|
||||
// Workaround for a stupid crash: inject some functions which would give stupid circular dependencies or crash the other nodejs scripts
|
||||
SimpleMetaTagger.coder = new CountryCoder("https://pietervdvn.github.io/latlon2country/");
|
||||
|
@ -159,7 +160,8 @@ if (layoutFromBase64.startsWith("http")) {
|
|||
new FixedUiElement("").AttachTo("centermessage")
|
||||
State.state = new State(undefined);
|
||||
new Combine([new MoreScreen(true),
|
||||
Translations.t.general.aboutMapcomplete.SetClass("link-underline")
|
||||
Translations.t.general.aboutMapcomplete.SetClass("link-underline"),
|
||||
new FixedUiElement("v"+Constants.vNumber)
|
||||
]).SetClass("block m-5 lg:w-3/4 lg:ml-40")
|
||||
.SetStyle("pointer-events: all;")
|
||||
.AttachTo("topleft-tools");
|
||||
|
|
|
@ -1499,6 +1499,28 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"food": {
|
||||
"name": "Restaurants and fast food",
|
||||
"presets": {
|
||||
"0": {
|
||||
"title": "restaurant",
|
||||
"description": "A formal eating place with sit-down facilities selling full meals served by waiters"
|
||||
},
|
||||
"1": {
|
||||
"title": "fastfood"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Restaurant <i>{name}</i>"
|
||||
},
|
||||
"1": {
|
||||
"then": "Fastfood <i>{name}</i>"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ghost_bike": {
|
||||
"name": "Ghost bikes",
|
||||
"title": {
|
||||
|
|
|
@ -1555,6 +1555,36 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"food": {
|
||||
"name": "Eetgelegenheden",
|
||||
"presets": {
|
||||
"0": {
|
||||
"title": "restaurant",
|
||||
"description": "Een eetgegelegenheid waar je aan tafel wordt bediend"
|
||||
},
|
||||
"1": {
|
||||
"title": "fastfood-zaak",
|
||||
"description": "Een zaak waar je snel bediend wordt, vaak met de focus op afhalen. Zitgelegenheid is eerder beperkt tot afwezig"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": "Eetgelegenheid",
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Restaurant <i>{name}</i>"
|
||||
},
|
||||
"1": {
|
||||
"then": "Fastfood-zaak <i>{name}</i>"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"1": {
|
||||
"question": "Wat is de naam van deze eetgelegenheid?",
|
||||
"render": "De naam van deze eetgelegeheid is {name}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ghost_bike": {
|
||||
"name": "Witte Fietsen",
|
||||
"title": {
|
||||
|
|
|
@ -52,11 +52,12 @@
|
|||
"intro": "Je klikte ergens waar er nog geen data is. Kies hieronder welk punt je wilt toevoegen<br/>",
|
||||
"pleaseLogin": "<a class='activate-osm-authentication'>Gelieve je aan te melden om een punt to te voegen</a>",
|
||||
"zoomInFurther": "Gelieve verder in te zoomen om een punt toe te voegen.",
|
||||
"stillLoading": "De data wordt nog geladen. Nog even geduld en dan kan je een punt toevoegen.",
|
||||
"stillLoading": "De data worden nog geladen. Nog even geduld en dan kan je een punt toevoegen.",
|
||||
"confirmIntro": "<h3>Voeg hier een {title} toe?</h3>Het punt dat je hier toevoegt, is <b>zichtbaar voor iedereen</b>. Veel applicaties gebruiken deze data, voeg dus enkel punten toe die echt bestaan.",
|
||||
"confirmButton": "Voeg hier een {category} toe<br/><div class='alert'>Je toevoeging is voor iedereen zichtbaar</div>",
|
||||
"openLayerControl": "Open de laag-instellingen",
|
||||
"layerNotEnabled": "De laag {layer} is gedeactiveerd. Activeer deze om een punt toe te voegen"
|
||||
"layerNotEnabled": "De laag {layer} is gedeactiveerd. Activeer deze om een punt toe te voegen",
|
||||
"presetInfo": "Het nieuwe punt krijgt de attributen {tags}"
|
||||
},
|
||||
"pickLanguage": "Kies je taal: ",
|
||||
"about": "Bewerk en voeg data toe aan OpenStreetMap over een specifiek onderwerp op een gemakkelijke manier",
|
||||
|
|
|
@ -692,6 +692,18 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"cycle_highways": {
|
||||
"title": "Cycle highways",
|
||||
"description": "This map shows cycle highways",
|
||||
"layers": {
|
||||
"0": {
|
||||
"name": "cycle highways",
|
||||
"title": {
|
||||
"render": "cycle highway"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cycle_infra": {
|
||||
"title": "Bicycle infrastructure",
|
||||
"shortDescription": "A map where you can view and edit things related to the bicycle infrastructure.",
|
||||
|
@ -845,6 +857,9 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"food": {
|
||||
"title": "Restaurants and fast food"
|
||||
},
|
||||
"fritures": {
|
||||
"layers": {
|
||||
"0": {
|
||||
|
|
|
@ -733,6 +733,10 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"food": {
|
||||
"title": "Eetgelegenheden",
|
||||
"description": "Restaurants en fast food"
|
||||
},
|
||||
"fritures": {
|
||||
"title": "Friturenkaart",
|
||||
"description": "Op deze kaart vind je je favoriete frituur!",
|
||||
|
|
|
@ -65,12 +65,6 @@ function missingLicenseInfos(licenseInfos: SmallLicense[], allIcons: string[]) {
|
|||
const prompt = require('prompt-sync')();
|
||||
|
||||
const knownLicenses = new Map<string, SmallLicense>()
|
||||
knownLicenses.set("cf", {
|
||||
authors: ["Pieter Fiers", "Thibault Declercq", "Pierre Barban", "Joost Schouppe", "Pieter Vander Vennet"],
|
||||
path: undefined,
|
||||
license: "CC-BY-SA",
|
||||
sources: ["https://osoc.be/editions/2020/cyclofix"]
|
||||
})
|
||||
knownLicenses.set("me", {
|
||||
authors: ["Pieter Vander Vennet"],
|
||||
path: undefined,
|
||||
|
@ -92,19 +86,7 @@ knownLicenses.set("na", {
|
|||
sources: []
|
||||
})
|
||||
|
||||
knownLicenses.set("chrn", {
|
||||
authors: ["Christian Neumann"],
|
||||
path: undefined,
|
||||
license: "CC-BY-SA 3.0",
|
||||
sources: ["https://utopicode.de/", "https://github.com/chrneumann/MapComplete"]
|
||||
})
|
||||
|
||||
knownLicenses.set("klimaan", {
|
||||
authors: ["Klimaan VZW"],
|
||||
path: undefined,
|
||||
license: "CC-BY-SA 3.0",
|
||||
sources: ["https://klimaan.be/"]
|
||||
})
|
||||
|
||||
function promptLicenseFor(path): SmallLicense {
|
||||
console.log("License abbreviations:")
|
||||
|
|
Loading…
Reference in a new issue