Monitoring (RRD) graphs have bugs



  • You are probably aware of that, but the new Monitoring graphs are pretty buggy for me. Most of the time, I manage to get two or three graphs drawn, then they will sometimes not show any legend (or mouseovers), eventually they will not draw at all.

    Here are two screenshots. I set the WAN quality as default, it just about draws. When I open the settings and hit update Graphs, I get the blank graph. After that, no graphs will work - need to log out and in again.

    The data is fine, I can download the CSV and it will show all the data.

    This is a pfSense 2.3.2 on i386, updated all the way from 1.2.3 through almost all versions in between.

    Stefan
    ![Screenshot - 19.08.2016 - 13:02:54.png](/public/imported_attachments/1/Screenshot - 19.08.2016 - 13:02:54.png)
    ![Screenshot - 19.08.2016 - 13:02:54.png_thumb](/public/imported_attachments/1/Screenshot - 19.08.2016 - 13:02:54.png_thumb)
    ![Screenshot - 19.08.2016 - 13:03:15.png](/public/imported_attachments/1/Screenshot - 19.08.2016 - 13:03:15.png)
    ![Screenshot - 19.08.2016 - 13:03:15.png_thumb](/public/imported_attachments/1/Screenshot - 19.08.2016 - 13:03:15.png_thumb)


  • Administrator

    what browser and OS are you using?


  • Rebel Alliance Global Moderator

    I for sure am not seeing this behavior.. I am using 2.3.2 64bit with firefox..  Such an issue points more to the browser than anything with pfsense..



  • @seidler2547:

    on i386

    Does your hardware support 64bit operation? AFAIK it's highly recommended to swap architecture if possible.
    Development takes place mostly (if not only) in the 64bit domain, therefore it's tested much more intense. And pfSense i386 won't be around for too long anymore.

    But that doesn't solve your problems just yet, I know.



  • Interesting, my Chrome, Chromium, Firefox and Konqueror all work, however the latest beta of Brave (shields up or down) does not show the table or mouse-over info.


  • Administrator

    @stan-qaz:

    however the latest beta of Brave (shields up or down) does not show the table or mouse-over info.

    This is a tongue-in-cheek tweet from an engineer at Brave :P

    https://twitter.com/bcrypt/status/766071991870689280

    They have some smart people working there, they will most likely have it working by the time it gets out of beta status.



  • Windows 8.1, IE11, i386 2.3.2.  Not seeing that issue here.



  • Thanks for the replies. I tested this in Firefox and Chrome on Linux. I've been thinking about switching to amd64, but I need to coordinate with our hosting provider and the remote sites, so that'll take some time.

    I just tested this on a Firefox on a Windows machine and it's the same behaviour. I agree that it's most likely the browser botching up, but it seems the root cause is some data sent from pfSense. I haven't tested this extensively yet, but my memory tells me this also happened on a new amd64 install after playing around (i.e. changing paramaters) for long enough.

    What else can I do to get to the bottom of this? Anyone wants my RRD files to test with?

    Stefan


  • Rebel Alliance Global Moderator

    what would you hosting provider and or remote sites have to do with your copy of pfsense being 64 or 32bit?  That makes no sense?  Is this pfsense hosted somewhere and your accessing it via internet or something??



  • @johnpoz:

    what would you hosting provider and or remote sites have to do with your copy of pfsense being 64 or 32bit?  That makes no sense?  Is this pfsense hosted somewhere and your accessing it via internet or something??

    Yes, it's a VMware virtual machine and it's the central hub to all our remote offices.

    It was initially (when 1.2.3 was the most recent version) set up as 32-bit because we thought that's enough. To change it we would need to contact the datacenter admins to change the VM type or to set up a new VM and then replace it. Requires a migration plan etc. for minimal downtime.

    Stefan


  • Rebel Alliance Global Moderator

    So is the box your testing this from on the same network as the pfsense interface your hitting?  Or is there stuff in between? Are you on some VM on the same layer 2 as the pfsense lan interface that your hitting the webgui from?  Are you at some remote site using proxy to access pfsense wan IP that you allowed??


  • Administrator

    @seidler2547:

    What else can I do to get to the bottom of this? Anyone wants my RRD files to test with?

    Stefan

    In Chrome you can right click the page and choose "Inspect" and then select the "Console" tab to see if you have any errors.



  • Ah, why didn't I think of this before. Thanks for the reminder. This is what I get in Firefox:

    TypeError: n is undefined
    t()
    d3.min.js:1
    draw_graph/status_monitoring.php:998
    Co.text/<()
    d3.min.js:3
    Co.each/<()
    d3.min.js:3
    Y()
    d3.min.js:1
    Co.each()
    d3.min.js:3
    Co.text()
    d3.min.js:3
    n/<()
    d3.min.js:5
    Yl.each/<()
    d3.min.js:5
    Y()
    d3.min.js:1
    Yl.each()
    d3.min.js:5
    n()
    d3.min.js:5
    Co.call()
    d3.min.js:3
    chart/<()
    nv.d3.js:1626
    Yl.each/<()
    d3.min.js:5
    Y()
    d3.min.js:1
    Yl.each()
    d3.min.js:5
    chart()
    nv.d3.js:1610
    Co.call()
    d3.min.js:3
    chart/<()
    nv.d3.js:9569
    Yl.each/<()
    d3.min.js:5
    Y()
    d3.min.js:1
    Yl.each()
    d3.min.js:5
    chart()
    nv.d3.js:9377
    Co.call()
    d3.min.js:3
    draw_graph/status_monitoring.php:1143
    render/renderLoop()
    nv.d3.js:99
    d3.min.js:1:14696
    
    

    Whereas Chrome says:

    
    Uncaught TypeError: Cannot read property 'length' of undefinedt @ d3.min.js:1(anonymous function) @ status_monitoring.php:998arguments.length.each.function.n.textContent @ d3.min.js:3(anonymous function) @ d3.min.js:3Y @ d3.min.js:1Co.each @ d3.min.js:3Co.text @ d3.min.js:3(anonymous function) @ d3.min.js:5(anonymous function) @ d3.min.js:5Y @ d3.min.js:1Yl.each @ d3.min.js:5n @ d3.min.js:5Co.call @ d3.min.js:3(anonymous function) @ nv.d3.js:1626(anonymous function) @ d3.min.js:5Y @ d3.min.js:1Yl.each @ d3.min.js:5chart @ nv.d3.js:1610Co.call @ d3.min.js:3(anonymous function) @ nv.d3.js:9570(anonymous function) @ d3.min.js:5Y @ d3.min.js:1Yl.each @ d3.min.js:5chart @ nv.d3.js:9377Co.call @ d3.min.js:3(anonymous function) @ status_monitoring.php:1147renderLoop @ nv.d3.js:99
    

    Our remote sites (one of which I am at) are connected through OpenVPN in star topology. But I also tested on a Windows VM in the same LAN as the pfSense and it's the same.

    Stefan



  • I just want to follow up that I'm having the same issue.  2.3 and 2.3.1 seemed to work fine with the new charting system and I was able to play around without issue.  2.3.2 presents itself just the same - I can see the initial graph but if I refresh or update settings it disappears with the length error in chrome with this section underlined:

    =n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},i=e(r,n,t,0);if(i!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var u=null!=r.Z&&va!==Hn,o=new(u?Hn:va);return"j"in r?o.setFullYear(r.y,0,r.j):"W"in r||"U"in r?("w"in r||(r.w="W"in r?1:0),o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(r.Z/100|0),r.M+r.Z%100,r.S,r.L),u?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var i,u,o,a=0,l=t.length,c=e.length;l>a;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(o=t.charAt(a++),u=C[o in ya?t.charAt(a++):o],!u||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,v=n.days,d=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{va=Hn;var t=new va;return t._=n,r(t)}finally{va=Date}}var r=t(n);return e.parse=function(n){try{va=Hn;var t=r.parse(n);return t&&t._}finally{va=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=ao.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ga.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ga.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ga.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return r+(e>u?new Array(e-u+1).join(t)+i:i)}function Vn(n){return new RegExp("^(?:"+n.map(ao.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e<r;)t.set(n[e].tolowercase(),e);return t}function="" $n(n,t,e){ma.lastindex="0;var" r="ma.exec(t.slice(e,e+1));return" r?(n.w="+r[0],e+r[0].length):-1}function" bn(n,t,e){ma.lastindex="0;var" r?(n.u="+r[0],e+r[0].length):-1}function" wn(n,t,e){ma.lastindex="0;var" jn(n,t,e){ma.lastindex="0;var" r?(n.y="+r[0],e+r[0].length):-1}function" gn(n,t,e){ma.lastindex="0;var" kn(n,t,e){return="" ^[+-]\d{4}$="" .test(t="t.slice(e,e+5))?(n.Z=-t,e+5):-1}function" qn(n){return="" n+(n="">68?1900:2e3)}function nt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=xo(t)/60|0,i=xo(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){Ma.lastIndex=0;var r=Ma.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var="" e="0,r=n[e];!r[1](t);)r=n[++e];return" r[0](t)}}function="" ft(){}function="" st(n,t,e){var="" r="e.s=n+t,i=r-n,u=r-i;e.t=n-u+(t-i)}function" ht(n,t){n&&wa.hasownproperty(n.type)&&wa[n.type](n,t)}function="" pt(n,t,e){var="" r,i="-1,u=n.length-e;for(t.lineStart();++i<u;)r=n[i],t.point(r[0],r[1],r[2]);t.lineEnd()}function" gt(n,t){var="" vt(){function="" n(n,t){n*="Yo,t=t*Yo/2+Fo/4;var">=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);ka.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;Na.point=function(o,a){Na.point=n,r=(t=o)*Yo,i=Math.cos(a=(e=a)*Yo/2+Fo/4),u=Math.sin(a)},Na.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return xo(n[0]-t[0])<uo&&xo(n[1]-t[1])<uo}function st(n,t){n*="Yo;var" e="Math.cos(t*=Yo);kt(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function" kt(n,t,e){++ea,ca+="(n-Ca)/Ea,za+=(t-za)/Ea,La+=(e-La)/Ea}function" nt(){function="" n(n,i){n*="Yo;var" u="Math.cos(i*=Yo),o=u*Math.cos(n),a=u*Math.sin(n),l=Math.sin(i),c=Math.atan2(Math.sqrt((c=e*l-r*a)*c+(c=r*o-t*l)*c+(c=t*a-e*o)*c),t*o+e*a+r*l);Aa+=c,qa+=c*(t+(t=o)),Ta+=c*(e+(e=a)),Ra+=c*(r+(r=l)),kt(t,e,r)}var" t,e,r;ja.point="function(i,u){i*=Yo;var" o="Math.cos(u*=Yo);t=o*Math.cos(i),e=o*Math.sin(i),r=Math.sin(u),ja.point=n,kt(t,e,r)}}function" et(){ja.point="St}function" at(){function="" n(n,t){n*="Yo;var" t,e,r,i,u;ja.point="function(o,a){t=o,e=a,ja.point=n,o*=Yo;var" l="Math.cos(a*=Yo);r=l*Math.cos(o),i=l*Math.sin(o),u=Math.sin(a),kt(r,i,u)},ja.lineEnd=function(){n(t,e),ja.lineEnd=Et,ja.point=St}}function" ct(n,t){function="" e(e,r){return="" n.invert&&t.invert&&(e.invert="function(e,r){return" zt(){return!0}function="" lt(n,t,e,r,i){var="" t,e="n[0],r=n[t];if(wt(e,r)){i.lineStart();for(var" a="0;t">a;++a)i.point((e=n[a])[0],e[1]);return void i.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,u.push(l),o.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,u.push(l),o.push(c)}}),o.sort(t),qt(u),qt(o),u.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var f,s,h=u[0];;){for(var p=h,g=!0;p.v;)if((p=p.n)===h)return;f=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(g)for(var a=0,c=f.length;c>a;++a)i.point((s=f[a])[0],s[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(g){f=p.p.z;for(var a=f.length-1;a>=0;--a)i.point((s=f[a])[0],s[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,f=p.z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r<t;)i.n=e=n[r],e.p=i,i=e;i.n=e=n[0],e.p=i}}function tt(n,t,e,r){this.x="n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function" rt(n,t,e,r){return="" function(i,u){function="" o(t,e){var="" r="i(t,e);n(t=r[0],e=r[1])&amp;&amp;u.point(t,e)}function" a(n,t){var="" e="i(n,t);d.point(e[0],e[1])}function" l(){m.point="a,d.lineStart()}function" c(){m.point="o,d.lineEnd()}function" f(n,t){v.push([n,t]);var="" s(){x.linestart(),v="[]}function" h(){f(v[0][0],v[0][1]),x.lineend();var="" n,t="x.clean(),e=M.buffer(),r=e.length;if(v.pop(),g.push(v),v=null,r)if(1&amp;t){n=e[0];var" i,r="n.length-1,o=-1;if(r">0){for(b||(u.polygonStart(),b=!0),u.lineStart();++o<r;)u.point((i=n[o])[0],i[1]);u.lineend()}}else r="">1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,v,d=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=ao.merge(p);var n=Ot(y,g);p.length?(b||(u.polygonStart(),b=!0),Lt(p,Ut,n,e,u)):n&&(b||(u.polygonStart(),b=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),b&&(u.polygonEnd(),b=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},M=Pt(),x=t(M),b=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Io-Uo:Io-n[1])-((t=t.x)[0]<0?t[1]-Io-Uo:Io-t[1])}function jt(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Fo:-Fo,l=xo(u-e);xo(l-Fo)<uo?(n.point(e,r=(r+o) 2="">0?Io:-Io),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Fo&&(xo(e-i)<uo&&(e-=i*uo),xo(u-a)<uo&&(u-=a*uo),r=ft(e,r,u,o),n.point(i,r),n.lineend(),n.linestart(),n.point(a,r),t=0),n.point(e=u,r=o),i=a},lineend:function(){n.lineend(),e=r=nan},clean:function(){return 2-t}}}function="" ft(n,t,e,r){var="" i,u,o="Math.sin(n-e);return" xo(o)="">Uo?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Io,r.point(-Fo,i),r.point(0,i),r.point(Fo,i),r.point(Fo,0),r.point(Fo,-i),r.point(0,-i),r.point(-Fo,-i),r.point(-Fo,0),r.point(-Fo,i);else if(xo(n[0]-t[0])>Uo){var u=n[0]<t[0]?fo:-fo;i=e*u 2,r.point(-u,i),r.point(0,i),r.point(u,i)}else="" r.point(t[0],t[1])}function="" ot(n,t){var="" e="n[0],r=n[1],i=[Math.sin(e),-Math.cos(e),0],u=0,o=0;ka.reset();for(var" a="0,l=t.length;l">a;++a){var c=t[a],f=c.length;if(f)for(var s=c[0],h=s[0],p=s[1]/2+Fo/4,g=Math.sin(p),v=Math.cos(p),d=1;;){d===f&&(d=0),n=c[d];var y=n[0],m=n[1]/2+Fo/4,M=Math.sin(m),x=Math.cos(m),b=y-h,_=b>=0?1:-1,w=_*b,S=w>Fo,k=g*M;if(ka.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),u+=S?b+_*Ho:b,S^h>=e^y>=e){var N=mt(dt(s),dt(n));bt(N);var E=mt(i,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=y,g=M,v=x,s=n}}return(-Uo>u||Uo>u&&-Uo>ka)^1&o}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>u}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],v=t(s,h),d=o?v?0:i(s,h):v?i(s+(0>s?Fo:-Fo),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Uo,g[1]+=Uo,v=t(g[0],g[1]))),v!==l)f=0,v?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^v){var y;d&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!v||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=v,u=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),i=dt(t),o=[1,0,0],a=mt(r,i),l=yt(a,a),c=a[0],f=l-c*c;if(!f)return!e&&n;var s=u*l/f,h=-u*c/f,p=mt(o,a),g=xt(o,s),v=xt(a,h);Mt(g,v);var d=p,y=yt(g,d),m=yt(d,d),M=y*y-m*(yt(g,g)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-y-x)/m);if(Mt(b,g),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=xo(E-Fo)<uo,c=a||uo>E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(xo(b[0]-w)<uo?k:n):k<=b[1]&&b[1]<=n:e>Fo^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-y+x)/m);return Mt(z,g),[b,_t(z)]}}}function i(t,e){var r=o?n:Fo-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=xo(u)>Uo,l=ve(n,6*Yo);return Rt(t,e,l,o?[0,-n]:[-Fo,n-Fo])}function Yt(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=a.x,s=a.y,h=0,p=1,g=f-l,v=s-c;if(u=n-l,g||!(u>0)){if(u/=g,0>g){if(h>u)return;p>u&&(p=u)}else if(g>0){if(u>p)return;u>h&&(h=u)}if(u=e-l,g||!(0>u)){if(u/=g,0>g){if(u>p)return;u>h&&(h=u)}else if(g>0){if(h>u)return;p>u&&(p=u)}if(u=t-c,v||!(u>0)){if(u/=v,0>v){if(h>u)return;p>u&&(p=u)}else if(v>0){if(u>p)return;u>h&&(h=u)}if(u=r-c,v||!(0>u)){if(u/=v,0>v){if(u>p)return;u>h&&(h=u)}else if(v>0){if(h>u)return;p>u&&(p=u)}return h>0&&(i.a={x:l+h*g,y:c+h*v}),1>p&&(i.b={x:l+p*g,y:c+p*v}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return xo(r[0]-n)<uo?i>0?0:3:xo(r[0]-e)<uo?i>0?2:1:xo(r[1]-t)<uo?i>0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=d.length,r=n[1],i=0;e>i;++i)for(var u,o=1,a=d[i],l=a.length,c=a[0];l>o;++o)u=a[o],c[1]<=r?u[1]>r&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0){do c.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+l+4)%4)!==s)}else c.point(a[0],a[1])}function f(i,u){return i>=n&&e>=i&&u>=t&&r>=u}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,d&&d.push(y=[]),S=!0,w=!1,b=_=NaN}function p(){v&&(g(m,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){n=Math.max(-Ha,Math.min(Ha,n)),t=Math.max(-Ha,Math.min(Ha,t));var e=f(n,t);if(d&&y.push([n,t]),S)m=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,y,m,M,x,b,_,w,S,k,N=a,E=Pt(),A=Yt(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,v=[],d=[],k=!0},polygonEnd:function(){a=N,v=ao.merge(v);var t=l([n,r]),e=k&&t,i=v.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(v,u,t,c,a),a.polygonEnd()),v=d=y=null}};return C}}function Vt(n){var t=0,e=Fo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Fo/180,e=n[1]*Fo/180):[t/Fo*180,e/Fo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){Ia+=i*n-r*t,r=n,i=t}var t,e,r,i;$a.point=function(u,o){$a.point=n,t=r=u,e=i=o},$a.lineEnd=function(){n(t,e)}}function Bt(n,t){Ya>n&&(Ya=n),n>Va&&(Va=n),Za>t&&(Za=t),t>Xa&&(Xa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ca+=n,za+=t,++La}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);qa+=o*(t+n)/2,Ta+=o*(e+r)/2,Ra+=o,Gt(t=n,e=r)}var t,e;Wa.point=function(r,i){Wa.point=n,Gt(t=r,e=i)}}function Qt(){Wa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);qa+=o*(r+n)/2,Ta+=o*(i+t)/2,Ra+=o,o=i*n-r*t,Da+=o*(r+n),Pa+=o*(i+t),Ua+=3*o,Gt(r=n,i=t)}var t,e,r,i;Wa.point=function(u,o){Wa.point=n,Gt(t=r=u,e=i=o)},Wa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Ho)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=u,t.lineStart()}function u(e,r){var u=dt([e,r]),o=n(e,r);i(M,x,m,b,_,w,M=o[0],x=o[1],m=e,b=u[0],_=u[1],w=u[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){
    
    It appears I see the same problem in Microsoft Edge 38.14393.0.0.[/i][/i]</uo?i></uo?i></uo?i></uo?k:n):k<=b[1]&&b[1]<=n:e></uo,c=a||uo></t[0]?fo:-fo;i=e*u></uo&&(e-=i*uo),xo(u-a)<uo&&(u-=a*uo),r=ft(e,r,u,o),n.point(i,r),n.lineend(),n.linestart(),n.point(a,r),t=0),n.point(e=u,r=o),i=a},lineend:function(){n.lineend(),e=r=nan},clean:function(){return></uo?(n.point(e,r=(r+o)></r;)u.point((i=n[o])[0],i[1]);u.lineend()}}else></t;)i.n=e=n[r],e.p=i,i=e;i.n=e=n[0],e.p=i}}function></uo&&xo(n[1]-t[1])<uo}function></t;)n[e][0]=this(n[e][0]);return></r;)t.set(n[e].tolowercase(),e);return>
    


  • I played with the monitoring screen again and was able to get past the display hangup (kinda).  If I set the default to quality and 1 month time period I have the problem, however if I set it to 2 days as a default I do not have the problem (until I select 1 month).  1 week only partially works and does not draw grid lines or axis' and then breaks the ability to change other settings as well.  I think this may be a problem with the template for the 1 month setting, but I also wonder if there is some corrupted quality data that is causing the draw problem.

    I think they come from different data pools but the 3 month setting in the drop-down seems to work fine.

    So, the workaround for now might be to just select a different default value than you are using.



  • This is the same issue I have described in https://forum.pfsense.org/index.php?topic=119175.0

    The cause seems to be that sometimes the step value returned from the XHR call (to rrd_fetch_json.php) is half of what it should be. The client (javascript) code looks up this value in a constant array to determine the rest of the settings but this value does not exist in the array causing the issue.

    Notice that the step returned from rrd_fetch_json.php is actually read from the RRD data, so it is probably an issue with RRD data collection (or interpretaion)


  • Administrator

    Nice detective work! I created a redmine ticket and assigned it to myself: https://redmine.pfsense.org/issues/6860



  • Thanks Jarod!
    I tested your fix https://github.com/pfsense/FreeBSD-ports/commit/5288d76204e51a289c31d249f1cbd1174a4a9eca, it works great!
    But the same problem appears in Quality graph (1 week period), with 1800 step value.
    rrd_fetch_json.php response:

    
    ...
            "key": "packet loss",
            "step": 1800,
            "last_updated": 1484999085000,
    ...
    
    

    Gabor



  • thanks


  • Banned