| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  | import { UIEventSource } from "../../Logic/UIEventSource" | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | import BaseUIElement from "../BaseUIElement" | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  | import { SubtleButton } from "../Base/SubtleButton" | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | import Combine from "../Base/Combine" | 
					
						
							|  |  |  | import Translations from "../i18n/Translations" | 
					
						
							|  |  |  | import Svg from "../../Svg" | 
					
						
							|  |  |  | import Toggle from "../Input/Toggle" | 
					
						
							| 
									
										
										
										
											2023-04-06 01:33:08 +02:00
										 |  |  | import { PresetInfo } from "../BigComponents/SimpleAddUI" | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  | import { VariableUiElement } from "../Base/VariableUIElement" | 
					
						
							|  |  |  | import { Tag } from "../../Logic/Tags/Tag" | 
					
						
							|  |  |  | import { WayId } from "../../Models/OsmFeature" | 
					
						
							| 
									
										
										
										
											2022-11-14 01:29:22 +01:00
										 |  |  | import { Translation } from "../i18n/Translation" | 
					
						
							| 
									
										
										
										
											2023-03-28 05:13:48 +02:00
										 |  |  | import { SpecialVisualizationState } from "../SpecialVisualization" | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class ConfirmLocationOfPoint extends Combine { | 
					
						
							|  |  |  |     constructor( | 
					
						
							| 
									
										
										
										
											2023-03-28 05:13:48 +02:00
										 |  |  |         state: SpecialVisualizationState, | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         filterViewIsOpened: UIEventSource<boolean>, | 
					
						
							|  |  |  |         preset: PresetInfo, | 
					
						
							|  |  |  |         confirmText: BaseUIElement, | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         loc: { lon: number; lat: number }, | 
					
						
							|  |  |  |         confirm: ( | 
					
						
							|  |  |  |             tags: any[], | 
					
						
							|  |  |  |             location: { lat: number; lon: number }, | 
					
						
							| 
									
										
										
										
											2022-09-21 02:21:20 +02:00
										 |  |  |             snapOntoWayId: WayId | undefined | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         ) => void, | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         cancel: () => void, | 
					
						
							| 
									
										
										
										
											2022-11-14 01:22:38 +01:00
										 |  |  |         closePopup: () => void, | 
					
						
							|  |  |  |         options?: { | 
					
						
							| 
									
										
										
										
											2022-11-14 01:29:22 +01:00
										 |  |  |             cancelIcon: BaseUIElement | 
					
						
							| 
									
										
										
										
											2022-11-14 01:22:38 +01:00
										 |  |  |             cancelText?: string | Translation | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |     ) { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         let confirmButton: BaseUIElement = new SubtleButton( | 
					
						
							|  |  |  |             preset.icon(), | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  |             new Combine([confirmText]).SetClass("flex flex-col") | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  |             .SetClass("font-bold break-words") | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             .onClick(() => { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 const globalFilterTagsToAdd: Tag[][] = state.globalFilters.data | 
					
						
							|  |  |  |                     .filter((gf) => gf.onNewPoint !== undefined) | 
					
						
							|  |  |  |                     .map((gf) => gf.onNewPoint.tags) | 
					
						
							|  |  |  |                 const globalTags: Tag[] = [].concat(...globalFilterTagsToAdd) | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  |                 console.log("Global tags to add are: ", globalTags) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             }) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-06 02:20:25 +02:00
										 |  |  |         confirmButton = new Combine([confirmButton]) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-06 01:33:08 +02:00
										 |  |  |         let openLayerOrConfirm = confirmButton | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  |         // We assume the number of global filters won't change during the run of the program
 | 
					
						
							|  |  |  |         for (let i = 0; i < state.globalFilters.data.length; i++) { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             const hasBeenCheckedOf = new UIEventSource(false) | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             const filterConfirmPanel = new VariableUiElement( | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 state.globalFilters.map((gfs) => { | 
					
						
							|  |  |  |                     const gf = gfs[i] | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  |                     const confirm = gf.onNewPoint?.confirmAddNew?.Subs({ preset: preset.title }) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                     return new Combine([ | 
					
						
							|  |  |  |                         gf.onNewPoint?.safetyCheck, | 
					
						
							|  |  |  |                         new SubtleButton(Svg.confirm_svg(), confirm).onClick(() => | 
					
						
							|  |  |  |                             hasBeenCheckedOf.setData(true) | 
					
						
							|  |  |  |                         ), | 
					
						
							|  |  |  |                     ]) | 
					
						
							|  |  |  |                 }) | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             openLayerOrConfirm = new Toggle( | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 openLayerOrConfirm, | 
					
						
							|  |  |  |                 filterConfirmPanel, | 
					
						
							|  |  |  |                 state.globalFilters.map( | 
					
						
							|  |  |  |                     (f) => hasBeenCheckedOf.data || f[i]?.onNewPoint === undefined, | 
					
						
							|  |  |  |                     [hasBeenCheckedOf] | 
					
						
							|  |  |  |                 ) | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  |             ) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-06 02:20:25 +02:00
										 |  |  |         super([openLayerOrConfirm]) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | } |