199 lines
7.4 KiB
JavaScript
199 lines
7.4 KiB
JavaScript
/*!
|
|
* Piwik - free/libre analytics platform
|
|
*
|
|
* @link http://piwik.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
(function () {
|
|
angular.module('piwikApp').controller('ManageGoalsController', ManageGoalsController);
|
|
|
|
ManageGoalsController.$inject = ['piwik', 'piwikApi', '$timeout', '$location', 'reportingMenuModel', '$rootScope'];
|
|
|
|
function ManageGoalsController(piwik, piwikApi, $timeout, $location, reportingMenuModel, $rootScope) {
|
|
// remember to keep controller very simple. Create a service/factory (model) if needed
|
|
|
|
var self = this;
|
|
|
|
if (!this.goal) {
|
|
this.goal = {};
|
|
}
|
|
this.showEditGoal = false;
|
|
this.showGoalList = true;
|
|
|
|
function scrollToTop()
|
|
{
|
|
$timeout(function () {
|
|
piwik.helper.lazyScrollTo(".pageWrap", 200);
|
|
});
|
|
}
|
|
|
|
function initGoalForm(goalMethodAPI, submitText, goalName, description, matchAttribute, pattern, patternType, caseSensitive, revenue, allowMultiple, useEventValueAsRevenue, goalId) {
|
|
|
|
$rootScope.$emit('Goals.beforeInitGoalForm', goalMethodAPI, goalId);
|
|
|
|
self.goal = {};
|
|
self.goal.name = goalName;
|
|
self.goal.description = description;
|
|
|
|
if (matchAttribute == 'manually') {
|
|
self.goal.triggerType = 'manually';
|
|
matchAttribute = 'url';
|
|
} else {
|
|
self.goal.triggerType = 'visitors';
|
|
}
|
|
|
|
if (0 === matchAttribute.indexOf('event')) {
|
|
self.goal.eventType = matchAttribute;
|
|
matchAttribute = 'event';
|
|
} else {
|
|
self.goal.eventType = 'event_category';
|
|
}
|
|
|
|
self.goal.matchAttribute = matchAttribute;
|
|
self.goal.allowMultiple = allowMultiple;
|
|
self.goal.patternType = patternType;
|
|
self.goal.pattern = pattern;
|
|
self.goal.caseSensitive = caseSensitive;
|
|
self.goal.revenue = revenue;
|
|
self.goal.apiMethod = goalMethodAPI;
|
|
self.goal.useEventValueAsRevenue = useEventValueAsRevenue;
|
|
|
|
self.goal.submitText = submitText;
|
|
self.goal.goalId = goalId;
|
|
|
|
$timeout(function () {
|
|
var text = _pk_translate('Goals_AddNewGoal');
|
|
if (goalId) {
|
|
text = _pk_translate('Goals_UpdateGoal')
|
|
}
|
|
|
|
$('.addEditGoal .card-title').text(text);
|
|
});
|
|
}
|
|
|
|
this.isManuallyTriggered = function () {
|
|
return this.goal.triggerType == 'manually';
|
|
}
|
|
|
|
this.save = function () {
|
|
|
|
var parameters = {};
|
|
parameters.name = encodeURIComponent(this.goal.name);
|
|
parameters.description = encodeURIComponent(this.goal.description);
|
|
|
|
if (this.isManuallyTriggered()) {
|
|
parameters.matchAttribute = 'manually';
|
|
parameters.patternType = 'regex';
|
|
parameters.pattern = '.*';
|
|
parameters.caseSensitive = 0;
|
|
} else {
|
|
parameters.matchAttribute = this.goal.matchAttribute;
|
|
|
|
if (parameters.matchAttribute === 'event') {
|
|
parameters.matchAttribute = this.goal.eventType;
|
|
}
|
|
|
|
parameters.patternType = this.goal.patternType;
|
|
parameters.pattern = encodeURIComponent(this.goal.pattern);
|
|
parameters.caseSensitive = this.goal.caseSensitive == true ? 1 : 0;
|
|
}
|
|
parameters.revenue = this.goal.revenue || 0;
|
|
parameters.allowMultipleConversionsPerVisit = this.goal.allowMultiple == true ? 1 : 0;
|
|
parameters.useEventValueAsRevenue = this.goal.useEventValueAsRevenue == true ? 1 : 0;
|
|
|
|
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 () {
|
|
var search = $location.search();
|
|
if (search
|
|
&& search.subcategory
|
|
&& search.subcategory == 'Goals_AddNewGoal'
|
|
&& piwik.helper.isAngularRenderingThePage()) {
|
|
// when adding a goal for the first time we need to load manage goals page afterwards
|
|
reportingMenuModel.reloadMenuItems().then(function () {
|
|
$location.search('subcategory', 'Goals_ManageGoals');
|
|
self.isLoading = false;
|
|
});
|
|
} else {
|
|
location.reload();
|
|
}
|
|
}, function () {
|
|
scrollToTop();
|
|
self.isLoading = false;
|
|
});
|
|
};
|
|
|
|
this.changedTriggerType = function () {
|
|
if (!this.isManuallyTriggered() && !this.goal.patternType) {
|
|
this.goal.patternType = 'contains';
|
|
}
|
|
}
|
|
|
|
this.showListOfReports = function (shouldScrollToTop) {
|
|
$rootScope.$emit('Goals.cancelForm');
|
|
|
|
this.showGoalList = true;
|
|
this.showEditGoal = false;
|
|
scrollToTop();
|
|
};
|
|
|
|
this.showAddEditForm = function () {
|
|
this.showGoalList = false;
|
|
this.showEditGoal = true;
|
|
};
|
|
|
|
this.createGoal = function () {
|
|
|
|
var parameters = {isAllowed: true};
|
|
$rootScope.$emit('Goals.initAddGoal', parameters);
|
|
if (parameters && !parameters.isAllowed) {
|
|
return;
|
|
}
|
|
|
|
this.showAddEditForm();
|
|
initGoalForm('Goals.addGoal', _pk_translate('Goals_AddGoal'), '', '', 'url', '', 'contains', /*caseSensitive = */false, '', /*allowMultiple = */ false, /*useEventValueAsRevenue = */ false, '0');
|
|
scrollToTop();
|
|
};
|
|
|
|
this.editGoal = function (goalId) {
|
|
this.showAddEditForm();
|
|
var goal = piwik.goals[goalId];
|
|
initGoalForm("Goals.updateGoal", _pk_translate('Goals_UpdateGoal'), goal.name, goal.description, goal.match_attribute, goal.pattern, goal.pattern_type, (goal.case_sensitive != '0'), goal.revenue, goal.allow_multiple, (goal.event_value_as_revenue != '0'), goalId);
|
|
scrollToTop();
|
|
};
|
|
|
|
this.deleteGoal = function (goalId) {
|
|
var goal = piwik.goals[goalId];
|
|
|
|
$('#confirm').find('h2').text(sprintf(_pk_translate('Goals_DeleteGoalConfirm'), '"' + goal.name + '"'));
|
|
piwikHelper.modalConfirm('#confirm', {yes: function () {
|
|
self.isLoading = true;
|
|
|
|
piwikApi.fetch({idGoal: goalId, method: 'Goals.deleteGoal'}).then(function () {
|
|
location.reload();
|
|
}, function () {
|
|
self.isLoading = false;
|
|
});
|
|
|
|
}});
|
|
};
|
|
|
|
this.showListOfReports(false);
|
|
}
|
|
})(); |