| 
									
										
										
										
											2020-06-29 03:12:44 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Asks to add a feature at the last clicked location, at least if zoom is sufficient | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							|  |  |  | import Svg from "../../Svg"; | 
					
						
							|  |  |  | import {SubtleButton} from "../Base/SubtleButton"; | 
					
						
							|  |  |  | import Combine from "../Base/Combine"; | 
					
						
							|  |  |  | import Translations from "../i18n/Translations"; | 
					
						
							|  |  |  | import Constants from "../../Models/Constants"; | 
					
						
							| 
									
										
										
										
											2021-03-29 02:04:42 +02:00
										 |  |  | import {TagUtils} from "../../Logic/Tags/TagUtils"; | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  | import BaseUIElement from "../BaseUIElement"; | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  | import {VariableUiElement} from "../Base/VariableUIElement"; | 
					
						
							|  |  |  | import Toggle from "../Input/Toggle"; | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  | import UserDetails, {OsmConnection} from "../../Logic/Osm/OsmConnection"; | 
					
						
							| 
									
										
										
										
											2021-07-15 20:47:28 +02:00
										 |  |  | import CreateNewNodeAction from "../../Logic/Osm/Actions/CreateNewNodeAction"; | 
					
						
							| 
									
										
										
										
											2021-08-07 21:19:01 +02:00
										 |  |  | import {OsmObject, OsmWay} from "../../Logic/Osm/OsmObject"; | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  | import PresetConfig from "../../Models/ThemeConfig/PresetConfig"; | 
					
						
							| 
									
										
										
										
											2021-09-07 01:49:18 +02:00
										 |  |  | import FilteredLayer from "../../Models/FilteredLayer"; | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  | import Loc from "../../Models/Loc"; | 
					
						
							|  |  |  | import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; | 
					
						
							|  |  |  | import {Changes} from "../../Logic/Osm/Changes"; | 
					
						
							|  |  |  | import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline"; | 
					
						
							|  |  |  | import {ElementStorage} from "../../Logic/ElementStorage"; | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | import ConfirmLocationOfPoint from "../NewPoint/ConfirmLocationOfPoint"; | 
					
						
							| 
									
										
										
										
											2021-11-30 19:19:53 +01:00
										 |  |  | import BaseLayer from "../../Models/BaseLayer"; | 
					
						
							| 
									
										
										
										
											2022-01-25 21:55:51 +01:00
										 |  |  | import Loading from "../Base/Loading"; | 
					
						
							| 
									
										
										
										
											2022-03-23 12:42:47 +01:00
										 |  |  | import Hash from "../../Logic/Web/Hash"; | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  | * The SimpleAddUI is a single panel, which can have multiple states: | 
					
						
							|  |  |  | * - A list of presets which can be added by the user | 
					
						
							|  |  |  | * - A 'confirm-selection' button (or alternatively: please enable the layer) | 
					
						
							|  |  |  | * - A 'something is wrong - please soom in further' | 
					
						
							|  |  |  | * - A 'read your unread messages before adding a point' | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | export interface PresetInfo extends PresetConfig { | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |     name: string | BaseUIElement, | 
					
						
							| 
									
										
										
										
											2021-07-14 00:17:15 +02:00
										 |  |  |     icon: () => BaseUIElement, | 
					
						
							| 
									
										
										
										
											2022-01-25 21:55:51 +01:00
										 |  |  |     layerToAddTo: FilteredLayer, | 
					
						
							|  |  |  |     boundsFactor?: 0.25 | number | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  | export default class SimpleAddUI extends Toggle { | 
					
						
							| 
									
										
										
										
											2020-07-29 18:35:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |     constructor(isShown: UIEventSource<boolean>, | 
					
						
							| 
									
										
										
										
											2022-02-09 00:35:59 +01:00
										 |  |  |                 resetScrollSignal: UIEventSource<void>, | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |                 filterViewIsOpened: UIEventSource<boolean>, | 
					
						
							|  |  |  |                 state: { | 
					
						
							| 
									
										
										
										
											2022-01-21 01:57:16 +01:00
										 |  |  |                     featureSwitchIsTesting: UIEventSource<boolean>, | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |                     layoutToUse: LayoutConfig, | 
					
						
							|  |  |  |                     osmConnection: OsmConnection, | 
					
						
							|  |  |  |                     changes: Changes, | 
					
						
							|  |  |  |                     allElements: ElementStorage, | 
					
						
							|  |  |  |                     LastClickLocation: UIEventSource<{ lat: number, lon: number }>, | 
					
						
							|  |  |  |                     featurePipeline: FeaturePipeline, | 
					
						
							|  |  |  |                     selectedElement: UIEventSource<any>, | 
					
						
							|  |  |  |                     locationControl: UIEventSource<Loc>, | 
					
						
							|  |  |  |                     filteredLayers: UIEventSource<FilteredLayer[]>, | 
					
						
							|  |  |  |                     featureSwitchFilter: UIEventSource<boolean>, | 
					
						
							| 
									
										
										
										
											2021-11-30 19:19:53 +01:00
										 |  |  |                     backgroundLayer: UIEventSource<BaseLayer> | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |                 }) { | 
					
						
							| 
									
										
										
										
											2021-06-30 15:34:32 +02:00
										 |  |  |         const loginButton = new SubtleButton(Svg.osm_logo_ui(), Translations.t.general.add.pleaseLogin.Clone()) | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |             .onClick(() => state.osmConnection.AttemptLogin()); | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         const readYourMessages = new Combine([ | 
					
						
							|  |  |  |             Translations.t.general.readYourMessages.Clone().SetClass("alert"), | 
					
						
							|  |  |  |             new SubtleButton(Svg.envelope_ui(), | 
					
						
							|  |  |  |                 Translations.t.general.goToInbox, {url: "https://www.openstreetmap.org/messages/inbox", newTab: false}) | 
					
						
							|  |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2021-07-14 00:17:15 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         const selectedPreset = new UIEventSource<PresetInfo>(undefined); | 
					
						
							| 
									
										
										
										
											2022-02-09 00:35:59 +01:00
										 |  |  |         selectedPreset.addCallback(_ => { | 
					
						
							|  |  |  |             resetScrollSignal.ping(); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |          | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         isShown.addCallback(_ => selectedPreset.setData(undefined)) // Clear preset selection when the UI is closed/opened
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |         state.LastClickLocation.addCallback(_ => selectedPreset.setData(undefined)) | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |         const presetsOverview = SimpleAddUI.CreateAllPresetsPanel(selectedPreset, state) | 
					
						
							| 
									
										
										
										
											2021-08-07 21:19:01 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-13 01:35:50 +02:00
										 |  |  |         async function createNewPoint(tags: any[], location: { lat: number, lon: number }, snapOntoWay?: OsmWay) : Promise<void>{ | 
					
						
							| 
									
										
										
										
											2021-10-04 03:12:42 +02:00
										 |  |  |             const newElementAction = new CreateNewNodeAction(tags, location.lat, location.lon, { | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |                 theme: state.layoutToUse?.id ?? "unkown", | 
					
						
							| 
									
										
										
										
											2021-10-04 03:12:42 +02:00
										 |  |  |                 changeType: "create", | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |                 snapOnto: snapOntoWay | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |             await state.changes.applyAction(newElementAction) | 
					
						
							| 
									
										
										
										
											2021-08-07 21:19:01 +02:00
										 |  |  |             selectedPreset.setData(undefined) | 
					
						
							|  |  |  |             isShown.setData(false) | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |             state.selectedElement.setData(state.allElements.ContainingFeatures.get( | 
					
						
							| 
									
										
										
										
											2021-08-07 21:19:01 +02:00
										 |  |  |                 newElementAction.newElementId | 
					
						
							|  |  |  |             )) | 
					
						
							| 
									
										
										
										
											2022-03-23 12:42:47 +01:00
										 |  |  |             Hash.hash.setData(newElementAction.newElementId) | 
					
						
							| 
									
										
										
										
											2021-08-07 21:19:01 +02:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         const addUi = new VariableUiElement( | 
					
						
							|  |  |  |             selectedPreset.map(preset => { | 
					
						
							|  |  |  |                     if (preset === undefined) { | 
					
						
							|  |  |  |                         return presetsOverview | 
					
						
							|  |  |  |                     } | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  |                     function confirm(tags: any[], location: { lat: number, lon: number }, snapOntoWayId?: string) { | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |                         if (snapOntoWayId === undefined) { | 
					
						
							|  |  |  |                             createNewPoint(tags, location, undefined) | 
					
						
							|  |  |  |                         } else { | 
					
						
							|  |  |  |                             OsmObject.DownloadObject(snapOntoWayId).addCallbackAndRunD(way => { | 
					
						
							|  |  |  |                                 createNewPoint(tags, location, <OsmWay>way) | 
					
						
							|  |  |  |                                 return true; | 
					
						
							|  |  |  |                             }) | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     function cancel() { | 
					
						
							|  |  |  |                         selectedPreset.setData(undefined) | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-01 12:51:55 +02:00
										 |  |  |                     const message = Translations.t.general.add.addNew.Subs({category: preset.name}, preset.name["context"]); | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |                     return new ConfirmLocationOfPoint(state, filterViewIsOpened, preset, | 
					
						
							|  |  |  |                         message, | 
					
						
							|  |  |  |                         state.LastClickLocation.data, | 
					
						
							|  |  |  |                         confirm, | 
					
						
							| 
									
										
										
										
											2022-01-08 04:22:50 +01:00
										 |  |  |                         cancel, | 
					
						
							|  |  |  |                         () => { | 
					
						
							|  |  |  |                             isShown.setData(false) | 
					
						
							|  |  |  |                         }) | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |                 } | 
					
						
							|  |  |  |             )) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         super( | 
					
						
							|  |  |  |             new Toggle( | 
					
						
							|  |  |  |                 new Toggle( | 
					
						
							|  |  |  |                     new Toggle( | 
					
						
							| 
									
										
										
										
											2022-01-25 21:55:51 +01:00
										 |  |  |                         new Loading(Translations.t.general.add.stillLoading).SetClass("alert"), | 
					
						
							| 
									
										
										
										
											2021-10-20 19:12:28 +02:00
										 |  |  |                         addUi, | 
					
						
							|  |  |  |                         state.featurePipeline.runningQuery | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |                     ), | 
					
						
							| 
									
										
										
										
											2021-07-14 00:17:15 +02:00
										 |  |  |                     Translations.t.general.add.zoomInFurther.Clone().SetClass("alert"), | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |                     state.locationControl.map(loc => loc.zoom >= Constants.userJourney.minZoomLevelToAddNewPoints) | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |                 ), | 
					
						
							|  |  |  |                 readYourMessages, | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |                 state.osmConnection.userDetails.map((userdetails: UserDetails) => | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |                     userdetails.csCount >= Constants.userJourney.addNewPointWithUnreadMessagesUnlock || | 
					
						
							|  |  |  |                     userdetails.unreadMessages == 0) | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             loginButton, | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |             state.osmConnection.isLoggedIn | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |     public static CreateTagInfoFor(preset: PresetInfo, osmConnection: OsmConnection, optionallyLinkToWiki = true) { | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |         const csCount = osmConnection.userDetails.data.csCount; | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         return new Toggle( | 
					
						
							| 
									
										
										
										
											2021-06-21 03:12:43 +02:00
										 |  |  |             Translations.t.general.add.presetInfo.Subs({ | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |                 tags: preset.tags.map(t => t.asHumanString(optionallyLinkToWiki && csCount > Constants.userJourney.tagsVisibleAndWikiLinked, true)).join("&"), | 
					
						
							| 
									
										
										
										
											2021-06-19 18:28:30 +02:00
										 |  |  |             }).SetStyle("word-break: break-all"), | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             undefined, | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |             osmConnection.userDetails.map(userdetails => userdetails.csCount >= Constants.userJourney.tagsVisibleAt) | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |     private static CreateAllPresetsPanel(selectedPreset: UIEventSource<PresetInfo>, | 
					
						
							|  |  |  |                                          state: { | 
					
						
							| 
									
										
										
										
											2022-01-21 01:57:16 +01:00
										 |  |  |                                              featureSwitchIsTesting: UIEventSource<boolean>; | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |                                              filteredLayers: UIEventSource<FilteredLayer[]>, | 
					
						
							|  |  |  |                                              featureSwitchFilter: UIEventSource<boolean>, | 
					
						
							|  |  |  |                                              osmConnection: OsmConnection | 
					
						
							|  |  |  |                                          }): BaseUIElement { | 
					
						
							|  |  |  |         const presetButtons = SimpleAddUI.CreatePresetButtons(state, selectedPreset) | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  |         let intro: BaseUIElement = Translations.t.general.add.intro; | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-21 01:57:16 +01:00
										 |  |  |         let testMode: BaseUIElement = new Toggle(Translations.t.general.testing.SetClass("alert"), | 
					
						
							|  |  |  |             undefined, | 
					
						
							|  |  |  |             state.featureSwitchIsTesting); | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         return new Combine([intro, testMode, presetButtons]).SetClass("flex flex-col") | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-09 03:38:40 +01:00
										 |  |  |     private static CreatePresetSelectButton(preset: PresetInfo) { | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-01 12:51:55 +02:00
										 |  |  |         const title = Translations.t.general.add.addNew.Subs({ | 
					
						
							|  |  |  |             category: preset.name | 
					
						
							|  |  |  |         }, preset.name["context"]) | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         return new SubtleButton( | 
					
						
							| 
									
										
										
										
											2021-07-14 00:17:15 +02:00
										 |  |  |             preset.icon(), | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  |             new Combine([ | 
					
						
							| 
									
										
										
										
											2022-04-01 12:51:55 +02:00
										 |  |  |                 title.SetClass("font-bold"), | 
					
						
							| 
									
										
										
										
											2022-04-21 12:39:28 +02:00
										 |  |  |                 preset.description?.FirstSentence() | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |             ]).SetClass("flex flex-col") | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-07-14 00:17:15 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /* | 
					
						
							|  |  |  |     * Generates the list with all the buttons.*/ | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |     private static CreatePresetButtons( | 
					
						
							|  |  |  |         state: { | 
					
						
							|  |  |  |             filteredLayers: UIEventSource<FilteredLayer[]>, | 
					
						
							|  |  |  |             featureSwitchFilter: UIEventSource<boolean>, | 
					
						
							|  |  |  |             osmConnection: OsmConnection | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         selectedPreset: UIEventSource<PresetInfo>): BaseUIElement { | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  |         const allButtons = []; | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |         for (const layer of state.filteredLayers.data) { | 
					
						
							| 
									
										
										
										
											2021-07-14 00:17:15 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-19 00:57:36 +02:00
										 |  |  |             if (layer.isDisplayed.data === false) { | 
					
						
							|  |  |  |                 // The layer is not displayed...
 | 
					
						
							|  |  |  |                 if(!state.featureSwitchFilter.data){ | 
					
						
							|  |  |  |                     // ...and we cannot enable the layer control -> we skip, as these presets can never be shown anyway
 | 
					
						
							|  |  |  |                     continue; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2021-08-07 21:19:01 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-19 00:57:36 +02:00
										 |  |  |                 if (layer.layerDef.name === undefined) { | 
					
						
							|  |  |  |                     // this layer can never be toggled on in any case, so we skip the presets
 | 
					
						
							|  |  |  |                     continue; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-07-14 00:17:15 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-19 00:57:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-30 00:56:46 +01:00
										 |  |  |             const presets = layer.layerDef.presets; | 
					
						
							|  |  |  |             for (const preset of presets) { | 
					
						
							| 
									
										
										
										
											2020-07-31 16:17:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |                 const tags = TagUtils.KVtoProperties(preset.tags ?? []); | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |                 let icon: () => BaseUIElement = () => layer.layerDef.mapRendering[0].GenerateLeafletStyle(new UIEventSource<any>(tags), false).html | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |                     .SetClass("w-12 h-12 block relative"); | 
					
						
							|  |  |  |                 const presetInfo: PresetInfo = { | 
					
						
							|  |  |  |                     layerToAddTo: layer, | 
					
						
							|  |  |  |                     name: preset.title, | 
					
						
							| 
									
										
										
										
											2021-08-07 21:19:01 +02:00
										 |  |  |                     title: preset.title, | 
					
						
							| 
									
										
										
										
											2021-07-14 00:17:15 +02:00
										 |  |  |                     icon: icon, | 
					
						
							| 
									
										
										
										
											2022-02-09 03:38:40 +01:00
										 |  |  |                     preciseInput: preset.preciseInput, | 
					
						
							|  |  |  |                     ...preset | 
					
						
							| 
									
										
										
										
											2020-08-22 18:57:27 +02:00
										 |  |  |                 } | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-09 03:38:40 +01:00
										 |  |  |                 const button = SimpleAddUI.CreatePresetSelectButton(presetInfo); | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |                 button.onClick(() => { | 
					
						
							|  |  |  |                     selectedPreset.setData(presetInfo) | 
					
						
							|  |  |  |                 }) | 
					
						
							| 
									
										
										
										
											2021-01-08 16:49:42 +01:00
										 |  |  |                 allButtons.push(button); | 
					
						
							| 
									
										
										
										
											2020-07-31 16:17:16 +02:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2020-06-29 03:12:44 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-06-14 02:39:23 +02:00
										 |  |  |         return new Combine(allButtons).SetClass("flex flex-col"); | 
					
						
							| 
									
										
										
										
											2020-06-29 03:12:44 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |