forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			122 lines
		
	
	
		
			No EOL
		
	
	
		
			4.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			No EOL
		
	
	
		
			4.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import {LayerDefinition} from "../LayerDefinition";
 | |
| import FixedText from "../Questions/FixedText";
 | |
| import {ImageCarouselWithUploadConstructor} from "../../UI/Image/ImageCarouselWithUpload";
 | |
| import {And, Tag} from "../../Logic/TagsFilter";
 | |
| import {TagRenderingOptions} from "../TagRenderingOptions";
 | |
| 
 | |
| export class InformationBoard extends LayerDefinition {
 | |
|     constructor() {
 | |
|         super("informationBoard",{
 | |
|             name: "Informatiebord",
 | |
|             description: "Een informatiebord of kaart",
 | |
|             minzoom: 12,
 | |
|             overpassFilter: new Tag("tourism", "information"),
 | |
|             presets: [{
 | |
|                 title: "Informatiebord",
 | |
|                 tags: [new Tag("tourism", "information")]
 | |
|             },
 | |
|                 {
 | |
|                     title: "Kaart",
 | |
|                     tags: [new Tag("tourism", "information"), new Tag("information", "map")]
 | |
|                 }],
 | |
|             maxAllowedOverlapPercentage: 0,
 | |
|             icon: "assets/nature/info.png",
 | |
|         });
 | |
| 
 | |
|         const isMap = new Tag("information", "map");
 | |
|         const isOsmSource = new Tag("map_source", "OpenStreetMap");
 | |
| 
 | |
|         this.title = new TagRenderingOptions({
 | |
|             mappings: [
 | |
|                 {k: isMap, txt: "Kaart"},
 | |
|                 {k:null, txt: "Informatiebord"}
 | |
|             ]
 | |
|         });
 | |
| 
 | |
|         this.style = (properties) => {
 | |
|             let icon = "assets/nature/info.png";
 | |
|             if (isMap.matchesProperties(properties)) {
 | |
|                 icon = "assets/map.svg";
 | |
|                 if (isOsmSource.matchesProperties(properties)) {
 | |
|                     icon = "assets/osm-logo-white-bg.svg";
 | |
| 
 | |
|                     const attr = properties["map_source:attribution"];
 | |
|                     if (attr == "sticker") {
 | |
|                         icon = "assets/map-stickered.svg"
 | |
|                     } else if (attr == "no") {
 | |
|                         icon = "assets/osm-logo-buggy-attr.svg"
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             return {
 | |
|                 color: "#000000",
 | |
|                 icon: {
 | |
|                     iconUrl: icon,
 | |
|                     iconSize: [50, 50]
 | |
|                 }
 | |
|             };
 | |
|         }
 | |
| 
 | |
| 
 | |
|         this.elementsToShow = [
 | |
| 
 | |
|             new ImageCarouselWithUploadConstructor(),
 | |
|             
 | |
|             new TagRenderingOptions({
 | |
|                 question: "Heeft dit informatiebord een kaart?",
 | |
|                 mappings: [
 | |
|                     {k: new Tag("information","board"), txt: "Dit is een informatiebord"},
 | |
|                     {k: isMap, txt: "Dit is een kaart"}
 | |
|                 ]
 | |
|             }),
 | |
| 
 | |
|             new TagRenderingOptions({
 | |
|                 question: "Is this map based on OpenStreetMap?",
 | |
|                 mappings: [
 | |
|                     {
 | |
|                         k: isOsmSource,
 | |
|                         txt: "This map is based on OpenStreetMap"
 | |
|                     },
 | |
|                     {
 | |
|                         k: new And([new Tag("map_source:attribution", ""), new Tag("map_source","")]),
 | |
|                         txt: "Unknown"
 | |
|                     },
 | |
|                 ],
 | |
|                 freeform: {
 | |
|                     key: "map_source",
 | |
|                     extraTags: new Tag("map_source:attribution", ""),
 | |
|                     renderTemplate: "The map data is based on {map_source}",
 | |
|                     template: "The map data is based on $$$"
 | |
|                 }
 | |
|             }).OnlyShowIf(isMap),
 | |
|             new TagRenderingOptions({
 | |
|                 question: "Is the attribution present?",
 | |
|                 mappings: [
 | |
|                     {
 | |
|                         k: new Tag("map_source:attribution", "yes"),
 | |
|                         txt: "OpenStreetMap is clearly attributed, including the ODBL-license"
 | |
|                     },
 | |
|                     {
 | |
|                         k: new Tag("map_source:attribution", "incomplete"),
 | |
|                         txt: "OpenStreetMap is clearly attributed, but the license is not mentioned"
 | |
|                     },
 | |
|                     {
 | |
|                         k: new Tag("map_source:attribution", "sticker"),
 | |
|                         txt: "OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it"
 | |
|                     },
 | |
|                     {
 | |
|                         k: new Tag("map_source:attribution", "no"),
 | |
|                         txt: "There is no attribution at all"
 | |
|                     },
 | |
|                     {
 | |
|                         k: new Tag("map_source:attribution", "none"),
 | |
|                         txt: "There is no attribution at all"
 | |
|                     }
 | |
|                 ]
 | |
|             }).OnlyShowIf(new Tag("map_source", "OpenStreetMap"))
 | |
|         ]
 | |
| 
 | |
| 
 | |
|     }
 | |
| } |