Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- define([
- 'underscore',
- 'orotranslation/js/translator',
- 'jquery',
- 'oroui/js/mediator',
- 'jquery.select2'
- ], function (_, __, $, mediator) {
- 'use strict';
- /** @const */
- var UPDATE_MARKER = 'formUpdateMarker';
- /** @const */
- var FORM_DATA = 'ae_business_form';
- /**
- * Initialize "Channel type" component, and handle page reload
- *
- * @param {string} selector
- * @param {Object.<string, *>} fields
- */
- function initializeBusinessComponent(selector, fields) {
- var $el = $(selector),
- $form = $el.parents('form');
- /**
- * Get serialized form string with current element value excluded.
- *
- * @returns {String}
- */
- var getFormState = function() {
- $el.attr('disabled', true);
- var result = $form.serialize();
- $el.attr('disabled', false);
- return result;
- };
- var formStartState = getFormState();
- var processChangeType = function() {
- /**
- * Checking to make sure the value submitted is legit.
- */
- if ('' == $el.val()) {
- return;
- }
- var data,
- event,
- $form = $el.parents('form'),
- businessForm = $('#' + FORM_DATA),
- elementNames = _.map(fields, function (elementIdentifier) {
- return $(elementIdentifier).attr('name');
- });
- data = _.filter($form.serializeArray(), function (field) {
- return _.indexOf(elementNames, field.name) !== -1;
- });
- data.push(
- {
- name: UPDATE_MARKER,
- value: 1
- }, {
- name: 'changedField',
- value: selector.replace('#', '').replace(FORM_DATA + '_', '')
- }
- );
- var parser = businessForm.serializeArray();
- for (var i = 0; i < parser.length; i++) {
- data.push(parser[i]);
- }
- event = { formEl: $form, data: data, reloadManually: true };
- mediator.trigger('businessFormReload:before', event);
- if (event.reloadManually) {
- mediator.execute('submitPage', {
- url: $form.attr('action'),
- type: $form.attr('method'),
- data: $.param(data)
- });
- }
- };
- $el.on('change', function changeTypeHandler(e) {
- if (getFormState() != formStartState) {
- processChangeType();
- } else {
- processChangeType();
- }
- });
- }
- /**
- * Initialize channel form
- *
- * @param {Object} options
- */
- return function (options) {
- initializeBusinessComponent(options.businessEl, options.fields);
- options._sourceElement.remove();
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement