PDF rausgenommen
This commit is contained in:
@ -0,0 +1,155 @@
|
||||
/*!
|
||||
* Matomo - free/libre analytics platform
|
||||
*
|
||||
* @link https://matomo.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
(function () {
|
||||
angular.module('piwikApp').controller('TransitionSwitcherController', TransitionSwitcherController);
|
||||
|
||||
TransitionSwitcherController.$inject = ['piwikApi', '$filter', '$rootScope'];
|
||||
|
||||
function TransitionSwitcherController(piwikApi, $filter, $rootScope) {
|
||||
var translate = $filter('translate');
|
||||
|
||||
var self = this;
|
||||
this.actionType = 'Actions.getPageUrls';
|
||||
this.actionNameOptions = [];
|
||||
this.actionTypeOptions = [
|
||||
{key: 'Actions.getPageUrls', value: translate('Actions_PageUrls')},
|
||||
{key: 'Actions.getPageTitles', value: translate('Actions_WidgetPageTitles')}
|
||||
];
|
||||
this.isLoading = false;
|
||||
this.transitions = null;
|
||||
this.actionName = null;
|
||||
this.isEnabled = true;
|
||||
var noDataKey = '_____ignore_____';
|
||||
|
||||
this.detectActionName = function (reports)
|
||||
{
|
||||
var othersLabel = translate('General_Others');
|
||||
|
||||
var label, report;
|
||||
for (var i = 0; i < reports.length; i++) {
|
||||
if (!reports[i]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
report = reports[i];
|
||||
|
||||
if (report.label === othersLabel) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var key = null;
|
||||
if (self.isUrlReport()) {
|
||||
key = report.url
|
||||
} else {
|
||||
key = report.label;
|
||||
}
|
||||
|
||||
if (key) {
|
||||
label = report.label + ' (' + translate('Transitions_NumPageviews', report.nb_hits) + ')';
|
||||
self.actionNameOptions.push({key: key, value: label, url: report.url});
|
||||
if (!self.actionName) {
|
||||
self.actionName = key
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.isUrlReport = function()
|
||||
{
|
||||
return this.actionType === 'Actions.getPageUrls';
|
||||
}
|
||||
|
||||
this.fetch = function (type) {
|
||||
this.isLoading = true;
|
||||
this.actionNameOptions = [];
|
||||
this.actionName = null;
|
||||
|
||||
piwikApi.fetch({
|
||||
method: type,
|
||||
flat: 1, filter_limit: 100,
|
||||
filter_sort_order: 'desc',
|
||||
filter_sort_column: 'nb_hits',
|
||||
showColumns: 'label,nb_hits,url'
|
||||
}).then(function (report) {
|
||||
self.isLoading = false;
|
||||
self.actionNameOptions = [];
|
||||
self.actionName = null;
|
||||
|
||||
if (report && report.length) {
|
||||
self.isEnabled = true;
|
||||
self.detectActionName(report);
|
||||
self.onActionNameChange(self.actionName);
|
||||
}
|
||||
|
||||
if (null === self.actionName || self.actionNameOptions.length === 0) {
|
||||
self.isEnabled = false;
|
||||
self.actionName = noDataKey;
|
||||
self.actionNameOptions.push({key: noDataKey, value: translate('CoreHome_ThereIsNoDataForThisReport')});
|
||||
}
|
||||
}, function () {
|
||||
self.isLoading = false;
|
||||
self.isEnabled = false;
|
||||
});
|
||||
}
|
||||
|
||||
this.onActionTypeChange = function (actionName) {
|
||||
this.fetch(actionName);
|
||||
};
|
||||
|
||||
this.onActionNameChange = function (actionName) {
|
||||
if (actionName === null || actionName === noDataKey) {
|
||||
return;
|
||||
}
|
||||
|
||||
var type = 'url';
|
||||
if (!this.isUrlReport()) {
|
||||
type = 'title';
|
||||
}
|
||||
if (!this.transitions) {
|
||||
this.transitions = new Piwik_Transitions(type, actionName, null, '');
|
||||
} else {
|
||||
this.transitions.reset(type, actionName, '');
|
||||
}
|
||||
this.transitions.showPopover(true);
|
||||
};
|
||||
|
||||
$rootScope.$on('Transitions.switchTransitionsUrl', function (event, params) {
|
||||
if (params && params.url) {
|
||||
if (self.isUrlReport()) {
|
||||
params.url = params.url.replace('https://', '').replace('http://', '');
|
||||
}
|
||||
|
||||
var found = false, option, optionUrl;
|
||||
for (var i = 0; i < self.actionNameOptions.length; i++) {
|
||||
option = self.actionNameOptions[i];
|
||||
optionUrl = option.url;
|
||||
if (optionUrl && self.isUrlReport()) {
|
||||
optionUrl = String(optionUrl).replace('https://', '').replace('http://', '');
|
||||
} else {
|
||||
optionUrl = null;
|
||||
}
|
||||
|
||||
if (!found && (option.key === params.url || (params.url === optionUrl && optionUrl))) {
|
||||
found = true;
|
||||
self.actionName = option.key;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
// we only fetch top 100 in the report... so the entry the user clicked on, might not be in the top 100
|
||||
var options = angular.copy(self.actionNameOptions); // somehow needed to force angular to render it
|
||||
options.push({key: params.url, value: params.url});
|
||||
self.actionNameOptions = options;
|
||||
self.actionName = params.url;
|
||||
}
|
||||
self.onActionNameChange(self.actionName);
|
||||
}
|
||||
});
|
||||
|
||||
this.fetch(this.actionType);
|
||||
}
|
||||
})();
|
Reference in New Issue
Block a user