diff --git a/plugins/UserCountryMap/javascripts/visitor-map.js b/plugins/UserCountryMap/javascripts/visitor-map.js index 09b8a1d15a996e205df76753e8fb8c9e40999e2c..9305fe4a9555e419e1212cf3fa70a2c36fc3a497 100644 --- a/plugins/UserCountryMap/javascripts/visitor-map.js +++ b/plugins/UserCountryMap/javascripts/visitor-map.js @@ -152,8 +152,12 @@ // function formatValueForTooltips(data, metric, id) { - var val = data[metric] % 1 === 0 || Number(data[metric]) != data[metric] ? data[metric] : data[metric].toFixed(1), - v = _[metric].replace('%s', '<strong>' + val + '</strong>'); + var val = data[metric] % 1 === 0 || Number(data[metric]) != data[metric] ? data[metric] : data[metric].toFixed(1); + if (metric == 'bounce_rate') { + val += '%'; + } + + var v = _[metric].replace('%s', '<strong>' + val + '</strong>'); if (val == 1 && metric == 'nb_visits') v = _.one_visit; @@ -187,7 +191,14 @@ function addLegendItem(val, first) { var d = $('<div>'), r = $('<div>'), l = $('<div>'), metric = $$('.userCountryMapSelectMetrics').val(), - v = formatNumber(Math.round(val)) + (metric == 'avg_time_on_site' ? first ? ' sec' : 's' : ''); + v = formatNumber(Math.round(val)); + + if (metric == 'avg_time_on_site') { + v += first ? ' sec' : 's'; + } else if (metric == 'bounce_rate') { + v += '%'; + } + d.css({ width: 17, height: 17, float: 'left', background: colscale(val) }); l.css({ 'margin-left': 20, 'line-height': '20px', 'text-align': 'right' }).html(v); r.css({ clear: 'both', height: 19 }); @@ -597,8 +608,6 @@ switch (metric) { case 'avg_time_on_site': return d.sum_visit_length / d.nb_visits; - case 'bounce_rate': - return d.bounce_count / d.nb_visits; default: return d[metric]; } @@ -637,7 +646,7 @@ $.each(groups, function (g_id, group) { var apv = group.nb_actions / group.nb_visits, ats = group.sum_visit_length / group.nb_visits, - br = (group.bounce_count * 100 / group.bounce_count); + br = group.bounce_rate; group['nb_actions_per_visit'] = apv; group['avg_time_on_site'] = new Date(0, 0, 0, ats / 3600, ats % 3600 / 60, ats % 60).toLocaleTimeString(); group['bounce_rate'] = (br % 1 !== 0 ? br.toFixed(1) : br) + "%"; @@ -692,6 +701,7 @@ // load data from Piwik API ajax(_reportParams('UserCountry', 'getRegion', UserCountryMap.countriesByIso[iso].iso2)) .done(function (data) { + convertBounceRatesToInts(data); loadingComplete(); @@ -822,6 +832,7 @@ // get visits per city from API ajax(_reportParams('UserCountry', 'getCity', UserCountryMap.countriesByIso[iso].iso2)) .done(function (data) { + convertBounceRatesToInts(data); loadingComplete(); @@ -1114,6 +1125,8 @@ // now load the metrics for all countries ajax(_reportParams('UserCountry', 'getCountry')) .done(function (report) { + convertBounceRatesToInts(report); + var metrics = $$('.userCountryMapSelectMetrics option'); var countryData = [], countrySelect = $$('.userCountryMapSelectCountry'), countriesByIso = {}; @@ -1213,6 +1226,14 @@ $$('.widgetUserCountryMapvisitorMap .widgetName span').remove(); $$('.widgetUserCountryMapvisitorMap .widgetName').append('<span class="map-title"></span>'); + // converts bounce rate percents to strings, eg, 12% => 12 + function convertBounceRatesToInts(report) { + $.each(report.reportData, function (i, row) { + if (row['bounce_rate']) { + row['bounce_rate'] = parseInt(row['bounce_rate']); + } + }); + } }, /*