site-accueil-insa/matomo/plugins/PagePerformance/javascripts/rowaction.js

103 lines
No EOL
3.6 KiB
JavaScript

/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
/**
* This file registers the page performance row action on the pages report.
*/
(function () {
var actionName = 'PagePerformance';
function getDataTableFromApiMethod(apiMethod)
{
var div = $(require('piwik/UI').DataTable.getDataTableByReport(apiMethod));
if (div.length && div.data('uiControlObject')) {
return div.data('uiControlObject');
}
}
function DataTable_RowActions_PagePerformance(dataTable) {
this.dataTable = dataTable;
this.actionName = actionName;
// has to be overridden in subclasses
this.trEventName = 'matomoTriggerPagePerformanceAction';
}
DataTable_RowActions_PagePerformance.prototype = new DataTable_RowAction();
DataTable_RowActions_PagePerformance.prototype.performAction = function (label, tr, e, originalRow) {
var apiMethod = this.dataTable.param.module + '.' + this.dataTable.param.action;
this.openPopover(apiMethod, label);
};
DataTable_RowActions_PagePerformance.prototype.openPopover = function (apiMethod, label) {
var urlParam = apiMethod + ':' + label;
DataTable_RowAction.prototype.openPopover.apply(this, [urlParam]);
};
DataTable_RowActions_PagePerformance.prototype.doOpenPopover = function (urlParam) {
var urlParamParts = urlParam.split(':');
var apiMethod = urlParamParts.shift();
var label = decodeURIComponent(urlParamParts.shift());
PagePerformance.show(apiMethod, label);
};
DataTable_RowActions_Registry.register({
name: actionName,
dataTableIcon: 'icon-page-performance',
order: 50,
dataTableIconTooltip: [
_pk_translate('PagePerformance_RowActionTitle'),
_pk_translate('PagePerformance_RowActionDescription')
],
isAvailableOnReport: function (dataTableParams) {
return dataTableParams.module == 'Actions'
&& (dataTableParams.action == 'getPageUrls' || dataTableParams.action == 'getEntryPageUrls' ||
dataTableParams.action == 'getExitPageUrls' || dataTableParams.action == 'getPageUrlsFollowingSiteSearch' ||
dataTableParams.action == 'getPageTitles' || dataTableParams.action == 'getPageTitlesFollowingSiteSearch');
},
isAvailableOnRow: function (dataTableParams, tr) {
return true;
},
createInstance: function (dataTable, param) {
if (dataTable !== null && typeof dataTable.pagePerformanceInstance != 'undefined') {
return dataTable.pagePerformanceInstance;
}
if (dataTable === null && param) {
// when row evolution is triggered from the url (not a click on the data table)
// we look for the data table instance in the dom
var report = param.split(':')[0];
var div = $(require('piwik/UI').DataTable.getDataTableByReport(report));
if (div.length && div.data('uiControlObject')) {
dataTable = div.data('uiControlObject');
if (typeof dataTable.pagePerformanceInstance != 'undefined') {
return dataTable.pagePerformanceInstance;
}
}
}
var instance = new DataTable_RowActions_PagePerformance(dataTable);
if (dataTable !== null) {
dataTable.pagePerformanceInstance = instance;
}
return instance;
},
});
})();