diff --git a/lib/boatData/GwBoatData.cpp b/lib/boatData/GwBoatData.cpp index ee7e003..65ba442 100644 --- a/lib/boatData/GwBoatData.cpp +++ b/lib/boatData/GwBoatData.cpp @@ -172,12 +172,15 @@ static void writeToString(GwTextWriter *writer,GwSatInfoList &value){ template void GwBoatItem::fillString(){ + bool valid=isValid(); + if (writer.getSize() && (valid == lastStringValid)) return; + lastStringValid=valid; writer.reset(); WriterWrapper wrapper(&writer); GwTextWriter stringWriter(wrapper); stringWriter.writeRaw(name.c_str()); stringWriter.writeChar(','); - stringWriter.writeInteger(isValid()?1:0); + stringWriter.writeInteger(valid?1:0); stringWriter.writeChar(','); stringWriter.writeInteger(lastSet); stringWriter.writeChar(','); diff --git a/lib/boatData/GwBoatData.h b/lib/boatData/GwBoatData.h index ba0ec7c..c2e68d6 100644 --- a/lib/boatData/GwBoatData.h +++ b/lib/boatData/GwBoatData.h @@ -48,6 +48,7 @@ class GwBoatItemBase{ void uls(unsigned long ts=0){ if (ts) lastSet=ts; else lastSet=millis(); + writer.reset(); //value has changed } int lastUpdateSource; public: @@ -74,6 +75,7 @@ class GwBoatData; template class GwBoatItem : public GwBoatItemBase{ protected: T data; + bool lastStringValid=false; public: GwBoatItem(String name,String formatInfo,unsigned long invalidTime=INVALID_TIME,GwBoatItemMap *map=NULL); virtual ~GwBoatItem(){} diff --git a/web/index.js b/web/index.js index 231acab..697431a 100644 --- a/web/index.js +++ b/web/index.js @@ -1088,7 +1088,7 @@ function updateDashboard(data) { let names={}; for (let n in data) { let current=parseBoatDataLine(data[n]); - if (! current.name) return; + if (! current.name) continue; names[current.name]=true; let de = document.getElementById('data_' + current.name); if (! de && frame){ @@ -1127,6 +1127,7 @@ function updateDashboard(data) { src.textContent=sourceName(current.source); } } + console.log("update"); forEl('.dashValue',function(el){ let id=el.getAttribute('id'); if (id){