Skip to content
Extraits de code Groupes Projets
Valider db1cbef7 rédigé par Thomas Steur's avatar Thomas Steur
Parcourir les fichiers

refs #2174 some code tweaks

parent e2cb9183
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -242,6 +242,7 @@ class API extends \Piwik\Plugin\API ...@@ -242,6 +242,7 @@ class API extends \Piwik\Plugin\API
// use past data to calculate evolution percentages // use past data to calculate evolution percentages
$this->calculateEvolutionPercentages($dataTable, $pastData, $apiMetrics); $this->calculateEvolutionPercentages($dataTable, $pastData, $apiMetrics);
Common::destroy($pastData);
} }
// remove eCommerce related metrics on non eCommerce Piwik sites // remove eCommerce related metrics on non eCommerce Piwik sites
......
...@@ -20,7 +20,7 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp ...@@ -20,7 +20,7 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp
* This structure allows us to display the sites within a group directly under the group without big logic and also * This structure allows us to display the sites within a group directly under the group without big logic and also
* allows us to calculate the summary for each group easily * allows us to calculate the summary for each group easily
*/ */
var allSites = []; var allSitesByGroup = [];
var model = {}; var model = {};
// those sites are going to be displayed // those sites are going to be displayed
...@@ -31,7 +31,6 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp ...@@ -31,7 +31,6 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp
model.totalVisits = '?'; model.totalVisits = '?';
model.totalActions = '?'; model.totalActions = '?';
model.totalRevenue = '?'; model.totalRevenue = '?';
model.prettyDate = '';
model.searchTerm = ''; model.searchTerm = '';
model.lastVisits = '?'; model.lastVisits = '?';
model.lastVisitsDate = '?' model.lastVisitsDate = '?'
...@@ -77,24 +76,17 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp ...@@ -77,24 +76,17 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp
}); });
} }
model.updateWebsitesList = function (processedReport) { function createGroupsAndMoveSitesIntoRelatedGroup(allSitesUnordered, reportMetadata)
if (!processedReport) { {
model.errorLoadingSites = true;
return;
}
var allSitesUnordered = processedReport.reportData;
model.totalVisits = processedReport.reportTotal.nb_visits;
model.totalActions = processedReport.reportTotal.nb_actions;
model.totalRevenue = processedReport.reportTotal.revenue;
model.prettyDate = processedReport.prettyDate;
var sitesByGroup = []; var sitesByGroup = [];
var groups = {}; var groups = {};
// we do 3 things (complete site information, create groups, move sites into group) in one step for
// performance reason, there can be > 20k sites
angular.forEach(allSitesUnordered, function (site, index) { angular.forEach(allSitesUnordered, function (site, index) {
site.idsite = processedReport.reportMetadata[index].idsite; site.idsite = reportMetadata[index].idsite;
site.group = processedReport.reportMetadata[index].group; site.group = reportMetadata[index].group;
site.main_url = processedReport.reportMetadata[index].main_url; site.main_url = reportMetadata[index].main_url;
if (site.group) { if (site.group) {
...@@ -112,19 +104,32 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp ...@@ -112,19 +104,32 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp
} }
}); });
// calculate visits, pageviews, ... per group
calculateMetricsForEachGroup(groups); calculateMetricsForEachGroup(groups);
if (!sitesByGroup || !sitesByGroup.length) { return sitesByGroup;
}
model.updateWebsitesList = function (processedReport) {
if (!processedReport) {
model.errorLoadingSites = true;
return; return;
} }
allSites = sitesByGroup; var allSitesUnordered = processedReport.reportData;
model.totalVisits = processedReport.reportTotal.nb_visits;
model.totalActions = processedReport.reportTotal.nb_actions;
model.totalRevenue = processedReport.reportTotal.revenue;
var allSitesByGroup = createGroupsAndMoveSitesIntoRelatedGroup(allSitesUnordered, processedReport.reportMetadata);
if (!allSitesByGroup.length) {
return;
}
if (model.searchTerm) { if (model.searchTerm) {
model.searchSite(model.searchTerm); model.searchSite(model.searchTerm);
} else { } else {
model.sites = sitesByGroup; model.sites = allSitesByGroup;
} }
}; };
...@@ -156,12 +161,12 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp ...@@ -156,12 +161,12 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp
model.currentPage = model.currentPage + 1; model.currentPage = model.currentPage + 1;
}; };
function nestedSearch(sites, term) function nestedSearch(sitesByGroup, term)
{ {
var filteredSites = []; var filteredSites = [];
for (var index in sites) { for (var index in sitesByGroup) {
var site = sites[index]; var site = sitesByGroup[index];
if (site.isGroup) { if (site.isGroup) {
var matchingSites = nestedSearch(site.sites, term); var matchingSites = nestedSearch(site.sites, term);
if (matchingSites.length || (''+site.label).toLowerCase().indexOf(term) > -1) { if (matchingSites.length || (''+site.label).toLowerCase().indexOf(term) > -1) {
...@@ -182,7 +187,7 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp ...@@ -182,7 +187,7 @@ angular.module('piwikApp').factory('multisitesDashboardModel', function (piwikAp
model.searchSite = function (term) { model.searchSite = function (term) {
model.searchTerm = term; model.searchTerm = term;
model.currentPage = 0; model.currentPage = 0;
model.sites = nestedSearch(allSites, term); model.sites = nestedSearch(allSitesByGroup, term);
} }
function fetchPreviousSummary () { function fetchPreviousSummary () {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter