Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js')
-rw-r--r--plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js149
1 files changed, 149 insertions, 0 deletions
diff --git a/plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js b/plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js
new file mode 100644
index 0000000000..d52224d75a
--- /dev/null
+++ b/plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js
@@ -0,0 +1,149 @@
+/*!
+ * 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('Geoip2UpdaterController', Geoip2UpdaterController);
+
+ Geoip2UpdaterController.$inject = ['piwikApi', '$window'];
+
+ function Geoip2UpdaterController(piwikApi, $window) {
+ // remember to keep controller very simple. Create a service/factory (model) if needed
+ var self = this;
+
+ this.buttonUpdateSaveText = _pk_translate('General_Save');
+ this.progressUpdateLabel = '';
+
+ // geoip database wizard
+ var downloadNextChunk = function (action, thisId, progressBarId, cont, extraData, callback) {
+ var data = {};
+ for (var k in extraData) {
+ data[k] = extraData[k];
+ }
+
+ piwikApi.withTokenInUrl();
+ piwikApi.post({
+ module: 'GeoIp2',
+ action: action,
+ 'continue': cont ? 1 : 0
+ }, data).then(function (response) {
+ if (!response || response.error) {
+ callback(response);
+ } else {
+ // update progress bar
+ var newProgressVal = Math.floor((response.current_size / response.expected_file_size) * 100);
+ self[progressBarId] = Math.min(newProgressVal, 100);
+
+ // if incomplete, download next chunk, otherwise, show updater manager
+ if (newProgressVal < 100) {
+ downloadNextChunk(action, thisId, progressBarId, true, extraData, callback);
+ } else {
+ callback(response);
+ }
+ }
+ }, function () {
+ callback({error: _pk_translate('GeoIp2_FatalErrorDuringDownload')});
+ });
+ };
+
+ this.startDownloadFreeGeoIp = function () {
+ this.showFreeDownload = true;
+ this.showPiwikNotManagingInfo = false;
+
+ this.progressFreeDownload = 0;
+
+ // start download of free dbs
+ downloadNextChunk(
+ 'downloadFreeDBIPLiteDB',
+ 'geoipdb-screen2-download',
+ 'progressFreeDownload',
+ false,
+ {},
+ function (response) {
+ if (response.error) {
+ $('#geoipdb-update-info').html(response.error);
+ self.geoipDatabaseInstalled = true;
+ } else {
+ $window.location.reload();
+ }
+ }
+ );
+ };
+
+ this.startAutomaticUpdateGeoIp = function () {
+ this.buttonUpdateSaveText = _pk_translate('General_Continue');
+ this.showGeoIpUpdateInfo();
+ };
+
+ this.showGeoIpUpdateInfo = function () {
+ this.geoipDatabaseInstalled = true;
+
+ // todo we need to replace this the proper way eventually
+ $('#geoip-db-mangement .card-title').text(_pk_translate('GeoIp2_SetupAutomaticUpdatesOfGeoIP'));
+ }
+
+ this.saveGeoIpLinks = function () {
+ var currentDownloading = null;
+ var updateGeoIPSuccess = function (response) {
+ if (response && response.error) {
+ self.isUpdatingGeoIpDatabase = false;
+
+ var UI = require('piwik/UI');
+ var notification = new UI.Notification();
+ notification.show(response.error, {
+ placeat: '#geoipdb-update-info-error',
+ context: 'error',
+ style: {display: 'inline-block'},
+ id: 'userCountryGeoIpUpdate'
+ });
+
+ } else if (response && response.to_download) {
+ var continuing = currentDownloading == response.to_download;
+ currentDownloading = response.to_download;
+
+ // show progress bar w/ message
+ self.progressUpdateDownload = 0;
+ self.progressUpdateLabel = response.to_download_label;
+ self.isUpdatingGeoIpDatabase = true;
+
+ // start/continue download
+ downloadNextChunk(
+ 'downloadMissingGeoIpDb', 'geoipdb-update-info', 'progressUpdateDownload',
+ continuing, {key: response.to_download}, updateGeoIPSuccess);
+
+ } else {
+ self.progressUpdateLabel = '';
+ self.isUpdatingGeoIpDatabase = false;
+
+ var UI = require('piwik/UI');
+ var notification = new UI.Notification();
+ notification.show(_pk_translate('General_Done'), {
+ placeat: '#done-updating-updater',
+ context: 'success',
+ noclear: true,
+ type: 'toast',
+ style: {display: 'inline-block'},
+ id: 'userCountryGeoIpUpdate'
+ });
+
+ $('#geoip-updater-next-run-time').html(response.nextRunTime).parent().effect('highlight', {color: '#FFFFCB'}, 2000);
+ }
+ };
+
+ piwikApi.withTokenInUrl();
+ piwikApi.post({
+ period: this.updatePeriod,
+ module: 'GeoIp2',
+ action: 'updateGeoIPLinks'
+ }, {
+ loc_db: this.locationDbUrl,
+ isp_db: this.ispDbUrl,
+ org_db: this.orgDbUrl
+ }).then(updateGeoIPSuccess);
+ };
+
+
+ }
+})(); \ No newline at end of file