From fb5f11a5ca82b15eb419803e6e00ce6dfba515d0 Mon Sep 17 00:00:00 2001 From: Timo Besenreuther Date: Tue, 2 Apr 2013 14:40:45 +0200 Subject: [PATCH] refs #1700 performance analytics * adding avg_time_generation to Actions.get + integration tests * adding sparkline for average generation time to Visitors > Overview * changing number formatting to 0.XXs instead of XXXms + test cases * tooltip for reports with avg. generation time: "average based on X hit(s)" * log import: support generation_time_milli (not only generation_time_micro) * example for importing generation time from logs in read me --- core/Piwik.php | 13 +++--- lang/en.php | 3 +- misc/log-analytics/README.md | 10 +++++ misc/log-analytics/import_logs.py | 9 ++-- plugins/Actions/API.php | 41 ++++++++++++++---- plugins/Actions/Actions.php | 32 +++++++------- plugins/Actions/Archiving.php | 4 ++ plugins/Actions/Controller.php | 11 +++-- plugins/CoreHome/templates/datatable.css | 4 ++ plugins/CoreHome/templates/datatable.js | 16 +++++++ plugins/CoreHome/templates/datatable_cell.tpl | 3 ++ plugins/VisitsSummary/Controller.php | 2 + .../VisitsSummary/templates/sparklines.tpl | 5 +++ tests/PHPUnit/Core/PiwikTest.php | 12 ++--- .../PHPUnit/Fixtures/OneVisitorTwoVisits.php | 6 +++ .../Integration/OneVisitorTwoVisitsTest.php | 5 ++- .../test_ImportLogs__Actions.get_month.xml | 1 + ...Visits__Actions.getEntryPageTitles_day.xml | 6 +++ ...woVisits__Actions.getEntryPageUrls_day.xml | 6 +++ ...oVisits__Actions.getExitPageTitles_day.xml | 6 +++ ...TwoVisits__Actions.getExitPageUrls_day.xml | 6 +++ ...torTwoVisits__Actions.getPageTitle_day.xml | 2 + ...orTwoVisits__Actions.getPageTitles_day.xml | 10 +++++ ...sitorTwoVisits__Actions.getPageUrl_day.xml | 2 + ...itorTwoVisits__Actions.getPageUrls_day.xml | 10 +++++ ...t_OneVisitorTwoVisits__Actions.get_day.xml | 1 + ..._subtable__API.getProcessedReport_week.xml | 4 ++ ...OneVisitorTwoVisits_csv__API.get_month.csv | Bin 1778 -> 1856 bytes ...upport__Actions.getEntryPageTitles_day.xml | 6 +++ ...eSupport__Actions.getEntryPageUrls_day.xml | 6 +++ ...Support__Actions.getExitPageTitles_day.xml | 6 +++ ...ieSupport__Actions.getExitPageUrls_day.xml | 6 +++ ...ookieSupport__Actions.getPageTitle_day.xml | 2 + ...s.getPageTitlesFollowingSiteSearch_day.xml | 2 + ...okieSupport__Actions.getPageTitles_day.xml | 10 +++++ ...hCookieSupport__Actions.getPageUrl_day.xml | 2 + ...ons.getPageUrlsFollowingSiteSearch_day.xml | 2 + ...CookieSupport__Actions.getPageUrls_day.xml | 10 +++++ ...its_withCookieSupport__Actions.get_day.xml | 1 + ...Site_lastN__API.getProcessedReport_day.xml | 5 +++ ...te_lastN__API.getProcessedReport_month.xml | 4 ++ ...t_SiteSearch_AllSites__Actions.get_day.xml | 4 ++ ...SiteSearch_AllSites__Actions.get_month.xml | 3 ++ ...earch_NotLastNPeriods__Actions.get_day.xml | 1 + ...rch_NotLastNPeriods__Actions.get_month.xml | 1 + ...Site_lastN__API.getProcessedReport_day.xml | 8 ++-- ...Site_lastN__API.getProcessedReport_day.xml | 10 ++--- ...Reports.generateReport_month.original.html | 24 ++++++---- ...FReports.generateReport_month.original.pdf | Bin 466510 -> 466586 bytes ...ortMetadata__API.getReportMetadata_day.xml | 4 ++ ...test_apiGetReportMetadata__API.get_day.xml | 1 + ...ta_hideMetricsDoc__API.getMetadata_day.xml | 1 + ...MetricsDoc__API.getProcessedReport_day.xml | 3 ++ ...FReports.generateReport_week.original.html | 8 ++++ ...DFReports.generateReport_week.original.pdf | Bin 486668 -> 486749 bytes .../test_noVisit__Actions.get_day.xml | 1 + themes/default/common.css | 6 +++ 57 files changed, 304 insertions(+), 63 deletions(-) diff --git a/core/Piwik.php b/core/Piwik.php index 21a5a24d580..4915115d210 100644 --- a/core/Piwik.php +++ b/core/Piwik.php @@ -1417,9 +1417,9 @@ static public function getPrettyTimeFromSeconds($numberOfSeconds, $displayTimeAs $minutes = floor(($reminder = ($numberOfSeconds - $hours * 3600)) / 60); $seconds = floor($reminder - $minutes * 60); $time = sprintf("%02s", $hours) . ':' . sprintf("%02s", $minutes) . ':' . sprintf("%02s", $seconds); - $milliSeconds = ($numberOfSeconds * 1000) % 1000; - if ($milliSeconds) { - $time .= '.' . sprintf("%03s", $milliSeconds); + $centiSeconds = ($numberOfSeconds * 100) % 100; + if ($centiSeconds) { + $time .= '.' . sprintf("%02s", $centiSeconds); } return $time; } @@ -1435,8 +1435,7 @@ static public function getPrettyTimeFromSeconds($numberOfSeconds, $displayTimeAs $minutes = floor($minusDaysAndHours / 60); $seconds = $minusDaysAndHours - $minutes * 60; - - $milliSeconds = ($numberOfSeconds * 1000) % 1000; + $seconds = round($seconds, 2); if ($years > 0) { $return = sprintf(Piwik_Translate('General_YearsDays'), $years, $days); @@ -1446,9 +1445,7 @@ static public function getPrettyTimeFromSeconds($numberOfSeconds, $displayTimeAs $return = sprintf(Piwik_Translate('General_HoursMinutes'), $hours, $minutes); } elseif ($minutes > 0) { $return = sprintf(Piwik_Translate('General_MinutesSeconds'), $minutes, $seconds); - } elseif ($milliSeconds > 0 && $seconds < 1) { - $return = sprintf(Piwik_Translate('General_Milliseconds'), $milliSeconds); - } else { + } else { $return = sprintf(Piwik_Translate('General_Seconds'), $seconds); } if ($isHtml) { diff --git a/lang/en.php b/lang/en.php index 7366f4050ad..4e086d28c28 100644 --- a/lang/en.php +++ b/lang/en.php @@ -191,7 +191,6 @@ 'General_HoursMinutes' => '%1$s hours %2$s min', 'General_MinutesSeconds' => '%1$s min %2$ss', 'General_Seconds' => '%ss', - 'General_Milliseconds' => '%sms', 'General_Save' => 'Save', 'General_Faq' => 'FAQ', 'General_ForExampleShort' => 'eg.', @@ -439,6 +438,7 @@ 'Actions_SiteSearchCategories2' => 'For example, Ecommerce websites typically have a "Category" selector so that visitors can restrict their searches to all products in a specific Category.', 'Actions_SiteSearchKeywordsNoResultDocumentation' => 'This report lists the Search Keywords that did not return any Search result: maybe the search engine algorithm can be improved, or maybe your visitors are looking for content that is not (yet) on your website?', 'Actions_SiteSearchFollowingPagesDoc' => 'When visitors search on your website, they are looking for a particular page, content, product, or service. This report lists the pages that were clicked the most after an internal search. In other words, the list of pages the most searched for by visitors already on your website.', + 'Actions_AvgGenerationTimeTooltip' => 'Average based on %s hit(s)', 'AnonymizeIP_PluginDescription' => 'Anonymize the last byte(s) of visitors IP addresses to comply with your local privacy laws/guidelines.', 'API_PluginDescription' => 'All the data in Piwik is available through simple APIs. This plugin is the web service entry point, that you can call to get your Web Analytics data in xml, json, php, csv, etc.', 'API_QuickDocumentationTitle' => 'API quick documentation', @@ -1940,6 +1940,7 @@ 'VisitsSummary_MaxNbActions' => '%s max actions in one visit', 'VisitsSummary_NbActionsPerVisit' => '%s actions (page views, downloads, outlinks and internal site searches) per visit', 'VisitsSummary_NbVisitsBounced' => '%s visits have bounced (left the website after one page)', + 'VisitsSummary_AverageGenerationTime' => '%s average generation time', 'VisitsSummary_GenerateTime' => '%s seconds to generate the page', 'VisitsSummary_GenerateQueries' => '%s queries executed', 'VisitsSummary_WidgetLastVisits' => 'Visits Over Time', diff --git a/misc/log-analytics/README.md b/misc/log-analytics/README.md index 13b8a0ea87c..09dc2b623de 100644 --- a/misc/log-analytics/README.md +++ b/misc/log-analytics/README.md @@ -175,3 +175,13 @@ This log format can be specified for nginx access logs to capture multiple virtu * access_log /PATH/TO/access.log vhosts; When executing import_logs.py specify the "common_complete" format. + + +## Import Generation Time + +Apache can log the generation time in microseconds using %D in the LogFormat. +This metric can be imported using a custom log format in this script, which means that you have to specify a --log-format-regex parameter that contains the group generation_time_micro. + +Here's an example: +Apache LogFormat "%h %l %u %t \"%r\" %>s %b %D" +--log-format-regex="(?P\S+) \S+ \S+ \[(?P.*?) (?P.*?)\] \"\S+ (?P.*?) \S+\" (?P\S+) (?P\S+) (?P\S+)" \ No newline at end of file diff --git a/misc/log-analytics/import_logs.py b/misc/log-analytics/import_logs.py index 785c6c69dc1..3be72a186ca 100755 --- a/misc/log-analytics/import_logs.py +++ b/misc/log-analytics/import_logs.py @@ -1437,11 +1437,14 @@ def invalid_line(line, reason): except (ValueError, IndexError): # Some lines or formats don't have a length (e.g. 304 redirects, IIS logs) hit.length = 0 - + try: - hit.generation_time_milli = int(match.group('generation_time_micro')) / 1000 + hit.generation_time_milli = int(match.group('generation_time_milli')) except IndexError: - hit.generation_time_milli = 0 + try: + hit.generation_time_milli = int(match.group('generation_time_micro')) / 1000 + except IndexError: + hit.generation_time_milli = 0 if config.options.log_hostname: hit.host = config.options.log_hostname diff --git a/plugins/Actions/API.php b/plugins/Actions/API.php index 030f954d933..ad9d15e73e6 100644 --- a/plugins/Actions/API.php +++ b/plugins/Actions/API.php @@ -73,14 +73,15 @@ public function get($idSite, $period, $date, $segment = false, $columns = false) $archive = Piwik_Archive::build($idSite, $period, $date, $segment); $metrics = array( - 'Actions_nb_pageviews' => 'nb_pageviews', - 'Actions_nb_uniq_pageviews' => 'nb_uniq_pageviews', - 'Actions_nb_downloads' => 'nb_downloads', - 'Actions_nb_uniq_downloads' => 'nb_uniq_downloads', - 'Actions_nb_outlinks' => 'nb_outlinks', - 'Actions_nb_uniq_outlinks' => 'nb_uniq_outlinks', - 'Actions_nb_searches' => 'nb_searches', - 'Actions_nb_keywords' => 'nb_keywords', + 'Actions_nb_pageviews' => 'nb_pageviews', + 'Actions_nb_uniq_pageviews' => 'nb_uniq_pageviews', + 'Actions_nb_downloads' => 'nb_downloads', + 'Actions_nb_uniq_downloads' => 'nb_uniq_downloads', + 'Actions_nb_outlinks' => 'nb_outlinks', + 'Actions_nb_uniq_outlinks' => 'nb_uniq_outlinks', + 'Actions_nb_searches' => 'nb_searches', + 'Actions_nb_keywords' => 'nb_keywords', + 'Actions_avg_time_generation' => 'avg_time_generation' ); // get requested columns @@ -95,16 +96,38 @@ public function get($idSite, $period, $date, $segment = false, $columns = false) $columns[$i] = $fullColumn; $nameReplace[$fullColumn] = $column; } + + if (false !== ($avgGenerationTimeRequested = array_search('Actions_avg_time_generation', $columns))) { + unset($columns[$avgGenerationTimeRequested]); + $avgGenerationTimeRequested = true; + } } else { // get all columns + unset($metrics['Actions_avg_time_generation']); $columns = array_keys($metrics); $nameReplace = & $metrics; + $avgGenerationTimeRequested = true; } - + + if ($avgGenerationTimeRequested) { + $tempColumns[] = 'Actions_sum_time_generation'; + $tempColumns[] = 'Actions_nb_hits_with_time_generation'; + $nameReplace['Actions_sum_time_generation'] = 'sum_time_generation'; + $nameReplace['Actions_nb_hits_with_time_generation'] = 'nb_hits_with_time_generation'; + $columns = array_merge($columns, $tempColumns); + $columns = array_unique($columns); + } + $table = $archive->getDataTableFromNumeric($columns); // replace labels (remove Actions_) $table->filter('ReplaceColumnNames', array($nameReplace)); + + // compute avg generation time + if ($avgGenerationTimeRequested) { + $table->filter('ColumnCallbackAddColumnQuotient', array('avg_time_generation', 'sum_time_generation', 'nb_hits_with_time_generation', 3)); + $table->deleteColumns(array('sum_time_generation', 'nb_hits_with_time_generation')); + } return $table; } diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php index f5bd2674cae..097d2e3dee0 100644 --- a/plugins/Actions/Actions.php +++ b/plugins/Actions/Actions.php @@ -185,23 +185,25 @@ public function getReportMetadata($notification) 'module' => 'Actions', 'action' => 'get', 'metrics' => array( - 'nb_pageviews' => Piwik_Translate('General_ColumnPageviews'), - 'nb_uniq_pageviews' => Piwik_Translate('General_ColumnUniquePageviews'), - 'nb_downloads' => Piwik_Translate('Actions_ColumnDownloads'), - 'nb_uniq_downloads' => Piwik_Translate('Actions_ColumnUniqueDownloads'), - 'nb_outlinks' => Piwik_Translate('Actions_ColumnOutlinks'), - 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueOutlinks'), - 'nb_searches' => Piwik_Translate('Actions_ColumnSearches'), - 'nb_keywords' => Piwik_Translate('Actions_ColumnSiteSearchKeywords'), + 'nb_pageviews' => Piwik_Translate('General_ColumnPageviews'), + 'nb_uniq_pageviews' => Piwik_Translate('General_ColumnUniquePageviews'), + 'nb_downloads' => Piwik_Translate('Actions_ColumnDownloads'), + 'nb_uniq_downloads' => Piwik_Translate('Actions_ColumnUniqueDownloads'), + 'nb_outlinks' => Piwik_Translate('Actions_ColumnOutlinks'), + 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueOutlinks'), + 'nb_searches' => Piwik_Translate('Actions_ColumnSearches'), + 'nb_keywords' => Piwik_Translate('Actions_ColumnSiteSearchKeywords'), + 'avg_time_generation' => Piwik_Translate('General_ColumnAverageGenerationTime'), ), 'metricsDocumentation' => array( - 'nb_pageviews' => Piwik_Translate('General_ColumnPageviewsDocumentation'), - 'nb_uniq_pageviews' => Piwik_Translate('General_ColumnUniquePageviewsDocumentation'), - 'nb_downloads' => Piwik_Translate('Actions_ColumnClicksDocumentation'), - 'nb_uniq_downloads' => Piwik_Translate('Actions_ColumnUniqueClicksDocumentation'), - 'nb_outlinks' => Piwik_Translate('Actions_ColumnClicksDocumentation'), - 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueClicksDocumentation'), - 'nb_searches' => Piwik_Translate('Actions_ColumnSearchesDocumentation'), + 'nb_pageviews' => Piwik_Translate('General_ColumnPageviewsDocumentation'), + 'nb_uniq_pageviews' => Piwik_Translate('General_ColumnUniquePageviewsDocumentation'), + 'nb_downloads' => Piwik_Translate('Actions_ColumnClicksDocumentation'), + 'nb_uniq_downloads' => Piwik_Translate('Actions_ColumnUniqueClicksDocumentation'), + 'nb_outlinks' => Piwik_Translate('Actions_ColumnClicksDocumentation'), + 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueClicksDocumentation'), + 'nb_searches' => Piwik_Translate('Actions_ColumnSearchesDocumentation'), + 'avg_time_generation' => Piwik_Translate('General_ColumnAverageGenerationTimeDocumentation'), // 'nb_keywords' => Piwik_Translate('Actions_ColumnSiteSearchKeywords'), ), 'processedMetrics' => false, diff --git a/plugins/Actions/Archiving.php b/plugins/Actions/Archiving.php index db71faf7885..848b4cc5627 100644 --- a/plugins/Actions/Archiving.php +++ b/plugins/Actions/Archiving.php @@ -74,6 +74,8 @@ public function archivePeriod(Piwik_ArchiveProcessing $archiveProcessing) 'Actions_nb_outlinks', 'Actions_nb_uniq_outlinks', 'Actions_nb_searches', + 'Actions_sum_time_generation', + 'Actions_nb_hits_with_time_generation', )); // Unique Keywords can't be summed, instead we take the RowsCount() of the keyword table @@ -359,6 +361,8 @@ protected function archiveDayRecordInDatabase($archiveProcessing) $archiveProcessing->insertBlobRecord('Actions_actions_url', $s); $archiveProcessing->insertNumericRecord('Actions_nb_pageviews', array_sum($dataTable->getColumn(Piwik_Archive::INDEX_PAGE_NB_HITS))); $archiveProcessing->insertNumericRecord('Actions_nb_uniq_pageviews', array_sum($dataTable->getColumn(Piwik_Archive::INDEX_NB_VISITS))); + $archiveProcessing->insertNumericRecord('Actions_sum_time_generation', array_sum($dataTable->getColumn(Piwik_Archive::INDEX_PAGE_SUM_TIME_GENERATION))); + $archiveProcessing->insertNumericRecord('Actions_nb_hits_with_time_generation', array_sum($dataTable->getColumn(Piwik_Archive::INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION))); destroy($dataTable); $dataTable = $this->actionsTablesByType[Piwik_Tracker_Action::TYPE_DOWNLOAD]; diff --git a/plugins/Actions/Controller.php b/plugins/Actions/Controller.php index aed8efd6832..1744a63155d 100644 --- a/plugins/Actions/Controller.php +++ b/plugins/Actions/Controller.php @@ -385,9 +385,14 @@ protected function configureViewActions($view, $doSetTranslations = true) $view->setColumnTranslation('bounce_rate', Piwik_Translate('General_ColumnBounceRate')); $view->setColumnTranslation('exit_rate', Piwik_Translate('General_ColumnExitRate')); $view->setColumnTranslation('avg_time_generation', Piwik_Translate('General_ColumnAverageGenerationTime')); - $view->queueFilter('ColumnCallbackReplace', array('avg_time_on_page', array('Piwik', 'getPrettyTimeFromSeconds'))); - $view->queueFilter('ColumnCallbackReplace', array('avg_time_generation', - create_function('$averageTimeOnSite', 'return $averageTimeOnSite ? Piwik::getPrettyTimeFromSeconds($averageTimeOnSite, true, true, false) : "-";'))); + + $view->queueFilter('ColumnCallbackReplace', array('avg_time_on_page', array('Piwik', 'getPrettyTimeFromSeconds'))); + + $avgTimeCallback = create_function('$time', 'return $time ? Piwik::getPrettyTimeFromSeconds($time, true, true, false) : "-";'); + $view->queueFilter('ColumnCallbackReplace', array('avg_time_generation', $avgTimeCallback)); + + $tooltipCallback = create_function('$hits', 'return $hits ? Piwik_Translate("Actions_AvgGenerationTimeTooltip", $hits) : false;'); + $view->queueFilter('ColumnCallbackAddMetadata', array('nb_hits_with_time_generation', 'avg_time_generation_tooltip', $tooltipCallback)); } if (Piwik_Common::getRequestVar('enable_filter_excludelowpop', '0', 'string') != '0') { diff --git a/plugins/CoreHome/templates/datatable.css b/plugins/CoreHome/templates/datatable.css index dfaf958e01e..daddbc86b0f 100644 --- a/plugins/CoreHome/templates/datatable.css +++ b/plugins/CoreHome/templates/datatable.css @@ -803,3 +803,7 @@ a.tableConfigurationIcon.highlighted { .tableConfiguration div.configItem span.action { color: #255792; } + +table.dataTable span.cell-tooltip { + cursor: default; +} \ No newline at end of file diff --git a/plugins/CoreHome/templates/datatable.js b/plugins/CoreHome/templates/datatable.js index 2a8f437d650..c5553ca4f6b 100644 --- a/plugins/CoreHome/templates/datatable.js +++ b/plugins/CoreHome/templates/datatable.js @@ -223,6 +223,7 @@ dataTable.prototype = self.handleColumnDocumentation(domElem); self.handleReportDocumentation(domElem); self.handleRowActions(domElem); + self.handleCellTooltips(domElem); self.handleRelatedReports(domElem); self.handleTriggeredEvents(domElem); }, @@ -1312,6 +1313,19 @@ dataTable.prototype = handleRowActions: function (domElem) { this.doHandleRowActions(domElem.find('table > tbody > tr')); }, + + handleCellTooltips: function(domElem) { + domElem.find('span.cell-tooltip').tooltip({ + track: true, + items: 'span', + content: function() { + return $(this).data('tooltip'); + }, + show: false, + hide: false, + tooltipClass: 'small' + }); + }, handleRelatedReports: function (domElem) { var self = this, @@ -1576,6 +1590,7 @@ actionDataTable.prototype = notifyWidgetParametersChange: dataTable.prototype.notifyWidgetParametersChange, handleRelatedReports: dataTable.prototype.handleRelatedReports, handleTriggeredEvents: dataTable.prototype.handleTriggeredEvents, + handleCellTooltips: dataTable.prototype.handleCellTooltips, _findReportHeader: dataTable.prototype._findReportHeader, //initialisation of the actionDataTable @@ -1627,6 +1642,7 @@ actionDataTable.prototype = self.handleReportDocumentation(domElem); self.handleRelatedReports(domElem); self.handleTriggeredEvents(domElem); + self.handleCellTooltips(domElem); }, //see dataTable::applyCosmetics diff --git a/plugins/CoreHome/templates/datatable_cell.tpl b/plugins/CoreHome/templates/datatable_cell.tpl index 3b1ec5cd98a..0ecb4bd04c5 100644 --- a/plugins/CoreHome/templates/datatable_cell.tpl +++ b/plugins/CoreHome/templates/datatable_cell.tpl @@ -1,3 +1,5 @@ +{assign var="tooltipIndex" value=$column|cat:"_tooltip"} +{if isset($row.metadata[$tooltipIndex])}{/if} {if !$row.idsubdatatable && $column=='label' && !empty($row.metadata.url)} {if empty($row.metadata.logo)} @@ -16,3 +18,4 @@ {if !$row.idsubdatatable && $column=='label' && !empty($row.metadata.url)} {/if} +{if isset($row.metadata[$tooltipIndex])}{/if} \ No newline at end of file diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php index 86ebf7b5ac9..5857a7a34d1 100644 --- a/plugins/VisitsSummary/Controller.php +++ b/plugins/VisitsSummary/Controller.php @@ -116,6 +116,7 @@ protected function setSparklinesAndNumbers($view) $view->urlSparklineMaxActions = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('max_actions'))); $view->urlSparklineActionsPerVisit = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_actions_per_visit'))); $view->urlSparklineBounceRate = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('bounce_rate'))); + $view->urlSparklineAvgGenerationTime = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('avg_time_generation'))); $idSite = Piwik_Common::getRequestVar('idSite'); $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite); @@ -145,6 +146,7 @@ protected function setSparklinesAndNumbers($view) $view->bounceRate = Piwik::getPercentageSafe($nbBouncedVisits, $nbVisits); $view->maxActions = (int)$dataRow->getColumn('max_actions'); $view->nbActionsPerVisit = $dataRow->getColumn('nb_actions_per_visit'); + $view->averageGenerationTime = $dataActionsRow->getColumn('avg_time_generation'); if ($displaySiteSearch) { $view->nbSearches = (int)$dataActionsRow->getColumn('nb_searches'); diff --git a/plugins/VisitsSummary/templates/sparklines.tpl b/plugins/VisitsSummary/templates/sparklines.tpl index a0302f407a9..f57aa9ee94d 100644 --- a/plugins/VisitsSummary/templates/sparklines.tpl +++ b/plugins/VisitsSummary/templates/sparklines.tpl @@ -17,6 +17,11 @@ {sparkline src=$urlSparklineActionsPerVisit} {'VisitsSummary_NbActionsPerVisit'|translate:"$nbActionsPerVisit"} +
+ {sparkline src=$urlSparklineAvgGenerationTime} + {assign var=averageGenerationTime value=$averageGenerationTime|sumtime} + {'VisitsSummary_AverageGenerationTime'|translate:"$averageGenerationTime"} +
diff --git a/tests/PHPUnit/Core/PiwikTest.php b/tests/PHPUnit/Core/PiwikTest.php index 87889904dc8..66e2514a7bf 100644 --- a/tests/PHPUnit/Core/PiwikTest.php +++ b/tests/PHPUnit/Core/PiwikTest.php @@ -88,11 +88,13 @@ public function getPrettyTimeFromSecondsData() array(86400 + 3600 * 10, array('1 days 10 hours', '34:00:00')), array(86400 * 365, array('365 days 0 hours', '8760:00:00')), array((86400 * (365.25 + 10)), array('1 years 10 days', '9006:00:00')), - array(1.342, array('1.342s', '00:00:01.342')), - array(.342, array('342ms', '00:00:00.342')), - array(.02, array('20ms', '00:00:00.020')), - array(1.002, array('1.002s', '00:00:01.002')), - array(122.1, array('2 min 2.1s', '00:02:02.100')) + array(1.342, array('1.34s', '00:00:01.34')), + array(.342, array('0.34s', '00:00:00.34')), + array(.02, array('0.02s', '00:00:00.02')), + array(1.002, array('1s', '00:00:01')), + array(1.02, array('1.02s', '00:00:01.02')), + array(1.2, array('1.2s', '00:00:01.20')), + array(122.1, array('2 min 2.1s', '00:02:02.10')) ); } diff --git a/tests/PHPUnit/Fixtures/OneVisitorTwoVisits.php b/tests/PHPUnit/Fixtures/OneVisitorTwoVisits.php index bba9bdcd546..fa4f246e942 100644 --- a/tests/PHPUnit/Fixtures/OneVisitorTwoVisits.php +++ b/tests/PHPUnit/Fixtures/OneVisitorTwoVisits.php @@ -76,12 +76,14 @@ private function trackVisits() // Record 1st page view $urlPage1 = 'http://example.org/index.htm?excluded_Parameter=SHOULD_NOT_DISPLAY¶meter=Should display'; $t->setUrl($urlPage1); + $t->setGenerationTime(234); self::checkResponse($t->doTrackPageView('incredible title!')); // testing that / and index.htm above record with different URLs // Recording the 2nd page after 3 minutes $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.05)->getDatetime()); $t->setUrl('http://example.org/'); + $t->setGenerationTime(224); self::checkResponse($t->doTrackPageView('Second page view - should be registered as URL /')); // Click on external link after 6 minutes (3rd action) @@ -116,16 +118,19 @@ private function trackVisits() // Site Search request $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.42)->getDatetime()); $t->setUrl('http://example.org/index.htm?q=Banks Own The World'); + $t->setGenerationTime(812); self::checkResponse($t->doTrackPageView('Site Search request')); // Final page view (after 27 min) $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.45)->getDatetime()); $t->setUrl('http://example.org/index.htm'); + $t->setGenerationTime(24); self::checkResponse($t->doTrackPageView('Looking at homepage after site search...')); } else { // Final page view (after 27 min) $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.45)->getDatetime()); $t->setUrl('http://example.org/index.htm#ignoredFragment#'); + $t->setGenerationTime(23); self::checkResponse($t->doTrackPageView('Looking at homepage (again)...')); } @@ -144,6 +149,7 @@ private function trackVisits() $t->DEBUG_APPEND_URL = '&_idvc=2'; // Goal Tracking URL matching, testing custom referer including keyword + $t->setGenerationTime(134); self::checkResponse($t->doTrackPageView('Checkout/Purchasing...')); // - // End of second visit diff --git a/tests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php b/tests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php index 5d07e49b240..f8d1468e395 100755 --- a/tests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php +++ b/tests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php @@ -106,7 +106,8 @@ public function getApiForTesting() 'apiAction' => 'getPageTitles', 'testSuffix' => '_hideColumns_', 'otherRequestParameters' => array( 'hideColumns' => 'nb_visits_converted,xyzaug,entry_nb_visits,' . - 'bounce_rate,nb_hits,nb_visits,avg_time_on_page,avg_time_generation' + 'bounce_rate,nb_hits,nb_visits,avg_time_on_page,' . + 'avg_time_generation,nb_hits_with_time_generation' ))), array('API.getProcessedReport', array('idSite' => $idSite, 'date' => $dateTime, @@ -132,7 +133,7 @@ public function getApiForTesting() 'bounce_rate,nb_hits,nb_visits,sum_time_spent,' . 'entry_sum_visit_length,entry_bounce_count,exit_nb_visits,' . 'entry_nb_uniq_visitors,exit_nb_uniq_visitors,entry_nb_actions,' . - 'avg_time_generation', + 'avg_time_generation,nb_hits_with_time_generation', 'expanded' => '1' ))), ); diff --git a/tests/PHPUnit/Integration/expected/test_ImportLogs__Actions.get_month.xml b/tests/PHPUnit/Integration/expected/test_ImportLogs__Actions.get_month.xml index 19323ec6b32..5c94d826782 100755 --- a/tests/PHPUnit/Integration/expected/test_ImportLogs__Actions.get_month.xml +++ b/tests/PHPUnit/Integration/expected/test_ImportLogs__Actions.get_month.xml @@ -8,4 +8,5 @@ 0 0 0 + 0 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getEntryPageTitles_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getEntryPageTitles_day.xml index 1179612cd48..5302932c1d5 100755 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getEntryPageTitles_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getEntryPageTitles_day.xml @@ -5,6 +5,7 @@ 1 1 0 + 1 1 1 0 @@ -13,6 +14,7 @@ 0 100% 100% + 0.134 @@ -20,6 +22,7 @@ 1 1 0 + 1 1 1 1 @@ -30,6 +33,7 @@ 0 100% 100% + 0.134 @@ -39,6 +43,7 @@ 1 1 180 + 1 1 1 7 @@ -47,5 +52,6 @@ 180 0% 0% + 0.234 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getEntryPageUrls_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getEntryPageUrls_day.xml index 7fa327713e7..b7e57ccfe17 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getEntryPageUrls_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getEntryPageUrls_day.xml @@ -6,6 +6,7 @@ 1 1 180 + 1 1 1 7 @@ -14,6 +15,7 @@ 180 0% 0% + 0.234 http://example.org/index.htm?parameter=Should display @@ -21,6 +23,7 @@ 1 1 0 + 1 1 1 0 @@ -29,6 +32,7 @@ 0 100% 100% + 0.134 @@ -36,6 +40,7 @@ 1 1 0 + 1 1 1 1 @@ -46,6 +51,7 @@ 0 100% 100% + 0.134 http://example.org/store/purchase.htm diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getExitPageTitles_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getExitPageTitles_day.xml index 2ee22ef5cf9..326ba6eef51 100755 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getExitPageTitles_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getExitPageTitles_day.xml @@ -5,6 +5,7 @@ 1 1 0 + 1 1 1 0 @@ -13,6 +14,7 @@ 0 100% 100% + 0.134 @@ -20,6 +22,7 @@ 1 1 0 + 1 1 1 1 @@ -30,6 +33,7 @@ 0 100% 100% + 0.134 @@ -39,10 +43,12 @@ 1 1 0 + 1 1 1 0 0% 100% + 0.023 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getExitPageUrls_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getExitPageUrls_day.xml index 943302c2057..17dda0f1d27 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getExitPageUrls_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getExitPageUrls_day.xml @@ -6,11 +6,13 @@ 1 1 0 + 1 1 1 0 0% 100% + 0.023 http://example.org/index.htm @@ -18,6 +20,7 @@ 1 1 0 + 1 1 1 0 @@ -26,6 +29,7 @@ 0 100% 100% + 0.134 @@ -33,6 +37,7 @@ 1 1 0 + 1 1 1 1 @@ -43,6 +48,7 @@ 0 100% 100% + 0.134 http://example.org/store/purchase.htm diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitle_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitle_day.xml index 07ef5d536a6..67384a36867 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitle_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitle_day.xml @@ -6,6 +6,7 @@ 1 1 0 + 1 1 1 1 @@ -16,5 +17,6 @@ 0 100% 100% + 0.134 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml index e3df8a41dd4..64538665646 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml @@ -5,6 +5,7 @@ 1 1 0 + 1 1 1 0 @@ -13,6 +14,7 @@ 0 100% 100% + 0.134 @@ -20,6 +22,7 @@ 1 1 0 + 1 1 1 1 @@ -30,6 +33,7 @@ 0 100% 100% + 0.134 @@ -39,6 +43,7 @@ 1 1 180 + 1 1 1 7 @@ -47,6 +52,7 @@ 180 0% 0% + 0.234 @@ -54,11 +60,13 @@ 1 1 0 + 1 1 1 0 0% 100% + 0.023 @@ -66,8 +74,10 @@ 1 1 900 + 1 900 0% 0% + 0.224 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrl_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrl_day.xml index cee7b54dd80..ac40ada8abb 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrl_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrl_day.xml @@ -6,11 +6,13 @@ 1 1 0 + 1 1 1 0 0% 100% + 0.023 http://example.org/index.htm \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml index 838606a12ec..a6f79cf6279 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml @@ -6,9 +6,11 @@ 1 1 180 + 1 180 0% 0% + 0.224 http://example.org/ @@ -17,11 +19,13 @@ 1 1 0 + 1 1 1 0 0% 100% + 0.023 http://example.org/index.htm @@ -30,6 +34,7 @@ 1 1 180 + 1 1 1 7 @@ -38,6 +43,7 @@ 180 0% 0% + 0.234 http://example.org/index.htm?parameter=Should display @@ -45,6 +51,7 @@ 1 1 0 + 1 1 1 0 @@ -53,6 +60,7 @@ 0 100% 100% + 0.134 @@ -60,6 +68,7 @@ 1 1 0 + 1 1 1 1 @@ -70,6 +79,7 @@ 0 100% 100% + 0.134 http://example.org/store/purchase.htm diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.get_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.get_day.xml index a3d15825bc2..e04ea4296da 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.get_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__Actions.get_day.xml @@ -8,4 +8,5 @@ 2 0 0 + 0.155 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__subtable__API.getProcessedReport_week.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__subtable__API.getProcessedReport_week.xml index e1486cad9f9..18705c4fe7b 100755 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__subtable__API.getProcessedReport_week.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits__subtable__API.getProcessedReport_week.xml @@ -14,6 +14,7 @@ Bounce Rate Avg. time on page Exit rate + Avg. generation time The number of times this page was visited. @@ -21,6 +22,7 @@ The percentage of visits that started on this page and left the website straight away. The average amount of time visitors spent on this page (only the page, not the entire website). The percentage of visits that left the website after viewing this page. + The average time it took to generate the page. This metric includes the time it took the server to generate the web page, plus the time it took for the visitor to download the response from the server. A lower 'Avg. generation time' means a faster website for your visitors! This report contains information about the page URLs that have been visited. <br /> The table is organized hierarchically, the URLs are displayed as a folder structure.<br />Use the plus and minus icons on the left to navigate. getPageUrls @@ -35,6 +37,7 @@ Bounce Rate Avg. time on page Exit rate + Avg. generation time @@ -44,6 +47,7 @@ 00:00:00 100% 100% + 00:00:00.13 diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_csv__API.get_month.csv b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_csv__API.get_month.csv index 8658ec505fccd953c176ff6568b9a13c1883e583..aff956dc4c4e0aa8cbc781a66879eace13ec4964 100755 GIT binary patch delta 114 zcmeywdw_4lCT2|?21kZ6hI9r!1_dCQ%8&=dMGT1yB@CGi`9Pimn3c0~Ze yuE`5nI3}C0q(RwvK)M2mg(gp61&IkwW?`%1)?qLJnrO&i%3wOVmaUWp#0LOBLK<2C delta 47 ucmX@W_lbAICg#a^m`f&~Vd0yc#F7T2OD6AOg|PRqLfB4hRg+J!l>h+PT@uv* diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml index 8d363360e0d..cef5f1db673 100755 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml @@ -5,6 +5,7 @@ 1 1 0 + 1 1 1 0 @@ -13,6 +14,7 @@ 0 100% 100% + 0.134 @@ -20,6 +22,7 @@ 1 1 0 + 1 1 1 1 @@ -30,6 +33,7 @@ 0 100% 100% + 0.134 @@ -39,6 +43,7 @@ 1 1 180 + 1 1 1 8 @@ -47,5 +52,6 @@ 180 0% 0% + 0.234 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml index 170597cbf25..fcc2cd595b9 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml @@ -6,6 +6,7 @@ 1 1 180 + 1 1 1 8 @@ -14,6 +15,7 @@ 180 0% 0% + 0.234 http://example.org/index.htm?parameter=Should display @@ -21,6 +23,7 @@ 1 1 0 + 1 1 1 0 @@ -29,6 +32,7 @@ 0 100% 100% + 0.134 @@ -36,6 +40,7 @@ 1 1 0 + 1 1 1 1 @@ -46,6 +51,7 @@ 0 100% 100% + 0.134 http://example.org/store/purchase.htm diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml index 6ae7565bce0..faa38edcf3a 100755 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml @@ -5,6 +5,7 @@ 1 1 0 + 1 1 1 0 @@ -13,6 +14,7 @@ 0 100% 100% + 0.134 @@ -20,6 +22,7 @@ 1 1 0 + 1 1 1 1 @@ -30,6 +33,7 @@ 0 100% 100% + 0.134 @@ -40,10 +44,12 @@ 1 0 1 + 1 1 1 0 0% 100% + 0.024 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml index 4ebb7702a1f..82d409ed097 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml @@ -7,11 +7,13 @@ 1 0 1 + 1 1 1 0 0% 100% + 0.024 http://example.org/index.htm @@ -19,6 +21,7 @@ 1 1 0 + 1 1 1 0 @@ -27,6 +30,7 @@ 0 100% 100% + 0.134 @@ -34,6 +38,7 @@ 1 1 0 + 1 1 1 1 @@ -44,6 +49,7 @@ 0 100% 100% + 0.134 http://example.org/store/purchase.htm diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitle_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitle_day.xml index 07ef5d536a6..67384a36867 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitle_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitle_day.xml @@ -6,6 +6,7 @@ 1 1 0 + 1 1 1 1 @@ -16,5 +17,6 @@ 0 100% 100% + 0.134 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml index 5e682370b70..b7dd9286902 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml @@ -7,10 +7,12 @@ 1 0 1 + 1 1 1 0 0% 100% + 0.024 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml index f13f6b18c5d..6615b7d1a30 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml @@ -5,6 +5,7 @@ 1 1 0 + 1 1 1 0 @@ -13,6 +14,7 @@ 0 100% 100% + 0.134 @@ -20,6 +22,7 @@ 1 1 0 + 1 1 1 1 @@ -30,6 +33,7 @@ 0 100% 100% + 0.134 @@ -39,6 +43,7 @@ 1 1 180 + 1 1 1 8 @@ -47,6 +52,7 @@ 180 0% 0% + 0.234 @@ -55,11 +61,13 @@ 1 0 1 + 1 1 1 0 0% 100% + 0.024 @@ -67,8 +75,10 @@ 1 1 792 + 1 792 0% 0% + 0.224 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml index 231c9e36f91..e93472d54c7 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml @@ -7,11 +7,13 @@ 1 0 1 + 1 1 1 0 0% 100% + 0.024 http://example.org/index.htm \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml index 231c9e36f91..e93472d54c7 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml @@ -7,11 +7,13 @@ 1 0 1 + 1 1 1 0 0% 100% + 0.024 http://example.org/index.htm \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml index 53334ac973b..ab5b0e8d3ac 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml @@ -6,9 +6,11 @@ 1 1 180 + 1 180 0% 0% + 0.224 http://example.org/ @@ -18,11 +20,13 @@ 1 0 1 + 1 1 1 0 0% 100% + 0.024 http://example.org/index.htm @@ -31,6 +35,7 @@ 1 1 180 + 1 1 1 8 @@ -39,6 +44,7 @@ 180 0% 0% + 0.234 http://example.org/index.htm?parameter=Should display @@ -46,6 +52,7 @@ 1 1 0 + 1 1 1 0 @@ -54,6 +61,7 @@ 0 100% 100% + 0.134 @@ -61,6 +69,7 @@ 1 1 0 + 1 1 1 1 @@ -71,6 +80,7 @@ 0 100% 100% + 0.134 http://example.org/store/purchase.htm diff --git a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.get_day.xml b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.get_day.xml index 51d95b38b37..0eea12ac0b1 100644 --- a/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.get_day.xml +++ b/tests/PHPUnit/Integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.get_day.xml @@ -8,4 +8,5 @@ 2 1 1 + 0.155 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_Actions.get_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_Actions.get_firstSite_lastN__API.getProcessedReport_day.xml index c47c5efa5e7..dd08895057c 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_Actions.get_firstSite_lastN__API.getProcessedReport_day.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_Actions.get_firstSite_lastN__API.getProcessedReport_day.xml @@ -16,6 +16,7 @@ Unique Outlinks Searches Unique Keywords + Avg. generation time The number of times this page was visited. @@ -25,6 +26,7 @@ The number of times this link was clicked. The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once. The number of visits that searched for this keyword on your website's search engine. + The average time it took to generate the page. This metric includes the time it took the server to generate the web page, plus the time it took for the visitor to download the response from the server. A lower 'Avg. generation time' means a faster website for your visitors! index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=day&date=2010-01-03,2010-01-09 index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=day&date=2010-01-03,2010-01-09 @@ -39,6 +41,7 @@ Unique Outlinks Searches Unique Keywords + Avg. generation time @@ -46,6 +49,7 @@ 4 5 3 + 00:00:00 0 0 0 @@ -54,6 +58,7 @@ 3 3 + 00:00:00 0 0 0 diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_Actions.get_firstSite_lastN__API.getProcessedReport_month.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_Actions.get_firstSite_lastN__API.getProcessedReport_month.xml index 637679119de..19a2a7a2f1a 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_Actions.get_firstSite_lastN__API.getProcessedReport_month.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_Actions.get_firstSite_lastN__API.getProcessedReport_month.xml @@ -16,6 +16,7 @@ Unique Outlinks Searches Unique Keywords + Avg. generation time The number of times this page was visited. @@ -25,6 +26,7 @@ The number of times this link was clicked. The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once. The number of visits that searched for this keyword on your website's search engine. + The average time it took to generate the page. This metric includes the time it took the server to generate the web page, plus the time it took for the visitor to download the response from the server. A lower 'Avg. generation time' means a faster website for your visitors! index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=month&date=2010-01-03,2010-07-03 index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=month&date=2010-01-03,2010-07-03 @@ -39,6 +41,7 @@ Unique Outlinks Searches Unique Keywords + Avg. generation time @@ -46,6 +49,7 @@ 4 8 3 + 00:00:00 0 0 0 diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_day.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_day.xml index f82b97b135c..dfa32df4694 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_day.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_day.xml @@ -6,10 +6,12 @@ 4 5 3 + 0 3 3 + 0 @@ -23,6 +25,7 @@ 2 3 2 + 0 @@ -35,6 +38,7 @@ 3 3 + 0 diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_month.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_month.xml index bd1427d6766..56b93eb2579 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_month.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_month.xml @@ -6,6 +6,7 @@ 4 8 3 + 0 @@ -20,6 +21,7 @@ 2 3 2 + 0 @@ -32,6 +34,7 @@ 3 3 + 0 diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_NotLastNPeriods__Actions.get_day.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_NotLastNPeriods__Actions.get_day.xml index a5e5d16d73e..f125336842c 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_NotLastNPeriods__Actions.get_day.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_NotLastNPeriods__Actions.get_day.xml @@ -8,4 +8,5 @@ 0 5 3 + 0 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_NotLastNPeriods__Actions.get_month.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_NotLastNPeriods__Actions.get_month.xml index f1ac6218518..9d598b649a2 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_NotLastNPeriods__Actions.get_month.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_NotLastNPeriods__Actions.get_month.xml @@ -8,4 +8,5 @@ 0 8 5 + 0 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml index ac7ae818e8d..78fcaa8aabd 100644 --- a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml +++ b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml @@ -48,7 +48,7 @@ 00:00:00 100% 50% - 00:00:00.138 + 00:00:00.13 @@ -59,7 +59,7 @@ 00:00:00 0% 0% - 00:00:00.223 + 00:00:00.22 @@ -70,7 +70,7 @@ 00:07:30 0% 0% - 00:00:00.248 + 00:00:00.24 @@ -79,7 +79,7 @@ 00:00:00 0% 100% - 00:00:00.452 + 00:00:00.45 diff --git a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml index cc395e7b7db..f8dd51fa8db 100644 --- a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml +++ b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageUrls_firstSite_lastN__API.getProcessedReport_day.xml @@ -48,7 +48,7 @@ 00:00:00 0% 0% - 00:00:00.123 + 00:00:00.12 @@ -57,7 +57,7 @@ 00:00:00 100% 100% - 00:00:00.153 + 00:00:00.15 @@ -68,7 +68,7 @@ 00:00:00 0% 0% - 00:00:00.223 + 00:00:00.22 @@ -79,7 +79,7 @@ 00:06:00 0% 0% - 00:00:00.323 + 00:00:00.32 @@ -88,7 +88,7 @@ 00:06:00 0% 100% - 00:00:00.313 + 00:00:00.31 diff --git a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__PDFReports.generateReport_month.original.html b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__PDFReports.generateReport_month.original.html index 7ca0bbd3406..5399b671758 100644 --- a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__PDFReports.generateReport_month.original.html +++ b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__PDFReports.generateReport_month.original.html @@ -1854,6 +1854,14 @@

0 + + +Avg. generation time + + +00:00:00.24 + +
@@ -1910,7 +1918,7 @@

0% -00:00:00.223 +00:00:00.22 @@ -1935,7 +1943,7 @@

0% -00:00:00.223 +00:00:00.22 @@ -1960,7 +1968,7 @@

100% -00:00:00.153 +00:00:00.15 @@ -1985,7 +1993,7 @@

100% -00:00:00.313 +00:00:00.31 @@ -2156,7 +2164,7 @@

50% -00:00:00.138 +00:00:00.13 @@ -2179,7 +2187,7 @@

0% -00:00:00.248 +00:00:00.24 @@ -2202,7 +2210,7 @@

100% -00:00:00.452 +00:00:00.45 @@ -2225,7 +2233,7 @@

0% -00:00:00.223 +00:00:00.22 diff --git a/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf_tables_only__PDFReports.generateReport_month.original.pdf b/tests/PHPUnit/Integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf_tables_only__PDFReports.generateReport_month.original.pdf index ab5c573a1a0b7fcc91fca9c561d0a9fab548d6fe..b4254232b8b96df7e20e39dbe4c83d1629ce82d6 100644 GIT binary patch delta 7455 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 Pg8-ghNJ#mD3jO~96OUC% delta 7363 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 I^)wj%1ItGoqW}N^ diff --git a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml index 6dbe54bde75..f4f69aa3a90 100644 --- a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml +++ b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml @@ -391,6 +391,7 @@ Unique Outlinks Searches Unique Keywords + Avg. generation time The number of times this page was visited. @@ -400,6 +401,7 @@ The number of times this link was clicked. The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once. The number of visits that searched for this keyword on your website's search engine. + The average time it took to generate the page. This metric includes the time it took the server to generate the web page, plus the time it took for the visitor to download the response from the server. A lower 'Avg. generation time' means a faster website for your visitors! index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=day&date=2008-12-06,2009-01-04 index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=day&date=2008-12-06,2009-01-04 @@ -1824,6 +1826,7 @@ Unique Outlinks Searches Unique Keywords + Avg. generation time Returning Visits Actions by Returning Visits Avg. Duration of a Returning Visit (in sec) @@ -1849,6 +1852,7 @@ The number of times this link was clicked. The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once. The number of visits that searched for this keyword on your website's search engine. + The average time it took to generate the page. This metric includes the time it took the server to generate the web page, plus the time it took for the visitor to download the response from the server. A lower 'Avg. generation time' means a faster website for your visitors! API_get diff --git a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.get_day.xml b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.get_day.xml index 33cec8dbe38..71adf622470 100644 --- a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.get_day.xml +++ b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.get_day.xml @@ -25,4 +25,5 @@ 0 0 0 + 0 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_hideMetricsDoc__API.getMetadata_day.xml b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_hideMetricsDoc__API.getMetadata_day.xml index 8e3b587e502..590b2acbe5f 100755 --- a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_hideMetricsDoc__API.getMetadata_day.xml +++ b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_hideMetricsDoc__API.getMetadata_day.xml @@ -14,6 +14,7 @@ Unique Outlinks Searches Unique Keywords + Avg. generation time index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=day&date=2008-12-06,2009-01-04 index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=day&date=2008-12-06,2009-01-04 diff --git a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_hideMetricsDoc__API.getProcessedReport_day.xml b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_hideMetricsDoc__API.getProcessedReport_day.xml index 978bb0f4646..52ded0385cc 100755 --- a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_hideMetricsDoc__API.getProcessedReport_day.xml +++ b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata_hideMetricsDoc__API.getProcessedReport_day.xml @@ -16,6 +16,7 @@ Unique Outlinks Searches Unique Keywords + Avg. generation time index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=day&date=2008-12-06,2009-01-04 index.php?module=API&method=ImageGraph.get&idSite=1&apiModule=Actions&apiAction=get&period=day&date=2008-12-06,2009-01-04 @@ -30,6 +31,7 @@ Unique Outlinks Searches Unique Keywords + Avg. generation time 1 @@ -40,6 +42,7 @@ 0 0 0 + 00:00:00 \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__PDFReports.generateReport_week.original.html b/tests/PHPUnit/Integration/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__PDFReports.generateReport_week.original.html index aaa75b3f2ab..c21f52d8684 100644 --- a/tests/PHPUnit/Integration/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__PDFReports.generateReport_week.original.html +++ b/tests/PHPUnit/Integration/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__PDFReports.generateReport_week.original.html @@ -3177,6 +3177,14 @@

0 + + +Avg. generation time + + +00:00:00 + +
diff --git a/tests/PHPUnit/Integration/expected/test_ecommerceOrderWithItems_scheduled_report_in_pdf_tables_only__PDFReports.generateReport_week.original.pdf b/tests/PHPUnit/Integration/expected/test_ecommerceOrderWithItems_scheduled_report_in_pdf_tables_only__PDFReports.generateReport_week.original.pdf index f1d5eeeeb7ef44846165b71bb81182451115bf87..481bdf6290d28b671fc11f473b6c5967dadcf686 100644 GIT binary patch delta 4048 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 0 0 + 0 \ No newline at end of file diff --git a/themes/default/common.css b/themes/default/common.css index 63862081635..8dd56cb6220 100644 --- a/themes/default/common.css +++ b/themes/default/common.css @@ -762,6 +762,12 @@ table.entityTable tr td a { margin: 0 0 2px 0; } +body .ui-tooltip.small { + font-size: 11px; + padding: 3px 5px 3px 6px; +} + + /* Popover */