diff --git a/routes/search.js b/routes/search.js index a9dbffc..5990eb2 100644 --- a/routes/search.js +++ b/routes/search.js @@ -6,10 +6,26 @@ var router = express.Router(); router.post('/', async function(req, res, next) { let search = encodeURI(req.body.search).trim(); + + // checking extra -000 in the end if (search.endsWith('-000')) { search = search.slice(0, -4); } + // checking if it is block index + const blockIndex = parseInt(search); + if (isNaN(blockIndex) === false && blockIndex.toString() === search) { + const block = await models.Block.findOne({ + where: { + height: blockIndex, + }, + }); + if (block) { + res.redirect(`/block/${block.hash}/`); + return; + } + } + // looking for address const address = await models.Address.findOne({ where: { @@ -17,7 +33,7 @@ router.post('/', async function(req, res, next) { }, }); if (address) { - res.redirect(`/address/${address.address}`); + res.redirect(`/address/${address.address}/`); return; } @@ -28,7 +44,7 @@ router.post('/', async function(req, res, next) { }, }); if (transaction) { - res.redirect(`/transaction/${transaction.txid}`); + res.redirect(`/transaction/${transaction.txid}/`); return; } @@ -39,7 +55,7 @@ router.post('/', async function(req, res, next) { }, }); if (block) { - res.redirect(`/block/${block.hash}`); + res.redirect(`/block/${block.hash}/`); return; } res.status(404).render('404'); diff --git a/views/layout.jade b/views/layout.jade index 9b69ea6..098bc43 100644 --- a/views/layout.jade +++ b/views/layout.jade @@ -12,7 +12,7 @@ html span GOSTcoin blockchain explorer div form(action="/search/", method="POST") - input(type="text", name="search" placeholder="Search by transaction id, block hash or address", size="68") + input(type="text", name="search" placeholder="Search by transaction id, block hash/index or address", size="68") input(type="submit", value=">>") div.content block content