/* * eRanker Report JS */ function processErReport() { is_processed = true; var progress_cats = []; $('[data-category].row').each(function() { if( $.inArray( $(this).attr('data-category'), progress_cats) == -1 ) progress_cats.push( $(this).attr('data-category') ); }); for( var i = 0; i < progress_cats.length; i++ ) { var progress_factors = 0, progress_green = 0; $('[data-category="' + progress_cats[i] + '"]').each(function(){ progress_factors++; if( $(this).children('section').attr('data-status') == 'GREEN' ) { progress_green++; } }); var progress_id = $('#progress-' + progress_cats[i].toLowerCase().replace(/\s/g, '') ); progress_id.html('
' + progress_green + '/' + progress_factors + '
'); } if( !$('#givemepie').html() ) { var pies = 0; $('.hidden.piechart').each(function(){ var labels = [], values = [], pieclass = 'col can-float pdf-pie'; $(this).children('.data-chart').each(function(){ labels.push( $(this).attr('data-label') ); values.push( $(this).attr('data-value') ); }); var total = values.length, sum = 0, percentvalues = []; while(total--) sum += parseFloat(values[total]) || 0; for( var i = 0; i < values.length; i++ ) percentvalues.push( parseFloat(values[i]*100/sum).toFixed(1) ); for( var i = 0; i < percentvalues.length; i++ ) if( isNaN(percentvalues[i]) ) pieclass = 'hidden'; $('#givemepie').append(''); if( values.length === 3 && ( values[0] !== '0' || values[1] !== '0' || values[2] !== '0' ) ) { createD3PieChart( $(this), 'div#givemepie #mypie' + pies, 160, 200, 70, labels, percentvalues, 1, 1.4 ); } if( values.length === 2 && ( values[0] !== '0' || values[1] !== '0' ) ) { createD3PieChart( $(this), 'div#givemepie #mypie' + pies, 160, 200, 70, labels, percentvalues, 1, 1.4 ); } labels = []; values = []; percentvalues = []; pies++; }); } if( $('#basic-google-map').length ) { createMap( '#basic-google-map', $('#basic-google-map').attr('data-maplat'), $('#basic-google-map').attr('data-maplng'), $('#basic-google-map').hasClass('map-on-pdf') ? '500px' : $('#basic-google-map').parent().width(), '200px',//right value for a good look in pdf $('#basic-google-map').attr('data-title') ); } if($('#circles')) { Circles.create({ id: 'circles', radius: 70, value: jQuery('#circles').attr('data-percent'), maxValue: 100, width: 10, text: "", colors: ['#E5E5E5', '#0281C4'], duration: 400, wrpClass: 'circles-wrp', textClass: 'circles-text' }) }; reportResize(); } function niceToggle(id) { $('#' + id + ' i.expandtoggle').toggleClass('show-details'); if( $('#' + id + ' i.expandtoggle').hasClass('show-details') ) { $('#' + id + ' i.expandtoggle').removeClass('fa-plus').addClass('fa-minus'); } else { $('#' + id + ' i.expandtoggle').removeClass('fa-minus').addClass('fa-plus'); } $('#' + id + ' .factor-info').toggle(); } function createD3PieChart(chartHtml, place, width, height, radius, labels, values, pos1, pos2){ var showLabels = chartHtml.attr("data-labels"); var donut = chartHtml.attr("data-donut"); var posValChart = chartHtml.attr("data-pos-values"); if (donut === 'true' ) donut = true;//donut chart else if (donut === 'false' ) donut = false ; //pie chart else donut = false; if (posValChart === 'true' ) posValChart = true;//inside values else if (posValChart === 'false' ) posValChart = false ; //outside values else posValChart = false; color = d3.scale.category20(); var dataSet = new Array(); for (i = 0; i < labels.length; i++) { dataSet[i] = { 'legendLabel': labels[i], 'magnitude': values[i] } } var vis = d3.select(place) .append('svg:svg') .data([dataSet]) .attr('width', width) .attr('height', height) .append('svg:g') .attr('transform', 'translate(' + pos1 * radius + ',' + pos2 * radius + ')') if (donut === false) { var arc = d3.svg.arc() .outerRadius(radius) .innerRadius(0); } else { var arc = d3.svg.arc() .outerRadius(radius) .innerRadius(radius / 1.5); } var pie = d3.layout.pie() .value(function (d) { return d.magnitude; }) .sort(function (d) { return null; }); var arcs = vis.selectAll('g.slice') .data(pie) .enter() .append('svg:g') .attr('class', 'slice'); arcs.append('svg:path') .attr('fill', function (d, i) { return color(i); }) .attr('d', arc); if(posValChart === true){ if(showLabels === "true") { arcs.append('svg:text') .attr('transform', function (d) { var c = arc.centroid(d), x = c[0], y = c[1], h = Math.sqrt(x * x + y * y); return 'translate(' + (x / h * (radius + 20)) + ',' + ((y / h * (radius + 20)) + 10) + ')'; }) .attr('text-anchor', 'middle') .style('fill', 'Purple') .style('font', 'bold 10px Arial') .text(function (d, i) { return dataSet[i].legendLabel; }); arcs.filter(function (d) { return d.endAngle - d.startAngle > 0.2; }) .append('svg:text') .attr('dy', '.35em') .attr('text-anchor', 'middle') .attr('transform', function (d) { return 'translate(' + arc.centroid(d) + ')rotate(' + angle(d) + ')'; }) .attr('transform', function (d) { d.outerRadius = radius; d.innerRadius = radius / 2; return 'translate(' + arc.centroid(d) + ')rotate(' + angle(d) + ')'; }) .style('fill', 'White') .style('font', 'bold 10px Arial') .text(function (d) { return d.data.magnitude; }); } } else{ arcs.append('svg:text') .attr('transform', function (d) { var c = arc.centroid(d), x = c[0], y = c[1], h = Math.sqrt(x * x + y * y); return 'translate(' + (x / h * (radius + 20)) + ',' + ((y / h * (radius + 20)) + 10) + ')'; }) .attr('text-anchor', 'middle') .style('fill', 'Purple') .style('font', 'bold 10px Arial') .text(function (d, i) { return dataSet[i].legendLabel+"\n\r "+dataSet[i].magnitude; }); } var legend = d3.select(place) .append('svg') .attr('class', 'legend') .attr('width', radius * 2) .attr('height', radius * 2) .selectAll('g') .data(color.domain() .slice()) .enter() .append('g') .attr('transform', function (d, i) { return 'translate(0,' + i * 20 + ')'; }); legend.append('rect') .attr('width', 16) .attr('height', 16) .style('fill', color); legend.append('text') .attr('x', 24) .attr('y', 9) .attr('dy', '.30em') .style('font', 'bold 10px Arial') .text(function (d, i) { return dataSet[i].legendLabel; }).append('tspan').style('fill', '#375A59').text(function (d, i) { return ' (' + dataSet[i].magnitude + '%)'; }); } function angle(d) { var a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90; return a > 90 ? a - 180 : a; } function createMap(containerName, lat, lng, width, height, description) { var map = new GMaps({ div: containerName, lat: lat, lng: lng, width: width, height: height, zoom: 12, zoomControl: true, zoomControlOpt: { style: 'SMALL', position: 'TOP_LEFT' }, panControl : false, }); map.addMarker({ lat: lat, lng: lng, title: description, infoWindow: { content: '