1 2 3(function($){ 4 5 6 var Charts = function(element, options) 7 { 8 var elem = $(element); 9 var settings = $.extend({}, options.defaults, options.current); 10 var interval; 11 12 var chartsInit = function(){ 13 var container = elem.find('.counter-display'); 14 if(settings.chartType == "textbox"){ 15 chartsAnimate(container.children('.type-text'), null); 16 } else { 17 var ctn = container.children('canvas').get(0); 18 var ctx = ctn.getContext('2d'); 19 20 chartsSetColor(ctx, settings.counterBaseColor); 21 ctx.shadowBlur = 10; 22 ctx.shadowOffsetX = 0; 23 ctx.shadowOffsetY = 0; 24 ctx.shadowColor = 'none'; 25 chartsSetLine(ctx, settings.counterThickness); 26 27 chartsAnimate(ctx, ctn); 28 } 29 }; 30 31 var chartsDrawGauge = function(ctx, ctn, currentVal){ 32 ctx.clearRect(0, 0, ctn.width, ctn.height); 33 chartsSetLine(ctx, settings.counterThickness); 34 chartsDrawGaugeFull(ctx, ctn); 35 if(settings.counterBaseColor == ""){ 36 chartsSetColor(ctx, settings.frontColor); 37 } else { 38 chartsSetColor(ctx, settings.counterBaseColor); 39 } 40 ctx.beginPath(); 41 ctx.arc((ctn.width/2), (ctn.width/2), ((ctn.width-ctx.lineWidth)/2), deg(0), deg(3.6*currentVal)); 42 ctx.stroke(); 43 }; 44 45 var chartsDrawGaugeFull = function(ctx, ctn){ 46 if(settings.counterBottomColor == ""){ 47 chartsSetColor(ctx, settings.backColor); 48 } else { 49 chartsSetColor(ctx, settings.counterBottomColor); 50 } 51 ctx.beginPath(); 52 ctx.arc((ctn.width/2), (ctn.width/2), ((ctn.width-ctx.lineWidth)/2), deg(0), deg(3.6*100)); 53 ctx.stroke(); 54 }; 55 56 // ready pie chart - not drawing correctly on ff and ie - must repair in future ;) 57 var chartsDrawPie = function(ctx, ctn, currentVal){ 58 ctx.clearRect(0, 0, ctn.width, ctn.height); 59 chartsSetLine(ctx, ctn.width/2); 60 chartsDrawPieFull(ctx, ctn); 61 if(settings.counterBaseColor == ""){ 62 chartsSetColor(ctx, settings.frontColor); 63 } else { 64 chartsSetColor(ctx, settings.counterBaseColor); 65 } 66 ctx.beginPath(); 67 ctx.arc((ctn.width/2), (ctn.width/2), ((ctn.width-ctx.lineWidth)/2), deg(0), deg(3.6*currentVal)); 68 ctx.stroke(); 69 }; 70 71 var chartsDrawPieFull = function(ctx, ctn){ 72 if(settings.counterBottomColor == ""){ 73 chartsSetColor(ctx, settings.backColor); 74 } else { 75 chartsSetColor(ctx, settings.counterBottomColor); 76 } 77 ctx.beginPath(); 78 ctx.arc((ctn.width/2), (ctn.width/2), ((ctn.width-ctx.lineWidth)/2), deg(0), deg(3.6*100)); 79 ctx.stroke(); 80 }; 81 // ready pie chart - not drawing correctly on ff and ie - must repair in future ;) 82 83 var chartsDrawLine = function(ctx, ctn, currentVal){ 84 ctx.clearRect(0, 0, ctn.width, ctn.height); 85 chartsSetLine(ctx, settings.counterThickness); 86 chartsDrawLineFull(ctx, ctn); 87 if(settings.counterBaseColor == ""){ 88 chartsSetColor(ctx, settings.frontColor); 89 } else { 90 chartsSetColor(ctx, settings.counterBaseColor); 91 } 92 ctx.beginPath(); 93 ctx.fillRect(0, 0, ((ctn.width/100)*currentVal), ctx.lineWidth); 94 ctx.stroke(); 95 }; 96 97 var chartsDrawLineFull = function(ctx, ctn){ 98 if(settings.counterBottomColor == ""){ 99 chartsSetColor(ctx, settings.backColor); 100 } else { 101 chartsSetColor(ctx, settings.counterBottomColor); 102 } 103 ctx.beginPath(); 104 ctx.fillRect(0, 0, ctn.width, ctx.lineWidth); 105 ctx.stroke(); 106 }; 107 108 var chartsDrawText = function(ctx, ctn, currentVal){ 109 ctx.html(currentVal); 110 }; 111 112 var chartsSetColor = function(ctx, color){ 113 ctx.strokeStyle = color; 114 ctx.fillStyle = color; 115 }; 116 117 var chartsSetLine = function(ctx, size){ 118 ctx.lineWidth = size; 119 }; 120 121 var chartsAnimate = function(context, content){ 122 var start = 0; 123 var end = elem.data('percent'); 124 interval = setInterval(function(){ 125 if(start < end){ 126 start = start + 1; 127 switch(settings.chartType){ 128 case "gauge": 129 chartsDrawGauge(context, content, start); 130 break; 131 /*case "pie": 132 chartsDrawPie(context, content, start); 133 break;*/ 134 case "line": 135 chartsDrawLine(context, content, start); 136 break; 137 case "textbox": 138 chartsDrawText(context, content, start); 139 break; 140 default: 141 console.log(settings.chartType + " not implemented"); 142 break; 143 } 144 } else { 145 clearInterval(interval); 146 } 147 },25); 148 }; 149 150 var deg = function(deg){ 151 return (Math.PI / 180) * deg - (Math.PI / 180) * 90; 152 } 153 154 chartsInit(); 155 }; 156 157 $.fn.charts = function(options){ 158 return this.each(function(){ 159 var element = $(this); 160 if (element.data('charts')) return; 161 162 var charts = new Charts(this, options); 163 element.data('charts', charts); 164 }); 165 }; 166})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.