From f6a67af29558eb32b500ede0bbcbeb8b139c53b2 Mon Sep 17 00:00:00 2001 From: Thomas Steur Date: Mon, 28 Nov 2016 08:17:55 +1300 Subject: Minor tweaks and events in Goals UI (#10903) * added some goal events * add new method to be able to add post params * post events via angular * make sure promo message is always shown at the end * .travis.yml file is out of date, auto-updating .travis.yml file. * improve sparklines view and make goals page hookable * .travis.yml file is out of date, auto-updating .travis.yml file. * .travis.yml file is out of date, auto-updating .travis.yml file. * fix system tests * make sure each goal has an id in the table so we can target them --- .../Visualizations/Sparklines.php | 2 ++ .../Visualizations/Sparklines/Config.php | 25 ++++++++++++++++++++++ .../templates/_dataTableViz_sparklines.twig | 12 ++++++++--- plugins/CoreVisualizations/templates/macros.twig | 5 +++-- .../tests/Integration/SparklinesConfigTest.php | 11 ++++++++++ 5 files changed, 50 insertions(+), 5 deletions(-) (limited to 'plugins/CoreVisualizations') diff --git a/plugins/CoreVisualizations/Visualizations/Sparklines.php b/plugins/CoreVisualizations/Visualizations/Sparklines.php index 8ee6f60401..b0f8fbfcac 100644 --- a/plugins/CoreVisualizations/Visualizations/Sparklines.php +++ b/plugins/CoreVisualizations/Visualizations/Sparklines.php @@ -80,6 +80,8 @@ class Sparklines extends ViewDataTable $view->sparklines = $this->config->getSortedSparklines(); $view->isWidget = Common::getRequestVar('widget', 0, 'int'); $view->titleAttributes = $this->config->title_attributes; + $view->footerMessage = $this->config->show_footer_message; + $view->areSparklinesLinkable = $this->config->areSparklinesLinkable(); $view->title = ''; if ($this->config->show_title) { diff --git a/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php b/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php index a4dae712db..09e687fd4a 100644 --- a/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php +++ b/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php @@ -33,6 +33,12 @@ class Config extends \Piwik\ViewDataTable\Config */ private $sparklines = array(); + /** + * If false, will not link them with any evolution graph + * @var bool + */ + private $evolutionGraphLinkable = true; + /** * Adds possibility to set html attributes on the sparklines title / headline. For example can be used * to set an angular directive @@ -262,6 +268,25 @@ class Config extends \Piwik\ViewDataTable\Config $this->sparklines[] = $sparkline; } + /** + * If there are sparklines and evolution graphs on one page, we try to connect them so that when you click on a + * sparkline, the evolution graph will update and show the evolution for that sparkline metric. In some cases + * we might falsely connect sparklines with an evolution graph that don't belong together. In this case you can + * mark all sparklines as "not linkable". This will prevent the sparklines being linked with an evolution graph. + */ + public function setNotLinkableWithAnyEvolutionGraph() + { + $this->evolutionGraphLinkable = false; + } + + /** + * Detect whether sparklines are linkable with an evolution graph. {@link setNotLinkableWithAnyEvolutionGraph()} + */ + public function areSparklinesLinkable() + { + return $this->evolutionGraphLinkable; + } + /** * @return array * @ignore diff --git a/plugins/CoreVisualizations/templates/_dataTableViz_sparklines.twig b/plugins/CoreVisualizations/templates/_dataTableViz_sparklines.twig index b0e29cc26a..5c8390d914 100644 --- a/plugins/CoreVisualizations/templates/_dataTableViz_sparklines.twig +++ b/plugins/CoreVisualizations/templates/_dataTableViz_sparklines.twig @@ -13,7 +13,7 @@ {% for key, sparkline in sparklines %} {% if key is even %} - {{ macros.singleSparkline(sparkline, allMetricsDocumentation) }} + {{ macros.singleSparkline(sparkline, allMetricsDocumentation, areSparklinesLinkable) }} {% endif %} {% endfor %} @@ -25,7 +25,7 @@ {% for key, sparkline in sparklines %} {% if key is odd %} - {{ macros.singleSparkline(sparkline, allMetricsDocumentation) }} + {{ macros.singleSparkline(sparkline, allMetricsDocumentation, areSparklinesLinkable) }} {% endif %} {% endfor %} @@ -36,7 +36,13 @@ {% endif %} - {% include "_sparklineFooter.twig" %} + {% if areSparklinesLinkable %} + {% include "_sparklineFooter.twig" %} + {% endif %} + + {% if footerMessage is not empty %} +
{{ footerMessage | raw }}
+ {% endif %} {% if not isWidget %} {% endif %} \ No newline at end of file diff --git a/plugins/CoreVisualizations/templates/macros.twig b/plugins/CoreVisualizations/templates/macros.twig index 43d8c2158e..ad9212978a 100644 --- a/plugins/CoreVisualizations/templates/macros.twig +++ b/plugins/CoreVisualizations/templates/macros.twig @@ -1,5 +1,6 @@ -{% macro singleSparkline(sparkline, allMetricsDocumentation) %} -
+{% macro singleSparkline(sparkline, allMetricsDocumentation, areSparklinesLinkable) %} + +
{% if sparkline.url %}{{ sparkline(sparkline.url)|raw }}{% endif %} {% for metric in sparkline.metrics %} diff --git a/plugins/CoreVisualizations/tests/Integration/SparklinesConfigTest.php b/plugins/CoreVisualizations/tests/Integration/SparklinesConfigTest.php index 49a116b5cc..f3d00bc770 100644 --- a/plugins/CoreVisualizations/tests/Integration/SparklinesConfigTest.php +++ b/plugins/CoreVisualizations/tests/Integration/SparklinesConfigTest.php @@ -47,6 +47,17 @@ class SparklinesConfigTest extends IntegrationTestCase parent::tearDown(); } + public function test_areSparklinesLinkable_byDefaultSparklinesAreLinkable() + { + $this->assertTrue($this->config->areSparklinesLinkable()); + } + + public function test_setNotLinkableWithAnyEvolutionGraph_areSparklinesLinkable_sparklinesCanBeMadeNotLinkable() + { + $this->config->setNotLinkableWithAnyEvolutionGraph(); + $this->assertFalse($this->config->areSparklinesLinkable()); + } + public function test_addSparkline_shouldAddAMinimalSparklineWithOneValueAndUseDefaultOrder() { $this->config->addSparkline($this->sparklineParams(), $value = 10, $description = 'Visits'); -- cgit v1.2.3