2020-12-07 03:02:50 +01:00
//*
import MangroveReviews from "./Logic/Web/MangroveReviews" ;
import ReviewElement from "./UI/ReviewElement" ;
const review = MangroveReviews . GetReviewsFor ( 3.22000 , 51.21576 , "Pietervdvn Software Consultancy" )
new ReviewElement ( review ) . AttachTo ( "maindiv" ) ;
/ *
mangrove . getReviews ( { sub : 'geo:,?q=&u=15' } ) . then (
( data ) = > {
for ( const review of data . reviews ) {
console . log ( review . payload ) ;
// .signature
// .kid
// .jwt
}
}
) ; * /
2020-12-05 03:22:17 +01:00
/ *
2020-12-07 03:02:50 +01:00
mangrove . generateKeypair ( ) . then (
keypair = > {
mangrove . keypairToJwk ( keypair ) . then ( jwk = > {
console . log ( jwk )
// const restoredKeypair = await mangrove.jwkToKeypair(jwk).
// Sign and submit a review (reviews of this example subject are removed from the database).
mangrove . signAndSubmitReview ( keypair , {
// Lat,lon!
sub : "geo:51.21576,3.22000?q=Pietervdvn Software Consultancy&u=15" ,
rating : 100 ,
opinion : "Excellent knowledge about OSM" ,
metadata : {
nickname : "Pietervdvn" ,
}
} )
} )
}
)
* /
/ *
// Given by a particular user since certain time.
const userReviews = await getReviews ( {
kid : '-----BEGIN PUBLIC KEY-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDo6mN4kY6YFhpvF0u3hfVWD1RnDElPweX3U3KiUAx0dVeFLPAmeKdQY3J5agY3VspnHo1p/wH9hbZ63qPbCr6g==-----END PUBLIC KEY-----' ,
gt_iat : 1580860800
} ) * /
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
//*/