From 9e6a3dc1b0144f5f7fed510c04d0a841a8db0b2a Mon Sep 17 00:00:00 2001 From: andystrobel Date: Tue, 6 Oct 2015 12:27:26 +0200 Subject: [PATCH] Updated knob js plugin --- js/jquery.knob.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/jquery.knob.min.js b/js/jquery.knob.min.js index a2910e8213..72d6ed2de2 100644 --- a/js/jquery.knob.min.js +++ b/js/jquery.knob.min.js @@ -1 +1 @@ -$(function(){var Dial=function(c,opt){var v=null,ctx=c[0].getContext("2d"),PI2=2*Math.PI,mx,my,x,y,self=this;this.onChange=function(){};this.onCancel=function(){};this.onRelease=function(){};this.val=function(nv){if(null!=nv){opt.stopper&&(nv=Math.max(Math.min(nv,opt.max),opt.min));v=nv;this.onChange(nv);this.draw(nv)}else{var b,a;b=a=Math.atan2(mx-x,-(my-y-opt.width/2))-opt.angleOffset;(a<0)&&(b=a+PI2);nv=Math.round(b*(opt.max-opt.min)/PI2)+opt.min;return(nv>opt.max)?opt.max:nv}};this.change=function(nv){opt.stopper&&(nv=Math.max(Math.min(nv,opt.max),opt.min));this.onChange(nv);this.draw(nv)};this.angle=function(nv){return(nv-opt.min)*PI2/(opt.max-opt.min)};this.draw=function(nv){var a=this.angle(nv),sa=1.5*Math.PI+opt.angleOffset,sat=sa,ea=sa+this.angle(v),eat=sat+a,r=opt.width/2,lw=r*opt.thickness,cgcolor=Dial.getCgColor(opt.cgColor),tick;ctx.clearRect(0,0,opt.width,opt.width);ctx.lineWidth=lw;if(opt.draw(a,v,opt,ctx)){return}for(tick=0;tick(((2*Math.PI)/opt.ticks)*tick)&&opt.tickColorizeValues){ctx.strokeStyle=opt.fgColor}else{ctx.strokeStyle=opt.tickColor}var tick_sa=(((2*Math.PI)/opt.ticks)*tick)-(0.5*Math.PI);ctx.arc(r,r,r-lw-opt.tickLength,tick_sa,tick_sa+opt.tickWidth,false);ctx.stroke()}opt.cursor&&(sa=ea-0.3)&&(ea=ea+0.3)&&(sat=eat-0.3)&&(eat=eat+0.3);switch(opt.skin){case"default":ctx.beginPath();ctx.strokeStyle=opt.bgColor;ctx.arc(r,r,r-lw/2,0,PI2,true);ctx.stroke();if(opt.displayPrevious){ctx.beginPath();ctx.strokeStyle=(v==nv)?opt.fgColor:cgcolor;ctx.arc(r,r,r-lw/2,sa,ea,false);ctx.stroke()}ctx.beginPath();ctx.strokeStyle=opt.fgColor;ctx.arc(r,r,r-lw/2,sat,eat,false);ctx.stroke();break;case"tron":if(opt.displayPrevious){ctx.beginPath();ctx.strokeStyle=(v==nv)?opt.fgColor:cgcolor;ctx.arc(r,r,r-lw,sa,ea,false);ctx.stroke()}ctx.beginPath();ctx.strokeStyle=opt.fgColor;ctx.arc(r,r,r-lw,sat,eat,false);ctx.stroke();ctx.lineWidth=2;ctx.beginPath();ctx.strokeStyle=opt.fgColor;ctx.arc(r,r,r-lw+1+lw*2/3,0,2*Math.PI,false);ctx.stroke();break}};this.capture=function(e){switch(e.type){case"mousemove":case"mousedown":mx=e.pageX;my=e.pageY;break;case"touchmove":case"touchstart":mx=e.originalEvent.touches[0].pageX;my=e.originalEvent.touches[0].pageY;break}this.change(this.val())};this.cancel=function(){self.val(v);self.onCancel()};this.startDrag=function(e){var p=c.offset(),$doc=$(document);x=p.left+(opt.width/2);y=p.top;this.capture(e);$doc.bind("mousemove.dial touchmove.dial",function(e){self.capture(e)}).bind("keyup.dial",function(e){if(e.keyCode===27){$doc.unbind("mouseup.dial mousemove.dial keyup.dial");self.cancel()}}).bind("mouseup.dial touchend.dial",function(e){$doc.unbind("mousemove.dial touchmove.dial mouseup.dial touchend.dial keyup.dial");self.val(self.val());self.onRelease(v)})}};Dial.getCgColor=function(h){h=h.substring(1,7);var rgb=[parseInt(h.substring(0,2),16),parseInt(h.substring(2,4),16),parseInt(h.substring(4,6),16)];return"rgba("+rgb[0]+","+rgb[1]+","+rgb[2]+",.5)"};$.fn.knob=$.fn.dial=function(gopt){return this.each(function(){var $this=$(this),opt;if($this.data("dialed")){return $this}$this.data("dialed",true);opt=$.extend({min:$this.data("min")||0,max:$this.data("max")||100,stopper:true,readOnly:$this.data("readonly"),cursor:$this.data("cursor"),thickness:$this.data("thickness")||0.35,width:$this.data("width")||200,displayInput:$this.data("displayinput")==null||$this.data("displayinput"),displayPrevious:$this.data("displayprevious"),fgColor:$this.data("fgcolor")||"#87CEEB",cgColor:$this.data("cgcolor")||$this.data("fgcolor")||"#87CEEB",bgColor:$this.data("bgcolor")||"#EEEEEE",tickColor:$this.data("tickColor")||$this.data("fgcolor")||"#DDDDDD",ticks:$this.data("ticks")||0,tickLength:$this.data("tickLength")||0,tickWidth:$this.data("tickWidth")||0.02,tickColorizeValues:$this.data("tickColorizeValues")||true,skin:$this.data("skin")||"default",angleOffset:degreeToRadians($this.data("angleoffset")),draw:function(a,v,opt,ctx){},change:function(v){},release:function(v,ipt){}},gopt);var c=$(''),wd=$("
'),k,vl=$this.val(),initStyle=function(){opt.displayInput&&$this.css({width:opt.width/2+"px",position:"absolute","margin-top":(opt.width*5/14)+"px","margin-left":"-"+(opt.width*3/4)+"px","font-size":(opt.width/4)+"px",border:"none",background:"none","font-family":"Arial","font-weight":"bold","text-align":"center",color:opt.fgColor,padding:"0px","-webkit-appearance":"none"})||$this.css({width:"0px",visibility:"hidden"})};$this.wrap(wd).before(c);initStyle();k=new Dial(c,opt);vl||(vl=opt.min);$this.val(vl);k.val(vl);k.onRelease=function(v){opt.release(v,$this)};k.onChange=function(v){$this.val(v);opt.change(v)};$this.bind("change",function(e){k.val($this.val())});if(!opt.readOnly){c.bind("mousedown touchstart",function(e){e.preventDefault();k.startDrag(e)}).bind("mousewheel DOMMouseScroll",mw=function(e){e.preventDefault();var ori=e.originalEvent,deltaX=ori.detail||ori.wheelDeltaX,deltaY=ori.detail||ori.wheelDeltaY,val=parseInt($this.val())+(deltaX>0||deltaY>0?1:deltaX<0||deltaY<0?-1:0);k.val(val)});var kval,val,to,m=1,kv={37:-1,38:1,39:1,40:-1};$this.bind("configure",function(e,aconf){var kconf;for(kconf in aconf){opt[kconf]=aconf[kconf]}initStyle();k.val($this.val())}).bind("keydown",function(e){var kc=e.keyCode;if(kc>=96&&kc<=105){kc-=48}kval=parseInt(String.fromCharCode(kc));if(isNaN(kval)){(kc!==13)&&(kc!==8)&&(kc!==9)&&(kc!==189)&&e.preventDefault();if($.inArray(kc,[37,38,39,40])>-1){k.change(parseInt($this.val())+kv[kc]*m);to=window.setTimeout(function(){m<20&&m++},50);e.preventDefault()}}}).bind("keyup",function(e){if(isNaN(kval)){if(to){window.clearTimeout(to);to=null;m=1;k.val($this.val());k.onRelease($this.val(),$this)}else{(e.keyCode===13)&&k.onRelease($this.val(),$this)}}else{($this.val()>opt.max&&$this.val(opt.max))||($this.val()');this.$.wrap(this.$div).before(this.$c);this.$div=this.$.parent();if(typeof G_vmlCanvasManager!=="undefined"){G_vmlCanvasManager.initElement(this.$c[0])}this.c=this.$c[0].getContext?this.$c[0].getContext("2d"):null;if(!this.c){throw{name:"CanvasNotSupportedException",message:"Canvas not supported. Please use excanvas on IE8.0.",toString:function(){return this.name+": "+this.message}}}this.scale=(window.devicePixelRatio||1)/(this.c.webkitBackingStorePixelRatio||this.c.mozBackingStorePixelRatio||this.c.msBackingStorePixelRatio||this.c.oBackingStorePixelRatio||this.c.backingStorePixelRatio||1);this.relativeWidth=this.o.width%1!==0&&this.o.width.indexOf("%");this.relativeHeight=this.o.height%1!==0&&this.o.height.indexOf("%");this.relative=this.relativeWidth||this.relativeHeight;this._carve();if(this.v instanceof Object){this.cv={};this.copy(this.v,this.cv)}else{this.cv=this.v}this.$.bind("configure",t).parent().bind("configure",t);this._listen()._configure()._xy().init();this.isInit=true;this.$.val(this.o.format(this.v));this._draw();return this};this._carve=function(){if(this.relative){var e=this.relativeWidth?this.$div.parent().width()*parseInt(this.o.width)/100:this.$div.parent().width(),t=this.relativeHeight?this.$div.parent().height()*parseInt(this.o.height)/100:this.$div.parent().height();this.w=this.h=Math.min(e,t)}else{this.w=this.o.width;this.h=this.o.height}this.$div.css({width:this.w+"px",height:this.h+"px"});this.$c.attr({width:this.w,height:this.h});if(this.scale!==1){this.$c[0].width=this.$c[0].width*this.scale;this.$c[0].height=this.$c[0].height*this.scale;this.$c.width(this.w);this.$c.height(this.h)}return this};this._draw=function(){var e=true;n.g=n.c;n.clear();n.dH&&(e=n.dH());e!==false&&n.draw()};this._touch=function(e){var r=function(e){var t=n.xy2val(e.originalEvent.touches[n.t].pageX,e.originalEvent.touches[n.t].pageY);if(t==n.cv)return;if(n.cH&&n.cH(t)===false)return;n.change(n._validate(t));n._draw()};this.t=t.c.t(e);r(e);t.c.d.bind("touchmove.k",r).bind("touchend.k",function(){t.c.d.unbind("touchmove.k touchend.k");n.val(n.cv)});return this};this._mouse=function(e){var r=function(e){var t=n.xy2val(e.pageX,e.pageY);if(t==n.cv)return;if(n.cH&&n.cH(t)===false)return;n.change(n._validate(t));n._draw()};r(e);t.c.d.bind("mousemove.k",r).bind("keyup.k",function(e){if(e.keyCode===27){t.c.d.unbind("mouseup.k mousemove.k keyup.k");if(n.eH&&n.eH()===false)return;n.cancel()}}).bind("mouseup.k",function(e){t.c.d.unbind("mousemove.k mouseup.k keyup.k");n.val(n.cv)});return this};this._xy=function(){var e=this.$c.offset();this.x=e.left;this.y=e.top;return this};this._listen=function(){if(!this.o.readOnly){this.$c.bind("mousedown",function(e){e.preventDefault();n._xy()._mouse(e)}).bind("touchstart",function(e){e.preventDefault();n._xy()._touch(e)});this.listen()}else{this.$.attr("readonly","readonly")}if(this.relative){e(window).resize(function(){n._carve().init();n._draw()})}return this};this._configure=function(){if(this.o.draw)this.dH=this.o.draw;if(this.o.change)this.cH=this.o.change;if(this.o.cancel)this.eH=this.o.cancel;if(this.o.release)this.rH=this.o.release;if(this.o.displayPrevious){this.pColor=this.h2rgba(this.o.fgColor,"0.4");this.fgColor=this.h2rgba(this.o.fgColor,"0.6")}else{this.fgColor=this.o.fgColor}return this};this._clear=function(){this.$c[0].width=this.$c[0].width};this._validate=function(e){var t=~~((e<0?-.5:.5)+e/this.o.step)*this.o.step;return Math.round(t*100)/100};this.listen=function(){};this.extend=function(){};this.init=function(){};this.change=function(e){};this.val=function(e){};this.xy2val=function(e,t){};this.draw=function(){};this.clear=function(){this._clear()};this.h2rgba=function(e,t){var n;e=e.substring(1,7);n=[parseInt(e.substring(0,2),16),parseInt(e.substring(2,4),16),parseInt(e.substring(4,6),16)];return"rgba("+n[0]+","+n[1]+","+n[2]+","+t+")"};this.copy=function(e,t){for(var n in e){t[n]=e[n]}}};t.Dial=function(){t.o.call(this);this.startAngle=null;this.xy=null;this.radius=null;this.lineWidth=null;this.cursorExt=null;this.w2=null;this.PI2=2*Math.PI;this.extend=function(){this.o=e.extend({bgColor:this.$.data("bgcolor")||"#EEEEEE",angleOffset:this.$.data("angleoffset")||0,angleArc:this.$.data("anglearc")||360,inline:true},this.o)};this.val=function(e,t){if(null!=e){e=this.o.parse(e);if(t!==false&&e!=this.v&&this.rH&&this.rH(e)===false){return}this.cv=this.o.stopper?n(r(e,this.o.max),this.o.min):e;this.v=this.cv;this.$.val(this.o.format(this.v));this._draw()}else{return this.v}};this.xy2val=function(e,t){var i,s;i=Math.atan2(e-(this.x+this.w2),-(t-this.y-this.w2))-this.angleOffset;if(this.o.flip){i=this.angleArc-i-this.PI2}if(this.angleArc!=this.PI2&&i<0&&i>-.5){i=0}else if(i<0){i+=this.PI2}s=i*(this.o.max-this.o.min)/this.angleArc+this.o.min;this.o.stopper&&(s=n(r(s,this.o.max),this.o.min));return s};this.listen=function(){var t=this,i,s,o=function(e){e.preventDefault();var o=e.originalEvent,u=o.detail||o.wheelDeltaX,a=o.detail||o.wheelDeltaY,f=t._validate(t.o.parse(t.$.val()))+(u>0||a>0?t.o.step:u<0||a<0?-t.o.step:0);f=n(r(f,t.o.max),t.o.min);t.val(f,false);if(t.rH){clearTimeout(i);i=setTimeout(function(){t.rH(f);i=null},100);if(!s){s=setTimeout(function(){if(i)t.rH(f);s=null},200)}}},u,a,f=1,l={37:-t.o.step,38:t.o.step,39:t.o.step,40:-t.o.step};this.$.bind("keydown",function(i){var s=i.keyCode;if(s>=96&&s<=105){s=i.keyCode=s-48}u=parseInt(String.fromCharCode(s));if(isNaN(u)){s!==13&&s!==8&&s!==9&&s!==189&&(s!==190||t.$.val().match(/\./))&&i.preventDefault();if(e.inArray(s,[37,38,39,40])>-1){i.preventDefault();var o=t.o.parse(t.$.val())+l[s]*f;t.o.stopper&&(o=n(r(o,t.o.max),t.o.min));t.change(t._validate(o));t._draw();a=window.setTimeout(function(){f*=2},30)}}}).bind("keyup",function(e){if(isNaN(u)){if(a){window.clearTimeout(a);a=null;f=1;t.val(t.$.val())}}else{t.$.val()>t.o.max&&t.$.val(t.o.max)||t.$.val()this.o.max){this.v=this.o.min}this.$.val(this.v);this.w2=this.w/2;this.cursorExt=this.o.cursor/100;this.xy=this.w2*this.scale;this.lineWidth=this.xy*this.o.thickness;this.lineCap=this.o.lineCap;this.radius=this.xy-this.lineWidth/2;this.o.angleOffset&&(this.o.angleOffset=isNaN(this.o.angleOffset)?0:this.o.angleOffset);this.o.angleArc&&(this.o.angleArc=isNaN(this.o.angleArc)?this.PI2:this.o.angleArc);this.angleOffset=this.o.angleOffset*Math.PI/180;this.angleArc=this.o.angleArc*Math.PI/180;this.startAngle=1.5*Math.PI+this.angleOffset;this.endAngle=1.5*Math.PI+this.angleOffset+this.angleArc;var e=n(String(Math.abs(this.o.max)).length,String(Math.abs(this.o.min)).length,2)+2;this.o.displayInput&&this.i.css({width:(this.w/2+4>>0)+"px",height:(this.w/3>>0)+"px",position:"absolute","vertical-align":"middle","margin-top":(this.w/3>>0)+"px","margin-left":"-"+(this.w*3/4+2>>0)+"px",border:0,background:"none",font:this.o.fontWeight+" "+(this.w/e>>0)+"px "+this.o.font,"text-align":"center",color:this.o.inputColor||this.o.fgColor,padding:"0px","-webkit-appearance":"none"})||this.i.css({width:"0px",visibility:"hidden"})};this.change=function(e){this.cv=e;this.$.val(this.o.format(e))};this.angle=function(e){return(e-this.o.min)*this.angleArc/(this.o.max-this.o.min)};this.arc=function(e){var t,n;e=this.angle(e);if(this.o.flip){t=this.endAngle+1e-5;n=t-e-1e-5}else{t=this.startAngle-1e-5;n=t+e+1e-5}this.o.cursor&&(t=n-this.cursorExt)&&(n=n+this.cursorExt);return{s:t,e:n,d:this.o.flip&&!this.o.cursor}};this.draw=function(){var e=this.g,t=this.arc(this.cv),n,r=1;e.lineWidth=this.lineWidth;e.lineCap=this.lineCap;if(this.o.bgColor!=="none"){e.beginPath();e.strokeStyle=this.o.bgColor;e.arc(this.xy,this.xy,this.radius,this.endAngle-1e-5,this.startAngle+1e-5,true);e.stroke()}if(this.o.displayPrevious){n=this.arc(this.v);e.beginPath();e.strokeStyle=this.pColor;e.arc(this.xy,this.xy,this.radius,n.s,n.e,n.d);e.stroke();r=this.cv==this.v}e.beginPath();e.strokeStyle=r?this.o.fgColor:this.fgColor;e.arc(this.xy,this.xy,this.radius,t.s,t.e,t.d);e.stroke()};this.cancel=function(){this.val(this.v)}};e.fn.dial=e.fn.knob=function(n){return this.each(function(){var r=new t.Dial;r.o=n;r.$=e(this);r.run()}).parent()}}) \ No newline at end of file