var ajaxHandler = function(element, sParameters) { sParameters = (sParameters) ? sParameters : {}; var ajaxUrl = $(element).attr('ajax-url'); var ajaxMethod = ($(element).attr('ajax-method') === undefined) ? 'GET' : $(element).attr('ajax-method'); var ajaxDataType = ($(element).attr('ajax-dataType') === undefined) ? 'json' : $(element).attr('ajax-dataType'); var ajaxRender = ($(element).attr('ajax-render') === undefined) ? '#ajax-render' : $(element).attr('ajax-render'); var ajaxEffect = ($(element).attr('ajax-effect') === undefined) ? 'fade' : $(element).attr('ajax-effect'); var noLoading = ($(element).attr('no-loading') === undefined) ? false : true; var urlReplace = ($(element).attr('url-replace') === undefined) ? false : true; var displayHtml = ($(element).attr('ajax-display-html') === undefined) ? 'replace-html' : $(element).attr('ajax-display-html'); var aiTool = ($(element).attr('ai-tool') === undefined) ? false : true; var aiToolText = ($(element).attr('ai-tool-text') === undefined) ? 'Procesando con AI...' : $(element).attr('ai-tool-text'); var closeModals = ($(element).attr('close-modals') === undefined) ? false : true; var isForm = ($(element).is("form")) ? true : false; var buttonState = (isForm) ? $("[type=submit]", element) : element; var btnStateLoading = ($('.btn-state-loading')); if (!validateRequest(ajaxUrl)) { return false; } if (!$(element).is("select") && !noLoading) { $(buttonState).button('loading'); } if (typeof btnStateLoading !== 'undefined' && !noLoading) { $(btnStateLoading).button('loading'); } if (aiTool) { loadAiSpin({type: 'show', text: aiToolText}); } if (closeModals) { $('.modal').modal('hide'); } if (isForm) { var postData = (ajaxMethod === 'GET') ? $(element).serialize() : new FormData($(element)[0]); var ajax = $.ajax ({ url: ajaxUrl, type: ajaxMethod, data: postData, dataType: ajaxDataType, processData: false, contentType: false }); } else { var ajax = $.ajax ({ url: ajaxUrl, type: ajaxMethod, data: sParameters, dataType: ajaxDataType }); } ajax.done(function(response) { if (ajaxDataType === 'json') { if (response.render_template){ $(ajaxRender).html(response.render_template); eval(ajaxEffect)(ajaxRender); } if (response.callback) { if (Object.keys(response.params).length){ if (typeof response.params['ia-tools'] != 'undefined' && response.params['ia-tools']) { setTimeout(() => { loadAiSpin({}); eval(response.callback)(response.params); }, 2000); } else { eval(response.callback)(response.params); } } else { eval(response.callback)(); } } //Asignar foco a un elemento if (response.idFocus) { $('#'+response.idFocus).focus(); } } else if (ajaxDataType === 'html') { if (displayHtml == 'append') { $(ajaxRender).append(response); } else { $(ajaxRender).html(response); } eval(ajaxEffect)(ajaxRender); } }) .always(function() { if (!$(element).is("select") && !noLoading) { $(buttonState).button('reset'); } if (typeof btnStateLoading !== 'undefined' && !noLoading) { $(btnStateLoading).button('reset'); } }); if (urlReplace) { if (window.history.pushState) { window.history.pushState('', '', ajaxUrl); } else if (window.history.replaceState) { window.history.replaceState('', '', ajaxUrl); } } return false; }; function loadAiSpin(params) { if(typeof params.type != 'undefined' && params.type == 'show') { let content = `
`; content += `