improved counter display on status page
This commit is contained in:
parent
1deef5c7de
commit
9147359b90
|
@ -42,17 +42,18 @@ template<class T> class GwCounter{
|
|||
}
|
||||
int getJsonSize(){
|
||||
return JSON_OBJECT_SIZE(4)+JSON_OBJECT_SIZE(okCounter.size()+1)+
|
||||
JSON_OBJECT_SIZE(failCounter.size()+1);
|
||||
JSON_OBJECT_SIZE(failCounter.size()+1)+
|
||||
okCounter.size()*5+failCounter.size()*5;
|
||||
}
|
||||
void toJson(JsonDocument &json){
|
||||
JsonObject jo=json.createNestedObject(name);
|
||||
jo["sumOk"]=globalOk;
|
||||
jo["sumFail"]=globalFail;
|
||||
JsonObject jok=jo.createNestedObject("ok");
|
||||
jo[F("sumOk")]=globalOk;
|
||||
jo[F("sumFail")]=globalFail;
|
||||
JsonObject jok=jo.createNestedObject(F("ok"));
|
||||
for (auto it=okCounter.begin();it!=okCounter.end();it++){
|
||||
jok[String(it->first)]=it->second;
|
||||
}
|
||||
JsonObject jfail=jo.createNestedObject("fail");
|
||||
JsonObject jfail=jo.createNestedObject(F("fail"));
|
||||
for (auto it=failCounter.begin();it!=failCounter.end();it++){
|
||||
jfail[String(it->first)]=it->second;
|
||||
}
|
||||
|
|
|
@ -86,7 +86,7 @@ GwRequestQueue mainQueue(&logger,20);
|
|||
GwWebServer webserver(&logger,&mainQueue,80);
|
||||
|
||||
GwCounter<unsigned long> countNMEA2KIn("count2Kin");
|
||||
GwCounter<unsigned long> countNMEA2KOut("count2kout");
|
||||
GwCounter<unsigned long> countNMEA2KOut("count2Kout");
|
||||
|
||||
GwCounter<String> countUSBIn("countUSBin");
|
||||
GwCounter<String> countUSBOut("countUSBout");
|
||||
|
@ -595,8 +595,8 @@ void SendNMEA0183Message(const tNMEA0183Msg &NMEA0183Msg, int sourceId) {
|
|||
}
|
||||
|
||||
void handleReceivedNmeaMessage(const char *buf, int sourceId){
|
||||
updateNMEACounter(sourceId,buf,true);
|
||||
if (! checkFilter(buf,sourceId,true)) return;
|
||||
updateNMEACounter(sourceId,buf,true);
|
||||
if ((sourceId == USB_CHANNEL_ID && n2kFromUSB->asBoolean())||
|
||||
(sourceId >= MIN_TCP_CHANNEL_ID && n2kFromTCP->asBoolean())||
|
||||
(sourceId == SERIAL1_CHANNEL_ID && n2kFromSerial->asBoolean())
|
||||
|
|
|
@ -13,6 +13,16 @@ body{
|
|||
#statusPage .even {
|
||||
background-color: rgb(211 211 211 / 43%);
|
||||
}
|
||||
#statusPageContent {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
.counter-row .value{
|
||||
text-align: right;
|
||||
width: 6em;
|
||||
}
|
||||
.icon-row .label{
|
||||
width: 8.7em;
|
||||
}
|
||||
.category .title .label {
|
||||
opacity: 1;
|
||||
margin-left: 1em;
|
||||
|
@ -50,6 +60,7 @@ body{
|
|||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
input,select {
|
||||
border: 1px solid #808080a1;
|
||||
|
|
122
web/index.html
122
web/index.html
|
@ -20,109 +20,27 @@
|
|||
<div class="tab" data-page="dashboardPage">Data</div>
|
||||
</div>
|
||||
<div id="statusPage" class="tabPage">
|
||||
<div class="row">
|
||||
<span class="label">VERSION</span>
|
||||
<span class="value" id="version">---</span>
|
||||
<button class="infoButton" id="converterInfo">?</button>
|
||||
</div>
|
||||
<div id="statusPageContent">
|
||||
<div class="row">
|
||||
<span class="label">VERSION</span>
|
||||
<span class="value" id="version">---</span>
|
||||
<button class="infoButton" id="converterInfo">?</button>
|
||||
</div>
|
||||
|
||||
<div class="row even">
|
||||
<span class="label">Access Point IP</span>
|
||||
<span class="value" id="apIp">---</span>
|
||||
</div>
|
||||
<div class="row ">
|
||||
<span class="label">wifi client connected</span>
|
||||
<span class="value" id="wifiConnected">---</span>
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label">wifi client IP</span>
|
||||
<span class="value" id="clientIP">---</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="label"># NMEA2000 in</span>
|
||||
<span class="value" id="count2Kin.sumOk">---</span>
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label">NMEA2000 in details</span>
|
||||
<input type="checkbox" class="showMsgDetails" data-key="count2Kin.ok"></span>
|
||||
</div>
|
||||
<div class="row even msgDetails hidden" id="count2Kin.ok" >
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="label"># NMEA2000 out</span>
|
||||
<span class="value" id="count2Kout.sumOk">---</span>
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label">NMEA2000 out details</span>
|
||||
<input type="checkbox" class="showMsgDetails" data-key="count2Kout.ok"></span>
|
||||
</div>
|
||||
<div class="row even msgDetails hidden" id="count2Kout.ok" >
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="label"># TCP clients</span>
|
||||
<span class="value" id="numClients">---</span>
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label"># TCP in</span>
|
||||
<span class="value" id="countTCPin.sumOk">---</span>
|
||||
</div>
|
||||
<div class="row ">
|
||||
<span class="label">TCP in details</span>
|
||||
<input type="checkbox" class="showMsgDetails" data-key="countTCPin.ok"></span>
|
||||
</div>
|
||||
<div class="row msgDetails hidden" id="countTCPin.ok" >
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label"># TCP out</span>
|
||||
<span class="value" id="countTCPout.sumOk">---</span>
|
||||
</div>
|
||||
<div class="row ">
|
||||
<span class="label">TCP out details</span>
|
||||
<input type="checkbox" class="showMsgDetails" data-key="countTCPout.ok"></span>
|
||||
</div>
|
||||
<div class="row msgDetails hidden" id="countTCPout.ok" >
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label"># USB in</span>
|
||||
<span class="value" id="countUSBin.sumOk">---</span>
|
||||
</div>
|
||||
<div class="row ">
|
||||
<span class="label">USB in details</span>
|
||||
<input type="checkbox" class="showMsgDetails" data-key="countUSBin.ok"></span>
|
||||
</div>
|
||||
<div class="row msgDetails hidden" id="countUSBin.ok" >
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label"># USB out</span>
|
||||
<span class="value" id="countUSBout.sumOk">---</span>
|
||||
</div>
|
||||
<div class="row ">
|
||||
<span class="label">USB out details</span>
|
||||
<input type="checkbox" class="showMsgDetails" data-key="countUSBout.ok"></span>
|
||||
</div>
|
||||
<div class="row msgDetails hidden" id="countUSBout.ok" >
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label"># Serial in</span>
|
||||
<span class="value" id="countSerialin.sumOk">---</span>
|
||||
</div>
|
||||
<div class="row ">
|
||||
<span class="label">Serial in details</span>
|
||||
<input type="checkbox" class="showMsgDetails" data-key="countSerialin.ok"></span>
|
||||
</div>
|
||||
<div class="row msgDetails hidden" id="countSerialin.ok" >
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label"># Serial out</span>
|
||||
<span class="value" id="countSerialout.sumOk">---</span>
|
||||
</div>
|
||||
<div class="row ">
|
||||
<span class="label">Serial out details</span>
|
||||
<input type="checkbox" class="showMsgDetails" data-key="countSerialout.ok"></span>
|
||||
</div>
|
||||
<div class="row msgDetails hidden" id="countSerialout.ok" >
|
||||
</div>
|
||||
<button id="reset" >Reset</button>
|
||||
<div class="row even">
|
||||
<span class="label">Access Point IP</span>
|
||||
<span class="value" id="apIp">---</span>
|
||||
</div>
|
||||
<div class="row ">
|
||||
<span class="label">wifi client connected</span>
|
||||
<span class="value" id="wifiConnected">---</span>
|
||||
</div>
|
||||
<div class="row even">
|
||||
<span class="label">wifi client IP</span>
|
||||
<span class="value" id="clientIP">---</span>
|
||||
</div>
|
||||
</div>
|
||||
<button id="reset">Reset</button>
|
||||
</div>
|
||||
<div class="configForm tabPage hidden" id="configPage" >
|
||||
<div class="configFormRows">
|
||||
|
|
51
web/index.js
51
web/index.js
|
@ -13,8 +13,9 @@ function addEl(type, clazz, parent, text) {
|
|||
if (parent) parent.appendChild(el);
|
||||
return el;
|
||||
}
|
||||
function forEl(query, callback) {
|
||||
let all = document.querySelectorAll(query);
|
||||
function forEl(query, callback,base) {
|
||||
if (! base) base=document;
|
||||
let all = base.querySelectorAll(query);
|
||||
for (let i = 0; i < all.length; i++) {
|
||||
callback(all[i]);
|
||||
}
|
||||
|
@ -145,6 +146,28 @@ function factoryReset() {
|
|||
alertRestart();
|
||||
})
|
||||
}
|
||||
function createCounterDisplay(parent,label,key,isEven){
|
||||
let clazz="row icon-row counter-row";
|
||||
if (isEven) clazz+=" even";
|
||||
let row=addEl('div',clazz,parent);
|
||||
let icon=addEl('span','icon icon-more',row);
|
||||
addEl('span','label',row,label);
|
||||
let value=addEl('span','value',row,'---');
|
||||
value.setAttribute('id',key+".sumOk");
|
||||
let display=addEl('div',clazz+" msgDetails hidden",parent);
|
||||
display.setAttribute('id',key+".ok");
|
||||
row.addEventListener('click',function(ev){
|
||||
let rs=display.classList.toggle('hidden');
|
||||
if (rs){
|
||||
icon.classList.add('icon-more');
|
||||
icon.classList.remove('icon-less');
|
||||
}
|
||||
else{
|
||||
icon.classList.remove('icon-more');
|
||||
icon.classList.add('icon-less');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function updateMsgDetails(key, details) {
|
||||
forEl('.msgDetails', function (frame) {
|
||||
|
@ -161,8 +184,24 @@ function updateMsgDetails(key, details) {
|
|||
el.textContent = details[k];
|
||||
}
|
||||
}
|
||||
forEl('.value',function(el){
|
||||
let k=el.getAttribute('data-id');
|
||||
if (k && ! details[k]){
|
||||
el.parentElement.remove();
|
||||
}
|
||||
},frame);
|
||||
});
|
||||
}
|
||||
let counters={
|
||||
count2Kin: 'NMEA2000 in',
|
||||
count2Kout: 'NMEA2000 out',
|
||||
countTCPin: 'TCP in',
|
||||
countTCPout: 'TCP out',
|
||||
countUSBin: 'USB in',
|
||||
countUSBout: 'USB out',
|
||||
countSerialIn: 'Serial in',
|
||||
countSerialOut: 'Serial out'
|
||||
}
|
||||
function showOverlay(text, isHtml) {
|
||||
let el = document.getElementById('overlayContent');
|
||||
if (isHtml) {
|
||||
|
@ -477,4 +516,12 @@ window.addEventListener('load', function () {
|
|||
}
|
||||
loadConfigDefinitions();
|
||||
createDashboard();
|
||||
let statusPage=document.getElementById('statusPageContent');
|
||||
if (statusPage){
|
||||
let even=false;
|
||||
for (let c in counters){
|
||||
createCounterDisplay(statusPage,counters[c],c,even);
|
||||
even=!even;
|
||||
}
|
||||
}
|
||||
});
|
Loading…
Reference in New Issue