1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | import theMapEditor from '../../core/mapEditor/MapEditor.js'; |
26 | import theIndexedDb from '../../core/uiLib/IndexedDb.js'; |
27 | import theProfileDialogsManager from '../../core/ProfileDialogsManager.js'; |
28 | import theTravelNotesData from '../../data/TravelNotesData.js'; |
29 | import theConfig from '../../data/Config.js'; |
30 | import theDockableDialogsManager from '../../core/DockableDialogsManager.js'; |
31 | import theProvidersToolbar from '../../toolbars/providersToolbar/ProvidersToolbar.js'; |
32 | import RoadbookUpdateEL from './RoadbookUpdateEL.js'; |
33 | import ResizeEL from './ResizeEL.js'; |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | class EventListenersLoader { |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | static addEventsListeners ( ) { |
48 | document.addEventListener ( |
49 | 'additinerarypointmarker', |
50 | addItineraryPointMarkerEvent => { |
51 | if ( addItineraryPointMarkerEvent.data ) { |
52 | theMapEditor.addItineraryPointMarker ( |
53 | addItineraryPointMarkerEvent.data.objId, |
54 | addItineraryPointMarkerEvent.data.latLng |
55 | ); |
56 | } |
57 | } |
58 | ); |
59 | document.addEventListener ( |
60 | 'addrectangle', |
61 | addRectangleEvent => { |
62 | if ( addRectangleEvent.data ) { |
63 | theMapEditor.addRectangle ( |
64 | addRectangleEvent.data.objId, |
65 | addRectangleEvent.data.bounds, |
66 | addRectangleEvent.data.properties |
67 | ); |
68 | } |
69 | } |
70 | ); |
71 | document.addEventListener ( |
72 | 'addsearchpointmarker', |
73 | addSearchPointMarkerEvent => { |
74 | if ( addSearchPointMarkerEvent.data ) { |
75 | theMapEditor.addSearchPointMarker ( |
76 | addSearchPointMarkerEvent.data.objId, |
77 | addSearchPointMarkerEvent.data.latLng, |
78 | addSearchPointMarkerEvent.data.geometry |
79 | ); |
80 | } |
81 | } |
82 | ); |
83 | document.addEventListener ( |
84 | 'addwaypoint', |
85 | addWayPointEvent => { |
86 | if ( addWayPointEvent.data ) { |
87 | theMapEditor.addWayPoint ( |
88 | addWayPointEvent.data.wayPoint, |
89 | addWayPointEvent.data.letter |
90 | ); |
91 | } |
92 | } |
93 | ); |
94 | document.addEventListener ( |
95 | 'geolocationpositionchanged', |
96 | geoLocationPositionChangedEvent => { |
97 | if ( geoLocationPositionChangedEvent.data ) { |
98 | theMapEditor.onGeolocationPositionChanged ( geoLocationPositionChangedEvent.data.position ); |
99 | } |
100 | } |
101 | ); |
102 | document.addEventListener ( |
103 | 'geolocationstatuschanged', |
104 | geoLocationStatusChangedEvent => { |
105 | if ( geoLocationStatusChangedEvent.data ) { |
106 | theMapEditor.onGeolocationStatusChanged ( geoLocationStatusChangedEvent.data.status ); |
107 | } |
108 | } |
109 | ); |
110 | document.addEventListener ( |
111 | 'layerchange', |
112 | layerChangeEvent => { |
113 | if ( layerChangeEvent.data ) { |
114 | theMapEditor.setLayer ( layerChangeEvent.data.layer ); |
115 | } |
116 | } |
117 | ); |
118 | document.addEventListener ( |
119 | 'noteupdated', |
120 | updateNoteEvent => { |
121 | if ( updateNoteEvent.data ) { |
122 | theMapEditor.updateNote ( |
123 | updateNoteEvent.data.removedNoteObjId, |
124 | updateNoteEvent.data.addedNoteObjId |
125 | ); |
126 | } |
127 | } |
128 | ); |
129 | document.addEventListener ( |
130 | 'profileclosed', |
131 | profileClosedEvent => { |
132 | if ( profileClosedEvent.data ) { |
133 | theProfileDialogsManager.onProfileClosed ( profileClosedEvent.data.objId ); |
134 | } |
135 | } |
136 | ); |
137 | document.addEventListener ( |
138 | 'providersadded', |
139 | ( ) => theProvidersToolbar.providersAdded ( ) |
140 | ); |
141 | document.addEventListener ( |
142 | 'removeallobjects', |
143 | ( ) => theMapEditor.removeAllObjects ( ) |
144 | ); |
145 | document.addEventListener ( |
146 | 'removeobject', |
147 | removeObjectEvent => { |
148 | if ( removeObjectEvent.data ) { |
149 | theMapEditor.removeObject ( |
150 | removeObjectEvent.data.objId |
151 | ); |
152 | } |
153 | } |
154 | ); |
155 | document.addEventListener ( |
156 | 'routepropertiesupdated', |
157 | updateRoutePropertiesEvent => { |
158 | if ( updateRoutePropertiesEvent.data ) { |
159 | theMapEditor.updateRouteProperties ( |
160 | updateRoutePropertiesEvent.data.routeObjId |
161 | ); |
162 | } |
163 | } |
164 | ); |
165 | document.addEventListener ( |
166 | 'routeupdated', |
167 | updateRouteEvent => { |
168 | if ( updateRouteEvent.data ) { |
169 | theMapEditor.updateRoute ( |
170 | updateRouteEvent.data.removedRouteObjId, |
171 | updateRouteEvent.data.addedRouteObjId |
172 | ); |
173 | } |
174 | } |
175 | ); |
176 | document.addEventListener ( |
177 | 'setprovider', |
178 | setProviderEvent => { |
179 | if ( setProviderEvent?.data?.provider ) { |
180 | theProvidersToolbar.provider = setProviderEvent.data.provider; |
181 | } |
182 | } |
183 | ); |
184 | document.addEventListener ( |
185 | 'settransitmode', |
186 | setTransitModeEvent => { |
187 | if ( setTransitModeEvent?.data?.transitMode ) { |
188 | theProvidersToolbar.transitMode = setTransitModeEvent.data.transitMode; |
189 | } |
190 | } |
191 | ); |
192 | document.addEventListener ( |
193 | 'showtravelproperties', |
194 | ( ) => theDockableDialogsManager.showTravelProperties ( ) |
195 | ); |
196 | document.addEventListener ( |
197 | 'updateosmsearch', |
198 | ( ) => theDockableDialogsManager.osmSearchDialog.updateContent ( ) |
199 | ); |
200 | document.addEventListener ( |
201 | 'updateprofilename', |
202 | updateProfileNameEvent => { |
203 | if ( updateProfileNameEvent.data ) { |
204 | theProfileDialogsManager.updateProfileName ( |
205 | updateProfileNameEvent.data.routeObjId |
206 | ); |
207 | } |
208 | } |
209 | ); |
210 | document.addEventListener ( |
211 | 'updateroadbook', |
212 | new RoadbookUpdateEL ( ) |
213 | ); |
214 | document.addEventListener ( |
215 | 'updatetravelnotes', |
216 | ( ) => theDockableDialogsManager.travelNotesDialog.updateContent ( ) |
217 | ); |
218 | document.addEventListener ( |
219 | 'updatetravelproperties', |
220 | ( ) => theDockableDialogsManager.travelPropertiesDialog.updateContent ( ) |
221 | ); |
222 | document.addEventListener ( |
223 | 'zoomto', |
224 | zoomToEvent => { |
225 | if ( zoomToEvent.data ) { |
226 | theMapEditor.zoomTo ( |
227 | zoomToEvent.data.latLng, |
228 | zoomToEvent.data.geometry |
229 | ); |
230 | } |
231 | } |
232 | ); |
233 | window.visualViewport.addEventListener ( 'resize', new ResizeEL ( ) ); |
234 | } |
235 | |
236 | |
237 | |
238 | |
239 | |
240 | static addUnloadEventsListeners ( ) { |
241 | window.addEventListener ( 'unload', ( ) => localStorage.removeItem ( theTravelNotesData.UUID ) ); |
242 | window.addEventListener ( |
243 | 'beforeunload', |
244 | beforeUnloadEvent => { |
245 | theIndexedDb.closeDb ( theTravelNotesData.UUID ); |
246 | if ( theConfig.travelNotes.haveBeforeUnloadWarning ) { |
247 | beforeUnloadEvent.returnValue = 'x'; |
248 | return 'x'; |
249 | } |
250 | } |
251 | ); |
252 | } |
253 | } |
254 | |
255 | export default EventListenersLoader; |
256 | |
257 | |
258 | |