forked from MapComplete/MapComplete
		
	Fix: better error handling and handling of changes
This commit is contained in:
		
							parent
							
								
									7b73578f88
								
							
						
					
					
						commit
						7813653265
					
				
					 8 changed files with 36 additions and 10 deletions
				
			
		|  | @ -164,7 +164,11 @@ export default class MetaTagging { | |||
|             } | ||||
| 
 | ||||
|             if (somethingChanged) { | ||||
|                 featurePropertiesStores?.getStore(feature.properties.id)?.ping() | ||||
|                 try { | ||||
|                     featurePropertiesStores?.getStore(feature.properties.id)?.ping() | ||||
|                 } catch (e) { | ||||
|                     console.error("Could not ping a store for a changed property due to", e) | ||||
|                 } | ||||
|                 atLeastOneFeatureChanged = true | ||||
|             } | ||||
|         } | ||||
|  |  | |||
|  | @ -15,7 +15,6 @@ import BaseUIElement from "../BaseUIElement" | |||
| import Img from "../Base/Img" | ||||
| import Title from "../Base/Title" | ||||
| import { CheckBox } from "../Input/Checkboxes" | ||||
| import Minimap from "../Base/Minimap" | ||||
| import SearchAndGo from "./SearchAndGo" | ||||
| import Toggle from "../Input/Toggle" | ||||
| import List from "../Base/List" | ||||
|  |  | |||
|  | @ -72,6 +72,9 @@ | |||
|   } | ||||
| 
 | ||||
|   Stores.Chronic(50).addCallback(_ => stabilize()); | ||||
|   floors.addCallback(floors => { | ||||
|     forceIndex = floors.findIndex(s => s === value.data) | ||||
|   }) | ||||
| 
 | ||||
|   let image: HTMLImageElement; | ||||
|   $:{ | ||||
|  |  | |||
|  | @ -50,7 +50,7 @@ | |||
|   let layerIsDisplayed: UIEventSource<boolean> | undefined = undefined; | ||||
|   let layerHasFilters: Store<boolean> | undefined = undefined; | ||||
|   let globalFilter: UIEventSource<GlobalFilter[]> = state.layerState.globalFilters; | ||||
|   let _globalFilter: GlobalFilter[]; | ||||
|   let _globalFilter: GlobalFilter[] = []; | ||||
|   onDestroy(globalFilter.addCallbackAndRun(globalFilter => { | ||||
|     console.log("Global filters are", globalFilter); | ||||
|     _globalFilter = globalFilter ?? []; | ||||
|  | @ -85,7 +85,7 @@ | |||
|     creating = true; | ||||
|     const location: { lon: number; lat: number } = preciseCoordinate.data; | ||||
|     const snapTo: WayId | undefined = <WayId>snappedToObject.data; | ||||
|     const tags: Tag[] = selectedPreset.preset.tags.concat(..._globalFilter.map(f => f.onNewPoint.tags)); | ||||
|     const tags: Tag[] = selectedPreset.preset.tags.concat(..._globalFilter.map(f => f?.onNewPoint?.tags ?? [])); | ||||
|     console.log("Creating new point at", location, "snapped to", snapTo, "with tags", tags); | ||||
| 
 | ||||
|     let snapToWay: undefined | OsmWay = undefined; | ||||
|  | @ -249,7 +249,7 @@ | |||
|         <Tr t={t.backToSelect} /> | ||||
|       </div> | ||||
|     </SubtleButton> | ||||
|   {:else if _globalFilter.length > checkedOfGlobalFilters} | ||||
|   {:else if _globalFilter?.length > 0 && _globalFilter?.length > checkedOfGlobalFilters} | ||||
|       <Tr t={_globalFilter[checkedOfGlobalFilters].onNewPoint?.safetyCheck} /> | ||||
|       <SubtleButton on:click={() => {checkedOfGlobalFilters = checkedOfGlobalFilters + 1}}> | ||||
|         <img slot="image" src={_globalFilter[checkedOfGlobalFilters].onNewPoint?.icon ?? "./assets/svg/confirm.svg"} class="w-12 h-12"> | ||||
|  |  | |||
|  | @ -61,6 +61,7 @@ export default class TagApplyButton implements AutoAction, SpecialVisualization | |||
|             if (kv.length == 2) { | ||||
|                 tgsSpec.push(<[string, string]>kv) | ||||
|             } else if (kv.length < 2) { | ||||
|                 console.error("Invalid key spec: no '=' found in " + spec) | ||||
|                 throw "Invalid key spec: no '=' found in " + spec | ||||
|             } else { | ||||
|                 throw "Invalid key spec: multiple '=' found in " + spec | ||||
|  |  | |||
|  | @ -11,6 +11,7 @@ | |||
|   import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"; | ||||
|   import WeblateLink from "../../Base/WeblateLink.svelte"; | ||||
|   import FromHtml from "../../Base/FromHtml.svelte"; | ||||
|   import BaseUIElement from "../../BaseUIElement"; | ||||
| 
 | ||||
|   /** | ||||
|    * The 'specialTranslation' renders a `Translation`-object, but interprets the special values as well | ||||
|  | @ -27,10 +28,26 @@ | |||
|   })); | ||||
|   let specs: RenderingSpecification[] = []; | ||||
|   $: { | ||||
|     if (txt !== undefined) { | ||||
|       specs = SpecialVisualizations.constructSpecification(txt); | ||||
|     try { | ||||
| 
 | ||||
|       if (txt !== undefined) { | ||||
|         specs = SpecialVisualizations.constructSpecification(txt); | ||||
|       } | ||||
|     } catch (e) { | ||||
|       console.error("Could not construct a specification and with arguments", txt); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   function createVisualisation(specpart: Exclude<RenderingSpecification, string>): BaseUIElement { | ||||
|     { | ||||
|       try { | ||||
|         return specpart.func.constr(state, tags, specpart.args, feature, layer); | ||||
|       } catch (e) { | ||||
|         console.error("Could not construct a special visualisation with specification", specpart, "and tags", tags); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| {#each specs as specpart} | ||||
|  | @ -40,6 +57,6 @@ | |||
|     <WeblateLink context={t.context} /> | ||||
|     </span> | ||||
|   {:else if $tags !== undefined } | ||||
|     <ToSvelte construct={specpart.func.constr(state, tags, specpart.args, feature, layer)}></ToSvelte> | ||||
|     <ToSvelte construct={createVisualisation(specpart)}></ToSvelte> | ||||
|   {/if} | ||||
| {/each} | ||||
|  |  | |||
|  | @ -22,7 +22,9 @@ | |||
|   } | ||||
|   export let layer: LayerConfig; | ||||
|   let trs: { then: Translation; icon?: string; iconClass?: string }[]; | ||||
|   $: trs = Utils.NoNull(config?.GetRenderValues(_tags)); | ||||
|   $:{ | ||||
|     trs = Utils.NoNull(config?.GetRenderValues(_tags)); | ||||
|   } | ||||
|   let classes = "" | ||||
|   $:classes = config?.classes?.join(" ") ?? ""; | ||||
| </script> | ||||
|  |  | |||
|  | @ -121,7 +121,7 @@ | |||
|   </If> | ||||
| </div> | ||||
| 
 | ||||
| <If condition={selectedViewElement.map(v => v !== undefined)}> | ||||
| <If condition={selectedViewElement.map(v => v !== undefined && selectedLayer.data !== undefined,[ selectedLayer] )}> | ||||
|   <ModalRight on:close={() => {selectedElement.setData(undefined)}}> | ||||
|     <ToSvelte construct={new VariableUiElement(selectedViewElement)}></ToSvelte> | ||||
|   </ModalRight> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue