You are here

function yandex_metrics_reports_gender_chart in Yandex.Metrics 8.2

Same name and namespace in other branches
  1. 8.3 yandex_metrics_reports/yandex_metrics_reports.reports.inc \yandex_metrics_reports_gender_chart()
  2. 7.3 yandex_metrics_reports/yandex_metrics_reports.reports.inc \yandex_metrics_reports_gender_chart()
  3. 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,
  ));
}