feat: link escrow references to ApexScan
This commit is contained in:
@@ -9,6 +9,7 @@ export function renderResellerDashboardPage(): string {
|
||||
:root{color-scheme:dark;--bg:#071014;--panel:#0d1a20;--line:#24363d;--text:#eef5f5;--muted:#98aeb5;--good:#50d890;--warn:#ffcb66;--bad:#ff7b72;--accent:#75bfff}
|
||||
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 15% 0,#12303a 0,transparent 34rem),var(--bg);color:var(--text);font:14px/1.5 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
|
||||
main{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:42px 0 64px}header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}h1{font-size:clamp(28px,5vw,48px);line-height:1.05;margin:0;letter-spacing:-.04em}header p{margin:8px 0 0;color:var(--muted)}.stamp{color:var(--muted);font-variant-numeric:tabular-nums}.panel{background:color-mix(in srgb,var(--panel) 94%,transparent);border:1px solid var(--line);border-radius:16px;box-shadow:0 16px 48px #0005}.identity{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:1px;overflow:hidden;margin-bottom:16px}.identity>div{padding:18px 20px;background:var(--panel)}.label{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.12em;margin-bottom:6px}.value{font-size:17px;font-weight:650;overflow-wrap:anywhere}.status{display:inline-flex;align-items:center;gap:8px}.dot{width:9px;height:9px;border-radius:50%;background:var(--muted);box-shadow:0 0 0 4px #fff1}.status.free .dot{background:var(--good)}.status.working .dot{background:var(--warn)}.status.offline .dot{background:var(--bad)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 24px}.metric{padding:18px}.metric strong{display:block;font-size:24px;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.metric small{color:var(--muted)}.section-head{display:flex;justify-content:space-between;align-items:center;margin:28px 0 12px}h2{font-size:18px;margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:940px}th,td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.09em;font-weight:600}tbody tr:last-child td{border-bottom:0}.job-status{font-weight:700}.job-status.settled{color:var(--good)}.job-status.failed{color:var(--bad)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.preview{max-width:250px;color:#c9d8dc;white-space:normal}.empty,.error{padding:30px;color:var(--muted)}.error{color:var(--bad)}
|
||||
a.explorer-link{color:var(--accent);text-decoration:none;text-underline-offset:3px}a.explorer-link:hover,a.explorer-link:focus-visible{text-decoration:underline}
|
||||
@media(max-width:820px){header{align-items:flex-start;flex-direction:column}.identity{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){main{width:min(100% - 20px,1180px);padding-top:24px}.metrics{grid-template-columns:1fr}.metric strong{font-size:21px}}
|
||||
</style>
|
||||
</head>
|
||||
@@ -51,6 +52,23 @@ main{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:42px 0 64px}heade
|
||||
text('updated','Updated '+new Date().toLocaleTimeString());
|
||||
}
|
||||
function cell(row,value,className){var td=document.createElement('td');if(className)td.className=className;td.textContent=value==null?'--':String(value);row.appendChild(td)}
|
||||
function escrowCell(row,value){
|
||||
var td=document.createElement('td');td.className='mono';
|
||||
var ref=typeof value==='string'?value:'';
|
||||
var txHash=ref.split('#')[0];
|
||||
if(/^[0-9a-fA-F]{64}$/.test(txHash)){
|
||||
var link=document.createElement('a');
|
||||
link.className='explorer-link';
|
||||
link.href='https://vector.apexscan.org/en/transaction/'+txHash+'/summary/';
|
||||
link.target='_blank';link.rel='noopener noreferrer';
|
||||
link.textContent=ref;
|
||||
link.setAttribute('aria-label','View escrow transaction '+txHash+' on ApexScan');
|
||||
td.appendChild(link);
|
||||
}else{
|
||||
td.textContent=ref||'--';
|
||||
}
|
||||
row.appendChild(td);
|
||||
}
|
||||
function renderJobs(rows){
|
||||
var body=byId('jobs');body.replaceChildren();
|
||||
if(!rows.length){var row=document.createElement('tr');cell(row,'No terminal jobs yet','empty');row.firstChild.colSpan=8;body.appendChild(row);return}
|
||||
@@ -63,7 +81,7 @@ main{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:42px 0 64px}heade
|
||||
cell(row,job.output_preview,'preview');
|
||||
cell(row,job.upstream_cost_usd==null?'--':money(job.upstream_cost_usd));
|
||||
cell(row,job.ap3x_payout+' AP3X');
|
||||
cell(row,job.escrow_ref,'mono');
|
||||
escrowCell(row,job.escrow_ref);
|
||||
body.appendChild(row);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user