Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeezyT <timo@ezdesign.de>2011-11-09 22:07:25 +0400
committerBeezyT <timo@ezdesign.de>2011-11-09 22:07:25 +0400
commit820e604a34df00bada49218d04f6ba26db5c9699 (patch)
treefa661f2a931b2080cacf8adac3e8f33c9310b33c /plugins
parent33a126a06782669c787803c2d966ae115c4ee64f (diff)
refs #1820 added metrics picker to more core reports. some language updates to make metrics consistent and short. new api methods for comparing metrics in Referers and VisitsSummary. minor tweaks.
git-svn-id: http://dev.piwik.org/svn/trunk@5421 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'plugins')
-rw-r--r--plugins/CoreHome/templates/jqplot.js4
-rw-r--r--plugins/Referers/API.php55
-rw-r--r--plugins/Referers/Controller.php58
-rw-r--r--plugins/VisitFrequency/API.php36
-rw-r--r--plugins/VisitFrequency/Controller.php46
-rw-r--r--plugins/VisitFrequency/VisitFrequency.php2
-rw-r--r--plugins/VisitsSummary/API.php2
7 files changed, 149 insertions, 54 deletions
diff --git a/plugins/CoreHome/templates/jqplot.js b/plugins/CoreHome/templates/jqplot.js
index 83c36dacb7..c238d34575 100644
--- a/plugins/CoreHome/templates/jqplot.js
+++ b/plugins/CoreHome/templates/jqplot.js
@@ -947,7 +947,9 @@ JQPlot.prototype = {
// try to display popover to the right
var margin = (parseInt(pickerLink.css('marginLeft'), 10) - 4);
- if (margin + neededSpace < plotWidth) {
+ if (margin + neededSpace < plotWidth
+ // make sure it's not too far to the left
+ || margin - neededSpace + 60 < 0) {
pickerPopover.css('marginLeft', margin + 'px').show();
} else {
// display to the left
diff --git a/plugins/Referers/API.php b/plugins/Referers/API.php
index b61d2b151a..fc23849a32 100644
--- a/plugins/Referers/API.php
+++ b/plugins/Referers/API.php
@@ -54,6 +54,61 @@ class Piwik_Referers_API
return $dataTable;
}
+ /**
+ * This is a combined report that contains one row with the visits per referrer
+ * as columns. It is used internally to make comparing the referrers with the
+ * metrics picker possible.
+ */
+ public function getVisitsPerRefererType($idSite, $period, $date, $segment=false)
+ {
+ $dataTable = $this->getRefererType($idSite, $period, $date, $segment);
+
+ $isDataTableArray = $dataTable instanceof Piwik_DataTable_Array;
+ $result = new Piwik_DataTable_Array;
+
+ if ($isDataTableArray)
+ {
+ $array = $dataTable->getArray();
+ $result->metadata = $dataTable->metadata;
+ }
+ else
+ {
+ $array = array($dataTable);
+ }
+
+ $rowBase = array(
+ 'nb_visits_'.Piwik_Common::REFERER_TYPE_DIRECT_ENTRY => 0,
+ 'nb_visits_'.Piwik_Common::REFERER_TYPE_SEARCH_ENGINE => 0,
+ 'nb_visits_'.Piwik_Common::REFERER_TYPE_WEBSITE => 0,
+ 'nb_visits_'.Piwik_Common::REFERER_TYPE_CAMPAIGN => 0
+ );
+
+ foreach ($array as $tableIndex => $dataTable)
+ {
+ $newTable = new Piwik_DataTable;
+ $columns = $rowBase;
+ foreach ($dataTable->getRows() as $row)
+ {
+ $visits = $row->getColumn(Piwik_Archive::INDEX_NB_VISITS);
+ $refType = $row->getColumn('label');
+ $label = 'nb_visits_'.$refType;
+ $columns[$label] = $visits;
+ }
+ $newTable->addRowFromArray(array(
+ Piwik_DataTable_Row::COLUMNS => $columns
+ ));
+ $result->addTable($newTable, $tableIndex);
+ }
+
+ if (!$isDataTableArray)
+ {
+ $array = $result->getArray();
+ $result = $array[0];
+ }
+
+ return $result;
+ }
+
public function getKeywords($idSite, $period, $date, $segment = false, $expanded = false)
{
$dataTable = $this->getDataTable('Referers_searchEngineByKeyword', $idSite, $period, $date, $segment, $expanded);
diff --git a/plugins/Referers/Controller.php b/plugins/Referers/Controller.php
index 5451744b0f..453feb504d 100644
--- a/plugins/Referers/Controller.php
+++ b/plugins/Referers/Controller.php
@@ -20,7 +20,7 @@ class Piwik_Referers_Controller extends Piwik_Controller
{
$view = Piwik_View::factory('index');
- $view->graphEvolutionReferers = $this->getEvolutionGraph(true, Piwik_Common::REFERER_TYPE_DIRECT_ENTRY, array('nb_visits'));
+ $view->graphEvolutionReferers = $this->getEvolutionGraph(true, Piwik_Common::REFERER_TYPE_DIRECT_ENTRY);
$view->nameGraphEvolutionReferers = 'ReferersgetEvolutionGraph';
$view->numberDistinctSearchEngines = $this->getNumberOfDistinctSearchEngines(true);
@@ -38,10 +38,10 @@ class Piwik_Referers_Controller extends Piwik_Controller
$view->$name = $value;
}
// sparkline for the historical data of the above values
- $view->urlSparklineSearchEngines = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_visits'), 'typeReferer' => Piwik_Common::REFERER_TYPE_SEARCH_ENGINE));
- $view->urlSparklineDirectEntry = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_visits'), 'typeReferer' => Piwik_Common::REFERER_TYPE_DIRECT_ENTRY));
- $view->urlSparklineWebsites = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_visits'), 'typeReferer' => Piwik_Common::REFERER_TYPE_WEBSITE));
- $view->urlSparklineCampaigns = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_visits'), 'typeReferer' => Piwik_Common::REFERER_TYPE_CAMPAIGN));
+ $view->urlSparklineSearchEngines = $this->getUrlSparkline('getEvolutionGraph', array('typeReferer' => Piwik_Common::REFERER_TYPE_SEARCH_ENGINE));
+ $view->urlSparklineDirectEntry = $this->getUrlSparkline('getEvolutionGraph', array('typeReferer' => Piwik_Common::REFERER_TYPE_DIRECT_ENTRY));
+ $view->urlSparklineWebsites = $this->getUrlSparkline('getEvolutionGraph', array('typeReferer' => Piwik_Common::REFERER_TYPE_WEBSITE));
+ $view->urlSparklineCampaigns = $this->getUrlSparkline('getEvolutionGraph', array('typeReferer' => Piwik_Common::REFERER_TYPE_CAMPAIGN));
// sparklines for the evolution of the distinct keywords count/websites count/ etc
$view->urlSparklineDistinctSearchEngines = $this->getUrlSparkline('getLastDistinctSearchEnginesGraph');
@@ -246,36 +246,48 @@ class Piwik_Referers_Controller extends Piwik_Controller
Piwik_Common::REFERER_TYPE_CAMPAIGN => 'Referers_Campaigns',
);
- public function getEvolutionGraph( $fetch = false, $typeReferer = false, $columns = false)
+ public function getEvolutionGraph( $fetch = false, $typeReferer = false, $columns = array() )
{
- $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, 'Referers.getRefererType');
- if(empty($typeReferer))
+ $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, 'Referers.getVisitsPerRefererType');
+
+ $typeReferrerRequest = Piwik_Common::getRequestVar('typeReferer', false);
+ if ($typeReferrerRequest !== false)
{
- $typeReferer = Piwik_Common::getRequestVar('typeReferer');
+ $typeReferer = $typeReferrerRequest;
}
+
if(empty($columns))
{
- $columns = Piwik_Common::getRequestVar('columns');
+ $columns = Piwik_Common::getRequestVar('columns', false);
+ $columns = Piwik::getArrayFromApiParameter($columns);
+ }
+
+ // if referrer type is set, transform it into the corresponding column name
+ if ($typeReferer !== false)
+ {
+ $columns[] = 'nb_visits_'.$typeReferer;
}
- $columns = !is_array($columns) ? array($columns) : $columns;
+
$view->setColumnsToDisplay($columns);
- $view->setParametersToModify(array('typeReferer' => $typeReferer));
- foreach($columns as $columnName)
+
+ $translations = array();
+ $selectableColumns = array();
+ foreach ($this->referrerTypeToLabel as $id => $langString)
{
- $columnTranslation = $view->getColumnTranslation($columnName);
- $referrerTypeTranslation = $this->referrerTypeToLabel[$typeReferer];
- $view->setColumnTranslation(
- $columnName,
- Piwik_Translate('Referers_MetricsFromRefererTypeGraphLegend',
- array( Piwik_Translate($columnTranslation),
- Piwik_Translate($referrerTypeTranslation)
- )
- )
- );
+ $label = 'nb_visits_'.$id;
+ $selectableColumns[] = $label;
+
+ $translations[$label] = Piwik_Translate('Referers_MetricsFromRefererTypeGraphLegend',
+ array(Piwik_Translate('General_ColumnNbVisits'), Piwik_Translate($langString)));
}
+
+ $view->setColumnsTranslations($translations);
+ $view->setSelectableColumns($selectableColumns);
+
$view->setReportDocumentation(Piwik_Translate('Referers_EvolutionDocumentation').'<br />'
.Piwik_Translate('General_BrokenDownReportDocumentation').'<br />'
.Piwik_Translate('Referers_EvolutionDocumentationMoreInfo', '&quot;'.Piwik_Translate('Referers_DetailsByRefererType').'&quot;'));
+
return $this->renderView($view, $fetch);
}
diff --git a/plugins/VisitFrequency/API.php b/plugins/VisitFrequency/API.php
index d6212b4793..30e909de47 100644
--- a/plugins/VisitFrequency/API.php
+++ b/plugins/VisitFrequency/API.php
@@ -31,24 +31,35 @@ class Piwik_VisitFrequency_API
Piwik::checkUserHasViewAccess( $idSite );
$archive = Piwik_Archive::build($idSite, $period, $date, $segment );
+ // array values are comma separated
$columns = Piwik::getArrayFromApiParameter($columns);
- $countColumnsRequested = count($columns);
+ $tempColumns = array();
$bounceRateReturningRequested = $averageVisitDurationReturningRequested = $actionsPerVisitReturningRequested = false;
if(!empty($columns))
{
- if(($bounceRateReturningRequested = array_search('bounce_rate_returning', $columns)) !== false)
+ // make sure base metrics are there for processed metrics
+ if(false !== ($bounceRateReturningRequested = array_search('bounce_rate_returning', $columns)))
{
- $columns = array('nb_visits_returning', 'bounce_count_returning');
+ if (!in_array('nb_visits_returning', $columns)) $tempColumns[] = 'nb_visits_returning';
+ if (!in_array('bounce_count_returning', $columns)) $tempColumns[] = 'bounce_count_returning';
+ unset($columns[$bounceRateReturningRequested]);
}
- elseif(($actionsPerVisitReturningRequested = array_search('nb_actions_per_visit_returning', $columns)) !== false)
+ if(false !== ($actionsPerVisitReturningRequested = array_search('nb_actions_per_visit_returning', $columns)))
{
- $columns = array('nb_actions_returning', 'nb_visits_returning');
+ if (!in_array('nb_actions_returning', $columns)) $tempColumns[] = 'nb_actions_returning';
+ if (!in_array('nb_visits_returning', $columns)) $tempColumns[] = 'nb_visits_returning';
+ unset($columns[$actionsPerVisitReturningRequested]);
}
- elseif(($averageVisitDurationReturningRequested = array_search('avg_time_on_site_returning', $columns)) !== false)
+ if(false !== ($averageVisitDurationReturningRequested = array_search('avg_time_on_site_returning', $columns)))
{
- $columns = array('sum_visit_length_returning', 'nb_visits_returning');
+ if (!in_array('sum_visit_length_returning', $columns)) $tempColumns[] = 'sum_visit_length_returning';
+ if (!in_array('nb_visits_returning', $columns)) $tempColumns[] = 'nb_visits_returning';
+ unset($columns[$averageVisitDurationReturningRequested]);
}
+
+ $tempColumns = array_unique($tempColumns);
+ $columns = array_merge($columns, $tempColumns);
}
else
{
@@ -83,14 +94,9 @@ class Piwik_VisitFrequency_API
$dataTable->filter('ColumnCallbackAddColumnQuotient', array('avg_time_on_site_returning', 'sum_visit_length_returning', 'nb_visits_returning', 0));
}
- // If only a computed metrics was requested, we delete other metrics
- // that we selected only to process this one metric
- if($countColumnsRequested == 1
- && ($bounceRateReturningRequested || $averageVisitDurationReturningRequested || $actionsPerVisitReturningRequested)
- )
- {
- $dataTable->deleteColumns($columns);
- }
+ // remove temporary metrics that were used to compute processed metrics
+ $dataTable->deleteColumns($tempColumns);
+
return $dataTable;
}
diff --git a/plugins/VisitFrequency/Controller.php b/plugins/VisitFrequency/Controller.php
index 526dd9076b..d8339176ab 100644
--- a/plugins/VisitFrequency/Controller.php
+++ b/plugins/VisitFrequency/Controller.php
@@ -33,25 +33,45 @@ class Piwik_VisitFrequency_Controller extends Piwik_Controller
public function getEvolutionGraph( $fetch = false, $columns = false)
{
- $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, "VisitFrequency.get");
if(empty($columns))
{
$columns = Piwik_Common::getRequestVar('columns');
+ $columns = Piwik::getArrayFromApiParameter($columns);
}
- $view->setColumnsToDisplay($columns);
- $view->setColumnsTranslations(array(
- 'nb_visits_returning' => Piwik_Translate('VisitFrequency_ColumnReturningVisits'),
- 'nb_actions_returning' => Piwik_Translate('VisitFrequency_ColumnActionsByReturningVisits'),
- 'avg_time_on_site_returning' => Piwik_Translate('VisitFrequency_ColumnAverageVisitDurationForReturningVisitors'),
- 'bounce_rate_returning' => Piwik_Translate('VisitFrequency_ColumnBounceRateForReturningVisits'),
- 'nb_actions_per_visit_returning' => Piwik_Translate('VisitFrequency_ColumnAvgActionsPerReturningVisit'),
- ));
- $doc = Piwik_Translate('VisitFrequency_ReturningVisitsDocumentation').'<br />'
- . Piwik_Translate('General_BrokenDownReportDocumentation').'<br />'
- . Piwik_Translate('VisitFrequency_ReturningVisitDocumentation');
+ $documentation = Piwik_Translate('VisitFrequency_ReturningVisitsDocumentation').'<br />'
+ . Piwik_Translate('General_BrokenDownReportDocumentation').'<br />'
+ . Piwik_Translate('VisitFrequency_ReturningVisitDocumentation');
- $view->setReportDocumentation($doc);
+ $selectableColumns = array(
+ // columns from VisitFrequency.get
+ 'nb_visits_returning',
+ 'nb_actions_returning',
+ 'nb_actions_per_visit_returning',
+ 'bounce_rate_returning',
+ 'avg_time_on_site_returning',
+ // columns from VisitsSummary.get
+ 'nb_visits',
+ 'nb_actions',
+ 'nb_actions_per_visit',
+ 'bounce_rate',
+ 'avg_time_on_site'
+ );
+
+ $period = Piwik_Common::getRequestVar('period', false);
+ if ($period == 'day')
+ {
+ // add number of unique (returning) visitors for period=day
+ $selectableColumns = array_merge(
+ array($selectableColumns[0]),
+ array('nb_uniq_visitors_returning'),
+ array_slice($selectableColumns, 1, -4),
+ array('nb_uniq_visitors'),
+ array_slice($selectableColumns, -4));
+ }
+
+ $view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns,
+ $selectableColumns, $documentation);
return $this->renderView($view, $fetch);
}
diff --git a/plugins/VisitFrequency/VisitFrequency.php b/plugins/VisitFrequency/VisitFrequency.php
index d731a428be..74b5d54435 100644
--- a/plugins/VisitFrequency/VisitFrequency.php
+++ b/plugins/VisitFrequency/VisitFrequency.php
@@ -53,8 +53,8 @@ class Piwik_VisitFrequency extends Piwik_Plugin
'avg_time_on_site_returning' => Piwik_Translate('VisitFrequency_ColumnAverageVisitDurationForReturningVisitors'),
'bounce_rate_returning' => Piwik_Translate('VisitFrequency_ColumnBounceRateForReturningVisits'),
'nb_actions_per_visit_returning' => Piwik_Translate('VisitFrequency_ColumnAvgActionsPerReturningVisit'),
+ 'nb_uniq_visitors_returning' => Piwik_Translate('VisitFrequency_ColumnUniqueReturningVisitors'),
// Not displayed
-// 'nb_uniq_visitors_returning',
// 'nb_visits_converted_returning',
// 'sum_visit_length_returning',
// 'max_actions_returning',
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php
index 1063c29e7b..28495d9a45 100644
--- a/plugins/VisitsSummary/API.php
+++ b/plugins/VisitsSummary/API.php
@@ -41,7 +41,7 @@ class Piwik_VisitsSummary_API
$tempColumns = array();
$bounceRateRequested = $actionsPerVisitRequested = $averageVisitDurationRequested = false;
- if($subsetOfColumns = !empty($columns))
+ if(!empty($columns))
{
// make sure base metrics are there for processed metrics
if(false !== ($bounceRateRequested = array_search('bounce_rate', $columns)))