/**
* Plumrocket Inc.
*
* NOTICE OF LICENSE
*
* This source file is subject to the End-user License Agreement
* that is available through the world-wide-web at this URL:
* http://wiki.plumrocket.net/wiki/EULA
* If you are unable to obtain it through the world-wide-web, please
* send an email to support@plumrocket.com so we can send you a copy immediately.
*
* @package Plumrocket_GeoIPLookup
* @copyright Copyright (c) 2018 Plumrocket Inc. (http://www.plumrocket.com)
* @license http://wiki.plumrocket.net/wiki/EULA End-user License Agreement
*/
require([
'jquery',
'mage/storage',
'mage/translate',
'Magento_Ui/js/modal/alert',
'domReady!'
], function ($, storage, __, alert) {
'use strict';
window.runInstallation = function (serviceId, urlAutomatic, urlProgress) {
let resultId = serviceId + '_status',
timerProgress = null;
const enableSelect = function() {
let selectId = serviceId + '_enabled',
tooltip = serviceId + '_tooltip',
tooltipElement = $('#' + tooltip);
$('#' + selectId).prop('disabled', false);
if (tooltipElement) {
tooltipElement.remove();
}
};
const updateStatus = function(data) {
let percent = '0%',
color = 'green',
message = '';
switch (data.status) {
case "process":
$('#' + resultId + ' .status')[0].hide();
$('#' + resultId + ' .progress-container')[0].show();
percent = parseInt(parseInt(data.exec) * 100 / parseInt(data.total)) + '%';
message = data.message;
break;
case "success":
window.clearInterval(timerProgress);
$('body').loader('hide');
$('.loading-mask').css('background', 'rgba(255, 255, 255, 0.4)');
$('#' + resultId + ' .progress-container')[0].hide();
$('#' + resultId + ' .status')[0].setStyle({color: color}).update(data.message).show();
enableSelect();
break;
default:
window.clearInterval(timerProgress);
$('body').loader('hide');
$('.loading-mask').css('background', 'rgba(255, 255, 255, 0.4)');
$('#' + resultId + ' .progress-container')[0].hide();
color = 'red';
message = (typeof data.message !== "undefined") ? data.message : __("Import Failed!");
$('#' + resultId + ' .status')[0].setStyle({color: color}).update(message).show();
}
$('#' + resultId + ' .progress-container .progress-value')[0].setStyle({width: percent}).update(percent);
$('#' + resultId + ' .progress-container .progress-title')[0].update(message);
if ('alert' in data) {
window.showAlert(data.error,data.alert);
}
}
const getInstallationProgress = function () {
storage.get(
urlProgress
).done(function (response) {
response = JSON.parse(response);
if (response && response.status) {
updateStatus(response);
}
}).fail(function () {
window.clearInterval(timerProgress);
$('body').loader('hide');
$('.loading-mask').css('background', 'rgba(255, 255, 255, 0.4)');
});
return true;
};
updateStatus({
status: 'process',
exec: 1,
total: 100,
message: __('Installation in Progress...')
});
timerProgress = setInterval(getInstallationProgress, 3000);
$('body').loader('show');
$('.loading-mask').css('background', 'rgba(255, 255, 255, 0)');
storage.get(
urlAutomatic
).done(function(response) {
response = JSON.parse(response);
if (response) {
updateStatus(response);
}
}).fail(function() {
updateStatus({status: 'fail'});
});
};
window.prGeoIptestApiConnection = function (serviceUrl, serviceId) {
let accessKey = $('#prgeoiplookup_methods_ipapigeoip_access_key').val(),
useSsl = $('#prgeoiplookup_methods_ipapigeoip_use_https').val(),
resultText = __('Connection Error!'),
resultStyle = 'color: red;',
resultClass = 'message-error error';
serviceUrl += '?access_key=%1&use_ssl=%2'.replace('%1', accessKey).replace('%2', useSsl);
$.ajax({
showLoader: true,
url: serviceUrl,
type: "GET",
dataType: 'JSON'
}).done(function(response) {
if (response.success) {
resultText = __('Connection Successful!');
resultStyle = 'color: green;';
resultClass = 'message-success success';
}
if (response.hasOwnProperty('message')) {
resultText += '
' + response.message + '
'; } }).always(function() { let resultContainerId = serviceId + '_result', resultBlock = $('#' + resultContainerId); if (resultBlock.length) { resultBlock.remove(); } $('#' + serviceId).after( '' ); }); }; window.geoipTest = function (testUrl) { var ip = $('#prgeoiplookup_geoiptest_ip_address').val(), url = testUrl + 'ip/' + ip, geoInfo = $('#prgeoiplookup_geoiptest_geoinfo'), map = $('#prgeoiplookup_google_map'), mapUrl = 'https://maps.google.com/?q=', apiTestEl = $('#rest_ip_test'), restApiUrl = $('#hidden_field_api_url').text(); $('body').loader('show'); storage.get( url ).done(function(response) { response = JSON.parse(response); geoInfo.val(response.text); apiTestEl.attr('href', restApiUrl + ip); apiTestEl.text(restApiUrl + ip); if (response.latitude && response.longitude) { map.attr('href', mapUrl + response.latitude + ',' + response.longitude); } else if (response.country_name) { map.attr('href', mapUrl + response.country_name); } var prefix = 'row_prgeoiplookup_geoiptest'; $('#' + prefix + '_rest_ip').show(); $('#' + prefix + '_geoinfo').show(); $('#' + prefix + '_location_on_map').show(); }).fail(function() { }).always(function() { $('body').loader('hide'); }); }; $('#prgeoiplookup_geoiptest_geoinfo').val(''); window.showAlert = function (title, message) { alert({ title: title, content: message }); }; });