testconnection.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5. /**
  6. * @api
  7. */
  8. define([
  9. 'jquery',
  10. 'Magento_Ui/js/modal/alert',
  11. 'jquery/ui'
  12. ], function ($, alert) {
  13. 'use strict';
  14. $.widget('mage.testConnection', {
  15. options: {
  16. url: '',
  17. elementId: '',
  18. successText: '',
  19. failedText: '',
  20. fieldMapping: ''
  21. },
  22. /**
  23. * Bind handlers to events
  24. */
  25. _create: function () {
  26. this._on({
  27. 'click': $.proxy(this._connect, this)
  28. });
  29. },
  30. /**
  31. * Method triggers an AJAX request to check search engine connection
  32. * @private
  33. */
  34. _connect: function () {
  35. var result = this.options.failedText,
  36. element = $('#' + this.options.elementId),
  37. self = this,
  38. params = {},
  39. msg = '';
  40. element.removeClass('success').addClass('fail');
  41. $.each($.parseJSON(this.options.fieldMapping), function (key, el) {
  42. params[key] = $('#' + el).val();
  43. });
  44. $.ajax({
  45. url: this.options.url,
  46. showLoader: true,
  47. data: params
  48. }).done(function (response) {
  49. if (response.success) {
  50. element.removeClass('fail').addClass('success');
  51. result = self.options.successText;
  52. } else {
  53. msg = response.errorMessage;
  54. if (msg) {
  55. alert({
  56. content: msg
  57. });
  58. }
  59. }
  60. }).always(function () {
  61. $('#' + self.options.elementId + '_result').text(result);
  62. });
  63. }
  64. });
  65. return $.mage.testConnection;
  66. });