mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
Add web status bar fields
This commit is contained in:
+24
-5
@@ -95,8 +95,11 @@ begin
|
||||
'.ruler-area canvas{position:absolute;top:0;left:0;width:100%;height:100%}' +
|
||||
'.wf-area{flex:0 0 405px;position:relative;background:#000;border:1px solid #252525;border-radius:3px;overflow:hidden}' +
|
||||
'.wf-area canvas{position:absolute;top:0;left:0;width:100%;height:100%}' +
|
||||
'.sbar{flex:0 0 16px;display:flex;align-items:center;padding:0 6px;gap:10px;background:#0e0e0e;border-top:1px solid #222;font-size:10px;color:#555}' +
|
||||
'#latEl{margin-left:auto}' +
|
||||
'.sbar{flex:0 0 24px;display:grid;grid-template-columns:minmax(120px,170px) minmax(190px,280px) minmax(120px,160px) minmax(135px,170px) minmax(70px,90px) minmax(120px,190px) minmax(120px,180px) minmax(90px,1fr) minmax(82px,96px) minmax(92px,112px);align-items:stretch;background:#0e0e0e;border-top:1px solid #222;font:10px Courier New,monospace;color:#ccc;overflow-x:auto;overflow-y:hidden}' +
|
||||
'.sb-cell{min-width:0;display:flex;align-items:center;padding:0 8px;border-left:1px solid #222;background:#181818;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}' +
|
||||
'.sb-cell:first-child{border-left:0}' +
|
||||
'.sb-dim{color:#777}.sb-seq{color:#ffaa00}.sb-status{color:#90c090}.sb-time{justify-content:center;color:#bbb}.sb-lat{display:none}' +
|
||||
'@media screen and (max-width:640px){.sbar{grid-template-columns:minmax(72px,1fr) minmax(104px,1.25fr) minmax(74px,1fr) minmax(78px,1fr);overflow:hidden}.sbar #sbBoard,.sbar #sbIP,.sbar #sbPLL,.sbar #sbRX,.sbar #sbTX,.sbar #sbLocal{display:none}.sb-cell{padding:0 5px;font-size:9px}}' +
|
||||
'@media screen and (max-width:1300px) and (min-width:641px){' +
|
||||
'.tbar{gap:3px;padding-left:4px;padding-right:4px;}' +
|
||||
'button{padding:0 6px;font-size:10px;}' +
|
||||
@@ -227,7 +230,19 @@ begin
|
||||
'<div class="spec-area"><canvas id="spec"></canvas><div class="span-ov" id="spanOv"></div></div>' +
|
||||
'<div class="ruler-area"><canvas id="ruler"></canvas></div>' +
|
||||
'<div class="wf-area"><canvas id="wf"></canvas></div>' +
|
||||
'<div class="sbar"><span id="stEl">connecting...</span><span id="latEl"></span></div>' +
|
||||
'<div class="sbar">' +
|
||||
'<span class="sb-cell sb-status" id="stEl">connecting...</span>' +
|
||||
'<span class="sb-cell" id="sbBoard">Board --</span>' +
|
||||
'<span class="sb-cell" id="sbIP">IP --</span>' +
|
||||
'<span class="sb-cell" id="sbSupply">Supply --</span>' +
|
||||
'<span class="sb-cell" id="sbPLL">PLL --</span>' +
|
||||
'<span class="sb-cell sb-dim" id="sbRX">RX idle</span>' +
|
||||
'<span class="sb-cell sb-dim" id="sbTX">TX idle</span>' +
|
||||
'<span class="sb-cell sb-seq" id="sbSEQ">SEQ --</span>' +
|
||||
'<span class="sb-cell sb-time" id="sbUTC">UTC --:--:--</span>' +
|
||||
'<span class="sb-cell sb-time" id="sbLocal">Local --:--:--</span>' +
|
||||
'<span class="sb-lat" id="latEl"></span>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
|
||||
'<script>' +
|
||||
@@ -257,6 +272,11 @@ begin
|
||||
'const cl=(v,a,b)=>Math.max(a,Math.min(b,v));' +
|
||||
'const q=id=>document.getElementById(id);' +
|
||||
'function sw(id,on){const b=q(id);if(b)b.classList.toggle("on",!!on);}' +
|
||||
'function sb(id,txt){const e=q(id);if(e){e.textContent=txt||"";e.title=txt||"";}}' +
|
||||
'function fmtTime(d,utc){const p=n=>String(n).padStart(2,"0");return(utc?p(d.getUTCHours()):p(d.getHours()))+":"+p(utc?d.getUTCMinutes():d.getMinutes())+":"+p(utc?d.getUTCSeconds():d.getSeconds());}' +
|
||||
'function updClock(){const d=new Date();sb("sbUTC","UTC "+fmtTime(d,true));sb("sbLocal","Local "+fmtTime(d,false));}' +
|
||||
'function updStatusBar(){sb("stEl",cur.status_text||((cur.connected?"OK":"OFF")+" | "+(cur.running?"RUN":"STOP")));sb("sbBoard",cur.board_text||"Board --");sb("sbIP",cur.ip_text||"IP --");sb("sbSupply",cur.supply_text||"Supply --");sb("sbPLL",cur.pll_text||"PLL --");sb("sbRX",cur.rx_text||"RX idle");sb("sbTX",cur.tx_text||"TX idle");sb("sbSEQ",cur.seq_text||"SEQ --");}' +
|
||||
'updClock();setInterval(updClock,1000);' +
|
||||
'function ws2(obj){if(ws&&ws.readyState===1)ws.send(JSON.stringify(obj));}' +
|
||||
'function cmd(c,v){ws2({cmd:c,on:v});}' +
|
||||
'function updNrBtn(){const b=q("nrBtn");if(!b)return;const m=cur.nr_mode|0;b.textContent=(m===2)?"NR2":(m===3)?"NR3":(m===4)?"NR4":"NR";sw("nrBtn",m!==0);}' +
|
||||
@@ -622,8 +642,7 @@ begin
|
||||
'if(!isPending("attn")){const at=q("attSel");if(at)at.value=cur.attn_idx||0;}' +
|
||||
'updBand(activeVfo==="A"?(cur.vfo_a_hz||0):(vfoB||0));updSpan(cur.span_hz||192000);' +
|
||||
'paintSM(Number(cur.smeter_dbm||-130));' +
|
||||
'const mn=cur.mode_name||(MODE_N[cur.mode||0]||"?");' +
|
||||
'stEl.textContent=(cur.connected?"OK":"OFF")+" | "+(cur.running?"RUN":"STOP")+" | "+(cur.transmitting?"TX":"RX")+" | "+mn+" | "+((activeVfoHz()/1e6).toFixed(3))+" MHz";' +
|
||||
'updStatusBar();' +
|
||||
'const nowTx=!!cur.transmitting;if(nowTx!==prevTx){prevTx=nowTx;if(nowTx)startTXMic();else stopTXMic();}}' +
|
||||
|
||||
'function pal(db){const v=Math.round(cl((db-wfLo)/Math.max(1,wfHi-wfLo),0,1)*255);const c=PAL[v]|0;return[(c>>16)&255,(c>>8)&255,c&255];}' +
|
||||
|
||||
Reference in New Issue
Block a user