From 883c3228e03e4e93e5338fa1f3ad18a6aaaa65ea Mon Sep 17 00:00:00 2001 From: Benaka Moorthi <benaka.moorthi@gmail.com> Date: Thu, 1 Aug 2013 15:24:29 -0400 Subject: [PATCH] Refs #4040, #4041, move more logic out of HtmlTable ViewDataTable class. --- core/ViewDataTable.php | 33 +++++++++++++++++++++++--------- core/ViewDataTable/HtmlTable.php | 16 ---------------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/core/ViewDataTable.php b/core/ViewDataTable.php index edd136abe0..5b7ae5a058 100644 --- a/core/ViewDataTable.php +++ b/core/ViewDataTable.php @@ -56,7 +56,7 @@ use Piwik_API_API; * @package Piwik * @subpackage ViewDataTable */ -abstract class ViewDataTable +class ViewDataTable { /** * TODO @@ -137,8 +137,10 @@ abstract class ViewDataTable /** * Default constructor. */ - public function __construct() + public function __construct($visualization = null) { + $this->visualization = $visualization; + $this->viewProperties['visualization_properties'] = new VisualizationPropertiesProxy(null); $this->viewProperties['datatable_template'] = '@CoreHome/_dataTable'; $this->viewProperties['show_goals'] = false; @@ -255,7 +257,13 @@ abstract class ViewDataTable * * @return string */ - abstract protected function getViewDataTableId(); + protected function getViewDataTableId() + { + if (method_exists($this->visualization, 'getViewDataTableId')) { + return $this->visualization->getViewDataTableId(); + } + return false; + } /** * Returns a Piwik_ViewDataTable_* object. @@ -318,7 +326,7 @@ abstract class ViewDataTable case 'table': default: - $result = new ViewDataTable\HtmlTable(); + $result = new ViewDataTable(new Visualization\HtmlTable()); break; } @@ -372,7 +380,7 @@ abstract class ViewDataTable */ public function getJavaScriptProperties() { - return array( + $result = array( 'enable_sort', 'disable_generic_filters', 'disable_queued_filters', @@ -385,6 +393,12 @@ abstract class ViewDataTable 'filter_sort_column', 'filter_sort_order', ); + + if (method_exists($this->visualization, 'getJavaScriptProperties')) { + $result = array_merge($result, $this->visualization->getJavaScriptProperties()); + } + + return $result; } /** @@ -622,6 +636,8 @@ abstract class ViewDataTable */ protected function postDataTableLoadedFromAPI() { + $this->overrideViewProperties(); + if (empty($this->dataTable)) { return false; } @@ -1206,8 +1222,6 @@ abstract class ViewDataTable $this->setPropertyDefaults($visualization->getDefaultPropertyValues()); } - $this->overrideViewProperties(); - $template = $this->viewProperties['datatable_template']; $view = new View($template); @@ -1234,11 +1248,12 @@ abstract class ViewDataTable public function getDefaultDataTableCssClass() { - return false; + $parts = explode('\\', get_class($this->visualization)); + return 'dataTableViz' . end($parts); } /** - * TODO + * Sets view properties if they have not been set already. */ private function setPropertyDefaults($defaultValues) { diff --git a/core/ViewDataTable/HtmlTable.php b/core/ViewDataTable/HtmlTable.php index 74abb97393..7344c61ddd 100644 --- a/core/ViewDataTable/HtmlTable.php +++ b/core/ViewDataTable/HtmlTable.php @@ -35,20 +35,4 @@ class HtmlTable extends ViewDataTable $this->visualization = new Visualization\HtmlTable(); } - - public function getJavaScriptProperties() - { - return array_merge(parent::getJavaScriptProperties(), $this->visualization->getJavaScriptProperties()); - } - - protected function getViewDataTableId() - { - return $this->visualization->getViewDataTableId(); - } - - public function getDefaultDataTableCssClass() - { - $parts = explode('\\', get_class($this)); - return 'dataTableViz' . end($parts); - } } \ No newline at end of file -- GitLab