1var ChartInt = function(id) { 2 3 var chart = this; 4 5 this.options = { 6 7 pollID : null, 8 chartTotals : null, 9 display : null, 10 chartType : null, 11 chartOptionsCount : 0 12 13 }; 14 15 16 function init(id){ 17 18 chart.options.pollID = id; 19 20 loadPoll(); 21 } 22 23 24 function loadPoll(){ 25 26 jQuery.post(ajaxurl, {action:"chart_data_chart", chart_id:chart.options.pollID}, function(response){ 27 28 var json = jQuery.parseJSON(response), totalVotes = 0; 29 30 chart.options.chartType = json.chart_type; 31 chart.options.chartOptionsCount = json.totals.length; 32 //Make totals integers 33 for (var i=0; i < json.totals.length; i++) 34 json.totals[i] = parseFloat(json.totals[i]); 35 36 37 if (json.chart_type == 1 || json.chart_type == 4 || json.chart_type == 5){ 38 39 var data = { 40 41 labels : json.labels, 42 datasets : [ 43 44 { 45 fillColor : json.styles[0].fillColor, 46 strokeColor : json.styles[0].strokeColor, 47 pointColor : json.styles[0].pointColor, 48 pointStrokeColor : json.styles[0].pointStrokeColor, 49 data : json.totals 50 51 } 52 ] 53 } 54 55 for(var i = 0; i < data.datasets[0].data.length; i++) 56 totalVotes += data.datasets[0].data[i]; 57 58 }else { 59 60 var data = []; 61 62 for (var i = 0; i < json.totals.length; i++){ 63 64 totalVotes += parseFloat(json.totals[i]); 65 66 data.push({ 67 value: parseFloat(json.totals[i]), 68 color : json.option_colours[i], 69 label : json.labels[i] 70 }); 71 } 72 73 74 } 75 76 chart.options.chartTotals = json.totals; 77 var override = overrideOptions(); 78 79 json.options = jQuery.extend({}, override, json.options); 80 81 if (parseInt(json.maxWidth) == 0){ 82 83 //if (parseInt(json.chartType != 7)){ 84 var width = jQuery("[data-chart-id='"+ chart.options.pollID +"'] #weblator-charts-chart-" + chart.options.pollID).parent().width(); 85 86 jQuery("[data-chart-id='"+ chart.options.pollID +"'] #weblator-charts-chart-" + chart.options.pollID).attr({width: width}); 87 jQuery("[data-chart-id='"+ chart.options.pollID +"'] #weblator-charts-chart-" + chart.options.pollID).attr({height: parseInt(width) / 2}); 88 89 if (parseInt(json.chartType) == 5 || parseInt(json.chartType)){ 90 jQuery("[data-chart-id='"+ chart.options.pollID +"'] #weblator-charts-chart-" + chart.options.pollID).removeAttr("height"); 91 } 92 93 } 94 95 var ctx = document.getElementById("weblator-charts-chart-" + chart.options.pollID).getContext("2d"); 96 97 jQuery("[data-chart-id='"+ chart.options.pollID +"'] #weblator-charts-chart-" + chart.options.pollID).slideDown(function(){ 98 99 100 switch(parseInt(json.chart_type)){ 101 102 case 1: 103 chart.options.display = new Chart(ctx).Bar(data, json.options); 104 break; 105 106 case 2: 107 chart.options.display = new Chart(ctx).Pie(data,json.options); 108 if (parseInt(json.showLegend)) 109 legend(document.getElementById("legend-" + chart.options.pollID), data); 110 break; 111 112 case 3: 113 chart.options.display = new Chart(ctx).Doughnut(data,json.options); 114 if (parseInt(json.showLegend)) 115 legend(document.getElementById("legend-" + chart.options.pollID), data); 116 break; 117 118 case 4: 119 chart.options.display = new Chart(ctx).Line(data,json.options); 120 break; 121 122 case 5: 123 chart.options.display = new Chart(ctx).Radar(data,json.options); 124 break; 125 126 case 6: 127 chart.options.display = new Chart(ctx).PolarArea(data,json.options);
128 if (parseInt(json.showLegend)) 129 legend(document.getElementById("legend-" + chart.options.pollID), data); 130 break; 131 132 case 7: 133 createBootstrapChart(data, json.options, json.maxWidth, json.percentage); 134 break; 135 } 136 137 138 }); 139 140 141 }); 142 143 144 } 145 146 147 function overrideOptions(){ 148 149 if (chart.options.chartType != 5 || chart.options.chartType != 6){ 150 var min = Infinity, max = -Infinity, x; 151 for( x in chart.options.chartTotals) { 152 if( chart.options.chartTotals[x] < min) min = chart.options.chartTotals[x]; 153 if( chart.options.chartTotals[x] > max) max = chart.options.chartTotals[x]; 154 } 155 156 var scaleSteps = 20; 157 var scaleStepWidth = 1; 158 var scaleStart = 0; 159 160 if (max < 20){ 161 scaleSteps = max; 162 163 }else { 164 165 scaleStepWidth = Math.ceil(max/scaleSteps); 166 } 167 168 if (chart.options.chartType == 5 || chart.options.chartType == 6){ 169 scaleSteps = chart.options.chartOptionsCount; 170 scaleStart = 0; 171 scaleStepWidth = Math.ceil(max/scaleSteps); 172 } 173 174 var steps = new Number(max); 175 var stepWidth = new Number(1); 176 if (max > 10) { 177 stepWidth = Math.floor(max / 10); 178 steps = Math.ceil(max / stepWidth); 179 } 180 181 return options = { 182 183 scaleOverride : true, 184 scaleSteps : steps, 185 scaleStepWidth : stepWidth, 186 scaleStartValue : scaleStart 187 }; 188 } 189 190 } 191 192 function createBootstrapChart(data, override, maxWidth, percentage){ 193 194 jQuery("#weblator-charts-chart-" + chart.options.pollID).remove(); 195 196 var total = 0; 197 for(var i=0; i < data.length; i++) 198 total = total + parseInt(data[i].value); 199 200 201 202 var bsChartContainer = jQuery('<div/>') 203 .attr("class", "bs-chart-container") 204 .css("display", "none"); 205 206 207 for(var i = 0; i < data.length; i++){ 208 209 var label = jQuery("<strong/>").html(data[i].label); 210 211 var progressContainer = jQuery('<div/>').attr("class", "progress"); 212 213 if (!parseInt(percentage)) 214 var p = (data[i].value / total) * 100 215 else 216 var p = data[i].value; 217 218 var progressBar = jQuery('<div/>') 219 .attr("class", "progress-bar") 220 .attr("role", "progressbar") 221 .attr("aria-valuenow", p) 222 .attr("aria-valuemin", 0) 223 .css({ 224 backgroundColor : data[i].color 225 }); 226 227 if (override.bsBarStriped) 228 progressContainer.addClass("progress-striped"); 229 230 var span = jQuery('<span/>') 231 .attr("class", "") 232 .html(data[i].value); 233 234 if (parseInt(percentage)) 235 span.append("%"); 236 237 if (p > 0) 238 progressBar.append(span); 239 240 progressContainer.append(progressBar); 241 bsChartContainer.append(label); 242 bsChartContainer.append(progressContainer); 243 244 } 245 246 jQuery("[data-chart-id='"+ chart.options.pollID +"']").after(bsChartContainer); 247 248 bsChartContainer.slideDown(); 249 250 jQuery(".progress-bar").each(function(){ 251 252 var value = jQuery(this).attr("aria-valuenow"); 253 254 jQuery(this).animate({ 255 width:value + "%" 256 }, 1000); 257 258 }); 259 } 260 261 init(id); 262};
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.