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:
authorThomas Steur <tsteur@users.noreply.github.com>2016-11-27 22:17:55 +0300
committerGitHub <noreply@github.com>2016-11-27 22:17:55 +0300
commitf6a67af29558eb32b500ede0bbcbeb8b139c53b2 (patch)
tree18484e791374024cf2da0bf3d61fd5e8cd71ce07
parent5a2a0e4dd41f64a01e3427739d7594881d7ac2d7 (diff)
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
-rw-r--r--plugins/CoreHome/angularjs/common/services/piwik-api.js9
-rw-r--r--plugins/CoreHome/javascripts/broadcast.js6
-rw-r--r--plugins/CoreHome/javascripts/sparkline.js10
-rw-r--r--plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js8
-rw-r--r--plugins/CoreVisualizations/Visualizations/Sparklines.php2
-rw-r--r--plugins/CoreVisualizations/Visualizations/Sparklines/Config.php25
-rw-r--r--plugins/CoreVisualizations/templates/_dataTableViz_sparklines.twig12
-rw-r--r--plugins/CoreVisualizations/templates/macros.twig5
-rw-r--r--plugins/CoreVisualizations/tests/Integration/SparklinesConfigTest.php11
-rw-r--r--plugins/Goals/Pages.php25
-rw-r--r--plugins/Goals/angularjs/manage-goals/manage-goals.controller.js21
-rw-r--r--plugins/Goals/templates/_formAddGoal.twig2
-rw-r--r--plugins/Goals/templates/_listGoalEdit.twig4
-rw-r--r--plugins/ProfessionalServices/ProfessionalServices.php4
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml52
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml42
16 files changed, 162 insertions, 76 deletions
diff --git a/plugins/CoreHome/angularjs/common/services/piwik-api.js b/plugins/CoreHome/angularjs/common/services/piwik-api.js
index aeed3bfe2c..ab546a7693 100644
--- a/plugins/CoreHome/angularjs/common/services/piwik-api.js
+++ b/plugins/CoreHome/angularjs/common/services/piwik-api.js
@@ -252,7 +252,7 @@ var hasBlockedContent = false;
getParams.format = 'JSON2';
}
- addParams(getParams, 'GET');
+ addParams(getParams);
var promise = send(options);
@@ -272,6 +272,12 @@ var hasBlockedContent = false;
return fetch(getParams, options);
}
+ function addPostParams(_postParams_) {
+ if (_postParams_) {
+ angular.merge(postParams, _postParams_);
+ }
+ }
+
/**
* Convenience method that will perform a bulk request using Piwik's API.getBulkRequest method.
* Bulk requests allow you to execute multiple Piwik requests with one HTTP request.
@@ -319,6 +325,7 @@ var hasBlockedContent = false;
bulkFetch: bulkFetch,
post: post,
fetch: fetch,
+ addPostParams: addPostParams,
/**
* @deprecated
*/
diff --git a/plugins/CoreHome/javascripts/broadcast.js b/plugins/CoreHome/javascripts/broadcast.js
index 3ec2a0821d..eecbc79a95 100644
--- a/plugins/CoreHome/javascripts/broadcast.js
+++ b/plugins/CoreHome/javascripts/broadcast.js
@@ -205,7 +205,11 @@ var broadcast = {
// if the module is not 'Goals', we specifically unset the 'idGoal' parameter
// this is to ensure that the URLs are clean (and that clicks on graphs work as expected - they are broken with the extra parameter)
var action = broadcast.getParamValue('action', currentHashStr);
- if (action != 'goalReport' && action != 'ecommerceReport' && action != 'products' && action != 'sales') {
+ if (action != 'goalReport'
+ && action != 'ecommerceReport'
+ && action != 'products'
+ && action != 'sales'
+ && (''+ ajaxUrl).indexOf('&idGoal=') === -1) {
currentHashStr = broadcast.updateParamValue('idGoal=', currentHashStr);
}
// unset idDashboard if use doesn't display a dashboard
diff --git a/plugins/CoreHome/javascripts/sparkline.js b/plugins/CoreHome/javascripts/sparkline.js
index 8f10a9f1eb..32e23a12aa 100644
--- a/plugins/CoreHome/javascripts/sparkline.js
+++ b/plugins/CoreHome/javascripts/sparkline.js
@@ -55,16 +55,18 @@ window.initializeSparklines = function () {
return;
}
- var sparklines = parent.find('div.sparkline');
+ var sparklines = parent.find('div.sparkline:not(.notLinkable)');
// try to find sparklines and add them clickable behaviour
sparklines.each(function () {
// find the sparkline and get it's src attribute
var sparklineUrl = $('img', this).attr('data-src');
+ var $this = $(this);
+
if (sparklineUrl != "") {
- $(this).addClass('linked');
+ $this.addClass('linked');
var params = broadcast.getValuesFromUrl(sparklineUrl);
for (var i = 0; i != sparklineUrlParamsToIgnore.length; ++i) {
@@ -80,8 +82,8 @@ window.initializeSparklines = function () {
}
// on click, reload the graph with the new url
- $(this).off('click.sparkline');
- $(this).on('click.sparkline', function () {
+ $this.off('click.sparkline');
+ $this.on('click.sparkline', function () {
var reportId = graph.attr('data-report'),
dataTable = graph;
diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js b/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js
index 76c6ff566d..f3d9680819 100644
--- a/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js
+++ b/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js
@@ -83,6 +83,14 @@
}
});
+ scope.$watch('formField.uiControlAttributes.disabled', function (val, oldVal) {
+ if (val !== oldVal) {
+ $timeout(function () {
+ $select.material_select();
+ });
+ }
+ });
+
} else if (hasUiControl(field, 'textarea')) {
element.find('textarea').trigger('autoresize');
scope.$watch('formField.value', function (val, oldVal) {
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
@@ -34,6 +34,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
* @var string
@@ -263,6 +269,25 @@ class Config extends \Piwik\ViewDataTable\Config
}
/**
+ * 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 @@
</div>
{% endif %}
- {% include "_sparklineFooter.twig" %}
+ {% if areSparklinesLinkable %}
+ {% include "_sparklineFooter.twig" %}
+ {% endif %}
+
+ {% if footerMessage is not empty %}
+ <div class='datatableFooterMessage'>{{ footerMessage | raw }}</div>
+ {% endif %}
{% if not isWidget %}
</div></div>
{% 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) %}
- <div class="sparkline">
+{% macro singleSparkline(sparkline, allMetricsDocumentation, areSparklinesLinkable) %}
+
+ <div class="sparkline {% if areSparklinesLinkable is defined and not areSparklinesLinkable %}notLinkable{% endif %}">
{% if sparkline.url %}{{ sparkline(sparkline.url)|raw }}{% endif %}
{% for metric in sparkline.metrics %}
<span {% if allMetricsDocumentation[metric.column] is defined and allMetricsDocumentation[metric.column] %}title="{{ allMetricsDocumentation[metric.column] }}"{% endif %}>
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');
diff --git a/plugins/Goals/Pages.php b/plugins/Goals/Pages.php
index 7366ebbd9e..7ec50e7e28 100644
--- a/plugins/Goals/Pages.php
+++ b/plugins/Goals/Pages.php
@@ -46,7 +46,7 @@ class Pages
$config->forceViewDataTable(Evolution::ID);
$config->setSubcategoryId($subcategory);
$config->setAction('getEvolutionGraph');
- $config->setOrder(++$this->orderId);
+ $config->setOrder(5);
$config->setIsNotWidgetizable();
$widgets[] = $config;
@@ -54,7 +54,7 @@ class Pages
$config->forceViewDataTable(Sparklines::ID);
$config->setSubcategoryId($subcategory);
$config->setName('');
- $config->setOrder(++$this->orderId);
+ $config->setOrder(15);
$config->setIsNotWidgetizable();
$widgets[] = $config;
@@ -67,7 +67,7 @@ class Pages
$config->setSubcategoryId($subcategory);
$config->forceViewDataTable(Sparklines::ID);
$config->setParameters(array('idGoal' => $goal['idgoal']));
- $config->setOrder(++$this->orderId);
+ $config->setOrder(25);
$config->setIsNotWidgetizable();
$config->addParameters(array('allow_multiple' => (int) $goal['allow_multiple'], 'only_summary' => '1'));
$widgets[] = $config;
@@ -78,7 +78,7 @@ class Pages
$config = $this->factory->createContainerWidget('Goals');
$config->setSubcategoryId($subcategory);
$config->setName('Goals_ConversionsOverviewBy');
- $config->setOrder(++$this->orderId);
+ $config->setOrder(35);
$config->setIsNotWidgetizable();
$this->buildGoalByDimensionView('', $config);
$config->setMiddlewareParameters(array(
@@ -104,7 +104,7 @@ class Pages
$config->setCategoryId($category);
$config->setSubcategoryId($subcategory);
$config->setAction('getEvolutionGraph');
- $config->setOrder(++$this->orderId);
+ $config->setOrder(5);
$config->setIsNotWidgetizable();
$config->setParameters(array('idGoal' => $idGoal));
$widgets[] = $config;
@@ -117,7 +117,7 @@ class Pages
$config->setModule('Ecommerce');
$config->setAction('getSparklines');
$config->setParameters(array('idGoal' => $idGoal));
- $config->setOrder(++$this->orderId);
+ $config->setOrder(15);
$config->setIsNotWidgetizable();
$widgets[] = $config;
@@ -127,7 +127,7 @@ class Pages
$config->setSubcategoryId($idGoal);
$config->setName('Goals_ConversionsOverview');
$config->setParameters(array('idGoal' => $idGoal));
- $config->setOrder(++$this->orderId);
+ $config->setOrder(25);
$config->setIsNotWidgetizable();
$config->setMiddlewareParameters(array(
'module' => 'Goals',
@@ -154,7 +154,7 @@ class Pages
$config->setSubcategoryId($subcategory);
$config->setName('');
$config->setParameters(array('idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER));
- $config->setOrder(++$this->orderId);
+ $config->setOrder(5);
$config->setIsNotWidgetizable();
$this->buildGoalByDimensionView(Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER, $config);
@@ -178,7 +178,7 @@ class Pages
$config->forceViewDataTable(Evolution::ID);
$config->setAction('getEvolutionGraph');
$config->setParameters($params);
- $config->setOrder(++$this->orderId);
+ $config->setOrder(5);
$config->setIsNotWidgetizable();
$widgets[] = $config;
@@ -188,8 +188,7 @@ class Pages
$config->forceViewDataTable(Sparklines::ID);
$config->setParameters($params);
$config->addParameters(array('allow_multiple' => (int) $goal['allow_multiple']));
- $config->setOrder(++$this->orderId);
- $config->setIsNotWidgetizable();
+ $config->setOrder(15);
$config->setIsNotWidgetizable();
$widgets[] = $config;
@@ -198,7 +197,7 @@ class Pages
$config->setSubcategoryId($idGoal);
$config->setName('Goals_ConversionsOverview');
$config->setParameters($params);
- $config->setOrder(++$this->orderId);
+ $config->setOrder(25);
$config->setIsNotWidgetizable();
$config->setMiddlewareParameters(array(
'module' => 'Goals',
@@ -215,7 +214,7 @@ class Pages
$config->setName(Piwik::translate('Goals_GoalConversionsBy', array($name)));
$config->setSubcategoryId($idGoal);
$config->setParameters(array());
- $config->setOrder(++$this->orderId);
+ $config->setOrder(35);
$config->setIsNotWidgetizable();
$config->setMiddlewareParameters(array(
'module' => 'Goals',
diff --git a/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js b/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js
index 3f0c4bfa8a..c2eb80eca1 100644
--- a/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js
+++ b/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js
@@ -7,9 +7,9 @@
(function () {
angular.module('piwikApp').controller('ManageGoalsController', ManageGoalsController);
- ManageGoalsController.$inject = ['piwik', 'piwikApi', '$timeout', '$location', 'reportingMenuModel'];
+ ManageGoalsController.$inject = ['piwik', 'piwikApi', '$timeout', '$location', 'reportingMenuModel', '$rootScope'];
- function ManageGoalsController(piwik, piwikApi, $timeout, $location, reportingMenuModel) {
+ function ManageGoalsController(piwik, piwikApi, $timeout, $location, reportingMenuModel, $rootScope) {
// remember to keep controller very simple. Create a service/factory (model) if needed
var self = this;
@@ -29,6 +29,8 @@
function initGoalForm(goalMethodAPI, submitText, goalName, description, matchAttribute, pattern, patternType, caseSensitive, revenue, allowMultiple, goalId) {
+ $rootScope.$emit('Goals.beforeInitGoalForm', goalMethodAPI, goalId);
+
self.goal = {};
self.goal.name = goalName;
self.goal.description = description;
@@ -100,6 +102,19 @@
parameters.idGoal = this.goal.goalId;
parameters.method = this.goal.apiMethod;
+ var isCreate = parameters.method === 'Goals.addGoal';
+ var isUpdate = parameters.method === 'Goals.updateGoal';
+
+ if (isUpdate) {
+ $rootScope.$emit('Goals.beforeUpdateGoal', parameters, piwikApi);
+ } else if (isCreate) {
+ $rootScope.$emit('Goals.beforeAddGoal', parameters, piwikApi);
+ }
+
+ if (parameters && 'undefined' !== typeof parameters.cancelRequest && parameters.cancelRequest) {
+ return;
+ }
+
this.isLoading = true;
piwikApi.fetch(parameters).then(function () {
@@ -129,6 +144,8 @@
}
this.showListOfReports = function (shouldScrollToTop) {
+ $rootScope.$emit('Goals.cancelForm');
+
this.showGoalList = true;
this.showEditGoal = false;
scrollToTop();
diff --git a/plugins/Goals/templates/_formAddGoal.twig b/plugins/Goals/templates/_formAddGoal.twig
index 6b72514f34..9505ac1898 100644
--- a/plugins/Goals/templates/_formAddGoal.twig
+++ b/plugins/Goals/templates/_formAddGoal.twig
@@ -139,6 +139,8 @@
inline-help="{{ 'Goals_DefaultRevenueHelp'|translate|e('html_attr') }}">
</div>
+ {{ postEvent("Template.endGoalEditTable") }}
+
<input type="hidden" name="goalIdUpdate" value=""/>
<div piwik-save-button
saving="manageGoals.isLoading"
diff --git a/plugins/Goals/templates/_listGoalEdit.twig b/plugins/Goals/templates/_listGoalEdit.twig
index aab0b77ca0..4496f4fef6 100644
--- a/plugins/Goals/templates/_listGoalEdit.twig
+++ b/plugins/Goals/templates/_listGoalEdit.twig
@@ -28,6 +28,7 @@
<th>{{ 'General_Description'|translate }}</th>
<th>{{ 'Goals_GoalIsTriggeredWhen'|translate }}</th>
<th>{{ 'General_ColumnRevenue'|translate }}</th>
+ {{ postEvent("Template.beforeGoalListActionsHead") }}
{% if userCanEditGoals %}
<th>{{ 'General_Edit'|translate }}</th>
<th>{{ 'General_Delete'|translate }}</th>
@@ -44,7 +45,7 @@
</tr>
{% else %}
{% for goal in goals %}
- <tr>
+ <tr id="{{ goal.idgoal }}">
<td class="first">{{ goal.idgoal }}</td>
<td>{{ goal.name }}</td>
<td>{{ goal.description }}</td>
@@ -57,6 +58,7 @@
<td class="center">
{% if goal.revenue==0 %}-{% else %}{{ goal.revenue|money(idSite)|raw }}{% endif %}
</td>
+ {{ postEvent("Template.beforeGoalListActionsBody", goal) }}
{% if userCanEditGoals %}
<td style="padding-top:2px">
<button ng-click="manageGoals.editGoal({{ goal.idgoal }})" class="table-action" title="{{ 'General_Edit'|translate }}">
diff --git a/plugins/ProfessionalServices/ProfessionalServices.php b/plugins/ProfessionalServices/ProfessionalServices.php
index 442f29edfe..dab1c2af2d 100644
--- a/plugins/ProfessionalServices/ProfessionalServices.php
+++ b/plugins/ProfessionalServices/ProfessionalServices.php
@@ -13,14 +13,14 @@ use Piwik\Common;
class ProfessionalServices extends \Piwik\Plugin
{
/**
- * @see Piwik\Plugin::registerEvents
+ * @see \Piwik\Plugin::registerEvents
*/
public function registerEvents()
{
return array(
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'Request.getRenamedModuleAndAction' => 'renameProfessionalServicesModule',
- 'Template.afterGoalConversionOverviewReport' => 'getGoalOverviewPromo',
+ 'Template.afterGoalConversionOverviewReport' => array('function' => 'getGoalOverviewPromo', 'after' => true),
'Template.afterEventsReport' => 'getEventsPromo',
);
}
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
index 2cbc2807d4..75524fb54c 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
@@ -1430,7 +1430,7 @@
<name>Goal 1 - Thank you</name>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>15</order>
+ <order>2</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -1456,7 +1456,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>13</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -1484,7 +1484,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>14</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -1513,7 +1513,7 @@
</subcategory>
<module>Goals</module>
<action>goalConversionsOverview</action>
- <order>15</order>
+ <order>25</order>
<parameters>
<module>Goals</module>
<action>goalConversionsOverview</action>
@@ -1535,7 +1535,7 @@
<name>Goal Goal 1 - Thank you conversions by type of visit</name>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>17</order>
+ <order>35</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2037,7 +2037,7 @@
<name>Goal 2 - Hello</name>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>20</order>
+ <order>3</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2063,7 +2063,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>18</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -2091,7 +2091,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>19</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -2120,7 +2120,7 @@
</subcategory>
<module>Goals</module>
<action>goalConversionsOverview</action>
- <order>20</order>
+ <order>25</order>
<parameters>
<module>Goals</module>
<action>goalConversionsOverview</action>
@@ -2142,7 +2142,7 @@
<name>Goal Goal 2 - Hello conversions by type of visit</name>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>22</order>
+ <order>35</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2644,7 +2644,7 @@
<name>triggered js</name>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>25</order>
+ <order>4</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2670,7 +2670,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>23</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -2698,7 +2698,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>24</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -2749,7 +2749,7 @@
<name>Goal triggered js conversions by type of visit</name>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>27</order>
+ <order>35</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -3251,7 +3251,7 @@
<name>Overview</name>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>5</order>
+ <order>0</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -3277,7 +3277,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>1</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -3304,7 +3304,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>2</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -3331,7 +3331,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>3</order>
+ <order>25</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -3361,7 +3361,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>4</order>
+ <order>25</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -3391,7 +3391,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>5</order>
+ <order>25</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -3412,7 +3412,7 @@
<name>Conversions overview by type of visit</name>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>7</order>
+ <order>35</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -3969,7 +3969,7 @@
<name>Overview</name>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>10</order>
+ <order>1</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -3995,7 +3995,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>8</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -4023,7 +4023,7 @@
</subcategory>
<module>Ecommerce</module>
<action>getSparklines</action>
- <order>9</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -4051,7 +4051,7 @@
</subcategory>
<module>Ecommerce</module>
<action>getConversionsOverview</action>
- <order>10</order>
+ <order>25</order>
<parameters>
<module>Ecommerce</module>
<action>getConversionsOverview</action>
@@ -4197,7 +4197,7 @@
<name />
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>12</order>
+ <order>5</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
index 17adcdc0ad..2607e36f1d 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
@@ -1740,7 +1740,7 @@
</subcategory>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>10</order>
+ <order>1</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -1766,7 +1766,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>8</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -1794,7 +1794,7 @@
</subcategory>
<module>Ecommerce</module>
<action>getSparklines</action>
- <order>9</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -1822,7 +1822,7 @@
</subcategory>
<module>Ecommerce</module>
<action>getConversionsOverview</action>
- <order>10</order>
+ <order>25</order>
<parameters>
<module>Ecommerce</module>
<action>getConversionsOverview</action>
@@ -2028,7 +2028,7 @@
</subcategory>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>5</order>
+ <order>0</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2054,7 +2054,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>1</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -2081,7 +2081,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>2</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -2108,7 +2108,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>3</order>
+ <order>25</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -2138,7 +2138,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>4</order>
+ <order>25</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -2168,7 +2168,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>5</order>
+ <order>25</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -2200,7 +2200,7 @@
</subcategory>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>15</order>
+ <order>2</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2226,7 +2226,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>13</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -2254,7 +2254,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>14</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -2283,7 +2283,7 @@
</subcategory>
<module>Goals</module>
<action>goalConversionsOverview</action>
- <order>15</order>
+ <order>25</order>
<parameters>
<module>Goals</module>
<action>goalConversionsOverview</action>
@@ -2316,7 +2316,7 @@
</subcategory>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>20</order>
+ <order>3</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2342,7 +2342,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>18</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -2370,7 +2370,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>19</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>
@@ -2399,7 +2399,7 @@
</subcategory>
<module>Goals</module>
<action>goalConversionsOverview</action>
- <order>20</order>
+ <order>25</order>
<parameters>
<module>Goals</module>
<action>goalConversionsOverview</action>
@@ -2432,7 +2432,7 @@
</subcategory>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
- <order>25</order>
+ <order>4</order>
<parameters>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2458,7 +2458,7 @@
</subcategory>
<module>Goals</module>
<action>getEvolutionGraph</action>
- <order>23</order>
+ <order>5</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>graphEvolution</viewDataTable>
@@ -2486,7 +2486,7 @@
</subcategory>
<module>Goals</module>
<action>get</action>
- <order>24</order>
+ <order>15</order>
<parameters>
<forceView>1</forceView>
<viewDataTable>sparklines</viewDataTable>