From 6f3159d1d2b36feaff08dd0dc528e67a373bad4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Claudio=20S=C3=A1=20de=20Abreu?= Date: Sun, 5 Jul 2026 14:14:57 -0300 Subject: [PATCH] Fix live graph never rendering: guard against Infinity samples At the very start of a measurement the elapsed time can be ~0, so the first speed sample (dTotal/dtTotal) evaluates to Infinity. isNaN(Infinity) is false, so the sample enters values[] and maxValue stays Infinity for the whole test: every point of the live graph collapses to y=height (invisible polygon) and calcPoints produces NaN coordinates (SVG errors in the console). Fix: only accept finite samples in Graph(), and guard the perc division in calcPoints. Applied to both app-2.5.4.js and app-2.5.4.min.js. --- assets/js/app-2.5.4.js | 5 ++++- assets/js/app-2.5.4.min.js | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/assets/js/app-2.5.4.js b/assets/js/app-2.5.4.js index f5b5b6e..2f734f1 100644 --- a/assets/js/app-2.5.4.js +++ b/assets/js/app-2.5.4.js @@ -197,7 +197,7 @@ window.onload = function() { this.graphMob1.el.style.display = "none"; this.graphMob2.el.style.display = "block"; } - if (!isNaN(speed)) { + if (!isNaN(speed) && isFinite(speed)) { this.values.push(speed); } else { this.values.push(""); @@ -229,6 +229,9 @@ window.onload = function() { var points = "0," + Self.height + " "; for (x = 0; x < Self.values.length; x++) { var perc = Self.values[x] / Self.maxValue; + if (!isFinite(perc)) { + perc = 0; + } var steps = 130 / (Self.values.length - 1); var point = (steps * x).toFixed(2) + "," + (Self.height - Self.height * perc).toFixed(2) + " "; points += point; diff --git a/assets/js/app-2.5.4.min.js b/assets/js/app-2.5.4.min.js index 0df99a1..b1773ae 100644 --- a/assets/js/app-2.5.4.min.js +++ b/assets/js/app-2.5.4.min.js @@ -14,9 +14,9 @@ this.mainGaugeWhite_Desk=h("mainGaugeWhite-Desk");this.mainGaugebg_Mob=h("mainGa {degree:460,value:1},{degree:337,value:10},{degree:220,value:100},{degree:115,value:500},{degree:0,value:1E3}];this.polygon=this.chart=this.element="";this.width=200;this.height=50;this.maxValue=0;this.values=[];this.points=[];this.vSteps=5;this.measurements=[];this.points=[]};r.prototype.reset=function(){this.polygon=this.chart=this.element="";this.width=200;this.height=50;this.maxValue=0;this.values=[];this.points=[];this.vSteps=5;this.measurements=[];this.points=[]};r.prototype.ip=function(){"block"=== this.ipDesk.el.style.display?(this.ipDesk.el.style.display="none",this.ipMob.el.style.display="none"):(this.ipDesk.el.style.display="block",this.ipMob.el.style.display="block")};r.prototype.prePing=function(){this.loader.fade("out",500);this.OpenSpeedtest.fade("in",1E3)};r.prototype.app=function(){this.loader.fade("out",500,this.ShowAppIntro())};r.prototype.ShowAppIntro=function(){this.OpenSpeedtest.fade("in",1E3)};r.prototype.userInterface=function(){this.intro_Desk.fade("out",1E3);this.intro_Mob.fade("out", 1E3,this.ShowUI())};r.prototype.ShowUI=function(){this.UI_Desk.fade("in",1E3);this.UI_Mob.fade("in",1E3,function(c){m="Loaded";console.log("Developed by Vishnu. Email --\x3e me@vishnu.pro")})};r.prototype.Symbol=function(c){0==c&&(this.downSymbolMob.el.style.display="block",this.downSymbolDesk.el.style.display="block",this.upSymbolMob.el.style.display="none",this.upSymbolDesk.el.style.display="none");1==c&&(this.downSymbolMob.el.style.display="none",this.downSymbolDesk.el.style.display="none",this.upSymbolMob.el.style.display= -"block",this.upSymbolDesk.el.style.display="block");2==c&&(this.downSymbolMob.el.style.display="none",this.downSymbolDesk.el.style.display="none",this.upSymbolMob.el.style.display="none",this.upSymbolDesk.el.style.display="none")};r.prototype.Graph=function(c,d){function a(q,M){for(n=f.maxValue=0;nf.maxValue&&(f.maxValue=f.values[n]);f.maxValue=Math.ceil(f.maxValue);if(1f.maxValue&&(f.maxValue=f.values[n]);f.maxValue=Math.ceil(f.maxValue);if(1=d&&(clearInterval(t),Ma="done",a.progressStatus_Desk.el.style.strokeDashoffset=800,a.progressStatus_Mob.el.style.strokeDashoffset=800)},14)};r.prototype.mainGaugeProgress=function(c){var d=c;0>d&&(d=0);var a=this.getNonlinearDegree(d);0=d&&(this.mainGaugeBlue_Mob.el.style.strokeDashoffset=681.1,this.mainGaugeWhite_Mob.el.style.strokeDashoffset=.1,this.mainGaugeWhite_Desk.el.style.strokeDashoffset=.1,this.mainGaugeBlue_Desk.el.style.strokeDashoffset=681.1)};r.prototype.showStatus=function(c){this.oDoLiveStatus.el.textContent=c};r.prototype.ConnectionError=function(){this.ConnectErrorMob.el.style.display=