(function(root,factory){if(typeof window.define==="function"&&window.define.amd){window.define(["jquery"],factory)}else if(typeof exports==="object"){module.exports=factory(require("jquery"))}else{root.dinoKnob=factory(root.jquery)}})(this,function(){"use strict";const pluginName="dinoKnob";function Plugin(element,options){this.element=element;this._flag=false;this._name=pluginName;this._uId=this.createUniqId(8);this._language=this.getUserLanguage();this._knobColorThemes=[["rgb(38,224,0)","rgb(47,227,0)","rgb(55,231,0)","rgb(69,234,0)","rgb(81,239,0)","rgb(97,248,0)","rgb(107,251,0)","rgb(119,255,2)","rgb(147,255,11)","rgb(158,255,9)","rgb(255,255,53)","rgb(255,255,51)","rgb(255,255,51)","rgb(242,255,10)","rgb(255,243,10)","rgb(255,220,9)","rgb(255,168,8)","rgb(255,153,8)","rgb(255,95,4)","rgb(255,79,3)","rgb(248,58,0)","rgb(229,32,0)","","","","","","","",""],["rgb(66,159,245)","rgb(66,159,245)","rgb(88,169,243)","rgb(88,169,243)","rgb(88,169,243)","rgb(107,187,248)","rgb(107,187,248)","rgb(134,198,248)","rgb(134,198,248)","rgb(134,198,248)","rgb(158,209,248)","rgb(158,209,248)","rgb(216,248,158)","rgb(216,248,158)","rgb(216,248,158)","rgb(211,250,138)","rgb(211,250,138)","rgb(202,248,117)","rgb(202,248,117)","rgb(202,248,117)","rgb(192,248,90)","rgb(192,248,90)","","","","","","","",""],["rgb(255,255,204)","rgb(255,255,204)","rgb(255,255,204)","rgb(255,255,204)","rgb(255,255,204)","rgb(255,255,153)","rgb(255,255,153)","rgb(255,255,153)","rgb(255,255,153)","rgb(255,255,153)","rgb(255,255,102)","rgb(255,255,102)","rgb(255,255,102)","rgb(255,255,102)","rgb(255,255,51)","rgb(255,255,51)","rgb(255,255,51)","rgb(252,244,0)","rgb(252,244,0)","rgb(252,244,0)","rgb(252,244,0)","rgb(252,244,0)","","","","","","","",""],["rgb(158,230,96)","rgb(139,227,78)","rgb(82,240,64)","rgb(82,240,64)","rgb(82,240,64)","rgb(82,240,64)","rgb(82,240,64)","rgb(112,239,61)","rgb(70,217,25)","rgb(44,214,7)","rgb(62,204,2)","rgb(78,193,0)","rgb(14,196,34)","rgb(12,183,13)","rgb(25,169,10)","rgb(36,155,8)","rgb(46,141,6)","rgb(10,157,28)","rgb(12,160,13)","rgb(27,134,12)","rgb(38,140,14)","rgb(38,140,14)","","","","","","","",""],["rgb(255,255,185)","rgb(255,255,168)","rgb(255,255,152)","rgb(255,255,135)","rgb(255,255,118)","rgb(255,255,101)","rgb(255,255,84)","rgb(255,255,67)","rgb(255,255,51)","rgb(255,255,34)","rgb(255,255,17)","rgb(255,254,0)","rgb(255,251,0)","rgb(255,247,0)","rgb(255,243,0)","rgb(255,239,0)","rgb(255,234,0)","rgb(255,228,0)","rgb(255,222,0)","rgb(255,216,0)","rgb(255,209,0)","rgb(255,201,0)","","","","","","","",""],["rgb(95,176,255)","rgb(86,172,255)","rgb(76,167,255)","rgb(67,163,255)","rgb(58,158,255)","rgb(51,153,255)","rgb(44,149,255)","rgb(38,144,255)","rgb(32,140,255)","rgb(27,136,255)","rgb(21,131,253)","rgb(20,125,246)","rgb(19,119,238)","rgb(18,113,231)","rgb(17,108,223)","rgb(16,102,216)","rgb(15,97,208)","rgb(14,91,200)","rgb(14,86,192)","rgb(13,81,185)","rgb(12,76,177)","rgb(11,71,169)","","","","","","","",""],["rgb(255,146,143)","rgb(255,137,133)","rgb(255,130,124)","rgb(255,122,114)","rgb(255,114,105)","rgb(255,107,95)","rgb(255,100,86)","rgb(255,93,76)","rgb(255,86,67)","rgb(255,79,57)","rgb(255,73,48)","rgb(255,66,38)","rgb(254,60,29)","rgb(251,54,21)","rgb(248,49,15)","rgb(208,44,6)","rgb(201,44,5)","rgb(187,44,4)","rgb(179,43,4)","rgb(172,43,4)","rgb(172,43,4)","rgb(172,43,4)","","","","","","","",""]];this._angle=0;this._minAngle=0;this._maxAngle=260;this._startDeg=0;this._currentDeg=0;this._lastDeg=0;this._rotation=0;this._colorBarTheme=[];this._buttonState=false;this._doCountDown=false;this._timerState=false;this._timerTime=0;this._timerCounter=0;this._timerCounterLeft=0;this._defaults=$.fn.dinoKnob.defaults;this.options=$.extend({},this._defaults,options);if(typeof $(this.element).data("dinoKnob")==="object"){$.extend(this.options,$(this.element).data("dinoKnob"))}const dataKeys=Object.keys($(this.element).data());const dataAttrs={};for(let i=0;i`).css({backgroundColor:widget._colorBarTheme[i],transform:`rotate(${deg}deg)`,"box-shadow":"0 6px 20px 4px rgba(0, 0, 0, 1)",top:Math.round(-Math.sin(deg/rad2deg)*100+115),left:Math.round(Math.cos((180-deg)/rad2deg)*100+110)}).appendTo(widget.$element.find(`#dinoKnobBars-${widget._uId}`))}widget.$element.attr("data-knob-id",widget._uId);widget.$element.find(`#dinoKnobHolder-${widget._uId}`).css({"background-color":widget.options.bgColor});widget.$element.find(`#dinoKnobValue-${widget._uId}`).css({"background-color":widget.options.bgColor});widget.$element.find(`#dinoKnobTimers-${widget._uId}`).css({"background-color":widget.options.bgColor});widget.$element.find(`#dinoKnobInfo-${widget._uId}`).css({"background-color":widget.options.bgColor});widget.$element.find(`#dinoKnobNavigation-${widget._uId} .dinoKnobMenu i`).css({color:widget.options.bgColor});if(window.navigator.userAgent.indexOf("Firefox")===-1){widget.$element.find(`#dinoKnob-${widget._uId}`).css({"-webkit-filter":`url("#dinoBlurFilter-${widget._uId}")`,filter:`url("#dinoBlurFilter-${widget._uId}")`})}else{widget.$element.find(`#dinoKnob-${widget._uId}`).css({"-webkit-filter":`url("data:image/svg+xml;utf8,#dinoBlurFilter-${widget._uId}")`,filter:`url("data:image/svg+xml;utf8,#dinoBlurFilter-${widget._uId}")`})}if(!widget.options.showTimer){widget.$element.find(`#dinoKnobMenu1-${widget._uId}`).addClass("disabled")}if(!widget.options.showLabel){widget.$element.find(`#dinoKnobMenu2-${widget._uId}`).addClass("disabled")}if(!widget.options.showAlert){widget.$element.find(`#dinoKnobMenu3-${widget._uId}`).addClass("disabled")}},createKnobWidget:function(){return`
`},destroy:function(){this.unbindEvents();this.$element.removeData()},buildCache:function(){this.$element=$(this.element)},bindEvents:function(){const plugin=this;const secondsForClicks=1;const numClicksRequired=5;const clickTimestamps=[numClicksRequired];let oldestIndex=0;let nextIndex=0;let hoverTimeout=false;plugin.$element.on(`click touchstart.${plugin._name}`,`#dinoCloseOverlay-${plugin._uId}`,function(e){e.preventDefault();plugin.$element.find(`#dinoKnobTimers-${plugin._uId}`).css({opacity:"0",visibility:"collapse"}).removeClass("zoomIn").addClass("zoomOut");if(plugin.options.showLabel){plugin.$element.find(`#dinoKnobMenu2-${plugin._uId}`).removeClass("disabled")}});plugin.$element.on(`click touchstart.${plugin._name}`,`#dinoTimer-1-${plugin._uId}, #dinoTimer-2-${plugin._uId}, #dinoTimer-3-${plugin._uId}, #dinoTimer-4-${plugin._uId}, #dinoTimer-5-${plugin._uId}`,function(e){e.preventDefault();let countTimeout=false;plugin._timerState=true;plugin._timerCounter=0;plugin._timerTime=$(this).data("timer");plugin._doCountDown=true;const timersLi=plugin.$element.find(`#dinoKnobTimers-${plugin._uId}`);plugin.$element.find(`#dinoKnobTimers-${plugin._uId}`).empty().html(plugin.createTimerFace());plugin.buttonStateCallback(plugin._uId,plugin._buttonState,plugin._timerState,plugin._timerTime);if(plugin.options.debug){window.console.log(plugin._uId+" ==> BUTTON STATE ==> "+plugin._buttonState);window.console.log(plugin._uId+" ==> TIMER STATE ==> "+plugin._timerState);window.console.log(plugin._uId+" ==> TIMER SET ==> "+plugin._timerTime)}plugin.$element.find(`#dinoKnobSwitchInput-${plugin._uId}`).prop("checked",true).trigger("change");plugin.$element.find(`#dinoKnobMenu1-${plugin._uId}`).addClass("disabled");function drawCountDown(){plugin._timerCounter++;plugin._timerCounter%=360;let r=plugin.degreesToRadians(plugin._timerCounter);let x=Math.sin(r)*125;let y=Math.cos(r)*-125;let mid=plugin._timerCounter>180?1:0;let anim=`M 0 0 v -125 A 125 125 1 ${mid} 1 ${x} ${y} z`;plugin.$element.find(`#dinoTimerLoader-${plugin._uId}`).attr("d",anim);if(plugin._doCountDown){if(plugin._timerCounterLeft>=plugin._timerTime*1e3){plugin._doCountDown=false;plugin._timerCounter=0;plugin._timerCounterLeft=0;plugin.$element.find(`#dinoKnobTimers-${plugin._uId}`).css({opacity:"0",visibility:"collapse"}).removeClass("zoomIn").addClass("zoomOut");let li=timersLi.find("li");for(let i=0;i TIME LEFT ==> "+timeL)}countTimeout=window.setTimeout(drawCountDown,plugin._timerTime/360*1e3)}}drawCountDown()});plugin.$element.on(`click touchstart.${plugin._name}`,`#dinoKnobMenu1-${plugin._uId}`,function(e){e.preventDefault();plugin.$element.find(`#dinoKnobTimers-${plugin._uId}`).css({opacity:"1",visibility:"visible"}).removeClass("zoomOut").addClass("zoomIn");if(plugin.options.showLabel){plugin.$element.find(`#dinoKnobMenu2-${plugin._uId}`).addClass("disabled")}const timersLi=plugin.$element.find(`#dinoKnobTimers-${plugin._uId}`);plugin.$element.find(`#dinoKnobTimers-${plugin._uId}`).empty().html(plugin.createTimerMenu());const li=timersLi.find("li");const deg=360/li.length;for(let i=0;i0){const diff=timeMillis-clickTimestamps[oldestIndex];if(diffplugin._maxAngle){tmp=tmp%360}if(plugin.options.snap&&tmp180){return false}plugin._angle=tmp;plugin._currentDeg=tmp;plugin._lastDeg=tmp;if(plugin._angle>plugin._maxAngle){plugin._angle=plugin._maxAngle}let inputValue=plugin._angle/plugin._maxAngle*plugin.options.maxValue;if(inputValue>plugin.options.maxValue){inputValue=plugin.options.maxValue}if((inputValue>=plugin.options.maxAlarm||inputValue>=plugin.options.maxValue)&&plugin.options.showAlert){plugin.$element.find(`#dinoKnobMenu3-${plugin._uId}`).removeClass("active").addClass("active")}else{plugin.$element.find(`#dinoKnobMenu3-${plugin._uId}`).removeClass("active")}if(plugin._angle VALUE ==> "+inputValue.toFixed(0));window.console.log(plugin._uId+" ==> PERCENT ==> "+(r*100).toFixed(0));window.console.log(plugin._uId+" ==> ANGLE ==> "+plugin._angle.toFixed(0));window.console.log(plugin._uId+" ==> RATIO ==> "+r.toFixed(2))}return true});plugin.$element.on(`mouseup touchend touchcancel.${plugin._name}`,function(){plugin.$element.off(".rem");plugin._rotation=plugin._currentDeg;plugin._startDeg=0})});plugin.$element.on(`keydown keypress.${plugin._name}`,function(e){e.preventDefault();const keycode=e.keyCode?e.keyCode:e.which;switch(keycode){case 40:plugin.rotateKnob("down");break;case 38:plugin.rotateKnob("up");break;case 37:plugin.rotateKnob("down");break;case 39:plugin.rotateKnob("up");break;case 98:plugin.rotateKnob("down");break;case 104:plugin.rotateKnob("up");break;case 100:plugin.rotateKnob("down");break;case 102:plugin.rotateKnob("up");break;default:break}});plugin.$element.on(`mousewheel DOMMouseScroll.${plugin._name}`,`#dinoKnobHolder-${plugin._uId}`,function(e){e.preventDefault();if(e.originalEvent.wheelDelta<0||e.originalEvent.detail>0){plugin.rotateKnob("down")}else{plugin.rotateKnob("up")}});plugin.$element.on(`input change.${plugin._name}`,`#dinoKnobAngleValue-${plugin._uId}`,function(e){e.preventDefault();let val=plugin.$element.find(`#dinoKnobAngleValue-${plugin._uId}`).val();let bars=plugin.$element.find(`#dinoKnobBars-${plugin._uId}`);let numBars;let inputValue=val/plugin._maxAngle*plugin.options.maxValue;if(inputValue>plugin.options.maxValue){inputValue=plugin.options.maxValue}if((inputValue>=plugin.options.maxAlarm||inputValue>=plugin.options.maxValue)&&plugin.options.showAlert){plugin.$element.find(`#dinoKnobMenu3-${plugin._uId}`).removeClass("active").addClass("active")}else{plugin.$element.find(`#dinoKnobMenu3-${plugin._uId}`).removeClass("active")}numBars=Math.round(plugin._colorBarTheme.length*(val/360));if(plugin.$element.find(`#dinoKnobSwitchInput-${plugin._uId}`).prop("checked")){bars.find(".dinoKnobBarColor").removeClass("active").slice(0,numBars).addClass("active")}plugin.$element.find(`#dinoKnobTop-${plugin._uId}`).css({transform:`rotate(${val}deg)`});plugin.$element.find(`#dinoKnobAngleValue-${plugin._uId}`).val(val);if(plugin.options.showLabel){plugin.$element.find(`#dinoKnobValue-${plugin._uId}`).html(inputValue.toFixed(0))}let r=val/plugin._maxAngle;plugin.turnKnobCallback.call(plugin,plugin._uId,inputValue.toFixed(0),(r*100).toFixed(0),val,r.toFixed(2));plugin._angle=val;plugin._currentDeg=val;plugin._lastDeg=val;plugin._rotation=val;if(plugin.options.debug){window.console.log(plugin._uId+" ==> VALUE ==> "+inputValue.toFixed(0));window.console.log(plugin._uId+" ==> PERCENT ==> "+(r*100).toFixed(0));window.console.log(plugin._uId+" ==> ANGLE ==> "+val);window.console.log(plugin._uId+" ==> RATIO ==> "+r.toFixed(2))}return false});plugin.$element.on(`change.${plugin._name}`,`#dinoKnobSwitchInput-${plugin._uId}`,function(e){e.preventDefault();const bars=plugin.$element.find(`#dinoKnobBars-${plugin._uId}`);if(plugin.$element.find(`#dinoKnobSwitchInput-${plugin._uId}`).prop("checked")){plugin._buttonState=true;plugin.buttonStateCallback(plugin._uId,plugin._buttonState,plugin._timerState,plugin._timerTime);if(plugin.options.debug){window.console.log(plugin._uId+" ==> BUTTON STATE ==> "+plugin._buttonState);window.console.log(plugin._uId+" ==> TIMER STATE ==> "+plugin._timerState);window.console.log(plugin._uId+" ==> TIMER SET ==> "+plugin._timerTime)}plugin.$element.find(`#dinoKnobTop-${plugin._uId}`).css({border:"4px solid rgba(255, 197, 0, 1)"});const numBars=Math.round(plugin._colorBarTheme.length*(plugin._angle/360));bars.find(".dinoKnobBarColor").removeClass("active").slice(0,numBars).addClass("active");plugin.$element.find(`#dinoKnobHolder-${plugin._uId}`).toggleClass("blob")}else{plugin._buttonState=false;plugin.buttonStateCallback(plugin._uId,plugin._buttonState,plugin._timerState,plugin._timerTime);if(plugin.options.debug){window.console.log(plugin._uId+" ==> BUTTON STATE ==> "+plugin._buttonState);window.console.log(plugin._uId+" ==> TIMER STATE ==> "+plugin._timerState);window.console.log(plugin._uId+" ==> TIMER SET ==> "+plugin._timerTime)}plugin.$element.find(`#dinoKnobTop-${plugin._uId}`).css({border:"14px solid rgba(255, 197, 0, .6)"});bars.find(".dinoKnobBarColor").removeClass("active");plugin.$element.find(`#dinoKnobHolder-${plugin._uId}`).toggleClass("blob")}if(plugin._buttonState&&plugin.options.showTimer){plugin.$element.find(`#dinoKnobMenu1-${plugin._uId}`).addClass("disabled")}else if(!plugin._buttonState&&plugin.options.showTimer){plugin.$element.find(`#dinoKnobMenu1-${plugin._uId}`).removeClass("disabled")}})},unbindEvents:function(){this.$element.off(`.${this._name}`)},rotateKnob:function(direction){let widget=this;let bars=widget.$element.find(`#dinoKnobBars-${widget._uId}`);let numBars=0;if(direction==="up"){if(widget._angle<=widget._maxAngle){widget._angle=widget._angle+(widget._angle===widget._maxAngle?widget._minAngle:widget.options.snap);numBars=Math.round(widget._colorBarTheme.length*(widget._angle/360));if(widget.$element.find(`#dinoKnobSwitchInput-${widget._uId}`).prop("checked")){bars.find(".dinoKnobBarColor").removeClass("active").slice(0,numBars).addClass("active")}if(widget._angle>=widget._maxAngle){widget._angle=widget._maxAngle}widget.$element.find(`#dinoKnobTop-${widget._uId}`).css({transform:`rotate(${widget._angle}deg)`})}}else if(direction==="down"){if(widget._angle>=widget._minAngle){widget._angle=widget._angle-(widget._angle===widget._minAngle?widget._minAngle:widget.options.snap);numBars=Math.round(widget._colorBarTheme.length*(widget._angle/360));if(widget.$element.find(`#dinoKnobSwitchInput-${widget._uId}`).prop("checked")){bars.find(".dinoKnobBarColor").removeClass("active").slice(0,numBars).addClass("active")}if(widget._angle<=widget._minAngle){widget._angle=widget._minAngle}widget.$element.find(`#dinoKnobTop-${widget._uId}`).css({transform:`rotate(${widget._angle}deg)`})}}let inputValue=widget._angle/widget._maxAngle*widget.options.maxValue;if(inputValue>=widget.options.maxValue){inputValue=widget.options.maxValue}if(inputValue>=widget.options.maxAlarm&&widget.options.showAlert){widget.$element.find(`#dinoKnobMenu3-${widget._uId}`).removeClass("active").addClass("active")}else if(inputValue>=widget.options.maxValue&&widget.options.showAlert){widget.$element.find(`#dinoKnobMenu3-${widget._uId}`).removeClass("active").addClass("active")}else{widget.$element.find(`#dinoKnobMenu3-${widget._uId}`).removeClass("active")}if(widget.options.showLabel){widget.$element.find(`#dinoKnobValue-${widget._uId}`).html(inputValue.toFixed(0))}let r=widget._angle/widget._maxAngle;widget.$element.find(`#dinoKnobAngleValue-${widget._uId}`).val(widget._angle.toFixed(0));widget.turnKnobCallback.call(widget,widget._uId,inputValue.toFixed(0),(r*100).toFixed(0),widget._angle.toFixed(0),r.toFixed(2));if(widget.options.debug){window.console.log(widget._uId+" ==> VALUE ==> "+inputValue.toFixed(0));window.console.log(widget._uId+" ==> PERCENT ==> "+(r*100).toFixed(0));window.console.log(widget._uId+" ==> ANGLE ==> "+widget._angle.toFixed(0));window.console.log(widget._uId+" ==> RATIO ==> "+r.toFixed(2))}return false},createTimerFace:function(){return`
`},createTimerMenu:function(){let i;let temp;temp=`
    `;if(this.options.theme==="dark"){for(i=1;i<=5;i++){temp+=`
  • `}}else{for(i=6;i<=10;i++){temp+=`
  • `}}temp+=`
`;return temp},createCreatedBy:function(){return`
${this.capitalizeFirstLetter(this._name)}
${$.fn.dinoKnob.version}
${window.atob("Q3JlYXRlZCBCeTog")}
${window.atob("PGEgaHJlZj0iaHR0cHM6Ly9tY3gtc3lzdGVtcy5uZXQiIHRhcmdldD0iYmxhbmsiPk1DWC1TeXN0ZW1zJnJlZzwvYT4=")}
`},buttonStateCallback:function(id,state,timerState,timerTime){const onStatus=this.options.onStatus;if(typeof onStatus==="function"){onStatus.call(this.element,id,state,timerState,timerTime)}},turnKnobCallback:function(id,value,percent,degree,ratio){const onTurn=this.options.onTurn;if(typeof onTurn==="function"){onTurn.call(this.element,id,value,percent,degree,ratio)}},timerUpdateCallback:function(id,timeLeft){const onTimer=this.options.onTimer;if(typeof onTimer==="function"){onTimer.call(this.element,id,timeLeft)}},errorUpdateCallback:function(id,error){const onError=this.options.onError;if(typeof onError==="function"){onError.call(this.element,id,error)}},rotateMenu:function(li,d){const angleStart=-360;$({d:angleStart}).animate({d:d},{step:function(now){$(li).css({transform:`rotate(${now}deg)`}).find("button").css({transform:`rotate(${-now}deg)`})}})},createUniqId:function(idLength){const charsToFormId="_0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".split("");if(!idLength){idLength=Math.floor(Math.random()*charsToFormId.length)}let uniqId="";for(let i=0;i