| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  | import { SubtleButton } from "../Base/SubtleButton" | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  | import Combine from "../Base/Combine" | 
					
						
							|  |  |  | import Svg from "../../Svg" | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  | import { OsmConnection } from "../../Logic/Osm/OsmConnection" | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  | import Toggle from "../Input/Toggle" | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  | import { UIEventSource } from "../../Logic/UIEventSource" | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  | import Translations from "../i18n/Translations" | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  | import { VariableUiElement } from "../Base/VariableUIElement" | 
					
						
							|  |  |  | import { Translation } from "../i18n/Translation" | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  | import BaseUIElement from "../BaseUIElement" | 
					
						
							|  |  |  | import LocationInput from "../Input/LocationInput" | 
					
						
							|  |  |  | import Loc from "../../Models/Loc" | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  | import { GeoOperations } from "../../Logic/GeoOperations" | 
					
						
							|  |  |  | import { OsmObject } from "../../Logic/Osm/OsmObject" | 
					
						
							|  |  |  | import { Changes } from "../../Logic/Osm/Changes" | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  | import ChangeLocationAction from "../../Logic/Osm/Actions/ChangeLocationAction" | 
					
						
							|  |  |  | import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig" | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  | import MoveConfig from "../../Models/ThemeConfig/MoveConfig" | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  | import { ElementStorage } from "../../Logic/ElementStorage" | 
					
						
							| 
									
										
										
										
											2021-10-15 14:52:11 +02:00
										 |  |  | import AvailableBaseLayers from "../../Logic/Actors/AvailableBaseLayers" | 
					
						
							| 
									
										
										
										
											2021-11-21 02:44:35 +01:00
										 |  |  | import BaseLayer from "../../Models/BaseLayer" | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  | import SearchAndGo from "../BigComponents/SearchAndGo" | 
					
						
							|  |  |  | import ChangeTagAction from "../../Logic/Osm/Actions/ChangeTagAction" | 
					
						
							|  |  |  | import { And } from "../../Logic/Tags/And" | 
					
						
							|  |  |  | import { Tag } from "../../Logic/Tags/Tag" | 
					
						
							| 
									
										
										
										
											2023-01-06 03:37:22 +01:00
										 |  |  | import { LoginToggle } from "./LoginButton" | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  | interface MoveReason { | 
					
						
							|  |  |  |     text: Translation | string | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |     invitingText: Translation | string | 
					
						
							| 
									
										
										
										
											2021-10-14 17:38:00 +02:00
										 |  |  |     icon: BaseUIElement | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |     changesetCommentValue: string | 
					
						
							|  |  |  |     lockBounds: true | boolean | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |     includeSearch: false | boolean | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |     background: undefined | "map" | "photo" | string | string[] | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |     startZoom: number | 
					
						
							|  |  |  |     minZoom: number | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |     eraseAddressFields: false | boolean | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class MoveWizard extends Toggle { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * The UI-element which helps moving a point | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     constructor( | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |         featureToMove: any, | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |         state: { | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |             osmConnection: OsmConnection | 
					
						
							|  |  |  |             featureSwitchUserbadge: UIEventSource<boolean> | 
					
						
							|  |  |  |             changes: Changes | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |             layoutToUse: LayoutConfig | 
					
						
							|  |  |  |             allElements: ElementStorage | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |         }, | 
					
						
							|  |  |  |         options: MoveConfig | 
					
						
							|  |  |  |     ) { | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |         const t = Translations.t.move | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |         const loginButton = new Toggle( | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |             t.loginToMove.SetClass("btn").onClick(() => state.osmConnection.AttemptLogin()), | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |             undefined, | 
					
						
							|  |  |  |             state.featureSwitchUserbadge | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         const reasons: MoveReason[] = [] | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |         if (options.enableRelocation) { | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |             reasons.push({ | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |                 text: t.reasons.reasonRelocation, | 
					
						
							|  |  |  |                 invitingText: t.inviteToMove.reasonRelocation, | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |                 icon: Svg.relocation_svg(), | 
					
						
							|  |  |  |                 changesetCommentValue: "relocated", | 
					
						
							|  |  |  |                 lockBounds: false, | 
					
						
							|  |  |  |                 background: undefined, | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |                 includeSearch: true, | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                 startZoom: 12, | 
					
						
							|  |  |  |                 minZoom: 6, | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  |                 eraseAddressFields: true, | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |             }) | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |         if (options.enableImproveAccuracy) { | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |             reasons.push({ | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |                 text: t.reasons.reasonInaccurate, | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |                 invitingText: t.inviteToMove.reasonInaccurate, | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |                 icon: Svg.crosshair_svg(), | 
					
						
							|  |  |  |                 changesetCommentValue: "improve_accuracy", | 
					
						
							|  |  |  |                 lockBounds: true, | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |                 includeSearch: false, | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |                 background: "photo", | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                 startZoom: 17, | 
					
						
							|  |  |  |                 minZoom: 16, | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  |                 eraseAddressFields: false, | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |             }) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         const currentStep = new UIEventSource<"start" | "reason" | "pick_location" | "moved">( | 
					
						
							|  |  |  |             "start" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         const moveReason = new UIEventSource<MoveReason>(undefined) | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |         let moveButton: BaseUIElement | 
					
						
							|  |  |  |         if (reasons.length === 1) { | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |             const reason = reasons[0] | 
					
						
							|  |  |  |             moveReason.setData(reason) | 
					
						
							|  |  |  |             moveButton = new SubtleButton( | 
					
						
							| 
									
										
										
										
											2021-12-21 21:36:03 +01:00
										 |  |  |                 reason.icon.SetStyle("height: 1.5rem; width: 1.5rem;"), | 
					
						
							| 
									
										
										
										
											2022-04-21 12:39:28 +02:00
										 |  |  |                 Translations.T(reason.invitingText) | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |             ).onClick(() => { | 
					
						
							|  |  |  |                 currentStep.setData("pick_location") | 
					
						
							|  |  |  |             }) | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |             moveButton = new SubtleButton( | 
					
						
							| 
									
										
										
										
											2021-12-21 21:36:03 +01:00
										 |  |  |                 Svg.move_ui().SetStyle("width: 1.5rem; height: 1.5rem"), | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |                 t.inviteToMove.generic | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |             ).onClick(() => { | 
					
						
							|  |  |  |                 currentStep.setData("reason") | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |             }) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |         const moveAgainButton = new SubtleButton(Svg.move_ui(), t.inviteToMoveAgain).onClick(() => { | 
					
						
							|  |  |  |             currentStep.setData("reason") | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |         const selectReason = new Combine( | 
					
						
							|  |  |  |             reasons.map((r) => | 
					
						
							|  |  |  |                 new SubtleButton(r.icon, r.text).onClick(() => { | 
					
						
							|  |  |  |                     moveReason.setData(r) | 
					
						
							|  |  |  |                     currentStep.setData("pick_location") | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 }) | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |         const cancelButton = new SubtleButton(Svg.close_svg(), t.cancel).onClick(() => | 
					
						
							|  |  |  |             currentStep.setData("start") | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |         const [lon, lat] = GeoOperations.centerpointCoordinates(featureToMove) | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |         const locationInput = moveReason.map((reason) => { | 
					
						
							|  |  |  |             if (reason === undefined) { | 
					
						
							|  |  |  |                 return undefined | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             const loc = new UIEventSource<Loc>({ | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |                 lon: lon, | 
					
						
							|  |  |  |                 lat: lat, | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                 zoom: reason?.startZoom ?? 16, | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-14 18:59:21 +02:00
										 |  |  |             let background: string[] | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |             if (typeof reason.background == "string") { | 
					
						
							| 
									
										
										
										
											2021-10-14 18:59:21 +02:00
										 |  |  |                 background = [reason.background] | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2021-10-14 18:59:21 +02:00
										 |  |  |                 background = reason.background | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-21 02:44:35 +01:00
										 |  |  |             const preferredBackground = AvailableBaseLayers.SelectBestLayerAccordingTo( | 
					
						
							|  |  |  |                 loc, | 
					
						
							|  |  |  |                 new UIEventSource(background) | 
					
						
							|  |  |  |             ).data | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |             const locationInput = new LocationInput({ | 
					
						
							|  |  |  |                 minZoom: reason.minZoom, | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |                 centerLocation: loc, | 
					
						
							| 
									
										
										
										
											2021-11-21 02:44:35 +01:00
										 |  |  |                 mapBackground: new UIEventSource<BaseLayer>(preferredBackground), // We detach the layer
 | 
					
						
							| 
									
										
										
										
											2022-10-27 01:50:41 +02:00
										 |  |  |                 state: <any>state, | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |             }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (reason.lockBounds) { | 
					
						
							|  |  |  |                 locationInput.installBounds(0.05, true) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |             let searchPanel: BaseUIElement = undefined | 
					
						
							|  |  |  |             if (reason.includeSearch) { | 
					
						
							|  |  |  |                 searchPanel = new SearchAndGo({ | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  |                     leafletMap: locationInput.leafletMap, | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |                 }) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |             locationInput.SetStyle("height: 17.5rem") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             const confirmMove = new SubtleButton(Svg.move_confirm_svg(), t.confirmMove) | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |             confirmMove.onClick(async () => { | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |                 const loc = locationInput.GetValue().data | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |                 await state.changes.applyAction( | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |                     new ChangeLocationAction(featureToMove.properties.id, [loc.lon, loc.lat], { | 
					
						
							| 
									
										
										
										
											2021-10-25 20:48:06 +02:00
										 |  |  |                         reason: reason.changesetCommentValue, | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |                         theme: state.layoutToUse.id, | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                     }) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 ) | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |                 featureToMove.properties._lat = loc.lat | 
					
						
							|  |  |  |                 featureToMove.properties._lon = loc.lon | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 if (reason.eraseAddressFields) { | 
					
						
							|  |  |  |                     await state.changes.applyAction( | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  |                         new ChangeTagAction( | 
					
						
							|  |  |  |                             featureToMove.properties.id, | 
					
						
							|  |  |  |                             new And([ | 
					
						
							|  |  |  |                                 new Tag("addr:housenumber", ""), | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |                                 new Tag("addr:street", ""), | 
					
						
							|  |  |  |                                 new Tag("addr:city", ""), | 
					
						
							| 
									
										
										
										
											2022-12-16 13:45:07 +01:00
										 |  |  |                                 new Tag("addr:postcode", ""), | 
					
						
							|  |  |  |                             ]), | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |                             featureToMove.properties, | 
					
						
							|  |  |  |                             { | 
					
						
							|  |  |  |                                 changeType: "relocated", | 
					
						
							|  |  |  |                                 theme: state.layoutToUse.id, | 
					
						
							|  |  |  |                             } | 
					
						
							|  |  |  |                         ) | 
					
						
							|  |  |  |                     ) | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-14 03:46:09 +02:00
										 |  |  |                 state.allElements.getEventSourceById(id).ping() | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                 currentStep.setData("moved") | 
					
						
							|  |  |  |             }) | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |             const zoomInFurhter = t.zoomInFurther.SetClass("alert block m-6") | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |             return new Combine([ | 
					
						
							| 
									
										
										
										
											2022-12-15 20:27:20 +01:00
										 |  |  |                 searchPanel, | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                 locationInput, | 
					
						
							|  |  |  |                 new Toggle( | 
					
						
							|  |  |  |                     confirmMove, | 
					
						
							|  |  |  |                     zoomInFurhter, | 
					
						
							|  |  |  |                     locationInput.GetValue().map((l) => l.zoom >= 19) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 ), | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |             ]).SetClass("flex flex-col") | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const dialogClasses = "p-2 md:p-4 m-2 border border-gray-400 rounded-xl flex flex-col" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-06 03:37:22 +01:00
										 |  |  |         const moveFlow = new LoginToggle( | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |             new VariableUiElement( | 
					
						
							|  |  |  |                 currentStep.map((currentStep) => { | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                     switch (currentStep) { | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |                         case "start": | 
					
						
							|  |  |  |                             return moveButton | 
					
						
							|  |  |  |                         case "reason": | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |                             return new Combine([ | 
					
						
							|  |  |  |                                 t.whyMove.SetClass("text-lg font-bold"), | 
					
						
							|  |  |  |                                 selectReason, | 
					
						
							|  |  |  |                                 cancelButton, | 
					
						
							|  |  |  |                             ]).SetClass(dialogClasses) | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |                         case "pick_location": | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |                             return new Combine([ | 
					
						
							|  |  |  |                                 t.moveTitle.SetClass("text-lg font-bold"), | 
					
						
							|  |  |  |                                 new VariableUiElement(locationInput), | 
					
						
							|  |  |  |                                 cancelButton, | 
					
						
							|  |  |  |                             ]).SetClass(dialogClasses) | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                         case "moved": | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |                             return new Combine([ | 
					
						
							|  |  |  |                                 t.pointIsMoved.SetClass("thanks"), | 
					
						
							|  |  |  |                                 moveAgainButton, | 
					
						
							|  |  |  |                             ]).SetClass("flex flex-col") | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |                     } | 
					
						
							|  |  |  |                 }) | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2023-01-06 03:37:22 +01:00
										 |  |  |             undefined, | 
					
						
							|  |  |  |             state | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |         let id = featureToMove.properties.id | 
					
						
							|  |  |  |         const backend = state.osmConnection._oauth_config.url | 
					
						
							|  |  |  |         if (id.startsWith(backend)) { | 
					
						
							|  |  |  |             id = id.substring(backend.length) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const moveDisallowedReason = new UIEventSource<BaseUIElement>(undefined) | 
					
						
							|  |  |  |         if (id.startsWith("way")) { | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |             moveDisallowedReason.setData(t.isWay) | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |         } else if (id.startsWith("relation")) { | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |             moveDisallowedReason.setData(t.isRelation) | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |         } else if (id.indexOf("-") < 0) { | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |             OsmObject.DownloadReferencingWays(id).then((referencing) => { | 
					
						
							|  |  |  |                 if (referencing.length > 0) { | 
					
						
							|  |  |  |                     console.log("Got a referencing way, move not allowed") | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |                     moveDisallowedReason.setData(t.partOfAWay) | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                 } | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |             OsmObject.DownloadReferencingRelations(id).then((partOf) => { | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |                 if (partOf.length > 0) { | 
					
						
							| 
									
										
										
										
											2021-10-26 01:14:22 +02:00
										 |  |  |                     moveDisallowedReason.setData(t.partOfRelation) | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                 } | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         super( | 
					
						
							|  |  |  |             moveFlow, | 
					
						
							|  |  |  |             new Combine([ | 
					
						
							| 
									
										
										
										
											2021-10-14 18:29:39 +02:00
										 |  |  |                 Svg.move_not_allowed_svg().SetStyle("height: 2rem").SetClass("m-2"), | 
					
						
							| 
									
										
										
										
											2021-10-25 21:50:38 +02:00
										 |  |  |                 new Combine([ | 
					
						
							|  |  |  |                     t.cannotBeMoved, | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |                     new VariableUiElement(moveDisallowedReason).SetClass("subtle"), | 
					
						
							|  |  |  |                 ]).SetClass("flex flex-col"), | 
					
						
							| 
									
										
										
										
											2021-10-14 18:29:39 +02:00
										 |  |  |             ]).SetClass("flex m-2 p-2 rounded-lg bg-gray-200"), | 
					
						
							| 
									
										
										
										
											2021-10-13 03:09:37 +02:00
										 |  |  |             moveDisallowedReason.map((r) => r === undefined) | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2023-01-04 19:12:54 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         const self = this | 
					
						
							|  |  |  |         currentStep.addCallback((state) => { | 
					
						
							|  |  |  |             if (state === "start") { | 
					
						
							|  |  |  |                 return | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             self.ScrollIntoView() | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2021-10-11 00:54:35 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | } |