| 
									
										
										
										
											2020-12-07 03:02:50 +01:00
										 |  |  | //*
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-29 03:23:53 +01:00
										 |  |  | import {ImageCarousel} from "./UI/Image/ImageCarousel"; | 
					
						
							|  |  |  | import {UIEventSource} from "./Logic/UIEventSource"; | 
					
						
							| 
									
										
										
										
											2020-12-07 03:02:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-29 03:23:53 +01:00
										 |  |  | const images = new UIEventSource<{ url: string, key: string }[]>( | 
					
						
							|  |  |  |     [{url: "https://2.bp.blogspot.com/-fQiZkz9Zlzg/T_xe2X2Ia3I/AAAAAAAAA0Q/VPS8Mb8xtIQ/s1600/cat+15.jpg", key: "image:1"}, | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             url: "https://www.mapillary.com/map/im/VEOhKqPcJMuT4F2olz_wHQ", | 
					
						
							|  |  |  |             key: "mapillary" | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         {url: "https://i.imgur.com/mWlghx0.jpg", key: "image:1"}]) | 
					
						
							|  |  |  | new ImageCarousel(images, new UIEventSource<any>({"image:1":"https://2.bp.blogspot.com/-fQiZkz9Zlzg/T_xe2X2Ia3I/AAAAAAAAA0Q/VPS8Mb8xtIQ/s1600/cat+15.jpg"})) | 
					
						
							|  |  |  |     .AttachTo("maindiv")     | 
					
						
							| 
									
										
										
										
											2020-08-31 02:59:47 +02: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
										 |  |  | //*/
 |