You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.6 KiB
111 lines
3.6 KiB
|
|
let button = document.getElementsByTagName('button')[0];
|
|
button.addEventListener('click',getblock,false);
|
|
|
|
|
|
function getblock() {
|
|
|
|
let n = document.getElementsByName('n').value;
|
|
let hash = document.getElementsByName('hash').value;
|
|
let addr = document.getElementsByName('addr').value;
|
|
let query = [];
|
|
if (n != '') {
|
|
query.push(`n=${n}`)
|
|
} else if (hash != '') {
|
|
query.push(`hash=${hash}`)
|
|
} else if (addr != '') {
|
|
query.push(`addr=${addr}`)
|
|
}
|
|
|
|
document.getElementById('comment').innerText = '';
|
|
let promised = fetch(api_url + 'getblock?' + query.join('&')).
|
|
then(resp => resp.json()).
|
|
then(obj => {
|
|
let elem;
|
|
let payload_value = obj.bkcontent.data.payload;
|
|
let payload_url = `/api/getblock?addr=${obj.bkaddr}`
|
|
if (payload_value.match('/ipfs/')) {
|
|
payload_url = 'https://ipfs.blockringtm.ml'+ payload_value
|
|
} else if (payload_value.match('/https?:|\.htm/')) {
|
|
payload_url = payload_value;
|
|
}
|
|
let payload_link = `<a href="${payload_url}">${payload_value}</a>`;
|
|
|
|
document.getElementsByName('hash')[0].value = obj.bkhash;
|
|
document.getElementsByName('addr')[0].value = obj.bkaddr;
|
|
document.getElementById('prev').innerHTML = `<a href="/api/v0.0/getblock?hash=${obj.bkprev}">${obj.bkprev}</a>`;
|
|
document.getElementById('seq').innerText = obj.bkcontent.data.seq;
|
|
document.getElementById('payload').innerHTML = payload_link;
|
|
document.getElementById('comment').innerText = obj.bkcontent.data.comment;
|
|
document.getElementById('txroot').innerText = obj.bkcontent.meta.txroot || '?';
|
|
document.getElementById('hash').innerText = obj.bkhash
|
|
document.getElementById('pow').innerText = obj.pow
|
|
document.getElementById('api').innerHTML = `(<a href="/api/v0.0/getblock?hash=${obj.bkhash}">json</a>)`;
|
|
|
|
elem = document.getElementById('json');
|
|
elem.innerText = JSON.stringify(obj);
|
|
|
|
let bkcontent = obj.bkcontent;
|
|
let txmerkle = bkcontent.txmeta.merkle
|
|
if (typeof(txmerkle) != 'undefined') {
|
|
let list = '<ul>';
|
|
for (let txa of txmerkle) {
|
|
console.log('getblock.txa:',txa);
|
|
let tx_url = api_url + `gettx?addr=${txa}`
|
|
list += `<li><a href="${tx_url}">${txa}</a></li>`
|
|
}
|
|
list += '</ul>';
|
|
elem = document.getElementById('list');
|
|
elem.innerHTML = list;
|
|
}
|
|
|
|
return obj;
|
|
}).
|
|
catch(console.error);
|
|
promised.then(obj => { console.log('obj:',obj); return obj; });
|
|
|
|
}
|
|
|
|
|
|
// ----------------------------------------------------
|
|
|
|
async function getnodes() {
|
|
let config = await fetch(api_url + 'config').
|
|
then(resp => resp.json()).
|
|
then(obj => { return obj.config }).
|
|
catch(console.error);
|
|
console.log('nodes.config:',config);
|
|
|
|
let n = 1;
|
|
let list = '<ul>';
|
|
let nodes = [];
|
|
for (node of config.nodes) {
|
|
console.log('nodes.node:',node);
|
|
let [ip,port] = node.split(':');
|
|
let info = await get_info(node);
|
|
nodes.push(info);
|
|
let url=`http://${node}`;
|
|
let status='offline';
|
|
let info_url = `${url}${api_url}getinfo`;
|
|
list += `<li>node${n} (:${port}) <a href="${url}">${node}</a> ${status} <a href="${info_url}">information</a></li>\n`;
|
|
console.log('nodes.info:',info);
|
|
n++;
|
|
}
|
|
list += '</ul>';
|
|
let elem = document.getElementById('list');
|
|
elem.innerHTML = list;
|
|
return nodes;
|
|
}
|
|
function get_info(node) {
|
|
let [ip,port] = node.split(':');
|
|
let remote_api_url = `http://${node}${api_url}`;
|
|
let promised = fetch(remote_api_url + 'getinfo').
|
|
then(resp => resp.json).
|
|
then(obj => { let info = obj.info; return info; }).
|
|
catch(console.error);
|
|
return promised;
|
|
}
|
|
|
|
|
|
|
|
console.log('heads.js loaded');
|