forked from peachananr/notify-better
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.notify-better.min.js
1 lines (1 loc) · 4.15 KB
/
jquery.notify-better.min.js
1
!function($){function abbrNum(e,t){t=Math.pow(10,t);var n=["k","m","b","t"];for(var r=n.length-1;r>=0;r--){var i=Math.pow(10,(r+1)*3);if(i<=e){e=Math.round(e*t/i)/t;if(e==1e3&&r<n.length-1){e=1;r++}e+=n[r];break}}return e}var defaults={url:false,interval:5e3,overrideAjax:false,updateTitle:false,updateFavicon:{id:"favicon",textColor:"#fff",backgroundColor:"#e74c3c",location:"full",shape:"square"},done:function(){}};$.fn.notify_better=function(options){var settings=$.extend({},defaults,options),el=$(this);titleclear=function(){var e,t;t=/\(([0-9]+)\)/;e=document.title;if(e!==null){document.title=document.title.replace(t,"")}};$.fn.clear=function(){titleclear();if($("#"+settings.updateFavicon.id).data("initial")){init=$("#"+settings.updateFavicon.id).attr("data-initial")}else{init=$("#"+settings.updateFavicon.id).attr("href")}$("#"+settings.updateFavicon.id).attr("href",init);$("#new-favicon").remove();$("<link id='new-favicon' type='image/x-icon' href='"+init+"' rel='shortcut icon'>").appendTo("head");$(this).hide().html("")};changeFavicon=function(e){if(e>0){var t=document.createElement("canvas"),n,r=document.createElement("img"),i=document.getElementById(settings.updateFavicon.id).cloneNode(true);if(e>99)e=99;if(t.getContext){t.height=t.width=16;n=t.getContext("2d");r.onload=function(){n.drawImage(this,0,0);switch(settings.updateFavicon.location){case"full":if(settings.updateFavicon.shape=="square"){n.fillStyle=settings.updateFavicon.backgroundColor;n.fillRect(0,0,16,16)}else{var r=t.width/2;var i=t.height/2;var s=8;n.beginPath();n.arc(r,i,s,0,2*Math.PI,false);n.fillStyle=settings.updateFavicon.backgroundColor;n.fill()}n.textAlign="center";n.font='bold 10px "helvetica", sans-serif';n.fillStyle=settings.updateFavicon.textColor;n.fillText(e,8,12);break;case"se":if(settings.updateFavicon.shape=="square"){n.fillStyle=settings.updateFavicon.backgroundColor;n.fillRect(5,5,16,16)}else{var s=6;n.beginPath();n.arc(12,12,s,0,2*Math.PI,false);n.fillStyle=settings.updateFavicon.backgroundColor;n.fill()}n.font='bold 8px "helvetica", sans-serif';n.textAlign="right";n.fillStyle=settings.updateFavicon.textColor;n.fillText(e,15,15);break;case"ne":if(settings.updateFavicon.shape=="square"){n.fillStyle=settings.updateFavicon.backgroundColor;n.fillRect(5,0,11,10)}else{var s=6;n.beginPath();n.arc(12,3,s,0,2*Math.PI,false);n.fillStyle=settings.updateFavicon.backgroundColor;n.fill()}n.font='bold 8px "helvetica", sans-serif';n.textAlign="right";n.fillStyle=settings.updateFavicon.textColor;n.fillText(e,15,7);break;case"nw":if(settings.updateFavicon.shape=="square"){n.fillStyle=settings.updateFavicon.backgroundColor;n.fillRect(0,0,11,10)}else{var s=6;n.beginPath();n.arc(5,3,s,0,2*Math.PI,false);n.fillStyle=settings.updateFavicon.backgroundColor;n.fill()}n.font='bold 8px "helvetica", sans-serif';n.textAlign="left";n.fillStyle=settings.updateFavicon.textColor;n.fillText(e,1,7);break;case"sw":if(settings.updateFavicon.shape=="square"){n.fillStyle=settings.updateFavicon.backgroundColor;n.fillRect(0,5,11,11)}else{var s=6;n.beginPath();n.arc(5,12,s,0,2*Math.PI,false);n.fillStyle=settings.updateFavicon.backgroundColor;n.fill()}n.font='bold 8px "helvetica", sans-serif';n.textAlign="left";n.fillStyle=settings.updateFavicon.textColor;n.fillText(e,1,14);break}var o=$("#"+settings.updateFavicon.id).attr("href");if($("#"+settings.updateFavicon.id).data("initial")){$("#"+settings.updateFavicon.id).attr("href",t.toDataURL("image/png"))}else{$("#"+settings.updateFavicon.id).attr("data-initial",o).attr("href",t.toDataURL("image/png"))}$("#new-favicon").remove();$("<link id='new-favicon' type='image/x-icon' href='"+t.toDataURL("image/png")+"' rel='shortcut icon'>").appendTo("head")};r.src="favicon.png"}}};getNotification=function(){if(settings.overrideAjax!=false){settings.overrideAjax()}else{$.ajax({url:settings.url}).done(function(data,textStatus,jqXHR){titleclear();notif=eval(data);el.hide().html(notif).fadeIn("slow");if(settings.updateTitle==true){document.title="("+notif+") "+document.title}if(settings.updateFavicon!=false)changeFavicon(notif);settings.done()})}};if(settings.interval==0||settings.interval==false){getNotification()}else{setInterval(function(){getNotification()},settings.interval)}}}(window.jQuery)