You are here

function Reports::gender_chart in Yandex.Metrics 8.2

The function generates pie chart with demography information.

File

yandex_metrics_reports/src/Reports.php, line 296
Contains \Drupal\yandex_metrics_reports\YandexMetricsReports.

Class

Reports
Reports manager for YandexMetrics module.

Namespace

Drupal\yandex_metrics_reports

Code

function gender_chart() {
  $date_range = _yandex_metrics_reports_filter_to_date_range($this->filter);
  $parameters = array(
    'id' => $this->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.');
  }
  $info = $demography->data;

  // Sort data by gender.
  usort($info, '_yandex_metrics_reports_gender_sort');
  $i = 1;
  foreach ($info as $value) {
    if ($value->visits_percent === 0) {
      continue;
    }
    $age = String::checkPlain($value->name);
    $gender = String::checkPlain($value->name_gender);
    $data[] = array(
      'legends' => "{$i}. {$gender} / {$age}  — " . round($value->visits_percent * 100, 2) . '%',
      'visits' => $value->visits_percent,
    );
    $i++;
  }
  if (empty($data)) {
    return t('There is no demography information for the selected date range.');
  }
  $chart = array(
    '#theme' => 'visualization',
    '#options' => array(
      'title' => t('Demography of Visits'),
      'width' => 500,
      'height' => 200,
      'fields' => array(
        'legends' => array(
          'label' => 'legends',
          'enabled' => TRUE,
        ),
        'visits' => array(
          'label' => 'visits',
          'enabled' => TRUE,
        ),
      ),
      'xAxis' => array(
        'labelField' => 'legends',
      ),
      'data' => $data,
      'type' => 'pie',
    ),
  );
  return drupal_render($chart);
}