1// Data de implementação: 28/05/2014 10:16:48 2/* Ação: 3 Objeto que trabalha com ajax, suportando parâmetros para trabalhar diretamente no HTML com as respostas do servidor. 4*/ 5if (typeof X == "undefined") { 6 X = []; 7 X.isLoaded = false; 8 X.ajaxSubmitEventsCreated = false; 9} 10 11X.currentForm = null; 12 13X.get = function (u, callback) { 14 return X.ajax(u, 'GET', callback); 15}; 16 17X.post = function (u, values, callback) { 18 return X.ajaxData(u, values, callback); 19}; 20 21X.ajax = function (u, method, callback) { 22 $.ajax({ 23 url: u, 24 type: method, 25 dataType: "json", 26 success: function (data) { 27 X.ajaxHandleResponse(data, callback); 28 }, 29 error: function(XMLHttpRequest, textStatus, errorThrown) { 30 X.ajaxError(XMLHttpRequest.status, XMLHttpRequest.responseText); 31 } 32 }); 33 return false; 34}; 35 36X.ajaxData = function (u, values, callback) { 37 $.ajax({ 38 url: u, 39 type: 'POST', 40 data: values, 41 dataType: "json", 42 success: function (data) { 43 X.ajaxHandleResponse(data, callback); 44 }, 45 error: function(XMLHttpRequest, textStatus, errorThrown) { 46 X.ajaxError(XMLHttpRequest.status, XMLHttpRequest.responseText, callback); 47 }, 48 async: true 49 }); 50 return false; 51 }; 52 53X.ajaxHandleResponse = function(data, callback, exception = false) { 54 X.json(data); 55 X.currentForm = null; 56 callback = callback || null; 57 $(document).trigger('jsonSuccess').unbind('jsonSuccess'); 58 59 finalData = { 60 "error": false, 61 "data": data 62 }; 63 64 if (exception) { 65 finalData = data; 66 } 67 68 X.executeFunctionByName(callback, window, finalData); 69} 70 71X.ajaxError = function(status, text, callback) { 72 X.submittingForm = false; 73 var response; 74 try { 75 response = JSON.parse(text); 76 } catch (e) { 77 response = null; 78 } 79 80 if (status == 422 && response && response.erroRecaptchaGlobal) { 81 ajaxutils.showAlertModal('Aviso', `Não foi possÃvel processar a requisição pois o recaptcha não foi validado. ${response.erroRecaptchaGlobal}`, ''); 82 X.currentForm = null; 83 } else if (response.error) { 84 X.ajaxHandleResponse(response, callback, exception = true); 85 } 86} 87 88X.executeFunctionByName = function (functionName, context , args) { 89 if (functionName == null || context == null || typeof context === "undefined") { 90 return false; 91 } 92 args = args || null; 93 if (args != null){ 94 var args = Array.prototype.slice.call(arguments, 2); 95 } 96 var namespaces = functionName.split("."); 97 var func = namespaces.pop(); 98 for (var i = 0; i < namespaces.length; i++) { 99 context = context[namespaces[i]]; 100 } 101 var funcao = context[func].apply(context, args); 102 if (typeof (funcao) === 'function') { 103 return funcao; 104 } else { 105 return false; 106 } 107} 108 109X.json = function (r) { 110 if (r['data'] == undefined || r['data']['data'] == undefined || r['data']['type'] == undefined) { 111 return; 112 } 113 114 var type = r['data']['type']; 115 var data = r['data']['data']; 116 if (type == 'triggerfunction') { 117 var datalayer = data['datalayer']; 118 var fbpixel = data['fbpixel']; 119 var edrone = data['edrone']; 120 121 if (datalayer) { 122 $('body').append(datalayer); 123 } 124 125 if (fbpixel) { 126 $('body').append(fbpixel); 127 } 128 129 if (edrone) { 130 document.body.insertAdjacentHTML('beforeend', edrone); 131 } 132 133 var response = data['response'] ? data['response'] : null; 134 X.executeFunctionByName(data['func'], window, response); 135 } else if (type == 'redirectpost') { 136 ajaxutils.redirectPost(window.location.href, X.currentForm.find(':input')); 137 } else if (type == 'facebookpixel') { 138 facebookPixel.sendContact(data['event'], data['fbPixelId']); 139 window.location.reload(); 140 } else if (type === 'tiktokPixel') { 141 tiktokPixel.sendContact(data['event'], data['ttkPixelId']); 142 window.location.reload(); 143 } else if (type === 'bothpixels') { 144 facebookPixel.sendContact(data['facebook']['event'], data['facebook']['fbPixelId']); 145 tiktokPixel.sendContact(data['tiktok']['event'], data['tiktok']['ttkPixelId']); 146 window.location.reload(); 147 } else if (type == 'alert') { 148 alert(data); 149 } else if (type == 'eval') { 150 eval(data); 151 } else if (type == 'refresh') { 152 window.location.reload(); 153 } else if (type == 'redir') { 154 if (data['secs'] > 0 && data['location'] != '') { 155 window.setTimeout(function() { 156 window.location = data['location'] 157 }, data['secs'] * 1000); 158 } else { 159 window.location = data; 160 } 161 } else if (type == 'updater') { 162 var id = data['id']; 163 var classe = data['class']; 164 var inner = data['html']; 165 $('#' + id).html(inner); 166 $('.' + classe).html(inner) 167 } else if (type == 'attr') { 168 var id = data['id']; 169 var classe = data['class']; 170 var attr = data['attr']; 171 var value = data['value']; 172 $('#' + id).attr(attr, value); 173 $('.' + classe).attr(attr, value); 174 } else if (type == 'append') { 175 var id = data['id']; 176 var classe = data['class']; 177 var inner = data['html']; 178 $('#' + id).append(inner); 179 $('.' + classe).append(inner); 180 } else if (type == 'addclass') { 181 var id = data['id']; 182 var classe = data['class']; 183 $('#' + id).addClass(classe); 184 } else if (type == 'remclass') { 185 var id = data['id']; 186 var classe = data['class']; 187 $('#' + id).removeClass(classe); 188 } else if (type == 'close'){ 189 X.boxClose(); 190 } else if (type == 'dialog') { 191 X.boxShow(data, true) 192 } else if (type == 'css') { 193 var id = data['id']; 194 var classe = data['class']; 195 var css_attr = data['css']; 196 var value = data['value']; 197 $('#' + id).css(css_attr, value); 198 $('.' + classe).css(css_attr, value); 199 }
199 else if (type == 'modal-bootstrap') { 200 $('.modal-content').html(""); 201 $('.modal-content').append(data['html']); 202 $('.modal').appendTo("body").modal('show'); 203 //X.ajaxSubmit(); 204 } else if (type == 'modal') { 205 $('.modal-dialog').parent().remove(); 206 $('.modal').remove(); 207 $('[class^="modal"].fade').remove(); 208 209 $('body').removeClass("modal-open").removeAttr('style').append('<div class="modal fade"><div class="modal-dialog"><div class="modal-content">'+data['html']+'</div></div></div>'); 210 if ($('.modal-content .is-modal-lg').length > 0) 211 $('.modal-dialog').addClass('modal-lg'); 212 $('.modal').on('shown.bs.modal', function (e) { 213 $('.thumbs[data-for="modal"]').find('.thumb-trigger').first().trigger('click'); 214 }); 215 216 $('.modal').modal('show').on('hidden.bs.modal', function () { 217 $('.modal-dialog').parent().remove(); 218 $('.modal').remove(); 219 $('[class^="modal"].fade').remove(); 220 }); 221 //X.ajaxSubmit(); 222 223 $('html').on('keyup', function (e) { 224 if (e.keyCode === 27) { 225 $('.modal').modal('hide'); 226 /*$('.modal-dialog').parent().remove(); 227 $('.modal').remove(); 228 $('.fade').remove();*/ 229 } 230 }); 231 232 //$('.thumb-trigger').first().trigger('click'); 233 //layout.thumbOculto(); 234 235 //layout.treatGrid(); 236 237 $(document).trigger('loadvzoom'); 238 $(document).trigger('icontrigger'); 239 240 $('.thumb-trigger').on('click', function () { 241 if ($(this).parent().attr('data-for') == 'modal') { 242 id = 'image-container-modal'; 243 } else { 244 id = 'image-container'; 245 } 246 element = $('<img/>'); 247 element.attr('src', $(this).attr('data-normal')).attr('data-zoom', $(this).attr('data-zoom')).addClass('img-responsive').addClass('vzoom'); 248 $('#'+id+' img').remove(); 249 $('#'+id+' .vzoom-container').remove(); 250 $('#'+id).append(element); 251 252 $(document).trigger('loadvzoom'); 253 }); 254 $(document).trigger('makeajaxlink'); 255 $(document).trigger('modalCreated'); 256 257 $('.modal').find('.thumb-trigger').first().trigger('click'); 258 } else if (type == 'mix') { 259 for (var x in data) { 260 r['data'] = data[x]; 261 X.json(r) 262 } 263 } else if (type == 'checkout') { 264 if (data['enderecos']) { 265 var tmp = $('<div></div>'); 266 var genericElement = $('[data-generic-address]'); 267 tmp.append($(genericElement[0].cloneNode(true))); 268 var genericAddress = tmp.html(); 269 for (var x in data['enderecos']) { 270 var address = data['enderecos'][x]; 271 if (x != 'new' && $('[data-idend="'+x+'"]').length == 0 ) { 272 var newAddress = $(genericAddress); 273 newAddress.find('.address-title').html(address.logradouro+', '+address.numero+' ('+address.cep+')'); 274 newAddress.find('[data-idend]').attr('data-idend', x); 275 newAddress.find('[href="#novoEndereco"]').attr('href', '#end'+x); 276 newAddress.find('#novoEndereco').attr('id', 'end'+x); 277 newAddress.removeAttr('data-generic-address').attr('data-client-address', ''); 278 newAddress.find('.cep').mask("99999-999"); 279 newAddress.find('[name="cep"].checkout-field').val(address.cep).after('<input type="hidden" name="ceporiginal" value="'+address.ceporiginal+'" class="ceporiginal">'); 280 newAddress.find('[name="logradouro"].checkout-field').val(address.logradouro); 281 newAddress.find('[name="numero"].checkout-field').val(address.numero); 282 newAddress.find('[name="bairro"].checkout-field').val(address.bairro); 283 newAddress.find('[name="complemento"].checkout-field').val(address.complemento); 284 newAddress.find('[name="cidade"].checkout-field').val(address.cidade); 285 newAddress.find('#cep').removeAttr('id'); 286 newAddress.find('[data-endindex]').attr('data-endindex', x); 287 var estado = newAddress.find('[name="estado"].checkout-field'); 288 estado.find('option:selected').prop('selected', false); 289 estado.find('option[value="'+address.estado+'"]').prop('selected', true); 290 genericElement.before(newAddress); 291 } 292 if (data['enderecos'][X.toString()].disabled) { 293 Checkout.disableChildren($('[data-idend="'+x+'"]').parents('[data-client-address]')); 294 } else if (data['enderecos'][X.toString()].enabled) { 295 Checkout.enableChildren($('[data-idend="'+x+'"]').parents('[data-client-address]')); 296 } 297 298 if (data['enderecos'][X.toString()].active) { 299 $('[data-idend="'+x+'"]').trigger('selectaddress'); 300 } else { 301 $('[data-idend="'+x+'"]').trigger('hideaddress'); 302 } 303 } 304 } 305 306 if (data['limparenderecos']) { 307 $('[data-client-address]').remove(); 308 } 309 310 if (data['showauth']) 311 $('[data-only-auth]').css('display', 'block'); 312 313 if (data['fieldval']) { 314 for (var x in data['fieldval']) { 315 $('[name="'+x+'"].checkout-field').val(data['fieldval'][x]); 316 } 317 } 318 319 if (data['disable']) { 320 for (var x in data['disable']) { 321 $('[name="'+x+'"].checkout-field').prop('disabled', true); 322 } 323 } 324 325 if (data['enable']) { 326 for (var x in data['enable']) { 327 $('[name="'+x+'"].checkout-field').prop('disabled', false); 328 } 329 } 330 331 if (data['click']) { 332 for (var x in data['click']) { 333 $(x).trigger('click'); 334 } 335 } 336 337 if (data['hide']) { 338 for (var x in data['hide']) { 339 $(x).hide(); 340 } 341 } 342 343 if (data['show']) { 344 for (var x in data['show']) { 345 $(x).show(); 346 } 347 } 348 349 if (data['cleanerrors']) { 350 for (var x in data['cleanerrors']) { 351 Checkout.cleanAllStatus($('[data-step="'+x+'"]')); 352 } 353 } 354 355 if (data['field']) { 356 for (var x in data['field']) { 357 Checkout.launchError($('[name="'+x+'"].checkout-field'), data['field'][x]); 358 } 359 } 360 361 if (data['gostep']) { 362 Checkout.goStep(data['gostep']); 363 } 364 365 if (data['enablestep']) { 366 Checkout.enableStep($('[data-step="'+data['gostep']+'"]')); 367 } 368 369 if (data['triggererror']) { 370 $('[data-ok-container]').html(''); 371 $('[data-error-container]').html(data['triggererror']); 372 } 373 374 if (data['triggerok']) { 375 $('[data-error-container]').html(''); 376 $('[data-ok-container]').html(data['triggerok']); 377 } 378 379 if (data['disabletimers']) { 380 $(document).trigger('disabletimers'); 381 } 382 383 if (data['setnewaddressID']) { 384 $('[data-idend="new"]').attr('data-newid', data['setnewaddressID']); 385 } 386 387 if (data['refresh']) { 388 window.location.reload(); 389 } 390 } 391 $("#loading").css('display', 'none'); 392}; 393 394X.getXY = function () { 395 var x, y; 396 if (document.body.scrollTop) { 397 x = document.body.scrollLeft; 398 y = document.body.scrollTop 399 } else { 400 x = document.documentElement.scrollLeft; 401 y = document.documentElement.scrollTop 402 } 403 return { 404 x: x, 405 y: y 406 } 407}; 408 409X.submittingForm = null; 410X.defaultCallbackSubmittingForm = function() { 411 $(X.submittingForm).data('submitted', false); 412} 413 414X.ajaxSubmitEvents = function() { 415 if (X.ajaxSubmitEventsCreated) { 416 return; 417 } 418 419 X.ajaxSubmitEventsCreated = true; 420 421 $(document).off('submit', '.ajaxform'); 422 $(document).off('submit', '.ajaxform, form[data-action]'); 423 $(document).off('click', '.ajaxsubmitbutton'); 424 425 $(document).on("submit", ".ajaxform", function(e) {
426 X.ajaxSubmitAction(e, this); 427 e.preventDefault(); 428 }); 429 430 $(document).on('click', '.ajaxsubmitbutton', function(e) { 431 $(this).parent('form').trigger('submit'); 432 e.preventDefault(); 433 }); 434} 435 436X.ajaxSubmit = function() { 437 X.ajaxSubmitEvents(); 438} 439 440X.ajaxSubmitAction = function (e, element) { 441 if (!element) { 442 return; 443 } 444 445 var callback = $(element).attr('data-callback'); 446 447 if (!callback && $(X.submittingForm).data('submitted') === true) { 448 e.preventDefault(); 449 return false; 450 } 451 452 X.submittingForm = element; 453 $(X.submittingForm).data('submitted', true) 454 455 var data = $(element).serialize(); 456 var encode = $(element).attr('data-encode'); 457 458 if ($(element).attr('additional-form-data')) { 459 var formSelector = $(element).attr('additional-form-data'); 460 var remove = $(element).attr('additional-form-data-remove'); 461 var additionalData = X.getFormData(formSelector, remove); 462 463 data += '&' + additionalData; 464 } 465 466 if (typeof recaptchaGlobal != 'undefined') { 467 recaptchaGlobal.sendInvisibleRecaptchaValidation(); 468 data += `&recaptcha_token=${recaptchaGlobal.token}`; 469 } 470 471 if (encode == 'true') { 472 data = 'encode='+btoa(data); 473 } 474 475 if (!callback) { 476 callback = 'X.defaultCallbackSubmittingForm'; 477 } 478 479 X.currentForm = $(element); 480 481 var actionAttr = $(element).attr('data-action') ? $(element).attr('data-action') : $(element).attr('action'); 482 483 if ($(element).attr('method') == 'post') { 484 X.post(actionAttr, data, callback); 485 } else { 486 X.get(actionAttr + "?" + data, callback); 487 } 488 489 e.preventDefault(); 490 return false; 491}; 492 493X.getFormData = function(formSelector, remove) { 494 if ($(formSelector).length == 0) { 495 return null; 496 } 497 498 var data = $(formSelector).serialize(); 499 500 if (remove) { 501 remove = remove.split(","); 502 503 if (remove.length == 0) { 504 return data; 505 } 506 507 remove.forEach(function (value) { 508 data = X.removeQueryParam(value, data); 509 }); 510 } 511 data = decodeURIComponent(data); 512 513 return data; 514}; 515 516X.removeQueryParam = function(key, sourceURL) { 517 var rtn = sourceURL.split("&"); 518 var i = 0; 519 rtn.forEach(function (value) { 520 var param = value.split("=")[0]; 521 if (param === key) { 522 rtn.splice(i, 1); 523 } 524 i++; 525 }); 526 rtn = rtn.join("&"); 527 528 return rtn; 529}; 530 531$(function () { 532 if (X.isLoaded) { 533 return; 534 } 535 536 X.isLoaded = true; 537 X.ajaxSubmitEvents(); 538}); 539 540X.ajaxSubmitEvents(); 541// X.alert = function () { 542// alert("Teste do X.Alert"); 543// };
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.