UNPKG

starry-rating

Version:

JavaScript star rating system

7 lines (5 loc) 5.61 kB
/** * author: Andre Sieverding https://github.com/Teddy95 * license: MIT http://opensource.org/licenses/MIT */ function Starry(t){this.element=t,this.elementName=!1,this.stars=!1,this.placeholder=$(t).clone(),this.initSettings=!1,Starry.prototype.init=function(t){if("function"!=typeof jQuery)return!1;if("undefined"==typeof $(this.element).attr("name"))return!1;var r;if(r=$(this.element).attr("name"),this.elementName=r,"undefined"==typeof t&&(t={}),("undefined"==typeof t.stars||t.stars<=1)&&(t.stars=5),"undefined"==typeof t.starSize&&(t.starSize=32),"undefined"==typeof t.multiple&&(t.multiple=!1),"undefined"==typeof t.startValue&&(t.startValue=0),"undefined"==typeof t.readOnly&&(t.readOnly=!1),"undefined"==typeof t.tooltips&&(t.tooltips=!1),"undefined"==typeof t.iconPath&&(t.iconPath="icons/"),5==t.stars&&t.tooltips===!0&&(t.tooltips=["Awful","Poor","Average","Good","Excellent"]),"undefined"==typeof t.success&&(t.success=!1),t.multiple===!1){var s;s=document.cookie,s=s.split(";");for(var i=0;i<s.length;i++)cookie=s[i],cookie.trim()=="starry_"+r+"=true"&&(t.readOnly=!0)}if(this.initSettings=t,starSize=t.starSize,t.readOnly===!0){var e,a,n,l,o,y;e=0,a="",n="";for(var i=0;t.stars>i;i++)e=i*starSize,a+="<img class='Starry-star' src='"+starryInfo.url+t.iconPath+"unrated.png' alt='' style='left: "+e+"px; width: "+starSize+"px; height: "+starSize+"px;' />",n+="<img class='Starry-star' src='"+starryInfo.url+t.iconPath+"rated.png' alt='' style='left: "+e+"px; width: "+starSize+"px; height: "+starSize+"px;' />";return l=100/t.stars*t.startValue,o=t.stars*starSize,y="<div id='Starry_"+r+"' class='Starry-readonly' style='width: "+o+"px; height: "+starSize+"px;'><div class='Starry-stars' style='height: "+starSize+"px;'>"+a+"</div><div class='Starry-stars' style='width: "+l+"%; height: "+starSize+"px;'>"+n+"</div></div>",$(this.element).replaceWith(y),$("#Starry_"+r).attr("data-rate",t.startValue),this.stars=!0,!0}var e,a,n,l,o,h;e=0,a="",n="";for(var i=0;t.stars>i;i++)e=i*starSize,a+="<img class='Starry-star' src='"+starryInfo.url+t.iconPath+"unrated.png' alt='' style='left: "+e+"px; width: "+starSize+"px; height: "+starSize+"px;' />",n+="<img class='Starry-star' src='"+starryInfo.url+t.iconPath+"rated.png' alt='' style='left: "+e+"px; width: "+starSize+"px; height: "+starSize+"px;' />";l=100/t.stars*t.startValue,o=t.stars*starSize,h="<div id='Starry-readonly_"+r+"' class='Starry-readonly' style='width: "+o+"px; height: "+starSize+"px;'><div class='Starry-stars' style='height: "+starSize+"px;'>"+a+"</div><div id='Starry-stars_"+r+"' class='Starry-stars' style='width: "+l+"%; height: "+starSize+"px;'>"+n+"</div></div>";var y,d;e=0,y="<div id='Starry_"+r+"' class='Starry' style='width: "+o+"px; height: "+starSize+"px;'>"+h+"<div id='Starry-inner_"+r+"' class='Starry-inner'>";for(var i=0;t.stars>i;i++)d=t.tooltips!==!1&&$.isFunction($.fn.tipsy)===!0?" Starry-tooltip' title='"+t.tooltips[t.stars-1-i]:"",e=i*starSize,y+="<div class='Starry-star Starry-star-"+r+d+"' data-level='"+(t.stars-i)+"' style='right: "+e+"px; background-image: url("+starryInfo.url+t.iconPath+"hover.png); width: "+starSize+"px; height: "+starSize+"px;'></div>";return y+="</div></div>",$(this.element).replaceWith(y),$("#Starry_"+r).attr("data-rate",t.startValue),setTimeout(function(){t.tooltips!==!1&&$.isFunction($.fn.tipsy)===!0&&$(".Starry-tooltip").tipsy({gravity:"s"})},0),$(".Starry-star-"+r).off(),$(".Starry-star-"+r).click(function(){level=$(this).attr("data-level");var s;if(t.multiple===!1){var i;i=new Date,i.setTime(i.getTime()+31104e7),document.cookie="starry_"+r+"=true; expires="+i.toGMTString(),s=!0}s===!0?($("#Starry-inner_"+r).remove(),$("#Starry_"+r).replaceWith($("#Starry_"+r).html()),l=100/t.stars*level,$("#Starry-stars_"+r).css("width",l+"%"),$("#Starry-readonly_"+r).attr("id","Starry_"+r)):(l=100/t.stars*level,$("#Starry-stars_"+r).css("width",l+"%")),$(".tipsy").css("display","none"),t.success!==!1&&t.success(level),$("#Starry_"+r).attr("data-rate",level)}),this.stars=!0,!0},Starry.prototype.destroy=function(){return this.stars===!0?($("#Starry_"+this.elementName).replaceWith(this.placeholder),this.stars=!1,!0):!1},Starry.prototype.rebuild=function(t){this.destroy(),"undefined"==typeof t?this.initSettings===!1?this.init():this.init(this.initSettings):this.init(t)},Starry.prototype.getRating=function(){var t;return t=$("#Starry_"+this.elementName).attr("data-rate")},Starry.prototype.setRating=function(t){if(this.stars===!0){this.destroy();var r;r=this.initSettings,t>this.initSettings.stars?t=this.initSettings.stars:0>t&&(t=0),r.startValue=t,this.init(r)}},Starry.prototype.update=function(t){"undefined"!=typeof t&&(this.destroy(),t.stars>=2&&(this.initSettings.stars=t.stars),t.multiple===!0?this.initSettings.multiple=!0:t.multiple===!1&&(this.initSettings.multiple=!1),t.readOnly===!0?this.initSettings.readOnly=!0:t.readOnly===!1&&(this.initSettings.readOnly=!1),"string"==typeof t.iconPath?this.initSettings.iconPath=t.iconPath:t.iconPath===!1&&(this.initSettings.iconPath="icons/"),"object"==typeof t.tooltips?this.initSettings.tooltips=t.tooltips:t.tooltips===!1&&(this.initSettings.tooltips=!1),"function"==typeof t.success?this.initSettings.success=t.success:t.success===!1&&(this.initSettings.success=!1),this.init(this.initSettings))}}var starryPath,starryFilename,starryInfo;starryPath=document.getElementsByTagName("script"),starryPath=starryPath[starryPath.length-1],starryPath=starryPath.src,starryFilename=starryPath.split("/").reverse()[0];var starryInfo={url:starryPath.replace(starryFilename,""),author:"Andre Sieverding"};