From c08f6c1cc37ad1ab1ccceb6e7df5f63f05fcd49a Mon Sep 17 00:00:00 2001 From: Benaka Moorthi <benaka.moorthi@gmail.com> Date: Fri, 20 Sep 2013 21:14:23 -0400 Subject: [PATCH] Refs #4077, fix bug with zoom out button toggling and make sure treemap icon is not displayed on evolution graph. --- core/ViewDataTable.php | 7 +++---- .../TreemapVisualization.php | 19 ++++++++++++++++++- .../javascripts/treemapViz.js | 11 ++++++++++- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/core/ViewDataTable.php b/core/ViewDataTable.php index 0d80148aae..7a4487b5e0 100644 --- a/core/ViewDataTable.php +++ b/core/ViewDataTable.php @@ -681,7 +681,7 @@ class ViewDataTable /** * @return string URL to call the API, eg. "method=Referers.getKeywords&period=day&date=yesterday"... */ - protected function getRequestArray() + public function getRequestArray() { // we prepare the array to give to the API Request // we setup the method and format variable @@ -1057,11 +1057,10 @@ class ViewDataTable protected function buildView() { - Piwik_PostEvent(self::CONFIGURE_VIEW_EVENT, array($this)); - $visualization = new $this->visualizationClass($this); + Piwik_PostEvent(self::CONFIGURE_VIEW_EVENT, array($this)); $this->overrideViewProperties(); - + try { $this->loadDataTableFromAPI(); $this->postDataTableLoadedFromAPI(); diff --git a/plugins/TreemapVisualization/TreemapVisualization.php b/plugins/TreemapVisualization/TreemapVisualization.php index 306aa948a0..eb8c09c39a 100644 --- a/plugins/TreemapVisualization/TreemapVisualization.php +++ b/plugins/TreemapVisualization/TreemapVisualization.php @@ -11,6 +11,7 @@ namespace Piwik\Plugins\TreemapVisualization; +use Piwik\Period; use Piwik\Common; /** @@ -43,7 +44,7 @@ class TreemapVisualization extends \Piwik\Plugin public function getListHooksRegistered() { return array( - 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', + 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 'AssetManager.getJsFiles' => 'getJsFiles', 'DataTableVisualization.getAvailable' => 'getAvailableDataTableVisualizations', 'ViewDataTable.configureReportView' => 'configureReportViewForActions' @@ -76,6 +77,22 @@ class TreemapVisualization extends \Piwik\Plugin // make sure treemap is shown on actions reports if ($module === 'Actions') { + if ($view->getViewDataTableId() != Treemap::ID) { + // make sure we're looking at data that the treemap visualization can use (a single datatable) + // TODO: this is truly ugly code. need to think up an abstraction that can allow us to describe the + // problem... + $requestArray = $view->getRequestArray() + $_GET + $_POST; + $date = Common::getRequestVar('date', null, 'string', $requestArray); + $period = Common::getRequestVar('period', null, 'string', $requestArray); + $idSite = Common::getRequestVar('idSite', null, 'string', $requestArray); + if (Period::isMultiplePeriod($date, $period) + || strpos($idSite, ',') !== false + || $idSite == 'all' + ) { + return; + } + } + $view->show_all_views_icons = true; $view->show_bar_chart = false; $view->show_pie_chart = false; diff --git a/plugins/TreemapVisualization/javascripts/treemapViz.js b/plugins/TreemapVisualization/javascripts/treemapViz.js index a3ba92d388..51e19c9690 100644 --- a/plugins/TreemapVisualization/javascripts/treemapViz.js +++ b/plugins/TreemapVisualization/javascripts/treemapViz.js @@ -415,7 +415,16 @@ * Show/hide the zoom out button based on the currently selected node. */ _toggleZoomOut: function (toggle) { - $('.infoviz-treemap-zoom-out', this.$element).css('visibility', toggle || !this.treemap.clickedNode ? 'visible' : 'hidden'); + var toggle = toggle || !this._isFirstLevelNode(this.treemap.clickedNode); + $('.infoviz-treemap-zoom-out', this.$element).css('visibility', toggle ? 'visible' : 'hidden'); + }, + + /** + * Returns true if node is a child of the root node, false if it represents a subtable row. + */ + _isFirstLevelNode: function (node) { + var parent = node.getParents()[0]; + return !parent || parent.id.indexOf('treemap-root') != -1; }, /** -- GitLab