librenms/html/js/justgage.min.js
Tony Murray d10a3db5e0
Fix server stats widget (#12864)
* Fix Server Stats Widget
JustGage update
removed title feature, so re-implement

* Improve layout
2021-05-12 12:39:49 -05:00

3 lines
17 KiB
JavaScript

!function(n,e){"function"==typeof define&&define.amd?define(["raphael"],function(t){return n.JustGage=e(t)}):"object"==typeof module&&module.exports?module.exports=n.JustGage=e(require("raphael")):n.JustGage=e(Raphael)}("undefined"!=typeof window?window:this,function(T){function t(t){var A=this;if(A.events={},N(t))return!1;if(N(t.id)){if(N(t.parentNode))return!1;A.node=t.parentNode}else if(A.node=document.getElementById(t.id),!A.node)return!1;var n,e,i,o,a,r,l,c,f,m,s,g,u,d,p,h,x,b,v,y=A.node.dataset?A.node.dataset:{},M=!N(t.defaults)&&t.defaults;!1!==M&&delete(t=function(t){t=t||{};for(var n=1;n<arguments.length;n++)if(arguments[n])for(var e in arguments[n])arguments[n].hasOwnProperty(e)&&(t[e]=arguments[n][e]);return t}({},t,M)).defaults,A.config={id:t.id,value:C("value",t,y,0,"float"),defaults:C("defaults",t,y,0,!1),parentNode:C("parentNode",t,y,null),width:C("width",t,y,null),height:C("height",t,y,null),valueFontColor:C("valueFontColor",t,y,"#010101"),valueFontFamily:C("valueFontFamily",t,y,"Arial"),symbol:C("symbol",t,y,""),min:C("min",t,y,0,"float"),minTxt:C("minTxt",t,y,!1),max:C("max",t,y,100,"float"),maxTxt:C("maxTxt",t,y,!1),reverse:C("reverse",t,y,!1),humanFriendlyDecimal:C("humanFriendlyDecimal",t,y,0),textRenderer:C("textRenderer",t,y,null),onAnimationEnd:C("onAnimationEnd",t,y,null),gaugeWidthScale:C("gaugeWidthScale",t,y,1),gaugeColor:C("gaugeColor",t,y,"#edebeb"),label:C("label",t,y,""),labelFontColor:C("labelFontColor",t,y,"#b3b3b3"),labelFontFamily:C("labelFontFamily",t,y,"Arial"),shadowOpacity:C("shadowOpacity",t,y,.2),shadowSize:C("shadowSize",t,y,5),shadowVerticalOffset:C("shadowVerticalOffset",t,y,3),levelColors:C("levelColors",t,y,["#a9d70b","#f9c802","#ff0000"],"array",","),startAnimationTime:C("startAnimationTime",t,y,700),startAnimationType:C("startAnimationType",t,y,">"),refreshAnimationTime:C("refreshAnimationTime",t,y,700),refreshAnimationType:C("refreshAnimationType",t,y,">"),donutStartAngle:C("donutStartAngle",t,y,90),valueMinFontSize:C("valueMinFontSize",t,y,16),labelMinFontSize:C("labelMinFontSize",t,y,10),minLabelMinFontSize:C("minLabelMinFontSize",t,y,10),maxLabelMinFontSize:C("maxLabelMinFontSize",t,y,10),hideValue:C("hideValue",t,y,!1),hideMinMax:C("hideMinMax",t,y,!1),showInnerShadow:C("showInnerShadow",t,y,!1),humanFriendly:C("humanFriendly",t,y,!1),noGradient:C("noGradient",t,y,!1),donut:C("donut",t,y,!1),relativeGaugeSize:C("relativeGaugeSize",t,y,!1),counter:C("counter",t,y,!1),decimals:C("decimals",t,y,0),customSectors:C("customSectors",t,y,{}),formatNumber:C("formatNumber",t,y,!1),pointer:C("pointer",t,y,!1),pointerOptions:C("pointerOptions",t,y,{}),displayRemaining:C("displayRemaining",t,y,!1)},A.config.value>A.config.max&&(A.config.value=A.config.max),A.config.value<A.config.min&&(A.config.value=A.config.min),A.originalValue=C("value",t,y,-1,"float"),null!==A.config.id&&null!==document.getElementById(A.config.id)?A.canvas=T(A.config.id,"100%","100%"):null!==A.config.parentNode&&(A.canvas=T(A.config.parentNode,"100%","100%")),e=!0===A.config.relativeGaugeSize?!0===A.config.donut?(A.canvas.setViewBox(0,0,200,200,!0),n=200):(A.canvas.setViewBox(0,0,200,100,!0),n=200,100):null!==A.config.width&&null!==A.config.height?(n=A.config.width,A.config.height):null!==A.config.parentNode?(A.canvas.setViewBox(0,0,200,100,!0),n=200,100):(n=1*Y(document.getElementById(A.config.id),"width").slice(0,-2),1*Y(document.getElementById(A.config.id),"height").slice(0,-2)),v=(b=(x=!0===A.config.donut?(e<n?i=o=e:o=i=n,l=(e-o)/2,c=16<o/6.4?o/5.4:18,g=f=(r=(n-i)/2)+i/2,u=(m=""!==A.config.label?l+o/1.85:l+o/1.7)+(s=10<o/16?o/16:10),d=10<o/16?o/16:10,p=r+i/10+i/6.666666666666667*A.config.gaugeWidthScale/2,h=u,10<o/16?o/16:10):(e<n?n<(i=2*(o=e))&&(i/=a=i/n,o/=a):o=n<e?(i=n)/2:.5*(i=n),r=(n-i)/2,l=(e-o)/2,c=o/6.5>A.config.valueMinFontSize?o/6.5:A.config.valueMinFontSize,f=r+i/2,m=l+o/1.275,s=o/16>A.config.labelMinFontSize?o/16:A.config.labelMinFontSize,g=r+i/2,u=m+c/2+5,d=o/16>A.config.minLabelMinFontSize?o/16:A.config.minLabelMinFontSize,p=r+i/10+i/6.666666666666667*A.config.gaugeWidthScale/2,h=u,o/16>A.config.maxLabelMinFontSize?o/16:A.config.maxLabelMinFontSize),r+i-i/10-i/6.666666666666667*A.config.gaugeWidthScale/2),u),A.params={canvasW:n,canvasH:e,widgetW:i,widgetH:o,dx:r,dy:l,valueFontSize:c,valueX:f,valueY:m,labelFontSize:s,labelX:g,labelY:u,minFontSize:d,minX:p,minY:h,maxFontSize:x,maxX:b,maxY:v},v=null,A.canvas.customAttributes.pki=function(t){var n,e,i,o,a,r,l=A.config.min,c=A.config.max,f=A.params.widgetW,m=A.params.widgetH,s=A.params.dx,g=A.params.dy,u=A.config.gaugeWidthScale,d=A.config.donut;A.config.reverse;return l<0&&(c-=l,t-=l,l=0),d?(n=(1-2*(t-l)/(c-l))*Math.PI,r="M"+((o=f/2+s)-(i=(e=f/2-f/30)-f/6.666666666666667*u))+","+(a=m/2+g)+" ",r+="L"+(o-e)+","+a+" ",(c-l)/2<t-l&&(r+="A"+e+","+e+" 0 0 1 "+(o+e)+","+a+" "),r+="A"+e+","+e+" 0 0 1 "+(o+e*Math.cos(n))+","+(a-e*Math.sin(n))+" ",r+="L"+(o+i*Math.cos(n))+","+(a-i*Math.sin(n))+" ",(c-l)/2<t-l&&(r+="A"+i+","+i+" 0 0 0 "+(o+i)+","+a+" ")):(n=(1-(t-l)/(c-l))*Math.PI,r="M"+((o=f/2+s)-(i=(e=f/2-f/10)-f/6.666666666666667*u))+","+(a=m/1.25+g)+" ",r+="L"+(o-e)+","+a+" ",r+="A"+e+","+e+" 0 0 1 "+(o+e*Math.cos(n))+","+(a-e*Math.sin(n))+" ",r+="L"+(o+i*Math.cos(n))+","+(a-i*Math.sin(n))+" "),r+="A"+i+","+i+" 0 0 0 "+(o-i)+","+a+" ",{path:r+="Z "}},A.canvas.customAttributes.ndl=function(t){var n,e,i,o,a,r,l,c,f,m,s,g,u,d=A.config.min,p=A.config.max,h=A.params.widgetW,x=A.params.widgetH,b=A.params.dx,v=A.params.dy,y=A.config.gaugeWidthScale,M=A.config.donut,F=3.5*h/100,S=h/15,w=h/100;return null!=A.config.pointerOptions.toplength&&null!=A.config.pointerOptions.toplength&&(F=A.config.pointerOptions.toplength),null!=A.config.pointerOptions.bottomlength&&null!=A.config.pointerOptions.bottomlength&&(S=A.config.pointerOptions.bottomlength),null!=A.config.pointerOptions.bottomwidth&&null!=A.config.pointerOptions.bottomwidth&&(w=A.config.pointerOptions.bottomwidth),u=(g=(s=(m=(f=(c=(l=(r=(a=(o=M?(n=(1-2*(t-d)/(p-d))*Math.PI,i=(e=h/2-h/30)-h/6.666666666666667*y,x/2+v):(n=(1-(t-d)/(p-d))*Math.PI,i=(e=h/2-h/10)-h/6.666666666666667*y,x/1.25+v),h/2+b+e*Math.cos(n)),x-(x-o)-e*Math.sin(n)),h/2+b+i*Math.cos(n)),x-(x-o)-i*Math.sin(n)),a+F*Math.cos(n)),r-F*Math.sin(n)),l-S*Math.cos(n)),c+S*Math.sin(n)),"M"+(s+w*Math.sin(n))+","+(g+w*Math.cos(n))+" "),u+="L"+(s-w*Math.sin(n))+","+(g-w*Math.cos(n))+" ",u+="L"+f+","+m+" ",{path:u+="Z "}},A.gauge=A.canvas.path().attr({stroke:"none",fill:A.config.gaugeColor,pki:[A.config.max]}),A.level=A.canvas.path().attr({stroke:"none",fill:O(A.config.value,(A.config.value-A.config.min)/(A.config.max-A.config.min),A.config.levelColors,A.config.noGradient,A.config.customSectors),pki:[A.config.min]}),A.config.donut&&A.level.transform("r"+A.config.donutStartAngle+", "+(A.params.widgetW/2+A.params.dx)+", "+(A.params.widgetH/2+A.params.dy)),A.config.pointer&&(A.needle=A.canvas.path().attr({stroke:N(A.config.pointerOptions.stroke)?"none":A.config.pointerOptions.stroke,"stroke-width":N(A.config.pointerOptions.stroke_width)?0:A.config.pointerOptions.stroke_width,"stroke-linecap":N(A.config.pointerOptions.stroke_linecap)?"square":A.config.pointerOptions.stroke_linecap,fill:N(A.config.pointerOptions.color)?"#000000":A.config.pointerOptions.color,ndl:[A.config.min]}),A.config.donut&&A.needle.transform("r"+A.config.donutStartAngle+", "+(A.params.widgetW/2+A.params.dx)+", "+(A.params.widgetH/2+A.params.dy))),A.txtValue=A.canvas.text(A.params.valueX,A.params.valueY,0),A.txtValue.attr({"font-size":A.params.valueFontSize,"font-weight":"bold","font-family":A.config.valueFontFamily,fill:A.config.valueFontColor,"fill-opacity":"0"}),E(A.txtValue,A.params.valueFontSize,A.params.valueY),A.txtLabel=A.canvas.text(A.params.labelX,A.params.labelY,A.config.label),A.txtLabel.attr({"font-size":A.params.labelFontSize,"font-weight":"normal","font-family":A.config.labelFontFamily,fill:A.config.labelFontColor,"fill-opacity":"0"}),E(A.txtLabel,A.params.labelFontSize,A.params.labelY);var F=A.config.min;A.config.reverse&&(F=A.config.max),A.txtMinimum=F,A.config.minTxt?A.txtMinimum=A.config.minTxt:A.config.humanFriendly?A.txtMinimum=k(F,A.config.humanFriendlyDecimal):A.config.formatNumber&&(A.txtMinimum=L(F)),A.txtMin=A.canvas.text(A.params.minX,A.params.minY,A.txtMinimum),A.txtMin.attr({"font-size":A.params.minFontSize,"font-weight":"normal","font-family":A.config.labelFontFamily,fill:A.config.labelFontColor,"fill-opacity":A.config.hideMinMax||A.config.donut?"0":"1"}),E(A.txtMin,A.params.minFontSize,A.params.minY);var S=A.config.max;A.config.reverse&&(S=A.config.min),A.txtMaximum=S,A.config.maxTxt?A.txtMaximum=A.config.maxTxt:A.config.humanFriendly?A.txtMaximum=k(S,A.config.humanFriendlyDecimal):A.config.formatNumber&&(A.txtMaximum=L(S)),A.txtMax=A.canvas.text(A.params.maxX,A.params.maxY,A.txtMaximum),A.txtMax.attr({"font-size":A.params.maxFontSize,"font-weight":"normal","font-family":A.config.labelFontFamily,fill:A.config.labelFontColor,"fill-opacity":A.config.hideMinMax||A.config.donut?"0":"1"}),E(A.txtMax,A.params.maxFontSize,A.params.maxY);var w=A.canvas.canvas.childNodes[1],z="http://www.w3.org/2000/svg";if("undefined"!==I&&I<9||("undefined"!==I?function t(n){void 0!==document.createElementNS?n():setTimeout(function(){t(n)},100)}(function(){A.generateShadow(z,w)}):A.generateShadow(z,w)),z=null,A.config.textRenderer?A.originalValue=A.config.textRenderer(A.originalValue):A.config.humanFriendly?A.originalValue=k(A.originalValue,A.config.humanFriendlyDecimal)+A.config.symbol:A.config.formatNumber?A.originalValue=L(A.originalValue)+A.config.symbol:A.config.displayRemaining?A.originalValue=(1*(A.config.max-A.originalValue)).toFixed(A.config.decimals)+A.config.symbol:A.originalValue=(1*A.originalValue).toFixed(A.config.decimals)+A.config.symbol,!0===A.config.counter){this.bindEvent("raphael.anim.finish",function(){A.txtValue.attr({text:A.originalValue}),E(A.txtValue,A.params.valueFontSize,A.params.valueY)}),this.bindEvent("raphael.anim.frame",function(){var t=A.level.attr("pki")[0];A.config.reverse&&(t=1*A.config.max+1*A.config.min-1*A.level.attr("pki")[0]),A.config.textRenderer?A.txtValue.attr("text",A.config.textRenderer(Math.floor(t))):A.config.humanFriendly?A.txtValue.attr("text",k(Math.floor(t),A.config.humanFriendlyDecimal)+A.config.symbol):A.config.formatNumber?A.txtValue.attr("text",L(Math.floor(t))+A.config.symbol):A.config.displayRemaining?A.txtValue.attr("text",(1*(A.config.max-t)).toFixed(A.config.decimals)+A.config.symbol):A.txtValue.attr("text",(1*t).toFixed(A.config.decimals)+A.config.symbol),E(A.txtValue,A.params.valueFontSize,A.params.valueY),t=null})}else{this.bindEvent("raphael.anim.start",function(){A.txtValue.attr({text:A.originalValue}),E(A.txtValue,A.params.valueFontSize,A.params.valueY)})}var V=A.config.value;A.config.reverse&&(V=1*A.config.max+1*A.config.min-1*A.config.value),A.level.animate({pki:[V]},A.config.startAnimationTime,A.config.startAnimationType,A.config.onAnimationEnd),A.config.pointer&&A.needle.animate({ndl:[V]},A.config.startAnimationTime,A.config.startAnimationType),A.txtValue.animate({"fill-opacity":A.config.hideValue?"0":"1"},A.config.startAnimationTime,A.config.startAnimationType),A.txtLabel.animate({"fill-opacity":"1"},A.config.startAnimationTime,A.config.startAnimationType)}function i(t,n,e){switch(n){case"valueFontColor":if(!o(e))break;t.txtValue.attr({fill:e});break;case"labelFontColor":if(!o(e))break;t.txtMin.attr({fill:e}),t.txtMax.attr({fill:e}),t.txtLabel.attr({fill:e})}}function C(t,n,e,i,o){var a=i,r=!1;if(!N(t)&&(!N(e)&&"object"==typeof e&&t in e?(a=e[t],r=!0):!N(n)&&"object"==typeof n&&t in n?(a=n[t],r=!0):a=i,!0===r&&!N(o)))switch(o){case"int":a=parseInt(a,10);break;case"float":a=parseFloat(a)}return a}function N(t){return null==t}function O(t,n,e,i,o){var a,r,l,c,f,m,s,g,u,d,p,h,x,b,v=o&&o.ranges&&0<o.ranges.length;i=i||v;if(v){!0===o.percents&&(t=100*n);for(var y=0;y<o.ranges.length;y++)if(t>=o.ranges[y].lo&&t<=o.ranges[y].hi)return o.ranges[y].color}if(1===(a=e.length))return e[0];for(r=i?1/a:1/(a-1),l=[],y=0;y<e.length;y++)c=i?r*(y+1):r*y,f=parseInt(F(e[y]).substring(0,2),16),m=parseInt(F(e[y]).substring(2,4),16),s=parseInt(F(e[y]).substring(4,6),16),l[y]={pct:c,color:{r:f,g:m,b:s}};if(0===n)return"rgb("+[l[0].color.r,l[0].color.g,l[0].color.b].join(",")+")";for(var M=0;M<l.length;M++)if(n<=l[M].pct)return i?"rgb("+[l[M].color.r,l[M].color.g,l[M].color.b].join(",")+")":(g=l[M-1],d=(u=l[M]).pct-g.pct,h=1-(p=(n-g.pct)/d),x=p,"rgb("+[(b={r:Math.floor(g.color.r*h+u.color.r*x),g:Math.floor(g.color.g*h+u.color.g*x),b:Math.floor(g.color.b*h+u.color.b*x)}).r,b.g,b.b].join(",")+")")}function E(t){(!I||9<I)&&t.node.firstChild.attributes.dy&&(t.node.firstChild.attributes.dy.value=0)}function F(t){return"#"==t.charAt(0)?t.substring(1,7):t}function o(t){return"string"==typeof t&&/^#([0-9A-Fa-f]{3}){1,2}$/.test(t)}function k(t,n){var e,i,o;for(e=Math.pow(10,n),o=" KMGTPE",i=0,1e3;(1e3<=t||t<=-1e3)&&++i<o.length;)t/=1e3;return i=o.length<=i?o.length-1:i,Math.round(t*e)/e+o[i]}function L(t){var n=t.toString().split(".");return n[0]=n[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),n.join(".")}function Y(t,n){var e="";return document.defaultView&&document.defaultView.getComputedStyle?e=document.defaultView.getComputedStyle(t,"").getPropertyValue(n):t.currentStyle&&(n=n.replace(/\-(\w)/g,function(t,n){return n.toUpperCase()}),e=t.currentStyle[n]),e}t.prototype.bindEvent=function(t,n){t+="."+this.level.id,this.events[t]&&T.eve.off(t,this.events[t]),T.eve.on(t,n),this.events[t]=n},t.prototype.refresh=function(t,n,e,i){var o,a,r=this;n=c(n)?n:null,e=c(e)?e:null,null!==(i=i||null)&&(r.config.label=i,r.txtLabel.attr({text:r.config.label}),E(r.txtLabel,r.params.labelFontSize,r.params.labelY)),null!==e&&(r.config.min=e,r.txtMinimum=r.config.min,r.config.minTxt?r.txtMinimum=r.config.minTxt:r.config.humanFriendly?r.txtMinimum=k(r.config.min,r.config.humanFriendlyDecimal):r.config.formatNumber&&(r.txtMinimum=L(r.config.min)),r.config.reverse?(r.txtMax.attr({text:r.txtMinimum}),E(r.txtMax,r.params.minFontSize,r.params.minY)):(r.txtMin.attr({text:r.txtMinimum}),E(r.txtMin,r.params.minFontSize,r.params.minY))),null!==n&&(r.config.max=n,r.txtMaximum=r.config.max,r.config.maxTxt?r.txtMaximum=r.config.maxTxt:r.config.humanFriendly?r.txtMaximum=k(r.config.max,r.config.humanFriendlyDecimal):r.config.formatNumber&&(r.txtMaximum=L(r.config.max)),r.config.reverse?(r.txtMin.attr({text:r.txtMaximum}),E(r.txtMin,r.params.maxFontSize,r.params.maxY)):(r.txtMax.attr({text:r.txtMaximum}),E(r.txtMax,r.params.maxFontSize,r.params.maxY))),1*(o=t)>1*r.config.max&&(t=1*r.config.max),1*t<1*r.config.min&&(t=1*r.config.min),a=O(t,(t-r.config.min)/(r.config.max-r.config.min),r.config.levelColors,r.config.noGradient,r.config.customSectors),o=r.config.textRenderer?r.config.textRenderer(o):r.config.humanFriendly?k(o,r.config.humanFriendlyDecimal)+r.config.symbol:r.config.formatNumber?L((1*o).toFixed(r.config.decimals))+r.config.symbol:r.config.displayRemaining?(1*(r.config.max-o)).toFixed(r.config.decimals)+r.config.symbol:(1*o).toFixed(r.config.decimals)+r.config.symbol,r.originalValue=o,r.config.value=1*t,r.config.counter||(r.txtValue.attr({text:o}),E(r.txtValue,r.params.valueFontSize,r.params.valueY));var l=r.config.value;r.config.reverse&&(l=1*r.config.max+1*r.config.min-1*r.config.value),r.level.animate({pki:[l],fill:a},r.config.refreshAnimationTime,r.config.refreshAnimationType,r.config.onAnimationEnd),r.config.pointer&&r.needle.animate({ndl:[l]},r.config.refreshAnimationTime,r.config.refreshAnimationType),e=null},t.prototype.update=function(t,n){if(t instanceof Object)for(var e in t)i(this,e,n=t[e]);else i(this,t,n)},t.prototype.destroy=function(){for(var t in this.node&&this.node.parentNode&&(this.node.innerHTML=""),this.events)T.eve.off(t,this.events[t]);this.events={}},t.prototype.generateShadow=function(t,n){var e,i,o,a,r,l,c,f=this,m="inner-shadow-"+f.config.id;(e=document.createElementNS(t,"filter")).setAttribute("id",m),n.appendChild(e),(i=document.createElementNS(t,"feOffset")).setAttribute("dx",0),i.setAttribute("dy",f.config.shadowVerticalOffset),e.appendChild(i),(o=document.createElementNS(t,"feGaussianBlur")).setAttribute("result","offset-blur"),o.setAttribute("stdDeviation",f.config.shadowSize),e.appendChild(o),(a=document.createElementNS(t,"feComposite")).setAttribute("operator","out"),a.setAttribute("in","SourceGraphic"),a.setAttribute("in2","offset-blur"),a.setAttribute("result","inverse"),e.appendChild(a),(r=document.createElementNS(t,"feFlood")).setAttribute("flood-color","black"),r.setAttribute("flood-opacity",f.config.shadowOpacity),r.setAttribute("result","color"),e.appendChild(r),(l=document.createElementNS(t,"feComposite")).setAttribute("operator","in"),l.setAttribute("in","color"),l.setAttribute("in2","inverse"),l.setAttribute("result","shadow"),e.appendChild(l),(c=document.createElementNS(t,"feComposite")).setAttribute("operator","over"),c.setAttribute("in","shadow"),c.setAttribute("in2","SourceGraphic"),e.appendChild(c),f.config.showInnerShadow&&(f.canvas.canvas.childNodes[2].setAttribute("filter","url("+window.location.pathname+"#"+m+")"),f.canvas.canvas.childNodes[3].setAttribute("filter","url("+window.location.pathname+"#"+m+")")),c=null};var I=function(){for(var t=3,n=document.createElement("div"),e=n.getElementsByTagName("i");n.innerHTML="\x3c!--[if gt IE "+ ++t+"]><i></i><![endif]--\x3e",e[0];);return 4<t?t:void 0}();function c(t){return null!=t&&!isNaN(t)}return t});
//# sourceMappingURL=/js/justgage.min.js.map