Advertisement
Guest User

Untitled

a guest
Sep 24th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 59.86 KB | None | 0 0
  1. <div class="section-header">
  2. <div class="container">
  3. <div class="row">
  4. <div class="col-md-12 text-left">
  5. <button class="btn btn-primary btn-xs" style="margin-top: 3px;" data-original-title="Asiapool used dedicated servers for best performance mining pool"
  6. data-placement="bottom" data-toggle="tooltip" type="button"><i class="fa fa-tasks"></i> <i class="icon-film"></i>Dedicated
  7. Server</button>
  8. <button class="btn btn-primary btn-xs" style="margin-top: 3px;" data-original-title="You can monitor your workers directly with realtime information"
  9. data-placement="bottom" data-toggle="tooltip" type="button"><i aria-hidden="true" class="fa fa-eye"></i>
  10. Realtime Statistic</button>
  11. <button class="btn btn-primary btn-xs" style="margin-top: 3px;" data-original-title="Asiapool uses a very low fees than the fees of other pools"
  12. data-placement="bottom" data-toggle="tooltip" type="button"><i aria-hidden="true" class="fa fa-money"></i>
  13. Low Fee</button>
  14. <button class="btn btn-primary btn-xs" style="margin-top: 3px;" data-original-title="Asiapool support of paymentId, integrated address and Subaddress allows to mine directly to an exchange"
  15. data-placement="bottom" data-toggle="tooltip" type="button"><i aria-hidden="true" class="fa fa-exchange"></i>
  16. Direct Mine to Exchange</button>
  17. <button class="btn btn-primary btn-xs" style="margin-top: 3px;" data-original-title="Asiapool support to set fixed difficulty on miner"
  18. data-placement="bottom" data-toggle="tooltip" type="button"><i aria-hidden="true" class="fa fa-bell"></i>
  19. Telegram Bot Notifications</button>
  20. <button class="btn btn-primary btn-xs" style="margin-top: 3px;" data-original-title="Asiapool support to set fixed difficulty on miner"
  21. data-placement="bottom" data-toggle="tooltip" type="button"><i aria-hidden="true" class="fa fa-lock"></i>
  22. DifficultyFixed</button>
  23. </div>
  24. </div>
  25. </div>
  26. </div>
  27. <div class="container">
  28. <div class="row">
  29. <div class="col-md-8">
  30. <h4>Pool News</h4>
  31. <div class="panel panel-primary borderleft">
  32. <div class="panel-body">
  33. <div class="scroll"></div>
  34. </div>
  35. </div>
  36. </div>
  37. <div class="col-md-4">
  38. <h4>Pool Community</h4>
  39. <div class="panel panel-primary borderleft">
  40. <div class="panel-body">
  41. <a class="btn btn-primary btn-xs" href="https://goo.gl/forms/9xxHY3IWR9g9EwFm1" style="margin-bottom: 5px; color:white;"
  42. target="_blank" type="button"><i aria-hidden="true" class="fa fa-pencil-square-o"></i> Request
  43. New Coin</a> <a class="btn btn-primary btn-xs" href="https://t.me/asiapoolmining" style="margin-bottom: 5px; color:white;"
  44. target="_blank" type="button"><i aria-hidden="true" class="fa fa-telegram"></i> Telegram Chat</a>
  45. <a class="btn btn-primary btn-xs" href="https://twitter.com/asiapool_io" style="margin-bottom: 5px; color:white;"
  46. target="_blank" type="button"><i aria-hidden="true" class="fa fa-twitter"></i> Follow Twitter</a>
  47. <a class="btn btn-primary btn-xs" href="https://discord.gg/7a34Xp8" style="margin-bottom: 5px; color:white;"
  48. target="_blank" type="button"><i aria-hidden="true" class="fa fa-hashtag"></i> Discord Chat</a>
  49. <a class="btn btn-primary btn-xs" href="http://asiapool.io/bios" style="margin-bottom: 5px; color:white;"
  50. target="_blank" type="button"><i aria-hidden="true" class="fa fa-microchip"></i> Bios Mod
  51. Collection</a>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. <div class="row" id="poolStats">
  57. <div class="col-md-4">
  58. <h4>Network</h4>
  59. <div class="bs-component">
  60. <ul class="breadcrumb">
  61. <li class="active"><i class="fa fa-tachometer"></i> Has Rate: <span class="text-primary" id="networkHashrate"></span></li>
  62. </ul>
  63. <ul class="breadcrumb">
  64. <li class="active"><i class="fa fa-clock-o"></i> Block Found: <span class="time"><span class="text-primary"
  65. id="networkLastBlockFound"></span></span></li>
  66. </ul>
  67. <ul class="breadcrumb">
  68. <li class="active"><i class="fa fa-lock"></i> Difficulty: <span class="text-primary" id="networkDifficulty"></span></li>
  69. </ul>
  70. <ul class="breadcrumb">
  71. <li class="active"><i class="fa fa-delicious"></i> Blockchain Height: <span class="text-primary" id="blockchainHeight"></span></li>
  72. </ul>
  73. <ul class="breadcrumb">
  74. <li class="active"><i class="fa fa-gift"></i> Last Reward: <span class="text-primary" id="networkLastReward"></span></li>
  75. </ul>
  76. <ul class="breadcrumb">
  77. <li class="active"><i class="fa fa-unlink"></i> Last Hash: <span class="value"><a id="lastHash"
  78. target="_blank"></a></span> <span class="time"><span class="small" id="networkLastBlockFound"></span></span></li>
  79. </ul>
  80. <ul class="breadcrumb">
  81. <li class="active"><i class="fa fa-hashtag"></i> Algorithm: <span class="text-primary" id="cnAlgorithm"></span></li>
  82. </ul>
  83. </div>
  84. </div>
  85. <div class="col-md-4">
  86. <h4>Our Pool</h4>
  87. <div class="component">
  88. <ul class="breadcrumb">
  89. <li class="active"><i class="fa fa-tachometer"></i> Has Rate: <span class="text-primary" id="poolHashrate"></span>
  90. <span class="small">(<span id="hashPower"></span>)</span></li>
  91. </ul>
  92. <ul class="breadcrumb">
  93. <li class="active"><i class="fa fa-clock-o"></i> Block Found: <span class="text-primary" id="blocksTotal"
  94. style="display:none !important"></span> <span class="text-primary" id="poolLastBlockFound"></span></li>
  95. </ul>
  96. <ul class="breadcrumb">
  97. <li class="active"><i class="fa fa-users"></i> Miner: <span class="text-primary" id="poolMiners"></span>
  98. <span><small>(<span id="poolWorkers"></span> <span>workers</span>)</small></span></li>
  99. </ul>
  100. <ul class="breadcrumb">
  101. <li class="active"><i class="fa fa-tags"></i> Pool Fee: <span class="text-primary" id="poolFee"></span></li>
  102. </ul>
  103. <ul class="breadcrumb">
  104. <li class="active"><i class="fa fa-history"></i> Block Found Every: <span class="text-primary" id="blockSolvedTime"></span></li>
  105. </ul>
  106. <ul class="breadcrumb">
  107. <li class="active"><i class="fa fa-star-half-o"></i> Current Effort: <span class="text-primary" id="currentEffort"></span></li>
  108. </ul>
  109. <ul class="breadcrumb">
  110. <li class="active"><i class="fa fa-money"></i> Min Payout: <span class="text-primary" id="paymentsMinimum"></span></li>
  111. </ul>
  112. </div>
  113. </div>
  114. <div class="col-md-4">
  115. <h4>Coin Price</h4>
  116. <div>
  117. <ul class="breadcrumb">
  118. <li class="active"><span>BTC:</span> <i class="fa fa-btc text-primary"></i> <span class="text-primary"
  119. id="coinPriceBTC">...</span></li>
  120. </ul>
  121. <ul class="breadcrumb">
  122. <li class="active"><span>USD:</span> <i class="fa fa-dollar text-primary"></i> <span class="text-primary"
  123. id="coinPriceUSD">...</span></li>
  124. </ul>
  125. <ul class="breadcrumb">
  126. <li class="active"><span>IDR:</span> <i class="fa fa-podcast text-primary"></i> <span class="text-primary"
  127. id="coinPriceIDR">...</span></li>
  128. </ul>
  129. <ul class="breadcrumb">
  130. <li class="active"><span>JPY:</span> <i class="fa fa-jpy text-primary"></i> <span class="text-primary"
  131. id="coinPriceJPY">...</span></li>
  132. </ul>
  133. <ul class="breadcrumb">
  134. <li class="active"><span>EUR:</span> <i class="fa fa-eur text-primary"></i> <span class="text-primary"
  135. id="coinPriceEUR">...</span></li>
  136. </ul>
  137. <div id="miningProfitCalc">
  138. <div id="calcHashHolder">
  139. <div class="input-group">
  140. <input class="form-control" id="calcHashRate" placeholder="Estimated Mining Profit" type="number">
  141. <span class="input-group-btn">
  142. <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" id="calcHashDropdown">
  143. <span id="calcHashUnit" data-mul="1">KH/s</span>
  144. <span class="caret"></span>
  145. </button>
  146. <ul class="dropdown-menu dropdown-menu-right" role="menu" id="calcHashUnits">
  147. <li>
  148. <a href="#" data-mul="0">H/s</a>
  149. </li>
  150. <li>
  151. <a href="#" data-mul="1">KH/s</a>
  152. </li>
  153. <li>
  154. <a href="#" data-mul="2">MH/s</a>
  155. </li>
  156. </ul>
  157. </span>
  158. </div>
  159. <span class="btn btn-default" id="calcHashResultsHolder" style="margin-top:18px;">
  160. <span id="calcHashAmount">
  161. <span data-toggle="tooltip" data-placement="left" data-original-title="Estimation Profit Per Day"><i
  162. class="fa fa-question-circle"></i></span> <span id="getcoin">0</span> | <span
  163. id="getusd">0</span> USD | <span id="getbtc">0</span> BTC
  164. </span>
  165. </span>
  166. </div>
  167. </div>
  168. </div>
  169. </div>
  170. </div>
  171. <br>
  172. <!-- Pool Charts -->
  173. <div class="row">
  174. <div class="col-md-4 poolChart">
  175. <h4>Pool HashRate</h4>
  176. <div class="panel panel-primary">
  177. <div class="panel-body" style="background: #8360c3; /* fallback for old browsers */ background: -webkit-linear-gradient(to right, #2ebf91, #8360c3); /* Chrome 10-25, Safari 5.1-6 */ background: linear-gradient(to right, #2ebf91, #8360c3); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ padding: 5px;">
  178. <div class="chart">
  179. <canvas id="chart_poolhashrate"></canvas><a class="chart-style"></a>
  180. </div>
  181. </div>
  182. </div>
  183. </div>
  184. <div class="col-md-4 poolChart">
  185. <h4>Network Difficulty</h4>
  186. <div class="panel panel-primary">
  187. <div class="panel-body" style="background: #a8c0ff; /* fallback for old browsers */ background: -webkit-linear-gradient(to right, #3f2b96, #a8c0ff); /* Chrome 10-25, Safari 5.1-6 */ background: linear-gradient(to right, #3f2b96, #a8c0ff); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ padding: 5px;">
  188. <div class="chart">
  189. <canvas id="chart_pooldiff"></canvas><a class="chart-style"></a>
  190. </div>
  191. </div>
  192. </div>
  193. </div>
  194. <div class="col-md-4 poolChart">
  195. <h4>Miner</h4>
  196. <div class="panel panel-primary">
  197. <div class="panel-body" style="background: #11998e; /* fallback for old browsers */ background: -webkit-linear-gradient(to right, #38ef7d, #11998e); /* Chrome 10-25, Safari 5.1-6 */ background: linear-gradient(to right, #38ef7d, #11998e); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ padding: 5px;">
  198. <div class="chart">
  199. <canvas id="chart_poolminers"></canvas><a class="chart-style"></a>
  200. </div>
  201. </div>
  202. </div>
  203. </div>
  204. </div><!-- Worker Stats -->
  205. <div class="row" id="workerStats">
  206. <div class="col-md-12" style="padding-bottom:20px;">
  207. <h4>Your Stats & Payment History</h4>
  208. <div class="input-group">
  209. <input class="form-control" id="yourStatsInput" placeholder="Enter Your Address" type="text">
  210. <span class="input-group-btn"><button class="btn btn-default" id="lookUp" type="button"><i class="fa fa-search"
  211. aria-hidden="true"></i> LOOKUP</button></span>
  212. </div>
  213. </div>
  214.  
  215. <div class="text-center" id="addressError"></div>
  216. <div class="yourStats push-up-20">
  217. <div class="col-md-12">
  218. <h5>Account Overview</h5>
  219. </div>
  220. <div class="col-md-3 text-center">
  221. <div class="panel panel-primary">
  222. <div class="panel-heading">
  223. <i class="fa fa-money"></i> Pending Balance
  224. </div>
  225. <div class="panel-body">
  226. <abbr class="text-primary workerstatspool" id="yourPendingBalance" title="Total your coin for next payment interval"></abbr>
  227. </div>
  228. </div>
  229. </div>
  230. <div class="col-md-3 text-center">
  231. <div class="panel panel-primary">
  232. <div class="panel-heading">
  233. <i class="fa fa-smile-o"></i> Total Paid
  234. </div>
  235. <div class="panel-body">
  236. <abbr class="text-primary workerstatspool" id="yourPaid" title="Total coin already sent via payments"></abbr>
  237. </div>
  238. </div>
  239. </div>
  240. <div class="col-md-3 text-center">
  241. <div class="panel panel-primary">
  242. <div class="panel-heading">
  243. <i class="fa fa-dashboard"></i> Hash Rate
  244. </div>
  245. <div class="panel-body">
  246. <span class="text-primary workerstatspool" id="yourHashrateHolder"></span>
  247. </div>
  248. </div>
  249. </div>
  250. <div class="col-md-3 text-center">
  251. <div class="panel panel-primary">
  252. <div class="panel-heading">
  253. <i class="fa fa-cloud-download"></i> Total Shares
  254. </div>
  255. <div class="panel-body">
  256. <span class="text-primary workerstatspool" id="yourHashes"></span>
  257. </div>
  258. </div>
  259. </div>
  260. <div class="col-md-8">
  261. <h5>Realtime Mining Estimation <span data-toggle="tooltip" data-placement="right" data-original-title="Based on current difficulty"><i
  262. class="fa fa-question-circle"></i></span></h5>
  263. <div class="table-responsive">
  264. <table class="table table-bordered">
  265. <tbody>
  266. <tr>
  267. <td style="width:15%;"><i class="fa fa-clock-o"></i> Hourly</td>
  268. <td><abbr title="" id="hourlycoin">N/A</abbr> / <abbr title="" id="hourlycoinusd">0 USD</abbr>
  269. / <abbr title="" id="hourlycoinbtc">0 BTC</abbr> / <abbr title="" id="hourlycoinidr">0
  270. IDR</abbr></td>
  271. </tr>
  272. <tr>
  273. <td style="width:15%;"><i class="fa fa-clock-o"></i> Daily</td>
  274. <td><abbr title="" id="dailycoin">N/A</abbr> / <abbr title="" id="dailycoinusd">0 USD</abbr>
  275. / <abbr title="" id="dailycoinbtc">0 BTC</abbr> / <abbr title="" id="hourlycoinidr">0
  276. IDR</abbr></td>
  277. </tr>
  278. <tr>
  279. <td style="width:15%;"><i class="fa fa-clock-o"></i> Weekly</td>
  280. <td><abbr title="" id="weeklycoin">N/A</abbr> / <abbr title="" id="weeklycoinusd">0 USD</abbr>
  281. / <abbr title="" id="weeklycoinbyc">0 BTC</abbr> / <abbr title="" id="hourlycoinidr">0
  282. IDR</abbr></td>
  283. </tr>
  284. <tr>
  285. <td style="width:15%;"><i class="fa fa-clock-o"></i> Monthly</td>
  286. <td><abbr title="" id="monthlycoin">N/A</abbr> / <abbr title="" id="monthlycoinusd">0
  287. USD</abbr> / <abbr title="" id="monthlycoinbtc">0 BTC</abbr> / <abbr title=""
  288. id="hourlycoinidr">0 IDR</abbr></td>
  289. </tr>
  290. </tbody>
  291. </table>
  292. </div>
  293. </div>
  294. <div class="col-md-4 text-center">
  295. <h5>Set Payment Treshold</h5>
  296. <div class="panel panel-primary">
  297. <div class="panel-heading">
  298. <i class="fa fa-pencil-square-o"></i> Your Treshold
  299. </div>
  300. <div class="panel-body">
  301. <abbr class="text-primary workerstatspool" id="yourPayoutRate" title=""></abbr> <span class="text-primary workerstatspool"
  302. id="coinSymbol"></span>
  303. <br>
  304. <div class="btn btn-primary btn-sm" style="margin-top:12px;margin-bottom:10px;">
  305. <i class="fa fa-gear"></i> <a href="#settings" style="color: #fff;" target="_blank">Set Up
  306. Min. Payment</a>
  307. </div>
  308. </div>
  309. </div>
  310. </div>
  311. <div class="col-md-6 yourStats">
  312. <h5>Your Hashrate Charts</h5>
  313. <div class="panel panel-default">
  314. <div class="panel-body userChart" style="background: #12c2e9; /* fallback for old browsers */ background: -webkit-linear-gradient(to right, #f64f59, #c471ed, #12c2e9); /* Chrome 10-25, Safari 5.1-6 */ background: linear-gradient(to right, #f64f59, #c471ed, #12c2e9); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ padding: 5px;">
  315. <div class="chart">
  316. <canvas id="chart_userhashrate"></canvas><a class="chart-style"></a>
  317. </div>
  318. </div>
  319. </div>
  320. </div>
  321. <div class="col-md-6 yourStats">
  322. <h5>Your Payments Charts</h5>
  323. <div class="panel panel-default">
  324. <div class="panel-body userChart" style="background: #11998e; /* fallback for old browsers */ background: -webkit-linear-gradient(to right, #38ef7d, #11998e); /* Chrome 10-25, Safari 5.1-6 */ background: linear-gradient(to right, #38ef7d, #11998e); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ padding: 5px;">
  325. <div class="chart">
  326. <canvas id="chart_userpayments"></canvas><a class="chart-style"></a>
  327. </div>
  328. </div>
  329. </div>
  330. </div>
  331. <div class="col-md-12">
  332. <h5>Your Workers</h5>
  333. <div class="table-responsive" id="workersReport">
  334. <table class="table table-bordered">
  335. <thead>
  336. <tr>
  337. <th class="col1 sort"><span>Status</span> <i class="fa fa-sort"></i></th>
  338. <th class="col2 sort"><span>Worker Name</span> <i class="fa fa-sort"></i></th>
  339. <th class="col3 sort"><span>Hash Rate</span> <i class="fa fa-sort"></i></th>
  340. <th class="col4 sort"><span>Last Share Submitted</span> <i class="fa fa-sort"></i></th>
  341. <th class="col5 sort"><span>Share Submitted</span> <i class="fa fa-sort"></i></th>
  342. </tr>
  343. </thead>
  344. <tbody id="workersReport_rows"></tbody>
  345. </table>
  346. </div>
  347. </div>
  348. </div>
  349. <div class="col-md-12">
  350. <div class="yourStats">
  351. <h5>Your Payments</h5>
  352. <div class="table-responsive" id="workerPayments">
  353. <table class="table table-bordered">
  354. <thead>
  355. <tr>
  356. <th class="col1"><span>Time Sent</span></th>
  357. <th class="col2"><span>Transaction Hash</span></th>
  358. <th class="col3"><span>Amount</span></th>
  359. <th class="col4"><span>Mixin</span></th>
  360. </tr>
  361. </thead>
  362. <tbody id="paymentsReport_rows"></tbody>
  363. </table>
  364. </div>
  365. </div>
  366. <p class="yourStats text-center push-up-10"><button class="btn btn-default" id="loadMorePayments" type="button"><span>Load
  367. More</span></button></p>
  368. </div>
  369. </div>
  370. </div>
  371. <script>
  372. // Tooltip
  373. $(document).ready(function () {
  374. $('[data-toggle="tooltip"]').tooltip();
  375. });
  376.  
  377. // Coin PRICES
  378. $.ajax({
  379. url: CoinPriceAPI,
  380. dataType: 'json',
  381. cache: 'false'
  382. }).done(function (data) {
  383. CoinPrice = data;
  384. updateText('coinPriceBTC', CoinPrice.BTC);
  385. updateText('coinPriceUSD', CoinPrice.USD);
  386. updateText('coinPriceIDR', CoinPrice.IDR);
  387. updateText('coinPriceJPY', CoinPrice.JPY);
  388. updateText('coinPriceEUR', CoinPrice.EUR);
  389. updateText('lastrewardusd', parseFloat(getReadableCoins(lastStats.lastblock.reward * CoinPrice.USD)).toFixed(
  390. 2));
  391. });
  392.  
  393. // Charts initialized
  394. var chartsInitialized = false;
  395. var intervalChartsUpdate;
  396. var userChartsData2 = null;
  397. var chartsInitialized2 = false;
  398. var xhrAddressPoll;
  399. var addressTimeout;
  400. // Update current page
  401. currentPage = {
  402. destroy: function () {
  403. calcEstimateProfit();
  404. $('#networkLastBlockFound,#poolLastBlockFound').timeago('dispose');
  405. if (chartsInitialized) {
  406. chartsInitialized = false;
  407. clearInterval(intervalChartsUpdate);
  408. }
  409. },
  410. update: function () {
  411. $('#networkLastBlockFound').timeago('update', new Date(lastStats.lastblock.timestamp * 1000).toISOString());
  412.  
  413. updateText('networkHashrate', getReadableHashRateString(lastStats.network.difficulty / lastStats.config
  414. .coinDifficultyTarget) + '/sec');
  415. updateText('networkDifficulty', getReadableDiffString(lastStats.network.difficulty));
  416. updateText('coinSymbol', lastStats.config.symbol);
  417. updateText('blockchainHeight', formatNumber(lastStats.network.height.toString(), ' '));
  418. updateText('lastHash', (lastStats.lastblock.hash).substring(0, 13) + '...').setAttribute('href',
  419. getBlockchainUrl(lastStats.lastblock.hash));
  420.  
  421. if (lastStats.config.networkFee) {
  422. var networkFeePercent = lastStats.config.networkFee / 100;
  423. updateText('networkLastReward', getReadableCoins(lastStats.lastblock.reward - (lastStats.lastblock
  424. .reward * networkFeePercent)));
  425. } else {
  426. updateText('networkLastReward', getReadableCoins(lastStats.lastblock.reward));
  427. }
  428.  
  429. updateText('poolHashrate', getReadableHashRateString(lastStats.pool.hashrate) + '/sec');
  430. updateText('blocksTotal', lastStats.pool.totalBlocks.toString());
  431.  
  432. var hashPower = lastStats.pool.hashrate / (lastStats.network.difficulty / lastStats.config.coinDifficultyTarget) *
  433. 100;
  434. updateText('hashPower', hashPower.toFixed(2) + '%');
  435.  
  436. if (lastStats.pool.lastBlockFound) {
  437. var d = new Date(parseInt(lastStats.pool.lastBlockFound)).toISOString();
  438. $('#poolLastBlockFound').timeago('update', d);
  439. } else {
  440. $('#poolLastBlockFound').removeAttr('title').data('ts', '').update('Never');
  441. }
  442.  
  443. updateText('poolMiners', lastStats.pool.miners.toString());
  444. updateText('poolWorkers', lastStats.pool.workers.toString());
  445.  
  446. var totalFee = lastStats.config.fee;
  447. if (Object.keys(lastStats.config.donation).length) {
  448. var totalDonation = 0;
  449. for (var i in lastStats.config.donation) {
  450. totalDonation += lastStats.config.donation[i];
  451. }
  452. totalFee += totalDonation;
  453. }
  454. updateText('poolFee', (totalFee > 0 && totalFee != 100 ? floatToString(totalFee) - 1 : (totalFee ==
  455. 100 ? '100' : '0')) + '%');
  456.  
  457. updateText('paymentsInterval', getReadableTime(lastStats.config.paymentsInterval));
  458. updateText('paymentsMinimum', getReadableCoins(lastStats.config.minPaymentThreshold));
  459.  
  460. updateText('blockSolvedTime', getReadableTime(lastStats.network.difficulty / lastStats.pool.hashrate));
  461. updateText('currentEffort', (lastStats.pool.roundHashes / lastStats.network.difficulty * 100).toFixed(
  462. 1) + '%');
  463.  
  464. if (lastStats.charts && !chartsInitialized) {
  465. intervalChartsUpdate = setInterval(createCharts, 60 * 1000);
  466. createCharts();
  467. chartsInitialized = true;
  468. }
  469.  
  470. // CN Algorithm
  471. var cnAlgorithm = lastStats.config.cnAlgorithm || "cryptonight";
  472. var cnVariant = lastStats.config.cnVariant || 0;
  473.  
  474. algorithm = '';
  475. xmrstakAlgo = '';
  476.  
  477. if (cnAlgorithm == "cryptonight_light") {
  478. if (cnVariant === 1) {
  479. algorithm = 'Cryptonight Light (Aeon v7)';
  480. xmrstakAlgo = 'cryptonight_lite_v7';
  481. } else if (cnVariant === 2) {
  482. algorithm = 'Cryptonight Light (IPBC)';
  483. xmrstakAlgo = 'cryptonight_lite_v7_xor';
  484. } else {
  485. algorithm = 'Cryptonight Light (Original)';
  486. xmrstakAlgo = 'cryptonight_lite';
  487. }
  488. } else if (cnAlgorithm == "cryptonight_heavy") {
  489. algorithm = 'Cryptonight Heavy';
  490. xmrstakAlgo = 'cryptonight_heavy';
  491. } else {
  492. if (cnVariant === 1) {
  493. algorithm = 'Cryptonight (Monero v7)';
  494. xmrstakAlgo = 'cryptonight_v7';
  495. } else if (cnVariant === 3) {
  496. algorithm = 'Cryptonight (Stellite v7)';
  497. xmrstakAlgo = 'cryptonight_v7_stellite';
  498. } else if (cnVariant === 4) {
  499. algorithm = 'Cryptonight Fast (Masari)';
  500. xmrstakAlgo = 'cryptonight_masari';
  501. } else {
  502. algorithm = 'Cryptonight (Saber)';
  503. xmrstakAlgo = 'cryptonight_bittube';
  504. }
  505. }
  506.  
  507. updateText('cnAlgorithm', algorithm);
  508. updateText('xmrstakAlgo', xmrstakAlgo);
  509. }
  510. };
  511.  
  512. // Enable timeago on last block found
  513. $('#networkLastBlockFound,#poolLastBlockFound').timeago();
  514.  
  515. /**
  516. * Charts
  517. **/
  518.  
  519. // Create charts
  520. function createCharts() {
  521. if (!lastStats || !lastStats.charts) return;
  522. var data = lastStats.charts;
  523.  
  524. var graphData = {
  525. poolhashrate: getGraphData(data.hashrate),
  526. pooldiff: getGraphData(data.difficulty),
  527. poolminers: getGraphData(data.miners),
  528. };
  529.  
  530. for (var graphType in graphData) {
  531. if (graphData[graphType].values.length > 1) {
  532. var $chart = $('#chart_' + graphType);
  533. var bgcolor = null,
  534. bordercolor = null,
  535. borderwidth = null;
  536. var colorelem = $chart.siblings('a.chart-style');
  537. if (colorelem.length == 1) {
  538. bgcolor = colorelem.css('background-color');
  539. bordercolor = colorelem.css('border-left-color');
  540. borderwidth = parseFloat(colorelem.css('width'));
  541. }
  542. if (bgcolor === null) bgcolor = 'rgba(3, 169, 244, .4)';
  543. if (bordercolor === null) bordercolor = '#03a9f4';
  544. if (borderwidth === null || isNaN(borderwidth)) borderwidth = 1;
  545.  
  546. var chartObj = new Chart(document.getElementById('chart_' + graphType), {
  547. type: 'line',
  548. data: {
  549. labels: graphData[graphType].names,
  550. datasets: [{
  551. data: graphData[graphType].values,
  552. dataType: graphType,
  553. fill: true,
  554. backgroundColor: bgcolor,
  555. borderColor: bordercolor,
  556. borderWidth: borderwidth
  557. }]
  558. },
  559. options: {
  560. animation: false,
  561. responsive: true,
  562. maintainAspectRatio: false,
  563. legend: {
  564. display: false
  565. },
  566. elements: {
  567. point: {
  568. radius: 0,
  569. hitRadius: 10,
  570. hoverRadius: 5
  571. }
  572. },
  573. scales: {
  574. xAxes: [{
  575. display: false,
  576. ticks: {
  577. display: false
  578. },
  579. gridLines: {
  580. display: false
  581. }
  582. }],
  583. yAxes: [{
  584. display: false,
  585. ticks: {
  586. display: false,
  587. beginAtZero: true,
  588. userCallback: function (label, index, labels) {
  589. if (Math.floor(label) === label) return label;
  590. }
  591. },
  592. gridLines: {
  593. display: false
  594. }
  595. }]
  596. },
  597. layout: {
  598. padding: {
  599. top: 5,
  600. left: 0,
  601. right: 0,
  602. bottom: 0
  603. }
  604. },
  605. tooltips: {
  606. callbacks: {
  607. label: function (tooltipItem, data) {
  608. var dataType = data.datasets[tooltipItem.datasetIndex].dataType || '';
  609. var label = tooltipItem.yLabel;
  610. if (dataType == 'poolhashrate') label = getReadableHashRateString(
  611. tooltipItem.yLabel) + '/sec';
  612. else if (dataType == 'pooldiff') label = getReadableDiffString(
  613. tooltipItem.yLabel);
  614. else if (dataType == 'poolminers') label = (tooltipItem.yLabel) + ' ' +
  615. 'miner';
  616. else label = formatNumber(tooltipItem.yLabel.toString(), ' ');
  617. return ' ' + label;
  618. }
  619. }
  620. }
  621. }
  622. });
  623. $chart.closest('.poolChart').show();
  624. }
  625. }
  626. }
  627.  
  628. // Get chart data
  629. function getGraphData(rawData) {
  630. var graphData = {
  631. names: [],
  632. values: []
  633. };
  634. if (rawData) {
  635. for (var i = 0, xy; xy = rawData[i]; i++) {
  636. graphData.names.push(new Date(xy[0] * 1000).toLocaleString());
  637. graphData.values.push(xy[1]);
  638. }
  639. }
  640. return graphData;
  641. }
  642.  
  643. // Ambil News
  644.  
  645. $(document).ready(function () {
  646. $.getJSON("https://admin-asiapool.club/api/news", function (data) {
  647. var items = [];
  648.  
  649. $.each(data, function (key, val) {
  650. items.push(
  651. `
  652. <p>
  653. <span class="label label-success">${ val.published }</span>
  654. <span class="text-primary">
  655. <a href="${ val.url }" target="_blank">${ val.name }</a>
  656. </span>
  657. ${ val.content }
  658. </p>
  659. `
  660. );
  661. });
  662.  
  663. $("<div/>", {
  664. "class": "news-list",
  665. html: items.join("")
  666. }).appendTo(".scroll");
  667. });
  668. })
  669.  
  670.  
  671.  
  672.  
  673. /**
  674. * Miner statistics
  675. **/
  676. // Enable time ago on last submitted share
  677. $('#yourLastShare').timeago();
  678. // Load current miner statistics
  679.  
  680. function fetchAddressStats(longpoll) {
  681. var address = getCurrentAddress();
  682.  
  683. xhrAddressPoll = $.ajax({
  684. url: api + '/stats_address',
  685. data: {
  686. address: address,
  687. longpoll: longpoll
  688. },
  689. dataType: 'json',
  690. cache: 'false',
  691. success: function (data) {
  692. if (!data.stats) {
  693. $('.yourStats, .yourWorkers, .userChart').hide();
  694. $('#addressError').text(data.error).show();
  695. docCookies.setItem('mining_address', '', Infinity);
  696. loadLiveStats(true);
  697. return;
  698. }
  699. $('#addressError').hide();
  700. if (data.stats.lastShare) {
  701. $('#yourLastShare').timeago('update', new Date(parseInt(data.stats.lastShare) * 1000).toISOString());
  702. } else {
  703. updateText('yourLastShare', 'Never');
  704. }
  705. updateText('yourHashrateHolder', (getReadableHashRateString(data.stats.hashrate) || '0 H') +
  706. '/sec');
  707. updateText('yourHashes', getReadableDiffString(data.stats.hashes || 0).toString());
  708. updateText('yourPaid', getReadableCoins(data.stats.paid));
  709. updateText('yourPendingBalance', getReadableCoins(data.stats.balance));
  710.  
  711. // Mining estimation coin
  712.  
  713. var profits = (data.stats.hashrate * 3600 / lastStats.network.difficulty * lastStats.lastblock
  714. .reward)
  715. var profits1 = (data.stats.hashrate * 86400 / lastStats.network.difficulty * lastStats.lastblock
  716. .reward)
  717. var profits2 = (data.stats.hashrate * 7 * 86400 / lastStats.network.difficulty * lastStats.lastblock
  718. .reward)
  719. var profits3 = (data.stats.hashrate * 30 * 86400 / lastStats.network.difficulty * lastStats
  720. .lastblock.reward)
  721. if (profits) {
  722. updateText('hourlycoin', getReadableCoins(profits));
  723. updateText('dailycoin', getReadableCoins(profits1));
  724. updateText('weeklycoin', getReadableCoins(profits2));
  725. updateText('monthlycoin', getReadableCoins(profits3));
  726. }
  727.  
  728. var userRoundHashes = parseInt(data.stats.roundHashes || 0);
  729. var poolRoundHashes = parseInt(lastStats.pool.roundHashes || 0);
  730. var userRoundScore = parseFloat(data.stats.roundScore || 0);
  731. var poolRoundScore = parseFloat(lastStats.pool.roundScore || 0);
  732. var lastReward = parseFloat(lastStats.lastblock.reward || 0);
  733.  
  734. var poolFee = lastStats.config.fee;
  735. if (Object.keys(lastStats.config.donation).length) {
  736. var totalDonation = 0;
  737. for (var i in lastStats.config.donation) {
  738. totalDonation += lastStats.config.donation[i];
  739. }
  740. poolFee += totalDonation;
  741. }
  742.  
  743. var transferFee = lastStats.config.transferFee;
  744. var share_pct = userRoundHashes * 100 / poolRoundHashes;
  745. var score_pct = userRoundScore * 100 / poolRoundScore;
  746.  
  747. if (!lastStats.config.slushMiningEnabled) {
  748. $('#slush_round_info').hide();
  749. }
  750.  
  751. renderPayments(data.payments);
  752.  
  753. if (data.workers && data.workers.length > 0) {
  754. renderWorkers(data.workers);
  755. $('.yourWorkers').show();
  756. }
  757.  
  758. $('.yourStats').show();
  759. if (data.charts) {
  760. userChartsData2 = data.charts;
  761. if (!chartsInitialized2) {
  762. intervalChartsUpdate = setInterval(createCharts2, 60 * 1000);
  763. createCharts2();
  764. chartsInitialized2 = true;
  765. }
  766. }
  767.  
  768. fetchAddressStats(true);
  769.  
  770. $.ajax({
  771. url: 'https://tradeogre.com/api/v1/ticker/btc-tube',
  772. dataType: 'json',
  773. cache: 'false',
  774. success: function (data) {
  775. pbtc = data.price * getReadableCoins(profits).replace(' TUBE', '');
  776. pbtc1 = data.price * getReadableCoins(profits1).replace(' TUBE', '');
  777. pbtc2 = data.price * getReadableCoins(profits2).replace(' TUBE', '');
  778. pbtc3 = data.price * getReadableCoins(profits3).replace(' TUBE', '');
  779.  
  780. $('#hourlycoinbtc').text(pbtc + ' BTC');
  781. $('#dailycoinbtc').text(pbtc1 + ' BTC');
  782. $('#weeklycoinbtc').text(pbtc2 + ' BTC');
  783. $('#monthlycoinbtc').text(pbtc3 + ' BTC');
  784.  
  785. $.ajax({
  786. url: 'https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=IDR',
  787. dataType: 'json',
  788. cache: 'false',
  789. success: function (data) {
  790. $('#hourlycoinidr').text((data.IDR * pbtc) + ' IDR');
  791. $('#dailycoinidr').text((data.IDR * pbtc1) + ' IDR');
  792. $('#weeklycoinidr').text((data.IDR * pbtc2) + ' IDR');
  793. $('#monthlycoinidr').text((data.IDR * pbtc3) + ' IDR');
  794. }
  795. });
  796.  
  797. $.ajax({
  798. url: 'https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD',
  799. dataType: 'json',
  800. cache: 'false',
  801. success: function (data) {
  802. $('#hourlycoinusd').text((data.USD * pbtc) + ' USD');
  803. $('#dailycoinusd').text((data.USD * pbtc1) + ' USD');
  804. $('#weeklycoinusd').text((data.USD * pbtc2) + ' USD');
  805. $('#monthlycoinusd').text((data.USD * pbtc3) + ' USD');
  806. }
  807. });
  808. }
  809. });
  810.  
  811.  
  812. },
  813. error: function (e) {
  814. if (e.statusText === 'abort') return;
  815. $('#addressError').text('Connection error').show();
  816.  
  817. if (addressTimeout) clearTimeout(addressTimeout);
  818. addressTimeout = setTimeout(function () {
  819. fetchAddressStats(false);
  820. }, 2000);
  821. }
  822. });
  823. }
  824. // Click on lookup button
  825. $('#lookUp').click(function () {
  826. var address = $('#yourStatsInput').val().trim();
  827.  
  828. if (getCurrentAddress() != address) {
  829. docCookies.setItem('mining_address', address, Infinity);
  830.  
  831. var urlWalletAddress = location.search.split('wallet=')[1] || 0;
  832. if (urlWalletAddress) {
  833. window.location.href = "/#worker_stats";
  834. return;
  835. } else {
  836. docCookies.setItem('mining_address', address, Infinity);
  837. loadLiveStats(true);
  838. }
  839. }
  840. $('#addressError, .yourStats, .yourWorkers, .userChart').hide();
  841. $('#workersReport_rows').empty();
  842. $('#paymentsReport_rows').empty();
  843. $('#lookUp > span:first-child').hide();
  844. $('#lookUp > span:last-child').show();
  845. if (xhrAddressPoll) xhrAddressPoll.abort();
  846. if (addressTimeout) clearTimeout(addressTimeout);
  847. $('#lookUp > span:last-child').hide();
  848. $('#lookUp > span:first-child').show();
  849.  
  850. if (!address) {
  851. $('#yourStatsInput').focus();
  852. return;
  853. }
  854.  
  855. fetchAddressStats(false);
  856. });
  857. // Lookup if current address is known
  858. var address = getCurrentAddress();
  859. if (address) {
  860. $('#yourStatsInput').val(address);
  861. $('#lookUp').click();
  862. }
  863. // Handler enter key on lookup address text field
  864. $('#yourStatsInput').keyup(function (e) {
  865. if (e.keyCode === 13)
  866. $('#lookUp').click();
  867. });
  868. /**
  869. * Charts
  870. **/
  871. // Create charts
  872. function createCharts2() {
  873. if (!userChartsData2) return;
  874. var data = userChartsData2;
  875. var graphData2 = {
  876. userhashrate: getGraphData(data.hashrate),
  877. userpayments: getGraphData(data.payments)
  878. };
  879. for (var graphType in graphData2) {
  880. if (graphData2[graphType].values.length > 1) {
  881. var $chart = $('#chart_' + graphType);
  882. var bgcolor = null,
  883. bordercolor = null,
  884. borderwidth = null;
  885. var colorelem = $chart.siblings('a.chart-style');
  886. if (colorelem.length == 1) {
  887. bgcolor = colorelem.css('background-color');
  888. bordercolor = colorelem.css('border-left-color');
  889. borderwidth = parseFloat(colorelem.css('width'));
  890. }
  891. if (bgcolor === null) bgcolor = 'rgba(3, 169, 244, .4)';
  892. if (bordercolor === null) bordercolor = '#03a9f4';
  893. if (borderwidth === null || isNaN(borderwidth)) borderwidth = 1;
  894. var chartObj = new Chart(document.getElementById('chart_' + graphType), {
  895. type: 'line',
  896. data: {
  897. labels: graphData2[graphType].names,
  898. datasets: [{
  899. data: graphData2[graphType].values,
  900. dataType: graphType,
  901. fill: true,
  902. backgroundColor: bgcolor,
  903. borderColor: bordercolor,
  904. borderWidth: borderwidth
  905. }]
  906. },
  907. options: {
  908. animation: false,
  909. responsive: true,
  910. maintainAspectRatio: false,
  911. legend: {
  912. display: false
  913. },
  914. elements: {
  915. point: {
  916. radius: 0,
  917. hitRadius: 10,
  918. hoverRadius: 5
  919. }
  920. },
  921. scales: {
  922. xAxes: [{
  923. display: false,
  924. ticks: {
  925. display: false
  926. },
  927. gridLines: {
  928. display: false
  929. }
  930. }],
  931. yAxes: [{
  932. display: false,
  933. ticks: {
  934. display: false,
  935. beginAtZero: true,
  936. userCallback: function (label, index, labels) {
  937. if (Math.floor(label) === label) return label;
  938. }
  939. },
  940. gridLines: {
  941. display: false
  942. }
  943. }]
  944. },
  945. layout: {
  946. padding: {
  947. top: 10,
  948. left: 0,
  949. right: 0,
  950. bottom: 0
  951. }
  952. },
  953. tooltips: {
  954. callbacks: {
  955. label: function (tooltipItem, data) {
  956. var dataType = data.datasets[tooltipItem.datasetIndex].dataType || '';
  957. var label = tooltipItem.yLabel;
  958. if (dataType == 'userhashrate') label = getReadableHashRateString(
  959. tooltipItem.yLabel) + '/sec';
  960. else if (dataType == 'userpayments') label = getReadableCoins(
  961. tooltipItem.yLabel);
  962. return ' ' + label;
  963. }
  964. }
  965. }
  966. }
  967. });
  968. $chart.closest('.userChart').show();
  969. }
  970. }
  971. }
  972. // Get chart data
  973. function getGraphData(rawData, fixValueToCoins) {
  974. var graphData2 = {
  975. names: [],
  976. values: []
  977. };
  978.  
  979. if (rawData) {
  980. for (var i = 0, xy; xy = rawData[i]; i++) {
  981. graphData2.names.push(new Date(xy[0] * 1000).toLocaleString());
  982. graphData2.values.push(xy[1]);
  983. }
  984. }
  985.  
  986. return graphData2;
  987. }
  988. /**
  989. * Workers report
  990. **/
  991.  
  992. // Get worker row id
  993. function getWorkerRowId(workerName) {
  994. var id = btoa(workerName);
  995. id = id.replace(/=/, '');
  996. return id;
  997. }
  998. // Get worker row element
  999. function getWorkerRowElement(worker, jsonString) {
  1000. var row = document.createElement('tr');
  1001. row.setAttribute('data-json', jsonString);
  1002. row.setAttribute('data-name', worker.name);
  1003. row.setAttribute('id', 'workerRow_' + getWorkerRowId(worker.name));
  1004. row.innerHTML = getWorkerCells(worker);
  1005. return row;
  1006. }
  1007. // Get worker cells
  1008. function getWorkerCells(worker) {
  1009. var hashrate = worker.hashrate ? worker.hashrate : 0;
  1010. var hashrate1h = worker.hashrate_1h || 0;
  1011. var hashrate6h = worker.hashrate_6h || 0;
  1012. var hashrate24h = worker.hashrate_24h || 0;
  1013. var lastShare = worker.lastShare ? worker.lastShare : 0;
  1014. var hashes = getReadableDiffString(worker.hashes || 0).toString();
  1015. var status = (hashrate <= 0) ? 'error' : 'ok';
  1016. return '<td class="col1" data-sort="' + status + '"><i class="fa fa-' + (status == 'ok' ? 'check status-ok' :
  1017. 'times status-error') + '"></i></td>' +
  1018. '<td class="col2" data-sort="' + (worker.name != 'undefined' ? worker.name : '') + '">' + (worker.name !=
  1019. 'undefined' ? worker.name : '<em>Undefined</em>') + '</td>' +
  1020. '<td class="col3" data-sort="' + hashrate + '">' + getReadableHashRateString(hashrate) + '/s</td>' +
  1021. '<td class="col4 avghr" data-sort="' + hashrate1h + '">' + getReadableHashRateString(hashrate1h) +
  1022. '/s</td>' +
  1023. '<td class="col5 avghr" data-sort="' + hashrate6h + '">' + getReadableHashRateString(hashrate6h) +
  1024. '/s</td>' +
  1025. '<td class="col6 avghr" data-sort="' + hashrate24h + '">' + getReadableHashRateString(hashrate24h) +
  1026. '/s</td>' +
  1027. '<td class="col7 text-center" data-sort="' + lastShare + '">' + (lastShare ? $.timeago(new Date(parseInt(
  1028. lastShare) * 1000).toISOString()) : 'Never') + '</td>' +
  1029. '<td class="col8 text-center" data-sort="' + hashes + '">' + hashes + '</td>';
  1030. }
  1031. // Handle sort on workers table
  1032. $('#workersReport th.sort').on('click', sortTable);
  1033. // Sort workers
  1034. function sortWorkers(a, b) {
  1035. var aName = a.name.toLowerCase();
  1036. var bName = b.name.toLowerCase();
  1037. return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
  1038. }
  1039. // Render workers list
  1040. function renderWorkers(workersData) {
  1041. workersData = workersData.sort(sortWorkers);
  1042.  
  1043. var $workersRows = $('#workersReport_rows');
  1044.  
  1045. for (var i = 0; i < workersData.length; i++) {
  1046. var existingRow = document.getElementById('workerRow_' + getWorkerRowId(workersData[i].name));
  1047. if (!existingRow) {
  1048. $workersRows.empty();
  1049. break;
  1050. }
  1051. }
  1052. var have_avg_hr = false;
  1053. for (var i = 0; i < workersData.length; i++) {
  1054. var worker = workersData[i];
  1055. if (Date.now() / 1000 - parseInt(worker.lastShare) > 2 * 86400) continue;
  1056. if (!have_avg_hr && 'hashrate_1h' in worker) have_avg_hr = true;
  1057. var workerJson = JSON.stringify(worker);
  1058. var existingRow = document.getElementById('workerRow_' + getWorkerRowId(worker.name));
  1059. if (existingRow && existingRow.getAttribute('data-json') !== workerJson) {
  1060. $(existingRow).replaceWith(getWorkerRowElement(worker, workerJson));
  1061. } else if (!existingRow) {
  1062. var workerElement = getWorkerRowElement(worker, workerJson);
  1063. $workersRows.append(workerElement);
  1064. }
  1065. }
  1066. if (!have_avg_hr) $('#workersReport .avghr').hide();
  1067. else $('#workersReport .avghr').show();
  1068. }
  1069. /**
  1070. * Payments report
  1071. **/
  1072. // Parse payment data
  1073. function parsePayment(time, serializedPayment) {
  1074. var parts = serializedPayment.split(':');
  1075. return {
  1076. time: parseInt(time),
  1077. hash: parts[0],
  1078. amount: parts[1],
  1079. fee: parts[2],
  1080. mixin: parts[3],
  1081. recipients: parts[4]
  1082. };
  1083. }
  1084. // Get payment row element
  1085. function getPaymentRowElement(payment, jsonString) {
  1086. var row = document.createElement('tr');
  1087. row.setAttribute('data-json', jsonString);
  1088. row.setAttribute('data-time', payment.time);
  1089. row.setAttribute('id', 'paymentRow' + payment.time);
  1090. row.innerHTML = getPaymentCells(payment);
  1091. return row;
  1092. }
  1093. // Get payment cells
  1094. function getPaymentCells(payment) {
  1095. return '<td class="col1">' + formatDate(payment.time) + '</td>' +
  1096. '<td class="col2">' + formatPaymentLink(payment.hash) + '</td>' +
  1097. '<td class="col3">' + getReadableCoins(payment.amount) + '</td>' +
  1098. '<td class="col4">' + payment.mixin + '</td>';
  1099. }
  1100. // Get summary row element
  1101. function getSummaryRowElement(summary, jsonString) {
  1102. var row = document.createElement('tr');
  1103. row.setAttribute('data-json', jsonString);
  1104. row.setAttribute('data-date', summary.date);
  1105. row.setAttribute('id', 'summaryRow' + summary.date);
  1106. row.setAttribute('class', 'summary');
  1107. row.innerHTML = getSummaryCells(summary);
  1108. return row;
  1109. }
  1110. // Get summary cells
  1111. function getSummaryCells(summary) {
  1112. var text = getTranslation('paymentSummaryMulti') ? getTranslation('paymentSummaryMulti') :
  1113. 'On %DATE% you have received %AMOUNT% in %COUNT% payments';
  1114. if (summary.count <= 1) text = getTranslation('paymentSummarySingle') ? getTranslation('paymentSummarySingle') :
  1115. 'On %DATE% you have received %AMOUNT%';
  1116. text = text.replace(/%DATE%/g, summary.date);
  1117. text = text.replace(/%COUNT%/g, summary.count);
  1118. text = text.replace(/%AMOUNT%/g, getReadableCoins(summary.amount));
  1119. return '<td colspan="4"><div class="alert notifys" style="color: #fff;background-color:#7388D9;"><i class="fa fa-money"></i> ' +
  1120. text + '</div></td>';
  1121. }
  1122. // Render payments
  1123. function renderPayments(paymentsResults) {
  1124. var $paymentsRows = $('#paymentsReport_rows');
  1125. var lastPaymentDate = null;
  1126. var summaryData = {
  1127. date: null,
  1128. time: null,
  1129. count: 0,
  1130. amount: 0
  1131. };
  1132. for (var i = 0; i < paymentsResults.length; i += 2) {
  1133. var payment = parsePayment(paymentsResults[i + 1], paymentsResults[i]);
  1134. var paymentJson = JSON.stringify(payment);
  1135. var paymentElement = getPaymentRowElement(payment, paymentJson);
  1136. var paymentDate = new Date(parseInt(payment.time) * 1000).toLocaleDateString();
  1137. if (!lastPaymentDate || lastPaymentDate && paymentDate != lastPaymentDate) {
  1138. summaryData = {
  1139. date: paymentDate,
  1140. time: payment.time,
  1141. count: 0,
  1142. amount: 0
  1143. };
  1144. }
  1145. var existingRow = document.getElementById('paymentRow' + payment.time);
  1146. if (existingRow && existingRow.getAttribute('data-json') !== paymentJson) {
  1147. $(existingRow).replaceWith(getPaymentRowElement(payment, paymentJson));
  1148. } else if (!existingRow) {
  1149. var inserted = false;
  1150. var rows = $paymentsRows.children().get();
  1151. for (var f = 0; f < rows.length; f++) {
  1152. var pTime = parseInt(rows[f].getAttribute('data-time'));
  1153. if (pTime && pTime < payment.time) {
  1154. inserted = true;
  1155. $(rows[f]).before(paymentElement);
  1156. break;
  1157. }
  1158. }
  1159. if (!inserted) {
  1160. $paymentsRows.append(paymentElement);
  1161. }
  1162. }
  1163.  
  1164. summaryData.count++;
  1165. summaryData.amount += parseInt(payment.amount);
  1166.  
  1167. var summaryJson = JSON.stringify(summaryData);
  1168. var summaryElement = getSummaryRowElement(summaryData, summaryJson);
  1169. var existingSummary = document.getElementById('summaryRow' + summaryData.date);
  1170. if (existingSummary && existingSummary.getAttribute('data-json') !== summaryJson) {
  1171. $(existingSummary).replaceWith(summaryElement);
  1172. } else if (!existingSummary) {
  1173. var inserted = false;
  1174. var rows = $paymentsRows.children().get();
  1175. for (var f = 0; f < rows.length; f++) {
  1176. var pTime = parseInt(rows[f].getAttribute('data-time'));
  1177. if (pTime && pTime === summaryData.time) {
  1178. inserted = true;
  1179. $(rows[f]).before(summaryElement);
  1180. break;
  1181. }
  1182. }
  1183. if (!inserted) {
  1184. $paymentsRows.append(summaryElement);
  1185. }
  1186. }
  1187. lastPaymentDate = paymentDate;
  1188. }
  1189. }
  1190. // Load more payments button
  1191. var xhrGetPayments;
  1192. $('#loadMorePayments').click(function () {
  1193. if (xhrGetPayments) xhrGetPayments.abort();
  1194. xhrGetPayments = $.ajax({
  1195. url: api + '/get_payments',
  1196. data: {
  1197. time: $('#paymentsReport_rows').children().last().data('time'),
  1198. address: address
  1199. },
  1200. dataType: 'json',
  1201. cache: 'false',
  1202. success: function (data) {
  1203. renderPayments(data);
  1204. }
  1205. });
  1206. });
  1207.  
  1208. /**
  1209. * Hash Profitability Calculator
  1210. **/
  1211.  
  1212. // Automatically update profit calculation on key press
  1213. $('#calcHashRate').keyup(calcEstimateProfit).change(calcEstimateProfit);
  1214. // Click on button
  1215. $('#calcHashUnits > li > a').click(function (e) {
  1216. e.preventDefault();
  1217. $('#calcHashUnit').text($(this).text()).data('mul', $(this).data('mul'));
  1218. calcEstimateProfit();
  1219. });
  1220. // Calculate current estimation
  1221. function calcEstimateProfit() {
  1222. try {
  1223. var rateUnit = Math.pow(1000, parseInt($('#calcHashUnit').data('mul')));
  1224. var hashRate = parseFloat($('#calcHashRate').val()) * rateUnit;
  1225. var profit = (hashRate * 86400 / lastStats.network.difficulty) * lastStats.lastblock.reward;
  1226. if (profit) {
  1227. updateText('getcoin', getReadableCoins(profit));
  1228. updateText('getusd', (CoinPrice.USD * getReadableCoins(profit, 2, true)).toFixed(2));
  1229. updateText('getbtc', (CoinPrice.BTC * getReadableCoins(profit, 2, true)).toFixed(6));
  1230. return;
  1231. }
  1232. } catch (e) {}
  1233. updateText('calcHashAmount1', '');
  1234. updateText('calcHashAmount2', '');
  1235. }
  1236. var address = getCurrentAddress();
  1237. if (address) {
  1238. getPayoutLevel(address);
  1239. }
  1240. // Get current payout level
  1241. function getPayoutLevel(address) {
  1242. if (!address || address == '') return;
  1243.  
  1244. $.ajax({
  1245. url: api + '/get_miner_payout_level',
  1246. data: {
  1247. address: address
  1248. },
  1249. dataType: 'json',
  1250. cache: 'false'
  1251. }).done(function (data) {
  1252. updateText('yourPayoutRate', (data.level));
  1253. });
  1254. }
  1255. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement