Skip to content
Extraits de code Groupes Projets
Valider f2128648 rédigé par Thomas Steur's avatar Thomas Steur
Parcourir les fichiers

use visualizations hooks

parent cf056e12
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -20,6 +20,8 @@ use Piwik\Plugins\Goals\API as APIGoals; ...@@ -20,6 +20,8 @@ use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Site; use Piwik\Site;
use Piwik\View; use Piwik\View;
use Piwik\ViewDataTable\Visualization; use Piwik\ViewDataTable\Visualization;
use Piwik\Visualization\Config as VizConfig;
use Piwik\Visualization\Request;
require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php'; require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php';
require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/Goals.php'; require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/Goals.php';
...@@ -149,25 +151,42 @@ class HtmlTable extends Visualization ...@@ -149,25 +151,42 @@ class HtmlTable extends Visualization
'highlight_summary_row', 'highlight_summary_row',
); );
/** public function configureVisualization(VizConfig $properties)
* Init.
*/
public function init()
{ {
$view = $this->viewDataTable;
if (Common::getRequestVar('idSubtable', false) if (Common::getRequestVar('idSubtable', false)
&& $view->visualization_properties->show_embedded_subtable && $properties->visualization_properties->show_embedded_subtable
) { ) {
$view->show_visualization_only = true; $properties->show_visualization_only = true;
} }
if ($view->visualization_properties->show_extra_columns) { if ($properties->visualization_properties->show_extra_columns) {
$this->setShowExtraColumnsProperties($view); $properties->show_exclude_low_population = true;
$properties->datatable_css_class = 'dataTableVizAllColumns';
} }
if ($view->visualization_properties->show_goals_columns) { if ($properties->visualization_properties->show_goals_columns) {
$this->setShowGoalsColumnsProperties($view); $properties->datatable_css_class = 'dataTableVizGoals';
$properties->show_exclude_low_population = true;
$properties->show_goals = true;
$properties->translations += array(
'nb_conversions' => Piwik::translate('Goals_ColumnConversions'),
'conversion_rate' => Piwik::translate('General_ColumnConversionRate'),
'revenue' => Piwik::translate('General_ColumnRevenue'),
'revenue_per_visit' => Piwik::translate('General_ColumnValuePerVisit'),
);
$properties->metrics_documentation['nb_visits'] = Piwik::translate('Goals_ColumnVisits');
if (Common::getRequestVar('documentationForGoalsPage', 0, 'int') == 1) { // TODO: should not use query parameter
$properties->documentation = Piwik::translate('Goals_ConversionByTypeReportDocumentation',
array('<br />', '<br />', '<a href="http://piwik.org/docs/tracking-goals-web-analytics/" target="_blank">', '</a>'));
}
if (!$properties->visualization_properties->disable_subtable_when_show_goals) {
$properties->subtable_controller_action = null;
}
$this->setShowGoalsColumnsProperties();
} }
} }
...@@ -200,59 +219,55 @@ class HtmlTable extends Visualization ...@@ -200,59 +219,55 @@ class HtmlTable extends Visualization
return $defaults; return $defaults;
} }
private function setShowExtraColumnsProperties($view) /**
* @param DataTable|DataTable\Map $dataTable
* @param \Piwik\Visualization\Config $properties
* @param \Piwik\Visualization\Request $request
*/
public function beforeGenericFiltersAreAppliedToLoadedDataTable($dataTable, VizConfig $properties, Request $request)
{ {
$view->filters[] = array('AddColumnsProcessedMetrics', array(), $priority = true); if ($properties->visualization_properties->show_extra_columns) {
$dataTable->filter(function ($dataTable) use ($properties) {
$columnsToDisplay = array('label', 'nb_visits');
$view->filters[] = function ($dataTable, $view) { if (in_array('nb_uniq_visitors', $dataTable->getColumns())) {
$columnsToDisplay = array('label', 'nb_visits'); $columnsToDisplay[] = 'nb_uniq_visitors';
}
if (in_array('nb_uniq_visitors', $dataTable->getColumns())) { $columnsToDisplay = array_merge(
$columnsToDisplay[] = 'nb_uniq_visitors'; $columnsToDisplay, array('nb_actions', 'nb_actions_per_visit', 'avg_time_on_site', 'bounce_rate')
} );
$columnsToDisplay = array_merge( // only display conversion rate for the plugins that do not provide "per goal" metrics
$columnsToDisplay, array('nb_actions', 'nb_actions_per_visit', 'avg_time_on_site', 'bounce_rate') // otherwise, conversion rate is meaningless as a whole (since we don't process 'cross goals' conversions)
); if (!$properties->show_goals) {
$columnsToDisplay[] = 'conversion_rate';
}
// only display conversion rate for the plugins that do not provide "per goal" metrics $properties->columns_to_display = $columnsToDisplay;
// otherwise, conversion rate is meaningless as a whole (since we don't process 'cross goals' conversions) });
if (!$view->show_goals) {
$columnsToDisplay[] = 'conversion_rate';
}
$view->columns_to_display = $columnsToDisplay;
};
$prettifyTime = array('\Piwik\MetricsFormatter', 'getPrettyTimeFromSeconds');
$view->filters[] = array('ColumnCallbackReplace', array('avg_time_on_site', $prettifyTime));
$view->show_exclude_low_population = true; $prettifyTime = array('\Piwik\MetricsFormatter', 'getPrettyTimeFromSeconds');
$view->datatable_css_class = 'dataTableVizAllColumns'; $dataTable->filter('ColumnCallbackReplace', array('avg_time_on_site', $prettifyTime));
}
} }
private function setShowGoalsColumnsProperties($view) /**
* @param DataTable|DataTable\Map $dataTable
* @param \Piwik\Visualization\Config $properties
* @param \Piwik\Visualization\Request $request
*/
public function afterAllFilteresAreApplied($dataTable, VizConfig $properties, Request $request)
{ {
$view->datatable_css_class = 'dataTableVizGoals'; if ($properties->visualization_properties->show_extra_columns) {
$view->show_exclude_low_population = true; $dataTable->filter('AddColumnsProcessedMetrics');
$view->show_goals = true;
$view->translations += array(
'nb_conversions' => Piwik::translate('Goals_ColumnConversions'),
'conversion_rate' => Piwik::translate('General_ColumnConversionRate'),
'revenue' => Piwik::translate('General_ColumnRevenue'),
'revenue_per_visit' => Piwik::translate('General_ColumnValuePerVisit'),
);
$view->metrics_documentation['nb_visits'] = Piwik::translate('Goals_ColumnVisits');
if (Common::getRequestVar('documentationForGoalsPage', 0, 'int') == 1) { // TODO: should not use query parameter
$view->documentation = Piwik::translate('Goals_ConversionByTypeReportDocumentation',
array('<br />', '<br />', '<a href="http://piwik.org/docs/tracking-goals-web-analytics/" target="_blank">', '</a>'));
} }
}
if (!$view->visualization_properties->disable_subtable_when_show_goals) { private function setShowGoalsColumnsProperties()
$view->subtable_controller_action = null; {
} $view = $this->viewDataTable;
// set view properties based on goal requested // set view properties based on goal requested
$idSite = Common::getRequestVar('idSite', null, 'int'); $idSite = Common::getRequestVar('idSite', null, 'int');
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Visualization\Config;
/** /**
* DataTable Visualization that derives from HtmlTable and sets show_extra_columns to true. * DataTable Visualization that derives from HtmlTable and sets show_extra_columns to true.
...@@ -20,13 +21,10 @@ class AllColumns extends HtmlTable ...@@ -20,13 +21,10 @@ class AllColumns extends HtmlTable
{ {
const ID = 'tableAllColumns'; const ID = 'tableAllColumns';
/** public function configureVisualization(Config $properties)
* Init.
*/
public function init()
{ {
$this->viewDataTable->visualization_properties->show_extra_columns = true; $properties->visualization_properties->show_extra_columns = true;
parent::init(); parent::configureVisualization($properties);
} }
} }
\ No newline at end of file
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Visualization\Config;
/** /**
* DataTable Visualization that derives from HtmlTable and sets show_goals_columns to true. * DataTable Visualization that derives from HtmlTable and sets show_goals_columns to true.
...@@ -20,13 +21,10 @@ class Goals extends HtmlTable ...@@ -20,13 +21,10 @@ class Goals extends HtmlTable
{ {
const ID = 'tableGoals'; const ID = 'tableGoals';
/** public function configureVisualization(Config $properties)
* Init
*/
public function init()
{ {
$this->viewDataTable->visualization_properties->show_goals_columns = true; $properties->visualization_properties->show_goals_columns = true;
parent::init(); parent::configureVisualization($properties);
} }
} }
\ No newline at end of file
...@@ -15,6 +15,8 @@ use Piwik\DataTable; ...@@ -15,6 +15,8 @@ use Piwik\DataTable;
use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator; use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
use Piwik\View; use Piwik\View;
use Piwik\ViewDataTable\Graph; use Piwik\ViewDataTable\Graph;
use Piwik\Visualization\Config;
use Piwik\Visualization\Request;
/** /**
* DataTable visualization that displays DataTable data in a JQPlot graph. * DataTable visualization that displays DataTable data in a JQPlot graph.
...@@ -58,29 +60,6 @@ class JqplotGraph extends Graph ...@@ -58,29 +60,6 @@ class JqplotGraph extends Graph
public static $overridableProperties = array('x_axis_step_size'); public static $overridableProperties = array('x_axis_step_size');
/**
* Init.
*/
public function init()
{
$view = $this->viewDataTable;
parent::init();
// do not sort if sorted column was initially "label" or eg. it would make "Visits by Server time" not pretty
if ($view->filter_sort_column != 'label') {
$columns = $view->columns_to_display;
$firstColumn = reset($columns);
if ($firstColumn == 'label') {
$firstColumn = next($columns);
}
$result['filter_sort_column'] = $firstColumn;
$result['filter_sort_order'] = 'desc';
}
}
/** /**
* Returns an array mapping property names with default values for this visualization. * Returns an array mapping property names with default values for this visualization.
* *
......
...@@ -45,7 +45,7 @@ class Evolution extends JqplotGraph ...@@ -45,7 +45,7 @@ class Evolution extends JqplotGraph
{ {
parent::init(); parent::init();
$this->calculateEvolutionDateRange($this->viewDataTable); $this->calculateEvolutionDateRange();
} }
public function beforeLoadDataTable(Request $request, Config $properties) public function beforeLoadDataTable(Request $request, Config $properties)
...@@ -102,8 +102,9 @@ class Evolution extends JqplotGraph ...@@ -102,8 +102,9 @@ class Evolution extends JqplotGraph
* Based on the period, date and evolution_{$period}_last_n query parameters, * Based on the period, date and evolution_{$period}_last_n query parameters,
* calculates the date range this evolution chart will display data for. * calculates the date range this evolution chart will display data for.
*/ */
private function calculateEvolutionDateRange(&$view) private function calculateEvolutionDateRange()
{ {
$view = $this->viewDataTable;
$period = Common::getRequestVar('period'); $period = Common::getRequestVar('period');
$defaultLastN = self::getDefaultLastN($period); $defaultLastN = self::getDefaultLastN($period);
......
...@@ -23,23 +23,6 @@ class Pie extends JqplotGraph ...@@ -23,23 +23,6 @@ class Pie extends JqplotGraph
{ {
const ID = 'graphPie'; const ID = 'graphPie';
public function init()
{
parent::init();
$view->visualization_properties->show_all_ticks = true;
$view->datatable_js_type = 'JqplotPieGraphDataTable';
// make sure only one non-label column is displayed
$view->after_data_loaded_functions[] = function ($dataTable) use ($view) {
$metricColumn = reset($view->columns_to_display);
if ($metricColumn == 'label') {
$metricColumn = next($view->columns_to_display);
}
$view->columns_to_display = array($metricColumn ? : 'nb_visits');
};
}
public function configureVisualization(Config $properties) public function configureVisualization(Config $properties)
{ {
parent::configureVisualization($properties); parent::configureVisualization($properties);
...@@ -61,7 +44,6 @@ class Pie extends JqplotGraph ...@@ -61,7 +44,6 @@ class Pie extends JqplotGraph
$properties->columns_to_display = array($metricColumn ? : 'nb_visits'); $properties->columns_to_display = array($metricColumn ? : 'nb_visits');
} }
public static function getDefaultPropertyValues() public static function getDefaultPropertyValues()
{ {
$result = parent::getDefaultPropertyValues(); $result = parent::getDefaultPropertyValues();
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter