/**
  * Show field
  */
 public function getInputHtml($name, $value)
 {
     if (craft()->analytics_plugin->checkRequirements()) {
         if (craft()->config->get('enableFieldtype', 'analytics')) {
             $plugin = craft()->plugins->getPlugin('analytics');
             // Reformat the input name into something that looks more like an ID
             $id = craft()->templates->formatInputId($name);
             // Figure out what that ID is going to look like once it has been namespaced
             $namespacedId = craft()->templates->namespaceInputId($id);
             $variables = array();
             if ($this->element->uri) {
                 $uri = craft()->analytics->getElementUrlPath($this->element->id, $this->element->locale);
                 $ids = craft()->analytics->getProfileId();
                 $startDate = date('Y-m-d', strtotime('-1 month'));
                 $endDate = date('Y-m-d');
                 $metrics = 'ga:pageviews';
                 $dimensions = 'ga:date';
                 $optParams = array('dimensions' => $dimensions, 'filters' => "ga:pagePath==" . $uri);
                 $criteria = new Analytics_RequestCriteriaModel();
                 $criteria->startDate = $startDate;
                 $criteria->endDate = $endDate;
                 $criteria->metrics = $metrics;
                 $criteria->optParams = $optParams;
                 $options = [];
                 $cacheId = ['ReportsController.actionGetElementReport', $criteria->getAttributes()];
                 $response = craft()->analytics_cache->get($cacheId);
                 if ($response) {
                     $response = ['type' => 'area', 'chart' => $response];
                     $options = ['cachedResponse' => $response];
                 }
                 $jsonOptions = json_encode($options);
                 craft()->templates->includeJsResource('analytics/js/jsapi.js', true);
                 craft()->templates->includeJsResource('analytics/js/Analytics.js');
                 craft()->templates->includeJsResource('analytics/js/ReportField.js');
                 craft()->templates->includeCssResource('analytics/css/ReportField.css');
                 craft()->templates->includeJs('var AnalyticsChartLanguage = "' . Craft::t('analyticsChartLanguage') . '";');
                 craft()->templates->includeJs('new AnalyticsReportField("' . $namespacedId . '-field", ' . $jsonOptions . ');');
                 $variables = array('isNew' => false, 'hasUrl' => true, 'id' => $id, 'uri' => $uri, 'name' => $name, 'value' => $value, 'model' => $this->model, 'element' => $this->element);
             } elseif (!$this->element->id) {
                 $variables = array('hasUrl' => false, 'isNew' => true);
             } else {
                 $variables = array('hasUrl' => false, 'isNew' => false);
             }
             $variables['isConfigured'] = $plugin->isConfigured();
             return craft()->templates->render('analytics/_components/fieldtypes/Report/input', $variables);
         } else {
             return craft()->templates->render('analytics/_components/fieldtypes/Report/disabled');
         }
     } else {
         return craft()->templates->render('analytics/_special/install/plugin-not-configured');
     }
 }
 /**
  * Element Report
  *
  * @param array $variables
  *
  * @return null
  */
 public function actionGetElementReport(array $variables = array())
 {
     try {
         $elementId = craft()->request->getRequiredParam('elementId');
         $locale = craft()->request->getRequiredParam('locale');
         $metric = craft()->request->getRequiredParam('metric');
         $uri = craft()->analytics->getElementUrlPath($elementId, $locale);
         if ($uri) {
             if ($uri == '__home__') {
                 $uri = '';
             }
             $start = date('Y-m-d', strtotime('-1 month'));
             $end = date('Y-m-d');
             $dimensions = 'ga:date';
             $optParams = array('dimensions' => $dimensions, 'filters' => "ga:pagePath==" . $uri);
             $criteria = new Analytics_RequestCriteriaModel();
             $criteria->startDate = $start;
             $criteria->endDate = $end;
             $criteria->metrics = $metric;
             $criteria->optParams = $optParams;
             $cacheId = ['ReportsController.actionGetElementReport', $criteria->getAttributes()];
             $response = craft()->analytics_cache->get($cacheId);
             if (!$response) {
                 $response = craft()->analytics->sendRequest($criteria);
                 if ($response) {
                     craft()->analytics_cache->set($cacheId, $response);
                 }
             }
             $this->returnJson(['type' => 'area', 'chart' => $response]);
         } else {
             throw new Exception("Element doesn't support URLs.", 1);
         }
     } catch (\Exception $e) {
         $this->returnErrorJson($e->getMessage());
     }
 }