forked from MapComplete/MapComplete
		
	A11y: various improvements
This commit is contained in:
		
							parent
							
								
									0d4f2c9c36
								
							
						
					
					
						commit
						5fa2ddd9c1
					
				
					 23 changed files with 327 additions and 98 deletions
				
			
		
							
								
								
									
										33
									
								
								src/Sensors/Motion.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/Sensors/Motion.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| import { UIEventSource } from "../Logic/UIEventSource" | ||||
| 
 | ||||
| export default class Motion { | ||||
|     public static singleton = new Motion() | ||||
|     /** | ||||
|      * In m/s² | ||||
|      */ | ||||
|     public maxAcc = new UIEventSource<number>(0) | ||||
| 
 | ||||
|     public lastShakeEvent = new UIEventSource<Date>(undefined) | ||||
| 
 | ||||
|     private isListening = false | ||||
|     private constructor() { | ||||
|         this.startListening() | ||||
|     } | ||||
| 
 | ||||
|     private onUpdate(eventData: DeviceMotionEvent) { | ||||
|         const acc = eventData.acceleration | ||||
|         this.maxAcc.setData(Math.max(acc.x, acc.y, acc.z)) | ||||
|         if (this.maxAcc.data > 22) { | ||||
|             this.lastShakeEvent.setData(new Date()) | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     startListening() { | ||||
|         if (this.isListening) { | ||||
|             return | ||||
|         } | ||||
|         this.isListening = true | ||||
|         console.log("Listening to motion events", this) | ||||
|         window.addEventListener("devicemotion", (e) => this.onUpdate(e)) | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue