@@ -37,7 +37,8 @@ <h1>c2pool</h1>
3737 < div class ="row "> < span class ="label "> Sharechain</ span > < span class ="val " id ="d-shares "> ...</ span > </ div >
3838 < div class ="row "> < span class ="label "> Verified</ span > < span class ="val " id ="d-verified "> ...</ span > </ div >
3939 < div class ="row "> < span class ="label "> Best share</ span > < span class ="val " id ="d-best "> ...</ span > </ div >
40- < div class ="row "> < span class ="label "> SPV nodes</ span > < span class ="val " id ="d-work "> ...</ span > </ div >
40+ < div class ="row "> < span class ="label "> LTC SPV</ span > < span class ="val " id ="d-ltc-spv "> ...</ span > </ div >
41+ < div class ="row "> < span class ="label "> DOGE SPV</ span > < span class ="val " id ="d-doge-spv "> ...</ span > </ div >
4142 < div class ="row "> < span class ="label "> Uptime</ span > < span class ="val " id ="d-uptime "> ...</ span > </ div >
4243 </ div >
4344 < div class ="note "> This page auto-refreshes. You will be redirected to the dashboard when ready.</ div >
@@ -60,8 +61,27 @@ <h1>c2pool</h1>
6061 // Dashboard is truly ready when currency_info has real data
6162 var dashReady = ci . block_value != null && ci . block_value > 0
6263 && ci . pool_hash_rate != null && d . verified_size > 0 ;
63- document . getElementById ( 'd-work' ) . textContent = dashReady ? 'ready' : 'syncing...' ;
64- document . getElementById ( 'd-work' ) . className = 'val ' + ( dashReady ? 'ok' : 'wait' ) ;
64+ // SPV progress with ETA
65+ if ( d . spv ) {
66+ var ltcDone = d . spv . ltc_blocks >= d . spv . ltc_need ;
67+ var ltcTxt = ltcDone ? 'ready' : d . spv . ltc_blocks + '/' + d . spv . ltc_need ;
68+ if ( ! ltcDone && d . spv . ltc_blocks > 1 && d . uptime_seconds > 10 ) {
69+ var rate = d . spv . ltc_blocks / d . uptime_seconds ;
70+ var remain = Math . ceil ( ( d . spv . ltc_need - d . spv . ltc_blocks ) / Math . max ( rate , 0.01 ) ) ;
71+ ltcTxt += ' (~' + ( remain > 60 ? Math . ceil ( remain / 60 ) + 'min' : remain + 's' ) + ')' ;
72+ }
73+ document . getElementById ( 'd-ltc-spv' ) . textContent = ltcTxt ;
74+ document . getElementById ( 'd-ltc-spv' ) . className = 'val ' + ( ltcDone ? 'ok' : 'wait' ) ;
75+ var dogeDone = d . spv . doge_blocks >= d . spv . doge_need ;
76+ var dogeTxt = dogeDone ? 'ready' : d . spv . doge_blocks + '/' + d . spv . doge_need ;
77+ if ( ! dogeDone && d . spv . doge_blocks > 1 && d . uptime_seconds > 10 ) {
78+ var dr = d . spv . doge_blocks / d . uptime_seconds ;
79+ var drem = Math . ceil ( ( d . spv . doge_need - d . spv . doge_blocks ) / Math . max ( dr , 0.01 ) ) ;
80+ dogeTxt += ' (~' + ( drem > 60 ? Math . ceil ( drem / 60 ) + 'min' : drem + 's' ) + ')' ;
81+ }
82+ document . getElementById ( 'd-doge-spv' ) . textContent = dogeTxt ;
83+ document . getElementById ( 'd-doge-spv' ) . className = 'val ' + ( dogeDone ? 'ok' : 'wait' ) ;
84+ }
6585 var m = Math . floor ( ( d . uptime_seconds || 0 ) / 60 ) ;
6686 var s = ( d . uptime_seconds || 0 ) % 60 ;
6787 document . getElementById ( 'd-uptime' ) . textContent = m + 'm ' + s + 's' ;
0 commit comments