Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Burgess <88810029+bx80@users.noreply.github.com>2022-06-15 16:17:22 +0300
committerGitHub <noreply@github.com>2022-06-15 16:17:22 +0300
commit1554431e5d557153417763a039d6b033e300d3df (patch)
treed94cd00750fd00b36f75d9ba3a9cff2591ac4b77 /plugins
parent494533f8d46f2d33c73b03178458a0665b238762 (diff)
Fix for zero average order value on charts (#19353)
* Changed evolution jqplot charts to not format metrics, added basic percent formatting for the jqplotDataGenerator * Only show dollar and pound currency symbols as postfix for jqplot formatting * Do not attempt to format jqplot percent values unless format_metrics = 0, UI test screenshot update * Improve jqplot formatting, remove unnecessary format metrics default logic * Revert format metrics default logic removal
Diffstat (limited to 'plugins')
-rw-r--r--plugins/CoreVisualizations/JqplotDataGenerator/Chart.php37
-rw-r--r--plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php6
-rw-r--r--plugins/CoreVisualizations/Visualizations/Graph.php5
-rw-r--r--plugins/Goals/Controller.php7
-rw-r--r--plugins/Goals/Reports/Get.php3
5 files changed, 51 insertions, 7 deletions
diff --git a/plugins/CoreVisualizations/JqplotDataGenerator/Chart.php b/plugins/CoreVisualizations/JqplotDataGenerator/Chart.php
index dc396a4fb2..aa7d946de7 100644
--- a/plugins/CoreVisualizations/JqplotDataGenerator/Chart.php
+++ b/plugins/CoreVisualizations/JqplotDataGenerator/Chart.php
@@ -9,6 +9,8 @@
namespace Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
use Piwik\Common;
+use Piwik\Container\StaticContainer;
+use Piwik\NumberFormatter;
use Piwik\ProxyHttp;
/**
@@ -52,7 +54,14 @@ class Chart
$this->axes['xaxis']['onclick'] = & $onClick;
}
- public function setAxisYValues(&$values, $seriesMetadata = null)
+ /**
+ * Set the series values
+ *
+ * @param $values
+ * @param null $seriesMetadata
+ * @param array|null $seriesUnits If the series units array is passed then the values will be formatted
+ */
+ public function setAxisYValues(&$values, $seriesMetadata = null, ?array $seriesUnits = null)
{
foreach ($values as $label => &$data) {
$seriesInfo = array(
@@ -65,9 +74,13 @@ class Chart
}
$this->series[] = $seriesInfo;
+ $unit = (isset($seriesUnits[$label]) ? $seriesUnits[$label] : null);
- array_walk($data, function (&$v) {
+ array_walk($data, function (&$v) use ($unit) {
$v = (float) Common::forceDotAsSeparatorForDecimalPoint($v);
+ if ($unit === '%') {
+ $v = $v * 100;
+ }
});
$this->data[] = & $data;
}
@@ -90,7 +103,25 @@ class Chart
// generate jqplot axes config
foreach ($axesIds as $unit => $axisId) {
- $this->axes[$axisId]['tickOptions']['formatString'] = '%s' . $unit;
+ if ($unit === '$' || $unit === '£') {
+ $this->axes[$axisId]['tickOptions']['formatString'] = $unit . '%s';
+ } else {
+ $this->axes[$axisId]['tickOptions']['formatString'] = '%s' . $unit;
+ }
+ }
+
+ $currencies = StaticContainer::get('Piwik\Intl\Data\Provider\CurrencyDataProvider')->getCurrencyList();
+ $currencies = array_column($currencies, 0);
+
+ // generate jqplot axes config
+ foreach ($axesIds as $unit => $axisId) {
+ if ($unit === '%') {
+ $this->axes[$axisId]['tickOptions']['formatString'] = str_replace('0', '%s', NumberFormatter::getInstance()->formatPercent(0, 0, 0));
+ } else if (in_array($unit, $currencies)) {
+ $this->axes[$axisId]['tickOptions']['formatString'] = str_replace('0', '%s', NumberFormatter::getInstance()->formatCurrency(0, $unit, 0));
+ } else {
+ $this->axes[$axisId]['tickOptions']['formatString'] = '%s' . $unit;
+ }
}
// map each series to appropriate yaxis
diff --git a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
index ea71ab47be..dd827551e3 100644
--- a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
+++ b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
@@ -89,7 +89,11 @@ class Evolution extends JqplotDataGenerator
$visualization->dataTable = $dataTable;
$visualization->properties = $this->properties;
- $visualization->setAxisYValues($allSeriesData, $seriesMetadata);
+ $units = null;
+ if ($visualization->properties['request_parameters_to_modify']['format_metrics'] === 0) {
+ $units = $seriesUnits;
+ }
+ $visualization->setAxisYValues($allSeriesData, $seriesMetadata, $units);
$visualization->setAxisYUnits($seriesUnits);
$xLabelStrs = [];
diff --git a/plugins/CoreVisualizations/Visualizations/Graph.php b/plugins/CoreVisualizations/Visualizations/Graph.php
index 296ea624a8..56ec6ee5ff 100644
--- a/plugins/CoreVisualizations/Visualizations/Graph.php
+++ b/plugins/CoreVisualizations/Visualizations/Graph.php
@@ -62,7 +62,10 @@ abstract class Graph extends Visualization
$this->requestConfig->request_parameters_to_modify['filter_truncate'] = $this->config->max_graph_elements - 1;
}
- $this->requestConfig->request_parameters_to_modify['format_metrics'] = 1;
+ // Only default to formatting metrics if the request hasn't already been set to not format metrics
+ if (!isset($this->requestConfig->request_parameters_to_modify['format_metrics'])) {
+ $this->requestConfig->request_parameters_to_modify['format_metrics'] = 1;
+ }
// if addTotalRow was called in GenerateGraphHTML, add a row containing totals of
// different metrics
diff --git a/plugins/Goals/Controller.php b/plugins/Goals/Controller.php
index bb1aa8c59a..13b1ab942e 100644
--- a/plugins/Goals/Controller.php
+++ b/plugins/Goals/Controller.php
@@ -22,6 +22,7 @@ use Piwik\Plugins\Referrers\API as APIReferrers;
use Piwik\Translation\Translator;
use Piwik\View;
use Piwik\ViewDataTable\Factory as ViewDataTableFactory;
+use Piwik\Plugins\CoreVisualizations\Visualizations\jqplotGraph\Evolution;
/**
*
@@ -203,7 +204,7 @@ class Controller extends \Piwik\Plugin\Controller
if (empty($idGoal)) {
$idGoal = Common::getRequestVar('idGoal', '', 'string');
}
- $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, 'Goals.get');
+ $view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, 'Goals.get', ['format_metrics' => 0]);
$view->requestConfig->request_parameters_to_modify['idGoal'] = $idGoal;
$view->requestConfig->request_parameters_to_modify['showAllGoalSpecificMetrics'] = 1;
@@ -251,6 +252,10 @@ class Controller extends \Piwik\Plugin\Controller
$langString = $idGoal ? 'Goals_SingleGoalOverviewDocumentation' : 'Goals_GoalsOverviewDocumentation';
$view->config->documentation = $this->translator->translate($langString, '<br />');
+ if ($view instanceof Evolution) {
+ $view->requestConfig->request_parameters_to_modify['format_metrics'] = 0;
+ }
+
return $this->renderView($view);
}
diff --git a/plugins/Goals/Reports/Get.php b/plugins/Goals/Reports/Get.php
index 5a3a341163..3affc112f5 100644
--- a/plugins/Goals/Reports/Get.php
+++ b/plugins/Goals/Reports/Get.php
@@ -245,7 +245,8 @@ class Get extends Base
'forceView' => null,
'viewDataTable' => null,
'showtitle' => null,
- 'random' => null
+ 'random' => null,
+ 'format_metrics' => 0
]);
}