forked from MapComplete/MapComplete
		
	Studio: first working version
This commit is contained in:
		
							parent
							
								
									4fe0c41628
								
							
						
					
					
						commit
						632dd6dfb1
					
				
					 8 changed files with 36 additions and 23 deletions
				
			
		|  | @ -95,6 +95,19 @@ | |||
|         } | ||||
|       ], | ||||
|       "multiAnswer": true | ||||
|     }, | ||||
|     { | ||||
|       "question": { | ||||
|         "en": "When is this animal shelter opened?" | ||||
|       }, | ||||
|       "id": "7", | ||||
|       "render": { | ||||
|         "en": "{opening_hours_table()}" | ||||
|       }, | ||||
|       "freeform": { | ||||
|         "key": "opening_hours", | ||||
|         "type": "opening_hours" | ||||
|       } | ||||
|     } | ||||
|   ], | ||||
|   "deletion": true, | ||||
|  | @ -105,4 +118,4 @@ | |||
|   "description": { | ||||
|     "en": "An animal shelter is a facility where animals in trouble are brought and facility's staff (volunteers or not) feeds them and cares of them, rehabilitating and healing them if necessary. This definition includes kennels for abandoned dogs, catteries for abandoned cats, shelters for other abandoned pets and wildlife recovery centres. " | ||||
|   } | ||||
| } | ||||
| } | ||||
|  | @ -174,7 +174,10 @@ export class OsmConnection { | |||
| 
 | ||||
|     public AttemptLogin() { | ||||
|         this.UpdateCapabilities() | ||||
|         this.loadingStatus.setData("loading") | ||||
|         if (this.loadingStatus.data !== "logged-in") { | ||||
|             // Stay 'logged-in' if we are already logged in; this simply means we are checking for messages
 | ||||
|             this.loadingStatus.setData("loading") | ||||
|         } | ||||
|         if (this.fakeUser) { | ||||
|             this.loadingStatus.setData("logged-in") | ||||
|             console.log("AttemptLogin called, but ignored as fakeUser is set") | ||||
|  |  | |||
|  | @ -515,7 +515,6 @@ class MappedStore<TIn, T> extends Store<T> { | |||
|     } | ||||
| 
 | ||||
|     private unregisterFromUpstream() { | ||||
|         console.debug("Unregistering callbacks for", this.tag) | ||||
|         this._callbacksAreRegistered = false | ||||
|         this._unregisterFromUpstream() | ||||
|         this._unregisterFromExtraStores?.forEach((unr) => unr()) | ||||
|  |  | |||
|  | @ -1,7 +1,6 @@ | |||
| import { TagConfigJson } from "./TagConfigJson" | ||||
| import { TagRenderingConfigJson } from "./TagRenderingConfigJson" | ||||
| import type { Translatable } from "./Translatable" | ||||
| import { TagsFilter } from "../../../Logic/Tags/TagsFilter" | ||||
| 
 | ||||
| export interface MappingConfigJson { | ||||
|     /** | ||||
|  |  | |||
|  | @ -28,8 +28,7 @@ | |||
| </script> | ||||
| 
 | ||||
| {#if $badge} | ||||
|   <slot/> | ||||
|  <!-- {#if !ignoreLoading && $loadingStatus === "loading"} | ||||
|   {#if !ignoreLoading && $loadingStatus === "loading"} | ||||
|     <slot name="loading"> | ||||
|       <Loading /> | ||||
|     </slot> | ||||
|  | @ -42,5 +41,5 @@ | |||
|     <slot /> | ||||
|   {:else if $loadingStatus === "not-attempted"} | ||||
|     <slot name="not-logged-in" /> | ||||
|   {/if} --> | ||||
|   {/if}  | ||||
| {/if} | ||||
|  |  | |||
|  | @ -180,26 +180,30 @@ export default class EditLayerState { | |||
|     public setValueAt(path: ReadonlyArray<string | number>, v: any) { | ||||
|         let entry = this.configuration.data | ||||
|         const isUndefined = | ||||
|             v !== undefined && | ||||
|             v !== null && | ||||
|             v !== "" && | ||||
|             !(typeof v === "object" && Object.keys({}).length === 0) | ||||
|             v === undefined || | ||||
|             v === null || | ||||
|             v === "" || | ||||
|             (typeof v === "object" && Object.keys(v).length === 0) | ||||
| 
 | ||||
|         for (let i = 0; i < path.length - 1; i++) { | ||||
|             const breadcrumb = path[i] | ||||
|             if (entry[breadcrumb] === undefined) { | ||||
|                 if (isUndefined) { | ||||
|                     // we have a dead end _and_ we do not need to set a value - we do an early return
 | ||||
|                     return | ||||
|                 } | ||||
|                 entry[breadcrumb] = typeof path[i + 1] === "number" ? [] : {} | ||||
|             } | ||||
|             entry = entry[breadcrumb] | ||||
|             if (entry === undefined && isUndefined) { | ||||
|                 // Nothing to do anymore: we cannot traverse the object, but don't have to set something anyway
 | ||||
|                 return | ||||
|             } | ||||
|         } | ||||
|         const lastBreadcrumb = path.at(-1) | ||||
|         if (isUndefined) { | ||||
|             entry[path.at(-1)] = v | ||||
|         } else if (entry) { | ||||
|             delete entry[path.at(-1)] | ||||
|             if (entry && entry[lastBreadcrumb]) { | ||||
|                 console.log("Deleting", lastBreadcrumb, "of", path.join(".")) | ||||
|                 delete entry[lastBreadcrumb] | ||||
|             } | ||||
|         } else { | ||||
|             entry[lastBreadcrumb] = v | ||||
|         } | ||||
|         this.configuration.ping() | ||||
|     } | ||||
|  |  | |||
|  | @ -96,13 +96,10 @@ | |||
|         err = path.join(".") + " " + e | ||||
|     } | ||||
|     let startValue = state.getCurrentValueFor(path) | ||||
|     const tags = new UIEventSource<Record<string, string>>({value: startValue ?? ""}) | ||||
|     const tags = new UIEventSource<Record<string, string>>({value: startValue}) | ||||
|     try { | ||||
|         onDestroy(state.register(path, tags.map(tgs => { | ||||
|             const v = tgs["value"]; | ||||
|             if(v !== ""){ | ||||
|                 console.log("Registering",path,"setting value to", v) | ||||
|             } | ||||
|             if(typeof v !== "string"){ | ||||
|                 return v | ||||
|             } | ||||
|  |  | |||
|  | @ -90,7 +90,6 @@ | |||
| 
 | ||||
| 
 | ||||
|   const existingValue = state.getCurrentValueFor(path); | ||||
|   console.log("Initial, existing value for", path.join(".") ,"is", existingValue); | ||||
|   if (hasBooleanOption >= 0 && (existingValue === true || existingValue === false)) { | ||||
|     tags.setData({ value: "" + existingValue }); | ||||
|   } else if (lastIsString && typeof existingValue === "string") { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue