UNPKG

flot-smithchart-plugin

Version:

A flot plugin to create a smith charts

3 lines (2 loc) 8.44 kB
"use strict";function _slicedToArray(t,r){return _arrayWithHoles(t)||_iterableToArrayLimit(t,r)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArrayLimit(t,r){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t)){var e=[],a=!0,i=!1,n=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(e.push(o.value),!r||e.length!==r);a=!0);}catch(t){i=!0,n=t}finally{try{a||null==s.return||s.return()}finally{if(i)throw n}}return e}}function _arrayWithHoles(t){if(Array.isArray(t))return t}!function(f){var h={grid:{show:!1},lines:{show:!1}};f.plot.plugins.push({init:function(I){var k=null,S=null,z=[];function A(t){return t*(Math.PI/180)}function T(t,r,e,a){var i,n;n=a?(i=t,r):(i=t/e,r/e);var o,s,l,c,h,u=_slicedToArray((o=i-1,l=i+1,c=s=n,h=Math.pow(l,2)+Math.pow(c,2),[(o*l+s*c)/h,(s*l-o*c)/h]),2);return[u[0],u[1]]}function P(t,r,e,a,i,n,o){var s,l=t.getSurface().getTextInfo("",r,n);s=a-("bottom"===i?l.height:l.height/2)-1;var c={x:e-l.width/2-1,y:s,width:l.width+2,height:l.height+2};return{overlaps:o.some(function(t){return a=(r=c.x)+c.width,i=(e=c.y)+c.height,n=t.x,o=t.y,s=t.x+t.width,l=t.y+t.height,(r<=n&&n<=a||n<=r&&r<=s)&&(e<=o&&o<=i||o<=e&&e<=l);var r,e,a,i,n,o,s,l}),newLabelBox:c}}function F(t){var r,e,a,i,n,o,s,l,c,h,u,p,f,d,v,m,y,g=_slicedToArray(t,2),A=g[0],T=g[1];if(!isNaN(T)&&!isNaN(A))return A===1/0||Math.abs(T)===1/0?[1,0]:0===T?[(A-1)/(A+1),0]:(r=[1,1/(y=T),1/Math.abs(y)],e=[(m=A)/(m+1),0,1/(m+1)],a=_slicedToArray(r,3),i=a[0],n=a[1],o=a[2],s=_slicedToArray(e,3),l=s[0],c=s[1],h=s[2],u=l-i,p=c-n,f=Math.hypot(u,p),d=(u*u+p*p-h*h+o*o)/(2*f),v=Math.sign(n)*Math.sqrt(o*o-d*d),[i+(u*d+p*v)/f,n+(p*d-u*v)/f])}function R(t,r,e,a){var i=a-r,n=e-t;return Math.atan2(i,n)}function o(t,r,e,a){var i=_(1/(t+1)),n=_slicedToArray(N([t/(t+1),0]),2),o=n[0],s=n[1],l=_slicedToArray(N(F([t,r])),2),c=l[0],h=l[1],u=_slicedToArray(N(F([t,e])),2),p=u[0],f=u[1],d=R(o,s,c,h),v=R(o,s,p,f);if(a.moveTo(c,h),Math.sign(r)!==Math.sign(e)){var m=_slicedToArray(N(F([t,0])),2),y=R(o,s,m[0],m[1]),g=0<r?0:1,A=e<0?0:1;a.arc(o,s,i,d,y,!g),a.arc(o,s,i,y,v,!A)}else{var T=e<r?0:1;a.arc(o,s,i,d,v,!T)}}function s(t,r,e,a){var i=_slicedToArray(N(F([r,t])),2),n=i[0],o=i[1],s=_slicedToArray(N(F([e,t])),2),l=s[0],c=s[1];if(a.moveTo(n,o),0===t)a.lineTo(l,c);else{var h=_(1/Math.abs(t)),u=_slicedToArray(N([1,1/t]),2),p=u[0],f=u[1],d=R(p,f,n,o),v=R(p,f,l,c),m=t<0?1:0;a.arc(p,f,h,d,v,!m)}}function N(t){var r=_slicedToArray(t,2),e=r[0],a=r[1];return[(e+1)*(k/2-S)+S,(1-a)*(k/2-S)+S]}function _(t){return(k/2-S)*t}function a(t){r("plothover",t)}function i(t){r("plotclick",t)}function p(t,r,e,a){for(var i,n,o,s,l,c,h,u=I.getData(),p=_slicedToArray((i=_slicedToArray([t,r],2),n=i[0],o=i[1],[(n-S)/(k/2-S)-1,1-(o-S)/(k/2-S)]),2),f=p[0],d=p[1],v=a/(k/2-S),m=null,y=Number.POSITIVE_INFINITY,g=0;g<u.length;g++)if(!1!==u[g][e]&&u[g].datapoints&&2<u[g].datapoints.pointsize){s=u[g].datapoints.points;for(var A=0;A<s.length;A++)if(l=s[A][0],c=s[A][1],h=s[A][2],null!==l&&null!==c&&null!==h&&!(v<c-f||c-f<-v||v<h-d||h-d<-v)){var T=_slicedToArray(N([c,h]),2),_=T[0],b=T[1],w=Math.abs(_-t),M=Math.abs(b-r),x=w*w+M*M;x<y&&(y=x,m={datapoint:[l,c,h],dataIndex:A,series:u[g],seriesIndex:g,distance:Math.sqrt(x)})}}return m}function r(t,r){var e=I.getOptions(),a="plotclick"===t?"clickable":"hoverable",i=I.offset(),n=p(parseInt(r.pageX-i.left),parseInt(r.pageY-i.top),a,e.grid.mouseActiveRadius);if(n){var o=_slicedToArray(N([n.datapoint[1],n.datapoint[2]]),2),s=o[0],l=o[1];n.pageX=parseInt(s+i.left,10),n.pageY=parseInt(l+i.top,10)}var c=I.getCanvas(),h=f(c).parent(),u={pageX:r.pageX,pageY:r.pageY};h.trigger(t,[u,n])}function e(t,r){var e=t.getOptions();e.series.smithchart.show&&(e.grid.hoverable&&r.unbind("mousemove").mousemove(a),e.grid.clickable&&r.unbind("click").click(i))}function n(t,r,e,a){var i,n,o,s,l,c,h=[];if(r.smithchart.show){if(0<e.length&&Array.isArray(e[0])&&3===e[0].length&&!Array.isArray(e[0][0]))for(var u=0;u<e.length;u++){var p=e[u][0],f=e[u][1],d=e[u][2];if(h=[],"S"===r.smithchart.plot.dataParameter){if("MA"===r.smithchart.plot.dataFormat){var v=_slicedToArray((c=d,[(l=f)*Math.cos(A(c)),l*Math.sin(A(c))]),2);h=[p,v[0],v[1]]}else if("RI"===r.smithchart.plot.dataFormat){var m=_slicedToArray([f,d],2);h=[p,m[0],m[1]]}}else if("Z"===r.smithchart.plot.dataParameter)if("MA"===r.smithchart.plot.dataFormat){var y=_slicedToArray((i=f,n=d,o=r.smithchart.plot.referenceResistance,s=r.smithchart.plot.normalized,T(i*Math.cos(A(n)),i*Math.sin(A(n)),o,s)),2);h=[p,y[0],y[1]]}else if("RI"===r.smithchart.plot.dataFormat){var g=_slicedToArray(T(f,d,r.smithchart.plot.referenceResistance,r.smithchart.plot.normalized),2);h=[p,g[0],g[1]]}0<h.length&&a.points.push(h)}0<a.points.length?a.pointsize=3:0<e.length&&(a.pointsize=1,a.points.push([NaN]))}}function l(t,r){var e;if(r.save(),(e=r).clearRect(0,0,e.canvas.width,e.canvas.height),z=[],(k=Math.min(r.canvas.width,r.canvas.height))<=2*(S=20))r.restore();else{var a;(a=r).beginPath(),[.05,.1,.15,.2].map(function(t){return o(t,-.2,.2,a)}),[.1,.2,.3,.4,.5,.6,.7,.8,.9,1].map(function(t){return o(t,-1,1,a)}),[.2,.4,.6,.8,1,1.2,1.4,1.6,1.8,2].map(function(t){return o(t,-2,2,a)}),[1,2,3,4,5].map(function(t){return o(t,-5,5,a)}),[5,10].map(function(t){return o(t,-10,10,a)}),[10,20].map(function(t){return o(t,-20,20,a)}),[20,40].map(function(t){return o(t,-1/0,1/0,a)}),[-.2,-.15,-.1,-.05,0,.05,.1,.15,.2].map(function(t){return s(t,0,.2,a)}),[-1,-.9,-.8,-.7,-.6,-.5,-.4,-.3,-.2,-.1,-0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1].map(function(t){return s(t,0,1,a)}),[-2,-1.8,-1.6,-1.4,-1.2,-1,-.8,-.6,-.4,-.2,-0,.2,.4,.6,.8,1,1.2,1.4,1.6,1.8,2].map(function(t){return s(t,0,2,a)}),[-5,-4,-3,-2,-1,0,1,2,3,4,5].map(function(t){return s(t,0,5,a)}),[-10,-5,0,5,10].map(function(t){return s(t,0,10,a)}),[-20,-10,0,10,20].map(function(t){return s(t,0,20,a)}),[-50,0,50].map(function(t){return s(t,0,1/0,a)}),a.strokeStyle="#ccc",a.lineWidth=1,a.stroke(),a.beginPath(),o(0,-1/0,1/0,a),s(0,0,1/0,a),a.strokeStyle="#000",a.stroke();var i=window.getComputedStyle(t.getPlaceholder().get(0)),n={style:i.fontStyle,variant:i.fontVariant,weight:i.fontWeight,size:parseInt(i.fontSize),family:i.fontFamily};!function(t,r,e){var a=[.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.2,1.4,1.6,1.8,2,3,4,5,10,20,50];k&&k<300?a=[.1,.5,1,2,3,5,10,20]:k&&k<650&&(a=[.1,.2,.3,.4,.5,.6,.8,1,1.2,1.6,2,3,5,10,20,50]),r.font=e.size+"px "+e.family,r.textAlign="center";for(var i=0;i<a.length;i++){var n=_slicedToArray(N(F([a[i],0])),2),o=n[0],s=n[1];s-=2;var l=a[i]<10?a[i].toFixed(1):a[i],c=P(t,l,o,s,"bottom",e,z);c.overlaps||(z.push(c.newLabelBox),r.fillText(l,o,s))}}(t,r,n),function(t,r,e){var a=[-50,-20,-10,-5,-4,-3,-2,-1.8,-1.6,-1.4,-1.2,-1,-.9,-.8,-.7,-.6,-.5,-.4,-.3,-.2,-.1,0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.2,1.4,1.6,1.8,2,3,4,5,10,20,50];r.save(),r.font=e.size+"px "+e.family,r.textAlign="center",r.textBaseline="middle";for(var i,n,o,s,l,c,h,u,p,f,d,v,m,y,g,A=_slicedToArray(N([0,0]),2),T=A[0],_=A[1],b=0;b<a.length;b++){var w=Math.abs(a[b])<10?a[b].toFixed(1):a[b].toFixed(0),M=_slicedToArray((i=N(F([0,a[b]])),n=[T,_],o=w,s=t,l=e,c=_slicedToArray(i,2),h=c[0],u=c[1],p=_slicedToArray(n,2),f=p[0],d=p[1],v=s.getSurface().getTextInfo("",o,l),m=v.width,y=v.height,g=R(f,d,h,u),[h+Math.cos(g)*(m+2)/2,u+Math.sin(g)*(y+2)/2]),2),x=M[0],I=M[1],k=P(t,w,x,I,"middle",e,z);k.overlaps||(z.push(k.newLabelBox),r.fillText(w,x,I))}r.restore()}(t,r,n),r.restore()}}function c(t,r,e){r.save(),e.smithchart.plot.show&&0<e.datapoints.points.length&&3===e.datapoints.pointsize&&k&&2*S<k&&function(t,r,e){for(var a,i,n,o,s,l,c,h,u,p,f,d,v,m=0;m<r.length;m++){var y=_slicedToArray(N([r[m][1],r[m][2]]),2),g=y[0],A=y[1];p=g,f=A,d=6,v=e,(u=t).strokeStyle=v,u.fillStyle=v,u.beginPath(),u.arc(p,f,d/2,0,2*Math.PI),u.fill(),0<m&&(o=a,s=i,l=g,c=A,h=e,(n=t).strokeStyle=h,n.beginPath(),n.moveTo(o,s),n.lineTo(l,c),n.stroke()),a=g,i=A}}(r,e.datapoints.points,e.color),r.restore()}I.hooks.processOptions.push(function(t,r){r.series.smithchart.show&&(f.extend(!0,r,h),t.hooks.processRawData.push(n),t.hooks.drawBackground.push(l),t.hooks.drawSeries.push(c),t.hooks.bindEvents.push(e))})},options:{series:{smithchart:{show:!1,plot:{show:!0,frequencyUnit:"GHz",dataParameter:"S",dataFormat:"MA",referenceResistance:50,normalized:!1}}}},name:"smithchart",version:"1.0"})}(jQuery); //# sourceMappingURL=jquery.flot.smithchart.js.map