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

72 lines
2.5 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('LocationProviderSelectionController', LocationProviderSelectionController);
LocationProviderSelectionController.$inject = ['piwikApi'];
function LocationProviderSelectionController(piwikApi) {
var self = this;
this.isLoading = false;
this.updateLoading = {};
// handle 'refresh location' link click
this.refreshProviderInfo = function (providerId) {
this.updateLoading[providerId] = true;
// this should not be in a controller... ideally we fetch this data always from client side and do not
// prefill it server side
var $locationNode = $('.provider' + providerId + ' .location');
$locationNode.css('visibility', 'hidden');
piwikApi.fetch({
module: 'UserCountry',
action: 'getLocationUsingProvider',
id: providerId,
format: 'html'
}).then(function (response) {
self.updateLoading[providerId] = false;
$locationNode.html('<strong>' + response + '</strong>').css('visibility', 'visible');
}, function () {
self.updateLoading[providerId] = false;
});
};
this.save = function () {
if (!this.selectedProvider) {
return;
}
this.isLoading = true;
var parent = $(this).closest('p'),
loading = $('.loadingPiwik', parent),
ajaxSuccess = $('.success', parent);
piwikApi.withTokenInUrl();
piwikApi.fetch({
method: 'UserCountry.setLocationProvider',
providerId: this.selectedProvider
}).then(function () {
self.isLoading = false;
var UI = require('piwik/UI');
var notification = new UI.Notification();
notification.show(_pk_translate('General_Done'), {
context: 'success',
noclear: true,
type: 'toast',
id: 'userCountryLocationProvider'
});
notification.scrollToNotification();
}, function () {
self.isLoading = false;
});
};
}
})();