diff --git a/core/ViewDataTable/Properties.php b/core/ViewDataTable/Properties.php index b0001be374edb213723c5f45a22ba8c963f0cf6f..947fe51e8de037e0020c9d179d8ca05e1fc53bb8 100644 --- a/core/ViewDataTable/Properties.php +++ b/core/ViewDataTable/Properties.php @@ -515,7 +515,7 @@ class Properties 'export_limit' => Config::getInstance()->General['API_datatable_default_limit'], 'highlight_summary_row' => false, 'related_reports' => array(), - 'title' => 'unknown', + 'title' => '', 'tooltip_metadata_name' => false, 'enable_sort' => true, 'disable_generic_filters' => false, diff --git a/core/Visualization/Chart/Evolution.php b/core/Visualization/Chart/Evolution.php deleted file mode 100644 index 0ad55acb40eb7a38a33bba7d2200093405f798da..0000000000000000000000000000000000000000 --- a/core/Visualization/Chart/Evolution.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php -/** - * Piwik - Open source web analytics - * - * @link http://piwik.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - * - * @category Piwik - * @package Piwik - */ - -namespace Piwik\Visualization\Chart; - -use Piwik\Visualization\Chart; - -/** - * Customize the Evolution chart style - * - * @package Piwik - * @subpackage Piwik_Visualization - */ -class Evolution extends Chart -{ - const SERIES_COLOR_COUNT = 8; - - public function customizeChartProperties() - { - parent::customizeChartProperties(); - - // if one column is a percentage we set the grid accordingly - // note: it is invalid to plot a percentage dataset along with a numeric dataset - if ($this->yUnit == '%' - && $this->maxValue > 90 - ) { - $this->axes['yaxis']['ticks'] = array(0, 50, 100); - } - } - - public function setSelectableRows($selectableRows) - { - $this->seriesPicker['selectableRows'] = $selectableRows; - } -} \ No newline at end of file diff --git a/core/Visualization/Chart/Pie.php b/core/Visualization/Chart/Pie.php deleted file mode 100644 index e0f4a3785706d74705ff90dd4b042aa391569394..0000000000000000000000000000000000000000 --- a/core/Visualization/Chart/Pie.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -/** - * Piwik - Open source web analytics - * - * @link http://piwik.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - * - * @category Piwik - * @package Piwik - */ - -namespace Piwik\Visualization\Chart; - -use Piwik\Visualization\Chart; - -/** - * Customize & set values for the Flash Pie chart - * - * @package Piwik - * @subpackage Piwik_Visualization - */ -class Pie extends Chart -{ - function customizeChartProperties() - { - if (count($this->data) == 0) { - return; - } - - // make sure we only have one series - $series = & $this->series[0]; - $this->series = array(&$series); - - $data = & $this->data[0]; - $this->data = array(&$data); - - // we never plot empty pie slices (eg. visits by server time pie chart) - foreach ($data as $i => $value) { - if ($value <= 0) { - unset($data[$i]); - unset($this->axes['xaxis']['ticks'][$i]); - } - } - $data = array_values($data); - $this->axes['xaxis']['ticks'] = array_values($this->axes['xaxis']['ticks']); - - // prepare percentages for tooltip - $sum = array_sum($data); - foreach ($data as $i => $value) { - $value = (float)$value; - $this->tooltip['percentages'][0][$i] = round(100 * $value / $sum); - } - } -} diff --git a/core/Visualization/Chart/VerticalBar.php b/core/Visualization/Chart/VerticalBar.php deleted file mode 100644 index c6ec8f08d3132a0fc144f5fdaa62d61d850b97cc..0000000000000000000000000000000000000000 --- a/core/Visualization/Chart/VerticalBar.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * Piwik - Open source web analytics - * - * @link http://piwik.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - * - * @category Piwik - * @package Piwik - */ - -namespace Piwik\Visualization\Chart; - -use Piwik\Visualization\Chart; - -/** - * Customize & set values for the Vertical bar chart - * - * @package Piwik - * @subpackage Piwik_Visualization - */ -class VerticalBar extends Chart -{ - public function customizeChartProperties() - { - parent::customizeChartProperties(); - - if ($this->displayPercentageInTooltip) { - foreach ($this->data as $seriesIndex => &$series) { - $sum = array_sum($series); - - foreach ($series as $valueIndex => $value) { - $value = (float)$value; - - $percentage = 0; - if ($sum > 0) { - $percentage = round(100 * $value / $sum); - } - - $this->tooltip['percentages'][$seriesIndex][$valueIndex] = $percentage; - } - } - } - } -} diff --git a/plugins/CoreHome/DataTableRowAction/RowEvolution.php b/plugins/CoreHome/DataTableRowAction/RowEvolution.php index 081b9ad3747cdc2d0ee17b736f921feaa5c9e830..b1fbc50acfe9ed0bdeb0b50e48a9c0162149bdd5 100644 --- a/plugins/CoreHome/DataTableRowAction/RowEvolution.php +++ b/plugins/CoreHome/DataTableRowAction/RowEvolution.php @@ -18,7 +18,7 @@ use Piwik\Metrics; use Piwik\Date; use Piwik\ViewDataTable; use Piwik\Url; -use Piwik\Visualization\Chart\Evolution; +use Piwik\Visualization\Chart; use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution as EvolutionViz; /** @@ -219,8 +219,6 @@ class RowEvolution */ protected function getMetricsToggles() { - $chart = new Evolution; - $i = 0; $metrics = array(); foreach ($this->availableMetrics as $metric => $metricData) { diff --git a/plugins/CoreVisualizations/JqplotDataGenerator.php b/plugins/CoreVisualizations/JqplotDataGenerator.php index 3ff261692f0b6e797be5e0897a099cb0e8d8abec..dbc2e31079166f4d780c3f76367836c19d6eeb3f 100644 --- a/plugins/CoreVisualizations/JqplotDataGenerator.php +++ b/plugins/CoreVisualizations/JqplotDataGenerator.php @@ -16,6 +16,7 @@ use Piwik\Common; use Piwik\Metrics; use Piwik\DataTable; use Piwik\Visualization; +use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator\Chart; require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php'; @@ -54,11 +55,8 @@ class JqplotDataGenerator case 'evolution': return new JqplotDataGenerator\Evolution($properties); case 'pie': - $visualization = new Visualization\Chart\Pie(); - return new JqplotDataGenerator($visualization, $properties); case 'bar': - $visualization = new Visualization\Chart\VerticalBar(); - return new JqplotDataGenerator($visualization, $properties); + return new JqplotDataGenerator($properties); default: throw new Exception("Unknown JqplotDataGenerator type '$type'."); } @@ -70,9 +68,9 @@ class JqplotDataGenerator * @param Visualization\ $visualization * @param array $properties */ - public function __construct($visualization, $properties) + public function __construct($properties) { - $this->visualization = $visualization; + $this->visualization = new Chart(); $this->properties = $properties; } diff --git a/core/Visualization/Chart.php b/plugins/CoreVisualizations/JqplotDataGenerator/Chart.php similarity index 86% rename from core/Visualization/Chart.php rename to plugins/CoreVisualizations/JqplotDataGenerator/Chart.php index b580f78e1c2ce8870c5f57f5737f34229d4d4926..232982c3d399838e0848ff2b218b87bec4704ebe 100644 --- a/core/Visualization/Chart.php +++ b/plugins/CoreVisualizations/JqplotDataGenerator/Chart.php @@ -5,24 +5,19 @@ * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * - * @category Piwik - * @package Piwik + * @category Piwik_Plugins + * @package CoreVisualizations */ -namespace Piwik\Visualization; +namespace Piwik\Plugins\CoreVisualizations\JqplotDataGenerator; use Piwik\Piwik; use Piwik\Common; -use Piwik\View\ViewInterface; /** * Generates the data in the Open Flash Chart format, from the given data. - * - * @package Piwik - * @subpackage Piwik_Visualization */ -abstract class Chart implements ViewInterface +class Chart { - // the data kept here conforms to the jqplot data layout // @see http://www.jqplot.com/docs/files/jqPlotOptions-txt.html protected $series = array(); @@ -32,7 +27,6 @@ abstract class Chart implements ViewInterface protected $seriesPicker = array(); // other attributes (not directly used for jqplot) - protected $maxValue; protected $yUnit = ''; protected $displayPercentageInTooltip = true; protected $xSteps = 2; @@ -168,7 +162,6 @@ abstract class Chart implements ViewInterface 'seriesPicker' => &$this->seriesPicker ); - Piwik_PostEvent('Visualization_Chart.render', array(&$data)); return Common::json_encode($data); } @@ -183,5 +176,27 @@ abstract class Chart implements ViewInterface } } } + + if ($this->displayPercentageInTooltip) { + foreach ($this->data as $seriesIndex => &$series) { + $sum = array_sum($series); + + foreach ($series as $valueIndex => $value) { + $value = (float)$value; + + $percentage = 0; + if ($sum > 0) { + $percentage = round(100 * $value / $sum); + } + + $this->tooltip['percentages'][$seriesIndex][$valueIndex] = $percentage; + } + } + } + } + + public function setSelectableRows($selectableRows) + { + $this->seriesPicker['selectableRows'] = $selectableRows; } -} +} \ No newline at end of file diff --git a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php index fa1ddeb472ae0a63a6cf5b63980163a6d16474a8..05ff6ab3b3029b0dc7a6957bb58dfa9a0c7c479c 100644 --- a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php +++ b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php @@ -25,16 +25,6 @@ class Evolution extends JqplotDataGenerator { protected $rowPickerConfig = array(); - /** - * Constructor. - * - * @param array $properties - */ - public function __construct($properties) - { - parent::__construct(new \Piwik\Visualization\Chart\Evolution(), $properties); - } - /** * @param DataTable|DataTable\Map $dataTable */ diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph.php index 5a875dc369f8c452f21517968f6b2007381373ea..b70da6679aa85d14e5cdd0bfbccf38eea00cb6e9 100644 --- a/plugins/CoreVisualizations/Visualizations/JqplotGraph.php +++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph.php @@ -26,7 +26,6 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/Jq */ class JqplotGraph extends DataTableVisualization { - const DEFAULT_GRAPH_HEIGHT = 250; const ID = 'jqplot_graph'; /** @@ -70,16 +69,6 @@ class JqplotGraph extends DataTableVisualization */ const ADD_TOTAL_ROW = 'add_total_row'; - /** - * The CSS width of the graph. (eg, '100px'). - */ - const GRAPH_WIDTH = 'graph_width'; - - /** - * The CSS height of the graph. (eg, '100px'). - */ - const GRAPH_HEIGHT = 'graph_height'; - /** * Controls whether the Series Picker is shown or not. The Series Picker allows users to * choose between displaying data of different columns. @@ -161,8 +150,6 @@ class JqplotGraph extends DataTableVisualization 'allow_multi_select_series_picker' => true, 'max_graph_elements' => false, 'selectable_columns' => $selectableColumns, - 'graph_width' => '100%', - 'graph_height' => self::DEFAULT_GRAPH_HEIGHT . 'px', 'external_series_toggle' => false, 'external_series_toggle_show_all' => false, 'show_series_picker' => true, diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php index d680fefea4dd18cb5431163b34a2ac4ac31b1eda..834bf798e48049ebee1895a80326c3fc3b7fb162 100644 --- a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php +++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php @@ -25,7 +25,6 @@ class Evolution extends JqplotGraph { const ID = 'graphEvolution'; - const GRAPH_HEIGHT = 170; const SERIES_COLOR_COUNT = 8; public function __construct($view) @@ -50,7 +49,6 @@ class Evolution extends JqplotGraph $result['show_table'] = false; $result['show_table_all_columns'] = false; $result['hide_annotations_view'] = false; - $result['visualization_properties']['graphEvolution']['graph_height'] = self::GRAPH_HEIGHT . 'px'; return $result; } diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Pie.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Pie.php index 8b5e6ec70783687e4a7b547cef0f32ba46d81292..4ddc0449b2099eb313c01cde549ec812117b2994 100644 --- a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Pie.php +++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Pie.php @@ -21,6 +21,27 @@ class Pie extends JqplotGraph { const ID = 'graphPie'; + public function __construct($view) + { + parent::__construct($view); + $view->visualization_properties->show_all_ticks = true; + } + + public function render($dataTable, $properties) + { + // make sure only one non-label column is displayed + $metricColumn = false; + foreach ($properties['columns_to_display'] as $column) { + if ($column != 'label') { + $metricColumn = $column; + break; + } + } + $properties['columns_to_display'] = array($metricColumn ?: 'nb_visits'); + + return parent::render($dataTable, $properties); + } + public static function getDefaultPropertyValues() { $result = parent::getDefaultPropertyValues(); diff --git a/plugins/CoreVisualizations/stylesheets/dataTableVisualizations.less b/plugins/CoreVisualizations/stylesheets/dataTableVisualizations.less index 5ae202f36fce054f7c4fc91a3e3078a390c4f7bf..589278a6f4d68300c545e69b095434912a5030a8 100644 --- a/plugins/CoreVisualizations/stylesheets/dataTableVisualizations.less +++ b/plugins/CoreVisualizations/stylesheets/dataTableVisualizations.less @@ -13,6 +13,16 @@ min-height: 1px; } -.dataTableVizEvolution > .dataTableWrapper { - width: 100%; +.piwik-graph { + height: 250px; +} + +.dataTableVizEvolution { + > .dataTableWrapper { + width: 100%; + } + + .piwik-graph { + height: 170px; + } } \ No newline at end of file diff --git a/plugins/CoreVisualizations/templates/_dataTableViz_jqplotGraph.twig b/plugins/CoreVisualizations/templates/_dataTableViz_jqplotGraph.twig index e980275ac6432eb71a257a4d588ed53d4c28d141..15f1a0e34fa7ac0f41cb8b653e29da0639391299 100644 --- a/plugins/CoreVisualizations/templates/_dataTableViz_jqplotGraph.twig +++ b/plugins/CoreVisualizations/templates/_dataTableViz_jqplotGraph.twig @@ -1,6 +1,5 @@ <div class="jqplot-graph"> <div class="piwik-graph" - style="width: {{ properties.visualization_properties.graph_width }}; height: {{ properties.visualization_properties.graph_height }};" data-data="{{ data|e('html') }}" {% if properties.visualization_properties.external_series_toggle %} data-external-series-toggle="{{ properties.visualization_properties.external_series_toggle }}"