You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

11 lines
10 KiB
JavaScript

3 years ago
/*!
* jQuery Raty - A Star Rating Plugin
*
* The MIT License
*
* @author : Washington Botelho
* @doc : http://wbotelhos.com/raty
* @version : 2.7.0
*
*/
!function(t){"use strict";var a={init:function(e){return this.each(function(){this.self=t(this),a.destroy.call(this.self),this.opt=t.extend(!0,{},t.fn.raty.defaults,e),a._adjustCallback.call(this),a._adjustNumber.call(this),a._adjustHints.call(this),this.opt.score=a._adjustedScore.call(this,this.opt.score),"img"!==this.opt.starType&&a._adjustStarType.call(this),a._adjustPath.call(this),a._createStars.call(this),this.opt.cancel&&a._createCancel.call(this),this.opt.precision&&a._adjustPrecision.call(this),a._createScore.call(this),a._apply.call(this,this.opt.score),a._setTitle.call(this,this.opt.score),a._target.call(this,this.opt.score),this.opt.readOnly?a._lock.call(this):(this.style.cursor="pointer",a._binds.call(this))})},_adjustCallback:function(){for(var t=["number","readOnly","score","scoreName","target"],a=0;a<t.length;a++)"function"==typeof this.opt[t[a]]&&(this.opt[t[a]]=this.opt[t[a]].call(this))},_adjustedScore:function(t){return t?a._between(t,0,this.opt.number):t},_adjustHints:function(){if(this.opt.hints||(this.opt.hints=[]),this.opt.halfShow||this.opt.half)for(var t=this.opt.precision?10:2,a=0;a<this.opt.number;a++){var e=this.opt.hints[a];"[object Array]"!==Object.prototype.toString.call(e)&&(e=[e]),this.opt.hints[a]=[];for(var s=0;t>s;s++){var i=e[s],o=e[e.length-1];void 0===o&&(o=null),this.opt.hints[a][s]=void 0===i?o:i}}},_adjustNumber:function(){this.opt.number=a._between(this.opt.number,1,this.opt.numberMax)},_adjustPath:function(){this.opt.path=this.opt.path||"",this.opt.path&&"/"!==this.opt.path.charAt(this.opt.path.length-1)&&(this.opt.path+="/")},_adjustPrecision:function(){this.opt.half=!0},_adjustStarType:function(){var t=["cancelOff","cancelOn","starHalf","starOff","starOn"];this.opt.path="";for(var a=0;a<t.length;a++)this.opt[t[a]]=this.opt[t[a]].replace(".","-")},_apply:function(t){a._fill.call(this,t),t&&(t>0&&this.score.val(t),a._roundStars.call(this,t))},_between:function(t,a,e){return Math.min(Math.max(parseFloat(t),a),e)},_binds:function(){this.cancel&&(a._bindOverCancel.call(this),a._bindClickCancel.call(this),a._bindOutCancel.call(this)),a._bindOver.call(this),a._bindClick.call(this),a._bindOut.call(this)},_bindClick:function(){var e=this;e.stars.on("click.raty",function(s){var i=!0,o=e.opt.half||e.opt.precision?e.self.data("score"):this.alt||t(this).data("alt");e.opt.click&&(i=e.opt.click.call(e,+o,s)),(i||void 0===i)&&(e.opt.half&&!e.opt.precision&&(o=a._roundHalfScore.call(e,o)),a._apply.call(e,o))})},_bindClickCancel:function(){var t=this;t.cancel.on("click.raty",function(a){t.score.removeAttr("value"),t.opt.click&&t.opt.click.call(t,null,a)})},_bindOut:function(){var t=this;t.self.on("mouseleave.raty",function(e){var s=+t.score.val()||void 0;a._apply.call(t,s),a._target.call(t,s,e),a._resetTitle.call(t),t.opt.mouseout&&t.opt.mouseout.call(t,s,e)})},_bindOutCancel:function(){var t=this;t.cancel.on("mouseleave.raty",function(e){var s=t.opt.cancelOff;if("img"!==t.opt.starType&&(s=t.opt.cancelClass+" "+s),a._setIcon.call(t,this,s),t.opt.mouseout){var i=+t.score.val()||void 0;t.opt.mouseout.call(t,i,e)}})},_bindOver:function(){var t=this,e=t.opt.half?"mousemove.raty":"mouseover.raty";t.stars.on(e,function(e){var s=a._getScoreByPosition.call(t,e,this);a._fill.call(t,s),t.opt.half&&(a._roundStars.call(t,s,e),a._setTitle.call(t,s,e),t.self.data("score",s)),a._target.call(t,s,e),t.opt.mouseover&&t.opt.mouseover.call(t,s,e)})},_bindOverCancel:function(){var t=this;t.cancel.on("mouseover.raty",function(e){var s=t.opt.path+t.opt.starOff,i=t.opt.cancelOn;"img"===t.opt.starType?t.stars.attr("src",s):(i=t.opt.cancelClass+" "+i,t.stars.attr("class",s)),a._setIcon.call(t,this,i),a._target.call(t,null,e),t.opt.mouseover&&t.opt.mouseover.call(t,null)})},_buildScoreField:function(){return t("<input />",{name:this.opt.scoreName,type:"hidden"}).appendTo(this)},_createCancel:function(){var a=this.opt.path+this.opt.cancelOff,e=t("<"+this.opt.starType+" />",{title:this.opt.cancelHint,"class":this.opt.cancelClass});"img"===this.opt.starType?e.attr({src:a,alt:"x"}):e.attr("data-alt","x").addClass(a),"left