You are here

public function Reports::visits_chart in Yandex.Metrics 8.2

The function generates chart with information about page views, visitors and new visitors.

File

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

Class

Reports
Reports manager for YandexMetrics module.

Namespace

Drupal\yandex_metrics_reports

Code

public function visits_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'],
  );
  if (isset($date_range['group'])) {
    $parameters['group'] = $date_range['group'];
  }
  $results = yandex_metrics_reports_retreive_data('/stat/traffic/summary', $parameters);
  $visits = json_decode($results
    ->getBody(TRUE));
  if (empty($visits->data)) {
    return t('There is no information about page views and visitors for the selected date range.');
  }
  foreach ($visits->data as $value) {
    $data[] = array(
      'dates' => String::checkPlain($value->date),
      'page_views' => (int) $value->page_views,
      'visitors' => (int) $value->visitors,
      'new_visitors' => (int) $value->new_visitors,
    );
  }
  $data = array_reverse($data);
  $chart = array(
    '#theme' => 'visualization',
    '#options' => array(
      'title' => t('Page Views, Visitors, New Visitors'),
      'width' => 500,
      'height' => 250,
      'fields' => array(
        'dates' => array(
          'label' => t('Dates'),
          'enabled' => FALSE,
        ),
        'page_views' => array(
          'label' => t('Page Views'),
          'enabled' => TRUE,
        ),
        'visitors' => array(
          'label' => t('Visitors'),
          'enabled' => TRUE,
        ),
        'new_visitors' => array(
          'label' => t('New Visitors'),
          'enabled' => TRUE,
        ),
      ),
      'xAxis' => array(
        'labelField' => 'dates',
      ),
      'data' => $data,
      'type' => 'line',
    ),
  );
  return drupal_render($chart);
}