2023-01-23 11:03:31 +01:00

111 lines
3.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.service').factory('reportDeletionModel', reportDeletionModel);
reportDeletionModel.$inject = ['piwik', 'piwikApi'];
function reportDeletionModel (piwik, piwikApi) {
var currentRequest;
var isFirstLoad = true;
var model = {
settings: {},
showEstimate: false,
loadingEstimation: false,
estimation: '',
isModified: false,
isEitherDeleteSectionEnabled: isEitherDeleteSectionEnabled,
reloadDbStats: reloadDbStats,
savePurageDataSettings: savePurageDataSettings,
updateSettings: updateSettings,
initSettings: initSettings
};
return model;
function updateSettings(settings)
{
initSettings(settings);
model.isModified = true;
}
function initSettings(settings)
{
model.settings = angular.merge({}, model.settings, settings);
model.reloadDbStats();
}
function savePurageDataSettings(controller, apiMethod, settings)
{
controller.isLoading = true;
model.isModified = false;
return piwikApi.post({
module: 'API', method: apiMethod
}, settings).then(function () {
controller.isLoading = false;
var UI = require('piwik/UI');
var notification = new UI.Notification();
notification.show(_pk_translate('CoreAdminHome_SettingsSaveSuccess'), {context: 'success', id:'privacyManagerSettings'});
notification.scrollToNotification();
}, function () {
controller.isLoading = false;
});
}
function isEitherDeleteSectionEnabled() {
return ('1' === model.settings.enableDeleteLogs || '1' === model.settings.enableDeleteReports);
}
function isManualEstimationLinkShowing()
{
return $('#getPurgeEstimateLink').length > 0;
}
/**
* @param {boolean} [forceEstimate] (defaults to false)
*/
function reloadDbStats(forceEstimate) {
if (currentRequest) {
currentRequest.abort();
}
// if the manual estimate link is showing, abort unless forcing
if (forceEstimate !== true
&& (!isEitherDeleteSectionEnabled() || isManualEstimationLinkShowing())) {
return;
}
model.loadingEstimation = true;
model.estimation = '';
model.showEstimate = false;
var formData = model.settings;
if (forceEstimate === true) {
formData['forceEstimate'] = 1;
}
currentRequest = piwikApi.post({
module: 'PrivacyManager',
action: 'getDatabaseSize',
format: 'html'
}, formData).then(function (data) {
currentRequest = undefined;
model.estimation = data;
model.showEstimate = true;
model.loadingEstimation = false;
}, function () {
model.loadingEstimation = true;
});
}
}
})();