| 
									
										
										
										
											2020-11-14 02:54:33 +01:00
										 |  |  | //*
 | 
					
						
							| 
									
										
										
										
											2020-08-31 02:59:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-09 21:11:52 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-15 03:10:44 +01:00
										 |  |  | import Direction from "./UI/Input/DirectionInput"; | 
					
						
							|  |  |  | import {UIEventSource} from "./Logic/UIEventSource"; | 
					
						
							|  |  |  | import {VariableUiElement} from "./UI/Base/VariableUIElement"; | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-15 14:12:31 +01:00
										 |  |  | const d = new UIEventSource("90"); | 
					
						
							| 
									
										
										
										
											2020-11-17 02:22:48 +01:00
										 |  |  | new Direction(d, [51.21576,3.22001]).AttachTo("maindiv") | 
					
						
							| 
									
										
										
										
											2020-11-15 14:12:31 +01:00
										 |  |  | new VariableUiElement(d.map(d => "" + d + "°")).AttachTo("extradiv") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | UIEventSource.Chronic(25, () => { | 
					
						
							|  |  |  |     const degr = (Number(d.data) + 1) % 360; | 
					
						
							|  |  |  |     d.setData(""+ degr); | 
					
						
							|  |  |  |     return true; | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2020-10-27 01:01:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-06 01:37:02 +02:00
										 |  |  | /*/ | 
					
						
							| 
									
										
										
										
											2020-10-02 19:00:24 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import {Utils} from "./Utils"; | 
					
						
							|  |  |  | import {FixedUiElement} from "./UI/Base/FixedUiElement"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | function generateStats(action: (stats: string) => void) { | 
					
						
							|  |  |  |     // Binary searches the latest changeset
 | 
					
						
							|  |  |  |     function search(lowerBound: number, | 
					
						
							|  |  |  |                     upperBound: number, | 
					
						
							|  |  |  |                     onCsFound: ((id: number, lastDate: Date) => void), | 
					
						
							|  |  |  |                     depth = 0) { | 
					
						
							|  |  |  |         if (depth > 30) { | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         const tested = Math.floor((lowerBound + upperBound) / 2); | 
					
						
							|  |  |  |         console.log("Testing", tested) | 
					
						
							|  |  |  |         Utils.changesetDate(tested, (createdAtDate: Date) => { | 
					
						
							|  |  |  |             new FixedUiElement(`Searching, value between ${lowerBound} and ${upperBound}. Queries till now: ${depth}`).AttachTo('maindiv') | 
					
						
							|  |  |  |             if (lowerBound + 1 >= upperBound) { | 
					
						
							|  |  |  |                 onCsFound(lowerBound, createdAtDate); | 
					
						
							|  |  |  |                 return; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             if (createdAtDate !== undefined) { | 
					
						
							|  |  |  |                 search(tested, upperBound, onCsFound, depth + 1) | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 search(lowerBound, tested, onCsFound, depth + 1); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     search(91000000, 100000000, (last, lastDate: Date) => { | 
					
						
							|  |  |  |             const link = "http://osm.org/changeset/" + last; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             const delta = 100000; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             Utils.changesetDate(last - delta, (prevDate) => { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 const diff = (lastDate.getTime() - prevDate.getTime()) / 1000; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 // Diff: seconds needed/delta changesets
 | 
					
						
							|  |  |  |                 const secsPerCS = diff / delta; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 const stillNeeded = 1000000 - (last % 1000000); | 
					
						
							|  |  |  |                 const timeNeededSeconds = Math.floor(secsPerCS * stillNeeded); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 const secNeeded = timeNeededSeconds % 60; | 
					
						
							|  |  |  |                 const minNeeded = Math.floor(timeNeededSeconds / 60) % 60; | 
					
						
							|  |  |  |                 const hourNeeded = Math.floor(timeNeededSeconds / (60 * 60)) % 24; | 
					
						
							|  |  |  |                 const daysNeeded = Math.floor(timeNeededSeconds / (24 * 60 * 60)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 const result = `Last changeset: <a href='${link}'>${link}</a><br/>We needed ${(Math.floor(diff / 60))} minutes for the last ${delta} changesets.<br/>
 | 
					
						
							|  |  |  | This is around ${secsPerCS} seconds/changeset.<br/> The next million (still ${stillNeeded} away) will be broken in around ${daysNeeded} days ${hourNeeded}:${minNeeded}:${secNeeded}`
 | 
					
						
							|  |  |  |                 action(result); | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | generateStats((stats) => { | 
					
						
							|  |  |  |     new FixedUiElement(stats).AttachTo('maindiv') | 
					
						
							| 
									
										
										
										
											2020-10-02 19:00:24 +02:00
										 |  |  | }) | 
					
						
							| 
									
										
										
										
											2020-11-05 13:34:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-02 19:00:24 +02:00
										 |  |  | //*/
 |