forked from MapComplete/MapComplete
		
	Update to climbing theme
This commit is contained in:
		
							parent
							
								
									116371c351
								
							
						
					
					
						commit
						c25e039a91
					
				
					 3 changed files with 32 additions and 18 deletions
				
			
		|  | @ -505,22 +505,27 @@ | ||||||
|         "images", |         "images", | ||||||
|         "questions", |         "questions", | ||||||
|         { |         { | ||||||
|           "#": "Contained routes", |  | ||||||
|           "render": "<h3>Contains the following routes</h3> <ul>{_contained_climbing_routes}</ul>", |  | ||||||
|           "condition": "_contained_climbing_routes~*" |  | ||||||
|         },  { |  | ||||||
|           "#": "Contained routes length hist", |           "#": "Contained routes length hist", | ||||||
|           "render": { |           "render": { | ||||||
|             "en": "<h3>Length overview</h3>{histogram(_length_hist)}" |             "en": "<h3>Length overview</h3>{histogram(_length_hist)}" | ||||||
|           } |           }, | ||||||
|  |           "condition": "_length_hist!~\\[\\]" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           "#": "Contained routes hist", |           "#": "Contained routes hist", | ||||||
|           "render": { |           "render": { | ||||||
|             "en": "<h3>Difficulties overview</h3>{histogram(_difficulty_hist)}" |             "en": "<h3>Difficulties overview</h3>{histogram(_difficulty_hist, , , 3[a-zA-Z+-]*:#56bd56, 4[a-zA-Z+-]*:#ffff59,5[a-zA-Z+-]*:#ffad48, 6[a-zA-Z+-]*:#63a9ff, 7[a-zA-Z+-]*:#ff5858, 8[a-zA-Z+-]*:#000000, .*:#aaa )}" | ||||||
|           } |              | ||||||
|  |           }, | ||||||
|  |           "condition": "_difficulty_hist!~\\[\\]" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           "#": "Containe {_contained_climbing_routes_count} routes", | ||||||
|  |           "render": { | ||||||
|  |            "en": "<h3>Contains {_contained_climbing_routes_count} routes</h3> <ul>{_contained_climbing_routes}</ul>" | ||||||
|  |           }, | ||||||
|  |           "condition": "_contained_climbing_routes~*" | ||||||
|         }, |         }, | ||||||
|        |  | ||||||
|         { |         { | ||||||
|           "#": "name", |           "#": "name", | ||||||
|           "render": { |           "render": { | ||||||
|  | @ -622,7 +627,8 @@ | ||||||
|         "_contained_climbing_routes_properties=feat.overlapWith('climbing_route').map(f => f.feat.properties).map(p => {return {id: p.id, name: p.name, 'climbing:grade:french': p['climbing:grade:french'], 'climbing:length': p['climbing:length']} })", |         "_contained_climbing_routes_properties=feat.overlapWith('climbing_route').map(f => f.feat.properties).map(p => {return {id: p.id, name: p.name, 'climbing:grade:french': p['climbing:grade:french'], 'climbing:length': p['climbing:length']} })", | ||||||
|         "_contained_climbing_routes=JSON.parse(feat.properties._contained_climbing_routes_properties ?? '[]').map(p => `<li><a href='#${p.id}'>${p.name ?? 'climbing route'}</a> (<b>${p['climbing:grade:french'] ?? 'unknown difficulty'}</b>, ${p['climbing:length'] ?? 'unkown length'} meter)</li>`).join('')", |         "_contained_climbing_routes=JSON.parse(feat.properties._contained_climbing_routes_properties ?? '[]').map(p => `<li><a href='#${p.id}'>${p.name ?? 'climbing route'}</a> (<b>${p['climbing:grade:french'] ?? 'unknown difficulty'}</b>, ${p['climbing:length'] ?? 'unkown length'} meter)</li>`).join('')", | ||||||
|         "_difficulty_hist=JSON.parse(feat.properties._contained_climbing_routes_properties ?? '[]').map(p => p['climbing:grade:french'])", |         "_difficulty_hist=JSON.parse(feat.properties._contained_climbing_routes_properties ?? '[]').map(p => p['climbing:grade:french'])", | ||||||
|         "_length_hist=JSON.parse(feat.properties._contained_climbing_routes_properties ?? '[]').map(p => p['climbing:length'])" |         "_length_hist=JSON.parse(feat.properties._contained_climbing_routes_properties ?? '[]').map(p => p['climbing:length'])", | ||||||
|  |         "_contained_climbing_routes_count=JSON.parse(_contained_climbing_routes).length" | ||||||
|       ] |       ] | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -654,15 +660,15 @@ | ||||||
|       }, |       }, | ||||||
|       "title": { |       "title": { | ||||||
|         "render": { |         "render": { | ||||||
|           "en": "Climbing opportunity?", |           "en": "Possible climbing opportunity", | ||||||
|           "nl": "Klimgelegenheid?", |           "nl": "Mogelijke klimgelegenheid", | ||||||
|           "de": "Klettermöglichkeit?", |           "de": "Klettermöglichkeit?", | ||||||
|           "ja": "登坂教室?", |           "ja": "登坂教室?", | ||||||
|           "nb_NO": "Klatremulighet?" |           "nb_NO": "Klatremulighet?" | ||||||
|         } |         } | ||||||
|       }, |       }, | ||||||
|       "description": { |       "description": { | ||||||
|         "nl": "Een klimgelegenheid?", |         "nl": "Een mogelijke klimgelegenheid?", | ||||||
|         "de": "Eine Klettergelegenheit?", |         "de": "Eine Klettergelegenheit?", | ||||||
|         "en": "A climbing opportunity?", |         "en": "A climbing opportunity?", | ||||||
|         "ja": "登坂教室?", |         "ja": "登坂教室?", | ||||||
|  | @ -1226,13 +1232,12 @@ | ||||||
|     } |     } | ||||||
|   ], |   ], | ||||||
|   "overrideAll": { |   "overrideAll": { | ||||||
|     "calculatedTags+": [ |     "+calculatedTags": [ | ||||||
|       "_embedding_feature_properties=feat.overlapWith('climbing').map(f => f.feat.properties).filter(p => p !== undefined).map(p => {return{access: p.access, id: p.id, name: p.name, climbing: p.climbing, 'access:description': p['access:description']}})", |       "_embedding_feature_properties=feat.overlapWith('climbing').map(f => f.feat.properties).filter(p => p !== undefined).map(p => {return{access: p.access, id: p.id, name: p.name, climbing: p.climbing, 'access:description': p['access:description']}})", | ||||||
|       "_embedding_features_with_access=JSON.parse(feat.properties._embedding_feature_properties ?? '[]').filter(p => p.access !== undefined)[0]", |       "_embedding_features_with_access=JSON.parse(feat.properties._embedding_feature_properties ?? '[]').filter(p => p.access !== undefined)[0]", | ||||||
|       "_embedding_feature:access=JSON.parse(feat.properties._embedding_features_with_access ?? '{}').access", |       "_embedding_feature:access=JSON.parse(feat.properties._embedding_features_with_access ?? '{}').access", | ||||||
|       "_embedding_feature:access:description=JSON.parse(feat.properties._embedding_features_with_access ?? '{}')['access:description']", |       "_embedding_feature:access:description=JSON.parse(feat.properties._embedding_features_with_access ?? '{}')['access:description']", | ||||||
|       "_embedding_feature:id=JSON.parse(feat.properties._embedding_features_with_access ?? '{}').id", |       "_embedding_feature:id=JSON.parse(feat.properties._embedding_features_with_access ?? '{}').id" | ||||||
|       "_layer=feat._layer_id" |  | ||||||
|     ] |     ] | ||||||
|   } |   } | ||||||
| } | } | ||||||
							
								
								
									
										9
									
								
								test.ts
									
										
									
									
									
								
							
							
						
						
									
										9
									
								
								test.ts
									
										
									
									
									
								
							|  | @ -10,6 +10,8 @@ import {FixedUiElement} from "./UI/Base/FixedUiElement"; | ||||||
| import Img from "./UI/Base/Img"; | import Img from "./UI/Base/Img"; | ||||||
| import {AttributedImage} from "./UI/Image/AttributedImage"; | import {AttributedImage} from "./UI/Image/AttributedImage"; | ||||||
| import {Imgur} from "./Logic/Web/Imgur"; | import {Imgur} from "./Logic/Web/Imgur"; | ||||||
|  | import ReviewForm from "./UI/Reviews/ReviewForm"; | ||||||
|  | import {OsmConnection} from "./Logic/Osm/OsmConnection"; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| function TestSlideshow(){ | function TestSlideshow(){ | ||||||
|  | @ -17,7 +19,7 @@ function TestSlideshow(){ | ||||||
|         new FixedUiElement("A"), |         new FixedUiElement("A"), | ||||||
|         new FixedUiElement("qmsldkfjqmlsdkjfmqlskdjfmqlksdf").SetClass("text-xl"), |         new FixedUiElement("qmsldkfjqmlsdkjfmqlskdjfmqlksdf").SetClass("text-xl"), | ||||||
|         new Img("https://i.imgur.com/8lIQ5Hv.jpg"), |         new Img("https://i.imgur.com/8lIQ5Hv.jpg"), | ||||||
|         new AttributedImage("https://i.imgur.com/y5XudzW.jpg", new Imgur()), |         new AttributedImage("https://i.imgur.com/y5XudzW.jpg", Imgur.singleton), | ||||||
|         new Img("https://www.grunge.com/img/gallery/the-real-reason-your-cat-sleeps-so-much/intro-1601496900.webp") |         new Img("https://www.grunge.com/img/gallery/the-real-reason-your-cat-sleeps-so-much/intro-1601496900.webp") | ||||||
|     ]) |     ]) | ||||||
|     new SlideShow(elems).AttachTo("maindiv") |     new SlideShow(elems).AttachTo("maindiv") | ||||||
|  | @ -62,5 +64,6 @@ function TestAllInputMethods(){ | ||||||
|     })).AttachTo("maindiv")     |     })).AttachTo("maindiv")     | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | new ReviewForm(() => { | ||||||
| TestSlideshow() |     return undefined; | ||||||
|  | }, new OsmConnection(true, new UIEventSource<string>(undefined), "test")).AttachTo("maindiv"); | ||||||
|  | @ -88,6 +88,12 @@ export default class    TagSpec extends  T{ | ||||||
|                 equal(assign.matchesProperties({"survey:date": "2021-03-29"}), false); |                 equal(assign.matchesProperties({"survey:date": "2021-03-29"}), false); | ||||||
|                 equal(assign.matchesProperties({"_date:now": "2021-03-29"}), false); |                 equal(assign.matchesProperties({"_date:now": "2021-03-29"}), false); | ||||||
|                 equal(assign.matchesProperties({"some_key": "2021-03-29"}), false); |                 equal(assign.matchesProperties({"some_key": "2021-03-29"}), false); | ||||||
|  |                  | ||||||
|  |                 const notEmptyList = FromJSON.Tag("xyz!~\\[\\]") | ||||||
|  |                 equal(notEmptyList.matchesProperties({"xyz":undefined}), true); | ||||||
|  |                 equal(notEmptyList.matchesProperties({"xyz":"[]"}), false); | ||||||
|  |                 equal(notEmptyList.matchesProperties({"xyz":"[\"abc\"]"}), true); | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|             })], |             })], | ||||||
|             ["Is equivalent test", (() => { |             ["Is equivalent test", (() => { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue