Browse Source

better handling for node-initialization and rpc-error issues on homepage

fix-133-memory-crash
Dan Janosik 6 years ago
parent
commit
df7fb91312
No known key found for this signature in database GPG Key ID: C6F8CE9FFDB2CED2
  1. 349
      views/index.pug

349
views/index.pug

@ -7,211 +7,218 @@ block content
h1(class="h3") #{coinConfig.siteTitle}
hr
if (config.demoSite && session.hideHomepageBanner != "true")
div(class="alert alert-primary alert-dismissible shadow-sm mb-4", role="alert")
span
strong #{coinConfig.siteTitle}
span is
a(href="https://github.com/janoside/btc-rpc-explorer", target="_blank") open-source
span and easy to set up. It can communicate with your
a(href=coinConfig.nodeUrl, target="_blank") #{coinConfig.name} Full Node
span via RPC. See the
a(href="https://github.com/janoside/btc-rpc-explorer", target="_blank") project description
span for a list of features and instructions for running.
if (global.sourcecodeProjectMetadata)
div(class="mt-2")
a(href="https://github.com/janoside/btc-rpc-explorer", class="btn btn-primary mr-3 mb-1")
i(class="fas fa-star mr-2")
span(class="mr-2") Star
span.font-weight-light #{global.sourcecodeProjectMetadata.stargazers_count}
a(href="https://github.com/janoside/btc-rpc-explorer/fork", class="btn btn-primary mr-3 mb-1")
i(class="fas fa-code-branch mr-2")
span(class="mr-2") Fork
span.font-weight-light #{global.sourcecodeProjectMetadata.forks_count}
button.btn.btn-primary(type="button", class="btn btn-primary mb-1", data-toggle="modal", data-target="#exampleModalCenter")
i(class="fas fa-heart mr-2")
span Donate via
span(class="font-weight-light") BTCPay
a(href="/changeSetting?name=hideHomepageBanner&value=true", class="close", aria-label="Close", style="text-decoration: none;")
span(aria-hidden="true") ×
if (getblockchaininfo == null)
div(class="alert alert-warning")
p(class="font-weight-bold") Unable to get basic blockchain data
ul
li If you just started your node, it may still be initializing.
li If your node is already initialized, check your RPC connection info.
else
if (config.demoSite && session.hideHomepageBanner != "true")
div(class="alert alert-primary alert-dismissible shadow-sm mb-4", role="alert")
span
strong #{coinConfig.siteTitle}
span is
a(href="https://github.com/janoside/btc-rpc-explorer", target="_blank") open-source
span and easy to set up. It can communicate with your
a(href=coinConfig.nodeUrl, target="_blank") #{coinConfig.name} Full Node
span via RPC. See the
a(href="https://github.com/janoside/btc-rpc-explorer", target="_blank") project description
span for a list of features and instructions for running.
if (global.sourcecodeProjectMetadata)
div(class="mt-2")
a(href="https://github.com/janoside/btc-rpc-explorer", class="btn btn-primary mr-3 mb-1")
i(class="fas fa-star mr-2")
span(class="mr-2") Star
span.font-weight-light #{global.sourcecodeProjectMetadata.stargazers_count}
a(href="https://github.com/janoside/btc-rpc-explorer/fork", class="btn btn-primary mr-3 mb-1")
i(class="fas fa-code-branch mr-2")
span(class="mr-2") Fork
span.font-weight-light #{global.sourcecodeProjectMetadata.forks_count}
button.btn.btn-primary(type="button", class="btn btn-primary mb-1", data-toggle="modal", data-target="#exampleModalCenter")
i(class="fas fa-heart mr-2")
span Donate via
span(class="font-weight-light") BTCPay
- var networkSummaryItemCount = 4;
a(href="/changeSetting?name=hideHomepageBanner&value=true", class="close", aria-label="Close", style="text-decoration: none;")
span(aria-hidden="true") ×
if (getblockchaininfo.size_on_disk)
- networkSummaryItemCount++;
if (global.exchangeRates)
- networkSummaryItemCount++;
- var networkSummaryItemCount = 4;
if (txStats)
- networkSummaryItemCount++;
if (getblockchaininfo.size_on_disk)
- networkSummaryItemCount++;
- var networkSummaryColumnClass = "col-md-4";
if (networkSummaryItemCount > 6)
- networkSummaryColumnClass = "col-md-3";
div(class="card mb-4 shadow-sm")
div(class="card-header")
h2(class="h6 mb-0") Network Summary
div(class="card-body")
div(class="row")
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px;")
span
i(class="fas fa-tachometer-alt fa-2x mr-2", style="margin-top: 6px;")
- var hashrateData = utils.formatLargeNumber(miningInfo.networkhashps, 3);
span(class="font-weight-bold") Hashrate
if (global.exchangeRates)
- networkSummaryItemCount++;
p(class="lead")
span #{hashrateData[0]}
span(title=(hashrateData[1].name + "-hash / x10^" + hashrateData[1].exponent), data-toggle="tooltip") #{hashrateData[1].abbreviation}H/s
if (txStats)
- networkSummaryItemCount++;
if (txStats)
- var networkSummaryColumnClass = "col-md-4";
if (networkSummaryItemCount > 6)
- networkSummaryColumnClass = "col-md-3";
div(class="card mb-4 shadow-sm")
div(class="card-header")
h2(class="h6 mb-0") Network Summary
div(class="card-body")
div(class="row")
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px;")
span
i(class="fas fa-sign-out-alt fa-2x mr-2", style="margin-top: 6px; margin-left: 3px;")
i(class="fas fa-tachometer-alt fa-2x mr-2", style="margin-top: 6px;")
- var hashrateData = utils.formatLargeNumber(miningInfo.networkhashps, 3);
span(class="font-weight-bold") Hashrate
span(class="font-weight-bold") Total Transactions
p(class="lead")
span #{hashrateData[0]}
span(title=(hashrateData[1].name + "-hash / x10^" + hashrateData[1].exponent), data-toggle="tooltip") #{hashrateData[1].abbreviation}H/s
p(class="lead") #{txStats.totalTxCount.toLocaleString()}
if (txStats)
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px;")
span
i(class="fas fa-sign-out-alt fa-2x mr-2", style="margin-top: 6px; margin-left: 3px;")
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px;")
span
i(class="fas fa-unlock-alt fa-2x mr-2", style="margin-top: 6px; margin-left: 3px;")
span(class="font-weight-bold") Total Transactions
span(class="font-weight-bold") Unconfirmed Transactions
p(class="lead") #{txStats.totalTxCount.toLocaleString()}
p(class="lead") #{mempoolInfo.size.toLocaleString()} tx
- var mempoolBytesData = utils.formatLargeNumber(mempoolInfo.usage, 2);
small(class="text-muted font-weight-light") (#{mempoolBytesData[0]} #{mempoolBytesData[1].abbreviation}B)
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px;")
span
i(class="fas fa-unlock-alt fa-2x mr-2", style="margin-top: 6px; margin-left: 3px;")
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px;")
span
i(class="fas fa-bolt fa-2x mr-2", style="margin-top: 6px; margin-left: 6px;")
span(class="font-weight-bold") Unconfirmed Transactions
p(class="lead") #{mempoolInfo.size.toLocaleString()} tx
- var mempoolBytesData = utils.formatLargeNumber(mempoolInfo.usage, 2);
small(class="text-muted font-weight-light") (#{mempoolBytesData[0]} #{mempoolBytesData[1].abbreviation}B)
- var chainworkData = utils.formatLargeNumber(parseInt("0x" + getblockchaininfo.chainwork), 2);
span(class="font-weight-bold") Chainwork
p(class="lead")
span(data-toggle="tooltip", title=getblockchaininfo.chainwork.replace(/^0+/, ''))
span #{chainworkData[0]}
span x 10
sup #{chainworkData[1].exponent}
span hashes
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px; font-size: 12px;")
span
i(class="fas fa-dumbbell fa-2x mr-2", style="margin-top: 6px;")
- var difficultyData = utils.formatLargeNumber(getblockchaininfo.difficulty, 3);
span(class="font-weight-bold") Difficulty
p(class="lead")
span(title=parseFloat(getblockchaininfo.difficulty).toLocaleString(), data-toggle="tooltip")
span #{difficultyData[0]}
span x 10
sup #{difficultyData[1].exponent}
if (getblockchaininfo.size_on_disk)
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px;")
span
i(class="fas fa-database fa-2x mr-2", style="margin-top: 6px; margin-left: 3px;")
span(class="font-weight-bold") Blockchain Size
i(class="fas fa-bolt fa-2x mr-2", style="margin-top: 6px; margin-left: 6px;")
- var sizeData = utils.formatLargeNumber(getblockchaininfo.size_on_disk, 2);
p(class="lead") #{sizeData[0]} #{sizeData[1].abbreviation}B
if (global.exchangeRates)
- var chainworkData = utils.formatLargeNumber(parseInt("0x" + getblockchaininfo.chainwork), 2);
span(class="font-weight-bold") Chainwork
p(class="lead")
span(data-toggle="tooltip", title=getblockchaininfo.chainwork.replace(/^0+/, ''))
span #{chainworkData[0]}
span x 10
sup #{chainworkData[1].exponent}
span hashes
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px; font-size: 12px;")
span
i(class="fas fa-money-bill-wave-alt fa-2x mr-2", style="margin-top: 7px;")
i(class="fas fa-dumbbell fa-2x mr-2", style="margin-top: 6px;")
span(class="font-weight-bold") Exchange Rate
span(data-toggle="tooltip", title=("Exchange-rate data from: " + coinConfig.exchangeRateData.jsonUrl))
i(class="fas fa-info-circle")
- var difficultyData = utils.formatLargeNumber(getblockchaininfo.difficulty, 3);
if (global.exchangeRates)
p(class="lead") #{utils.formatExchangedCurrency(1.0, "usd")}
else
p(class="lead") -
span(class="font-weight-bold") Difficulty
p(class="lead")
span(title=parseFloat(getblockchaininfo.difficulty).toLocaleString(), data-toggle="tooltip")
span #{difficultyData[0]}
span x 10
sup #{difficultyData[1].exponent}
include includes/tools-card.pug
if (latestBlocks)
div(class="card mb-4 shadow-sm")
div(class="card-header")
div(class="row")
div(class="col")
h2(class="h6 mb-0") Latest Blocks
if (getblockchaininfo.initialblockdownload)
small (#{(getblockchaininfo.headers - getblockchaininfo.blocks).toLocaleString()} behind)
if (getblockchaininfo.size_on_disk)
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px;")
span
i(class="fas fa-database fa-2x mr-2", style="margin-top: 6px; margin-left: 3px;")
span(class="font-weight-bold") Blockchain Size
div(class="col")
span(style="float: right;")
a(href="/blocks")
span Browse Blocks »
- var sizeData = utils.formatLargeNumber(getblockchaininfo.size_on_disk, 2);
p(class="lead") #{sizeData[0]} #{sizeData[1].abbreviation}B
div(class="card-body")
- var blocks = latestBlocks;
- var blockOffset = 0;
if (global.exchangeRates)
div(class=networkSummaryColumnClass)
div(class="float-left", style="height: 40px; width: 40px; font-size: 12px;")
span
i(class="fas fa-money-bill-wave-alt fa-2x mr-2", style="margin-top: 7px;")
include includes/blocks-list.pug
span(class="font-weight-bold") Exchange Rate
span(data-toggle="tooltip", title=("Exchange-rate data from: " + coinConfig.exchangeRateData.jsonUrl))
i(class="fas fa-info-circle")
if (global.exchangeRates)
p(class="lead") #{utils.formatExchangedCurrency(1.0, "usd")}
else
p(class="lead") -
if (txStats)
div(class="card mb-4 shadow-sm")
div(class="card-header")
div(class="row")
div(class="col")
h2(class="h6 mb-0") Transaction Stats Summary
div(class="col")
span(style="float: right;")
a(href="/tx-stats")
span Transaction Stats »
include includes/tools-card.pug
div(class="card-body")
if (true)
if (latestBlocks)
div(class="card mb-4 shadow-sm")
div(class="card-header")
div(class="row")
div(class="col")
h2(class="h6 mb-0") Latest Blocks
if (getblockchaininfo.initialblockdownload)
small (#{(getblockchaininfo.headers - getblockchaininfo.blocks).toLocaleString()} behind)
div(class="col")
span(style="float: right;")
a(href="/blocks")
span Browse Blocks »
div(class="card-body")
- var blocks = latestBlocks;
- var blockOffset = 0;
include includes/blocks-list.pug
if (txStats)
div(class="card mb-4 shadow-sm")
div(class="card-header")
div(class="row")
div(class="col-lg-6")
div(class="table-responsive")
table(class="table text-right mb-4 mb-lg-0")
thead
tr
th Period
th Transactions
th Transactions Per Sec
tbody
each item, index in chainTxStats
tr(class="monospace")
td #{chainTxStatsLabels[index]}
td #{item.window_tx_count.toLocaleString()}
td #{new Decimal(item.txrate).toDecimalPlaces(4)}
div(class="col-lg-6")
script var txRateDataDay = [];
each item, index in txStats.txCountStats.txRates
script txRateDataDay.push({x:#{item.x}, y:#{item.y}});
- var graphData = {id:"graphRateDay", dataVar:"txRateDataDay", labels:txStats.txCountStats.txLabels, title:"Tx Rate, 24hr", xaxisTitle:"Block", xaxisStep:5, yaxisTitle:"Tx Per Sec"};
include ./includes/line-graph.pug
div(class="col")
h2(class="h6 mb-0") Transaction Stats Summary
div(class="col")
span(style="float: right;")
a(href="/tx-stats")
span Transaction Stats »
div(class="card-body")
if (true)
div(class="row")
div(class="col-lg-6")
div(class="table-responsive")
table(class="table text-right mb-4 mb-lg-0")
thead
tr
th Period
th Transactions
th Transactions Per Sec
tbody
each item, index in chainTxStats
tr(class="monospace")
td #{chainTxStatsLabels[index]}
td #{item.window_tx_count.toLocaleString()}
td #{new Decimal(item.txrate).toDecimalPlaces(4)}
div(class="col-lg-6")
script var txRateDataDay = [];
each item, index in txStats.txCountStats.txRates
script txRateDataDay.push({x:#{item.x}, y:#{item.y}});
- var graphData = {id:"graphRateDay", dataVar:"txRateDataDay", labels:txStats.txCountStats.txLabels, title:"Tx Rate, 24hr", xaxisTitle:"Block", xaxisStep:5, yaxisTitle:"Tx Per Sec"};
include ./includes/line-graph.pug
Loading…
Cancel
Save