forked from MapComplete/MapComplete
		
	Docs: improve comments, error checking and defaults
This commit is contained in:
		
							parent
							
								
									65da7155fa
								
							
						
					
					
						commit
						ac9792ac43
					
				
					 6 changed files with 47 additions and 3 deletions
				
			
		|  | @ -535,7 +535,7 @@ export class PrepareTheme extends Fuse<LayoutConfigJson> { | |||
|             new SetDefault("socialImage", "assets/SocialImage.png", true), | ||||
|             // We expand all tagrenderings first...
 | ||||
|             new On("layers", new Each(new PrepareLayer(state))), | ||||
|             // Then we apply the override all
 | ||||
|             // Then we apply the override all. We must first expand everything in case that we override something in an expanded tag
 | ||||
|             new ApplyOverrideAll(), | ||||
|             // And then we prepare all the layers _again_ in case that an override all contained unexpanded tagrenderings!
 | ||||
|             new On("layers", new Each(new PrepareLayer(state))), | ||||
|  |  | |||
|  | @ -882,6 +882,10 @@ class MiscTagRenderingChecks extends DesugaringStep<TagRenderingConfigJson> { | |||
|                 ) | ||||
|         } | ||||
| 
 | ||||
|         if(json.icon?.["size"]){ | ||||
|             context.enters("icon","size").err("size is not a valid attribute. Did you mean 'class'? Class can be one of `small`, `medium` or `large`") | ||||
|         } | ||||
| 
 | ||||
|         if (json.freeform) { | ||||
|             if (json.render === undefined) { | ||||
|                 context | ||||
|  |  | |||
|  | @ -153,7 +153,7 @@ export default class TagRenderingConfig { | |||
|             this.renderIconClass = "small" | ||||
|         } else if (typeof json.icon === "object") { | ||||
|             this.renderIcon = json.icon.path | ||||
|             this.renderIconClass = json.icon.class | ||||
|             this.renderIconClass = json.icon.class ?? "small" | ||||
|         } | ||||
|         this.metacondition = TagUtils.Tag( | ||||
|             json.metacondition ?? { and: [] }, | ||||
|  |  | |||
|  | @ -27,6 +27,7 @@ import IconValidator from "./Validators/IconValidator" | |||
| import TagValidator from "./Validators/TagValidator" | ||||
| import IdValidator from "./Validators/IdValidator" | ||||
| import SlopeValidator from "./Validators/SlopeValidator" | ||||
| import VeloparkValidator from "./Validators/VeloparkValidator" | ||||
| 
 | ||||
| export type ValidatorType = (typeof Validators.availableTypes)[number] | ||||
| 
 | ||||
|  | @ -58,6 +59,7 @@ export default class Validators { | |||
|         "fediverse", | ||||
|         "id", | ||||
|         "slope", | ||||
|         "velopark" | ||||
|     ] as const | ||||
| 
 | ||||
|     public static readonly AllValidators: ReadonlyArray<Validator> = [ | ||||
|  | @ -86,6 +88,7 @@ export default class Validators { | |||
|         new FediverseValidator(), | ||||
|         new IdValidator(), | ||||
|         new SlopeValidator(), | ||||
|         new VeloparkValidator() | ||||
|     ] | ||||
| 
 | ||||
|     private static _byType = Validators._byTypeConstructor() | ||||
|  |  | |||
							
								
								
									
										37
									
								
								src/UI/InputElement/Validators/VeloparkValidator.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/UI/InputElement/Validators/VeloparkValidator.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | |||
| import { Translation } from "../../i18n/Translation" | ||||
| import UrlValidator from "./UrlValidator" | ||||
| 
 | ||||
| export default class VeloparkValidator extends UrlValidator { | ||||
|     constructor() { | ||||
|         super("velopark", "A custom element to allow copy-pasting velopark-pages") | ||||
|     } | ||||
| 
 | ||||
|     getFeedback(s: string): Translation { | ||||
|         const superF = super.getFeedback(s) | ||||
|         if (superF) { | ||||
|             return superF | ||||
|         } | ||||
|         const url = new URL(s) | ||||
|         if (url.hostname !== "velopark.be" && url.hostname !== "www.velopark.be" && url.hostname !== "data.velopark.be") { | ||||
|             return new Translation({ "*": "Invalid hostname, expected velopark.be" }) | ||||
|         } | ||||
| 
 | ||||
|         if(!s.startsWith("https://data.velopark.be/data/") && !s.startsWith("https://www.velopark.be/static/data/")){ | ||||
|             return new Translation({"*":"A valid URL should either start with https://data.velopark.be/data/ or https://www.velopark.be/static/data/"}) | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public isValid(str: string) { | ||||
|         return super.isValid(str) | ||||
|     } | ||||
| 
 | ||||
|     reformat(str: string): string { | ||||
|         const url = new URL(super.reformat(str)) | ||||
|         if(url.pathname.startsWith("/static/data/")){ | ||||
|             const id = str.substring(str.lastIndexOf("/")+1) | ||||
|             return "https://data.velopark.be/data/"+id | ||||
|         } | ||||
|         return super.reformat(str) | ||||
|     } | ||||
| } | ||||
|  | @ -29,7 +29,7 @@ | |||
| 
 | ||||
| {#if mapping.icon !== undefined} | ||||
|   <div class="inline-flex items-center"> | ||||
|     <Icon icon={mapping.icon} clss={twJoin(`mapping-icon-${mapping.iconClass}`, "mr-2")} /> | ||||
|     <Icon icon={mapping.icon} clss={twJoin(`mapping-icon-${mapping.iconClass ?? "small"}`, "mr-2")} /> | ||||
|     <SpecialTranslation t={mapping.then} {tags} {state} {layer} feature={selectedElement} /> | ||||
|   </div> | ||||
| {:else if mapping.then !== undefined} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue