Advertisement
Guest User

Untitled

a guest
Jan 25th, 2015
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. define([
  2. 'underscore',
  3. 'orotranslation/js/translator',
  4. 'jquery',
  5. 'oroui/js/mediator',
  6. 'jquery.select2'
  7. ], function (_, __, $, mediator) {
  8. 'use strict';
  9.  
  10. /** @const */
  11. var UPDATE_MARKER = 'formUpdateMarker';
  12.  
  13. /** @const */
  14. var FORM_DATA = 'ae_business_form';
  15.  
  16. /**
  17. * Initialize "Channel type" component, and handle page reload
  18. *
  19. * @param {string} selector
  20. * @param {Object.<string, *>} fields
  21. */
  22. function initializeBusinessComponent(selector, fields) {
  23. var $el = $(selector),
  24. $form = $el.parents('form');
  25.  
  26. /**
  27. * Get serialized form string with current element value excluded.
  28. *
  29. * @returns {String}
  30. */
  31. var getFormState = function() {
  32. $el.attr('disabled', true);
  33. var result = $form.serialize();
  34. $el.attr('disabled', false);
  35.  
  36. return result;
  37. };
  38.  
  39. var formStartState = getFormState();
  40.  
  41. var processChangeType = function() {
  42. /**
  43. * Checking to make sure the value submitted is legit.
  44. */
  45. if ('' == $el.val()) {
  46. return;
  47. }
  48.  
  49. var data,
  50. event,
  51. $form = $el.parents('form'),
  52. businessForm = $('#' + FORM_DATA),
  53. elementNames = _.map(fields, function (elementIdentifier) {
  54. return $(elementIdentifier).attr('name');
  55. });
  56.  
  57. data = _.filter($form.serializeArray(), function (field) {
  58. return _.indexOf(elementNames, field.name) !== -1;
  59. });
  60.  
  61. data.push(
  62. {
  63. name: UPDATE_MARKER,
  64. value: 1
  65. }, {
  66. name: 'changedField',
  67. value: selector.replace('#', '').replace(FORM_DATA + '_', '')
  68. }
  69. );
  70.  
  71.  
  72. var parser = businessForm.serializeArray();
  73. for (var i = 0; i < parser.length; i++) {
  74. data.push(parser[i]);
  75. }
  76.  
  77. event = { formEl: $form, data: data, reloadManually: true };
  78. mediator.trigger('businessFormReload:before', event);
  79.  
  80. if (event.reloadManually) {
  81. mediator.execute('submitPage', {
  82. url: $form.attr('action'),
  83. type: $form.attr('method'),
  84. data: $.param(data)
  85. });
  86. }
  87. };
  88.  
  89. $el.on('change', function changeTypeHandler(e) {
  90.  
  91. if (getFormState() != formStartState) {
  92. processChangeType();
  93. } else {
  94. processChangeType();
  95. }
  96. });
  97. }
  98.  
  99. /**
  100. * Initialize channel form
  101. *
  102. * @param {Object} options
  103. */
  104. return function (options) {
  105.  
  106. initializeBusinessComponent(options.businessEl, options.fields);
  107.  
  108. options._sourceElement.remove();
  109. }
  110.  
  111. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement