function yandex_metrics_reports_gender_chart in Yandex.Metrics 8.2
Same name and namespace in other branches
- 8.3 yandex_metrics_reports/yandex_metrics_reports.reports.inc \yandex_metrics_reports_gender_chart()
- 7.3 yandex_metrics_reports/yandex_metrics_reports.reports.inc \yandex_metrics_reports_gender_chart()
- 7.2 yandex_metrics_reports/yandex_metrics_reports.reports.inc \yandex_metrics_reports_gender_chart()
The function generates pie chart with demography information.
Parameters
string $counter_id:
string $filter:
1 string reference to 'yandex_metrics_reports_gender_chart'
- yandex_metrics_reports_yandex_metrics_reports_list in yandex_metrics_reports/
yandex_metrics_reports.module - Implements hook_yandex_metrics_reports_list().
File
- yandex_metrics_reports/
yandex_metrics_reports.reports.inc, line 414 - Report callbacks for Yandex.Metrics Reports module.
Code
function yandex_metrics_reports_gender_chart($counter_id, $filter) {
$output = '';
$date_range = _yandex_metrics_reports_filter_to_date_range($filter);
$parameters = array(
'id' => $counter_id,
'date1' => $date_range['start_date'],
'date2' => $date_range['end_date'],
);
$results = yandex_metrics_reports_retreive_data('/stat/demography/structure', $parameters);
$demography = json_decode($results
->getBody(TRUE));
if (empty($demography->data)) {
return t('There is no demography information for the selected date range.');
}
$chart = array(
'#chart_id' => 'chart_gender',
'#title' => chart_title(t('Demography of Visits'), '000000', 15),
'#type' => CHART_TYPE_PIE,
'#size' => chart_size(500, 200),
'#adjust_resolution' => TRUE,
);
$data = $demography->data;
// Sort data by gender.
usort($data, '_yandex_metrics_reports_gender_sort');
$colors = array(
'06266F',
'2A4480',
'6C8CD5',
'4671D5',
'1240AB',
// Male colors.
'EB6AA4',
'EB3B8B',
'8B003F',
'FB8BBA',
'D60062',
);
$i = 1;
foreach ($data as $value) {
if ($value->visits_percent === 0) {
continue;
}
$age = check_plain($value->name);
$gender = check_plain($value->name_gender);
$chart['#data'][] = $value->visits_percent;
$chart['#labels'][] = $i;
$chart['#legends'][] = "{$i}. {$gender} / {$age} — " . round($value->visits_percent * 100, 2) . '%';
$chart['#data_colors'][] = $colors[$i - 1];
$i++;
}
return theme('chart', array(
'chart' => $chart,
));
}