From b5f5f9f9be01c49fe8366fdcc4b336301d743042 Mon Sep 17 00:00:00 2001
From: Benaka Moorthi <benaka.moorthi@gmail.com>
Date: Sun, 15 Sep 2013 17:10:37 -0400
Subject: [PATCH] Refs #4077, disable treemap when flat=1.

---
 core/ViewDataTable/Properties.php                     |  8 ++++++++
 plugins/CoreHome/templates/_dataTableFooter.twig      | 10 ++++++----
 plugins/TreemapVisualization/Treemap.php              |  5 ++---
 plugins/TreemapVisualization/TreemapDataGenerator.php |  1 +
 plugins/TreemapVisualization/TreemapVisualization.php |  7 ++++++-
 5 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/core/ViewDataTable/Properties.php b/core/ViewDataTable/Properties.php
index 884bbf1ba1..f1977913aa 100644
--- a/core/ViewDataTable/Properties.php
+++ b/core/ViewDataTable/Properties.php
@@ -84,6 +84,12 @@ class Properties
      */
     const SHOW_EXCLUDE_LOW_POPULATION = 'show_exclude_low_population';
 
+    /**
+     * Whether to show the 'Flatten' option (visible in the popup that displays after clicking the
+     * 'cog' icon).
+     */
+    const SHOW_FLATTEN_TABLE = 'show_flatten_table';
+
     /**
      * Controls whether the footer icon that allows user to switch to the 'normal' DataTable view
      * is shown.
@@ -414,6 +420,7 @@ class Properties
         'disable_generic_filters',
         'disable_queued_filters',
         'show_exclude_low_population',
+        'show_flatten_table',
         'show_table',
         'show_table_all_columns',
         'show_footer',
@@ -558,6 +565,7 @@ class Properties
             'show_export_as_image_icon' => false,
             'show_export_as_rss_feed' => true,
             'show_exclude_low_population' => true,
+            'show_flatten_table' => true,
             'show_offset_information' => true,
             'show_pagination_control' => true,
             'show_limit_control' => false,
diff --git a/plugins/CoreHome/templates/_dataTableFooter.twig b/plugins/CoreHome/templates/_dataTableFooter.twig
index 99eaf7e496..a7829e619b 100644
--- a/plugins/CoreHome/templates/_dataTableFooter.twig
+++ b/plugins/CoreHome/templates/_dataTableFooter.twig
@@ -81,14 +81,16 @@
             <div class="tableConfiguration">
                 <a class="tableConfigurationIcon" href="#"></a>
                 <ul>
-                    {% if javascriptVariablesToSet.flat is defined and javascriptVariablesToSet.flat == 1 %}
+                    {% if properties.show_flatten_table %}
+                        {% if javascriptVariablesToSet.flat is defined and javascriptVariablesToSet.flat == 1 %}
                         <li>
                             <div class="configItem dataTableIncludeAggregateRows"></div>
                         </li>
+                        {% endif %}
+                        <li>
+                            <div class="configItem dataTableFlatten"></div>
+                        </li>
                     {% endif %}
-                    <li>
-                        <div class="configItem dataTableFlatten"></div>
-                    </li>
                     {% if properties.show_exclude_low_population %}
                         <li>
                             <div class="configItem dataTableExcludeLowPopulation"></div>
diff --git a/plugins/TreemapVisualization/Treemap.php b/plugins/TreemapVisualization/Treemap.php
index 4efff081da..cf7ee3c334 100644
--- a/plugins/TreemapVisualization/Treemap.php
+++ b/plugins/TreemapVisualization/Treemap.php
@@ -63,6 +63,7 @@ class Treemap extends Graph
         $view->request_parameters_to_modify['depth'] = $view->visualization_properties->depth;
         $view->show_pagination_control = false;
         $view->show_offset_information = false;
+        $view->show_flatten_table = false;
 
         $self = $this;
         $view->filters[] = function ($dataTable, $view) use ($self) {
@@ -128,9 +129,7 @@ class Treemap extends Graph
 
         $generator = new TreemapDataGenerator($metric, $translation);
         $generator->setInitialRowOffset($properties['filter_offset'] ?: 0);
-        if ($properties['visualization_properties']->show_evolution_values
-            && Common::getRequestVar('period') != 'range'
-        ) {
+        if ($dataTable instanceof Map) {
             $generator->showEvolutionValues();
         }
 
diff --git a/plugins/TreemapVisualization/TreemapDataGenerator.php b/plugins/TreemapVisualization/TreemapDataGenerator.php
index 62647fd737..50a2c5ac12 100644
--- a/plugins/TreemapVisualization/TreemapDataGenerator.php
+++ b/plugins/TreemapVisualization/TreemapDataGenerator.php
@@ -11,6 +11,7 @@
 namespace Piwik\Plugins\TreemapVisualization;
 
 use Piwik\DataTable;
+use Piwik\DataTable\Map;
 use Piwik\DataTable\Filter\CalculateEvolutionFilter;
 
 /**
diff --git a/plugins/TreemapVisualization/TreemapVisualization.php b/plugins/TreemapVisualization/TreemapVisualization.php
index 77d0b28b55..dc606ed0f8 100644
--- a/plugins/TreemapVisualization/TreemapVisualization.php
+++ b/plugins/TreemapVisualization/TreemapVisualization.php
@@ -11,6 +11,8 @@
 
 namespace Piwik\Plugins\TreemapVisualization;
 
+use Piwik\Common;
+
 /**
  * @see plugins/TreemapVisualization/Treemap.php
  */
@@ -50,7 +52,10 @@ class TreemapVisualization extends \Piwik\Plugin
 
     public function getAvailableDataTableVisualizations(&$visualizations)
     {
-        $visualizations[] = 'Piwik\\Plugins\\TreemapVisualization\\Treemap';
+        // treemap doesn't work w/ flat=1
+        if (!Common::getRequestVar('flat', 0)) {
+            $visualizations[] = 'Piwik\\Plugins\\TreemapVisualization\\Treemap';
+        }
     }
 
     public function getStylesheetFiles(&$stylesheets)
-- 
GitLab