From ff4e46858bae03c99347d685030e8e45ee290e46 Mon Sep 17 00:00:00 2001 From: svatantrya Date: Sat, 11 Jul 2026 06:35:05 -0400 Subject: [PATCH] add contact field to form and invoice, move submit button, add weinfo link in invoice, fix undefined fields in weinfo page --- index.html | 26 +++++++++++++++++++++--- weinfo.html | 58 ++++++++++++++++++++++++++++------------------------- 2 files changed, 54 insertions(+), 30 deletions(-) diff --git a/index.html b/index.html index 5f870b1..c006fd6 100644 --- a/index.html +++ b/index.html @@ -151,6 +151,8 @@ tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 50%,transparent)} .invoice .row:last-child{border-bottom:0} .invoice .row span:first-child{color:var(--muted)} .invoice .row span:last-child{font-family:var(--mono);text-align:right;word-break:break-all} +.invoice .row a{color:var(--accent);text-decoration:none} +.invoice .row a:hover{text-decoration:underline} #qrcode{margin:18px auto 4px;width:160px} #qrcode canvas,#qrcode img{width:160px!important;height:160px!important;max-width:100%} #qr-overlay{ @@ -286,9 +288,12 @@ footer a{color:var(--accent);text-decoration:none}

Add your Will Executor

Enter your server URL. It will be checked online before it appears in the list.

- - +
+
+ +
+
@@ -310,7 +315,9 @@ footer a{color:var(--accent);text-decoration:none}
Chain
Address
Balance
+
Contact
Server
+
Will Executor

@@ -502,6 +509,9 @@ document.getElementById('submit').addEventListener('click', async () => { document.getElementById('iv-addr').textContent = '—'; document.getElementById('iv-balance').textContent = '—'; document.getElementById('iv-url').textContent = '—'; + document.getElementById('iv-contact').textContent = '—'; + document.getElementById('iv-weinfo').href = '#'; + document.getElementById('iv-weinfo').textContent = '—'; document.getElementById('qrcode').innerHTML = ''; document.getElementById('qrcode').style.cursor = ''; document.getElementById('qr-overlay').classList.remove('show'); @@ -514,7 +524,7 @@ document.getElementById('submit').addEventListener('click', async () => { const response = await fetch('/data', { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ url, chain }) + body: JSON.stringify({ url, chain, contact: document.getElementById('contact').value.trim() || undefined }) }); const result = await response.json(); if (!response.ok) { @@ -526,6 +536,16 @@ document.getElementById('submit').addEventListener('click', async () => { document.getElementById('iv-chain').textContent = result.chain || chain; document.getElementById('iv-addr').textContent = result.address || '—'; document.getElementById('iv-balance').textContent = result.balance != null ? fmt(result.balance) : '—'; + document.getElementById('iv-contact').textContent = document.getElementById('contact').value.trim() || '—'; + const weLink = result.id ? `/weinfo/${result.chain || chain}/${result.id}` : null; + const weinfoEl = document.getElementById('iv-weinfo'); + if (weLink) { + weinfoEl.href = weLink; + weinfoEl.textContent = 'View page'; + } else { + weinfoEl.href = '#'; + weinfoEl.textContent = '—'; + } const amountSats = result.amount != null ? result.amount : minAmount; const amountBtc = (amountSats / 1e8).toFixed(8).replace(/\.?0+$/, ''); const invoiceuri = `bitcoin:${result.address}?amount=${amountBtc}&label=BAL&message=Order+For+url+%26+${encodeURIComponent(url)}`; diff --git a/weinfo.html b/weinfo.html index 402cc3e..a761d2f 100644 --- a/weinfo.html +++ b/weinfo.html @@ -81,38 +81,42 @@ const chain = path[1]; const cdate=new Date().toISOString().replace(/[-:T.Z]/g, '').slice(0, 14); fetchDataAndPopulateTable('/weinfodata/'+chain+"/"+we_id, new URLSearchParams(),(data) => { - document.getElementById('wename').innerHTML = DOMPurify.sanitize(data.url); - document.getElementById('wechain').innerHTML = DOMPurify.sanitize(data.chain); - document.getElementById('weinfo').innerHTML = DOMPurify.sanitize(data.info); - document.getElementById('wefees').innerHTML = data.base_fee; - document.getElementById('weheight').innerHTML = data.last_block; - document.getElementById('wepoints').innerHTML = data.points; - document.getElementById('wewin').innerHTML = data.count_win; - document.getElementById('wetld').innerHTML = DOMPurify.sanitize(data.tld); - document.getElementById('webalance').innerHTML = data.balance; - document.getElementById('weversion').innerHTML = data.version;; - document.getElementById('westatus').innerHTML = DOMPurify.sanitize(data.status); - document.getElementById('weupdate').innerHTML = data.last_update; + document.getElementById('wename').innerHTML = DOMPurify.sanitize(data.url||'—'); + document.getElementById('wechain').innerHTML = DOMPurify.sanitize(data.chain||'—'); + document.getElementById('weinfo').innerHTML = DOMPurify.sanitize(data.info||'—'); + document.getElementById('wefees').innerHTML = data.base_fee != null ? data.base_fee : '—'; + document.getElementById('weheight').innerHTML = data.last_block != null ? data.last_block : '—'; + document.getElementById('wepoints').innerHTML = data.points != null ? data.points : '—'; + document.getElementById('wewin').innerHTML = data.count_win != null ? data.count_win : '—'; + document.getElementById('wetld').innerHTML = DOMPurify.sanitize(data.tld||'—'); + document.getElementById('webalance').innerHTML = data.balance != null ? data.balance : '—'; + document.getElementById('weversion').innerHTML = data.version||'—'; + document.getElementById('westatus').innerHTML = DOMPurify.sanitize(data.status||'—'); + document.getElementById('weupdate').innerHTML = data.last_update||'—'; const tableBody = document.querySelector('#wetimes tbody'); tableBody.innerHTML =''; - Object.entries(data.times).forEach(([key,wetime]) => { - const row = document.createElement('tr'); - const d = new Date(wetime.time/1000); - row.innerHTML = ` - ${wetime.blockHeight} - ${DOMPurify.sanitize(wetime.blockHash)} - ${d} - ${wetime.diff/1000000} s - ${wetime.position+1} - ${wetime.participants} - ${wetime.points} - `; - tableBody.appendChild(row); - }) + if (data.times && data.times.length) { + Object.entries(data.times).forEach(([key,wetime]) => { + const row = document.createElement('tr'); + const d = new Date(wetime.time/1000); + row.innerHTML = ` + ${wetime.blockHeight != null ? wetime.blockHeight : '—'} + ${DOMPurify.sanitize(wetime.blockHash||'—')} + ${d} + ${wetime.diff != null ? wetime.diff/1000000 + ' s' : '—'} + ${wetime.position != null ? wetime.position+1 : '—'} + ${wetime.participants != null ? wetime.participants : '—'} + ${wetime.points != null ? wetime.points : '—'} + `; + tableBody.appendChild(row); + }); + } else { + tableBody.innerHTML = 'No rounds yet.'; + } var prev=0; var next=0; - if (data.times.length > 0){ + if (data.times && data.times.length > 0){ prev = data.times[0].blockHeight+data.times.length; next = data.times[data.times.length-1].blockHeight; if (prev < 0 ){