Browse Source

- tools item for /block-analysis (with a "/search"-like jump-off page)

master
Dan Janosik 5 years ago
parent
commit
0d27e8cffc
No known key found for this signature in database GPG Key ID: C6F8CE9FFDB2CED2
  1. 5
      app/config.js
  2. 55
      routes/baseActionsRouter.js
  3. 30
      views/block-analysis-search.pug
  4. 2
      views/includes/block-content.pug
  5. 4
      views/includes/tools-card.pug
  6. 8
      views/search.pug

5
app/config.js

@ -165,8 +165,8 @@ module.exports = {
} }
] ]
}, },
subHeaderToolsList:[0, 10, 9, 4, 1, 6, 7], // indexes in "siteTools" below that are shown in the site "sub menu" (visible on all pages except homepage) subHeaderToolsList:[0, 10, 9, 4, 11, 6, 7], // indexes in "siteTools" below that are shown in the site "sub menu" (visible on all pages except homepage)
toolsDropdownIndexList: [0, 1, 4, 10, 9, 3, 2, 5, 6, 7, 8], toolsDropdownIndexList: [0, 1, 4, 10, 9, 3, 11, 2, 5, 6, 7, 8],
}, },
credentials: credentials, credentials: credentials,
@ -188,6 +188,7 @@ module.exports = {
/* 9 */ {name:"Mining Summary", url:"/mining-summary", desc:"Summary of recent data about miners.", fontawesome:"fas fa-chart-pie"}, /* 9 */ {name:"Mining Summary", url:"/mining-summary", desc:"Summary of recent data about miners.", fontawesome:"fas fa-chart-pie"},
/* 10 */ {name:"Block Stats", url:"/block-stats", desc:"Summary data for blocks in configurable range.", fontawesome:"fas fa-layer-group"}, /* 10 */ {name:"Block Stats", url:"/block-stats", desc:"Summary data for blocks in configurable range.", fontawesome:"fas fa-layer-group"},
/* 11 */ {name:"Block Analysis", url:"/block-analysis", desc:"Summary analysis for all transactions in a block.", fontawesome:"fas fa-angle-double-down"},
], ],
donations:{ donations:{

55
routes/baseActionsRouter.js

@ -483,14 +483,9 @@ router.get("/block-stats", function(req, res, next) {
}); });
router.get("/search", function(req, res, next) { router.get("/search", function(req, res, next) {
if (!req.body.query) { res.render("search");
req.session.userMessage = "Enter a block height, block hash, or transaction id.";
req.session.userMessageType = "primary";
res.render("search"); next();
next();
}
}); });
router.post("/search", function(req, res, next) { router.post("/search", function(req, res, next) {
@ -737,37 +732,49 @@ router.get("/block/:blockHash", function(req, res, next) {
}); });
}); });
router.get("/block-analysis/:blockHash", function(req, res, next) { router.get("/block-analysis/:blockHashOrHeight", function(req, res, next) {
var blockHash = req.params.blockHash; var blockHashOrHeight = req.params.blockHashOrHeight;
res.locals.blockHash = blockHash; var goWithBlockHash = function(blockHash) {
var blockHash = blockHash;
res.locals.result = {}; res.locals.blockHash = blockHash;
var txResults = []; res.locals.result = {};
var promises = []; var txResults = [];
res.locals.result = {}; var promises = [];
coreApi.getBlockByHash(blockHash).then(function(block) { res.locals.result = {};
res.locals.result.getblock = block;
res.render("block-analysis"); coreApi.getBlockByHash(blockHash).then(function(block) {
res.locals.result.getblock = block;
next(); res.render("block-analysis");
}).catch(function(err) { next();
res.locals.pageErrors.push(utils.logError("943h84ehedr", err));
}).catch(function(err) {
res.locals.pageErrors.push(utils.logError("943h84ehedr", err));
res.render("block-analysis"); res.render("block-analysis");
next(); next();
}); });
};
if (!isNaN(blockHashOrHeight)) {
coreApi.getBlockByHeight(parseInt(blockHashOrHeight)).then(function(blockByHeight) {
goWithBlockHash(blockByHeight.hash);
});
} else {
goWithBlockHash(blockHashOrHeight);
}
}); });
router.get("/block-analysis", function(req, res, next) { router.get("/block-analysis", function(req, res, next) {
res.render("block-analysis"); res.render("block-analysis-search");
next(); next();
}); });

30
views/block-analysis-search.pug

@ -0,0 +1,30 @@
extends layout
block headContent
title Block Analysis
block content
h1.h3 Block Analysis
hr
p Search for a block by height or hash to see a summary analysis of the transactions within that block.
div.mb-huge
form.form.form-inline(method="get", action="/block-analysis")
input(type="hidden", name="_csrf", value=csrfToken)
div.input-group
input.form-control(id="input-value", type="text", name="query", placeholder="block height/hash", value=(query), style="width: 400px;")
div.input-group-append
button.btn.btn-primary(type="submit") Go
block endOfBody
script.
$(document).ready(function() {
$("form").submit(function() {
window.location.href = `/block-analysis/${$("#input-value").val()}`;
return false;
});
});

2
views/includes/block-content.pug

@ -364,7 +364,7 @@ div.tab-content
else else
span Transactions span Transactions
a.ml-2(href=`/block-analysis/${result.getblock.hash}`) See Transaction Analysis » a.ml-2.border-dotted(href=`/block-analysis/${result.getblock.hash}`, title="See a summary analysis of all transactions in this block.", data-toggle="tooltip") See Block Analysis »
if (false || (!config.demoSite && !crawlerBot && txCount > 20)) if (false || (!config.demoSite && !crawlerBot && txCount > 20))
div.col-md-8.text-right div.col-md-8.text-right

4
views/includes/tools-card.pug

@ -52,8 +52,8 @@ if (true)
// md: 3 columns (requires separate layout implementation...see below) // md: 3 columns (requires separate layout implementation...see below)
// lg, xl: 4 columns // lg, xl: 4 columns
// xm: 2 columns // xm: 2 columns
- var indexLists = [[0, 10, 4], [5, 9, 3], [2, 1, 6], [7, 8]]; - var indexLists = [[0, 10, 4], [5, 9, 3], [2, 11, 1], [6, 7, 8]];
- var indexListsMediumWidth = [[0, 10, 4, 5], [9, 3, 2, 1], [6, 7, 8]]; - var indexListsMediumWidth = [[0, 10, 4, 5], [9, 3, 2, 11], [1, 6, 7, 8]];
// special case for medium-width layout // special case for medium-width layout
div.col.d-none.d-md-block.d-lg-none div.col.d-none.d-md-block.d-lg-none

8
views/search.pug

@ -7,12 +7,12 @@ block content
h1.h3 Search h1.h3 Search
hr hr
div.mb-5 div.mb-huge
form.form(method="post", action="/search") form.form.form-inline(method="post", action="/search")
input(type="hidden", name="_csrf", value=csrfToken) input(type="hidden", name="_csrf", value=csrfToken)
div.input-group.input-group-lg div.input-group
input.form-control.form-control-sm(type="text", name="query", placeholder="block height/hash, txid, address", value=(query), style="width: 300px;") input.form-control(type="text", name="query", placeholder="block height/hash, txid, address", value=(query), style="width: 400px;")
div.input-group-append div.input-group-append
button.btn.btn-primary(type="submit") Search button.btn.btn-primary(type="submit") Search
Loading…
Cancel
Save