1var $self = this; 2var endpointApi; 3var moduleId; 4var _sf; 5var Authorization = ""; 6const settings = { isAngular: true, requiredMode: 'span' }; 7function callGet(endpoint, route) { 8 var response = {}; 9 $.ajax({ 10 url: $self.ServicePath + endpoint + '/' + route, 11 method: "GET", 12 headers: $self.Headers, 13 success: function (data) { 14 response = data.Result; 15 }, 16 error: function (error) { 17 response = error; 18 }, 19 async: false 20 }); 21 return response; 22} 23function callPost(endpoint, route, object) { 24 var response = {}; 25 $.ajax({ 26 url: $self.ServicePath + endpoint + '/' + route, 27 method: "POST", 28 data: object, 29 headers: $self.Headers, 30 success: function (data) { 31 console.log(data); 32 response = data.Result; 33 }, 34 error: function (error) { 35 response = error; 36 }, 37 async: false 38 }); 39 return response; 40} 41function callGetQuery(endpoint, route, value, query) { 42 var response = {}; 43 $.ajax({
44 url: $self.ServicePath + endpoint + '/' + route + '?' + query + '=' + value, 45 method: "GET", 46 headers: $self.Headers, 47 success: function (data) { 48 response = data.Result; 49 }, 50 error: function (error) { 51 response = error; 52 }, 53 async: false 54 }); 55 return response; 56} 57function inicializeEndpoint(moduleId) { 58 //this.endpointApi = endpoint; 59 this.moduleId = moduleId; 60 61 if ($.ServicesFramework) { 62 _sf = $.ServicesFramework(moduleId); 63 $self.ServiceRoot = '/desktopmodules/JuliusProject/api/';//_sf.getServiceRoot('KickStarter'); 64 $self.ServicePath = $self.ServiceRoot; 65 $self.Headers = { 66 "ModuleId": moduleId, 67 "TabId": _sf.getTabId(), 68 "RequestVerificationToken": _sf.getAntiForgeryValue() 69 }; 70 } 71} 72 73//Valida el estado de la página, que cumpla con: requeridos, campo email, campo solo número, entre otros. 74function pageIsValid() { 75 let inputValid = validateInput(); 76 let selectValid = validateSelect(); 77 return inputValid && selectValid; 78} 79//Valida el estado de la página, que cumpla con: requeridos, campo email, campo solo número, entre otros. 80function pageIsValidContent(container) { 81 let inputValid = validateInput2(container); 82 let selectValid = validateSelect(); 83 return inputValid && selectValid; 84} 85 86//Manejador de los campos input 87function validateInput() { 88 let isValid = true; 89 var required = document.querySelectorAll('input[ax-required=true]'); 90 if (required.length > 0) { 91 for (var i = 0; i < required.length; i++) { 92 if (required[i].type === "checkbox") { 93 if (!required[i].checked) { 94 switch (settings.requiredMode) { 95 case 'span': 96 createRequired(required, i); 97 break; 98 case 'modal': 99 break; 100 } 101 102 isValid = false; 103 } 104 } 105 else if (required[i].type === "email") { 106 var valid = ValidarEmail(required[i].id); 107 if (!required[i].value && !valid) { 108 switch (settings.requiredMode) { 109 case 'span': 110 createRequired(required, i); 111 break; 112 case 'modal': 113 break; 114 } 115 116 isValid = false; 117 } 118 } 119 else { 120 if (!required[i].value) { 121 switch (settings.requiredMode) { 122 case 'span': 123 createRequired(required, i); 124 break; 125 case 'modal': 126 break; 127 } 128 129 isValid = false; 130 } 131 } 132 } 133 } 134 return isValid; 135} 136//Manejador de los campos input 137function validateInput2(container) { 138 let isValid = true; 139 var required = container.querySelectorAll('input[ax-required=true]'); 140 if (required.length > 0) { 141 for (var i = 0; i < required.length; i++) { 142 if (required[i].type === "checkbox") { 143 if (!required[i].checked) { 144 switch (settings.requiredMode) { 145 case 'span': 146 createRequired(required, i); 147 break; 148 case 'modal': 149 break; 150 } 151 152 isValid = false; 153 } 154 } 155 else if (required[i].type === "email") { 156 var valid = ValidarEmail(required[i].id); 157 if (!required[i].value && !valid) { 158 switch (settings.requiredMode) { 159 case 'span': 160 createRequired(required, i); 161 break; 162 case 'modal': 163 break; 164 } 165 166 isValid = false; 167 } 168 } 169 else { 170 if (!required[i].value) { 171 switch (settings.requiredMode) { 172 case 'span': 173 createRequired(required, i); 174 break; 175 case 'modal': 176 break; 177 } 178 179 isValid = false; 180 } 181 } 182 } 183 } 184 return isValid; 185} 186 187//Crea el texto "Campo requerido" en el documento. 188function createRequired(required, i) { 189 let messageExist = required[i].parentElement.querySelector('.error-required'); 190 if (!messageExist) { 191 let requiredMessage = required[i].getAttribute('ax-required-text'); 192 let span = document.createElement('span'); 193 span.innerText = requiredMessage; 194 span.setAttribute('class', 'error-required'); 195 required[i].parentElement.appendChild(span); 196 197 switch (required[i].type) { 198 case 'text': 199 required[i].addEventListener('keyup', function (e) { 200 if (e.currentTarget.value) { 201 let aux = required[i].parentElement.querySelector('.error-required'); 202 if (aux) { 203 aux.parentNode.removeChild(aux); 204 } 205 } 206 }); 207 break; 208 case 'select': 209 required[i].addEventListener('change', function (e) { 210 if (e.currentTarget.value) { 211 let aux = required[i].parentElement.querySelector('.error-required'); 212 if (aux) { 213 aux.parentNode.removeChild(aux); 214 } 215 } 216 }); 217 break; 218 219 case 'checkbox': 220 required[i].addEventListener('change', function (e) { 221 if (e.currentTarget.checked) { 222 let aux = required[i].parentElement.querySelector('.error-required'); 223 if (aux) { 224 aux.parentNode.removeChild(aux); 225 } 226 } 227 }); 228 break; 229 case 'email': 230 required[i].addEventListener('keyup', function (e) {
231 var valid = ValidarEmail(required[i].value); 232 if (e.currentTarget.value && valid) { 233 let aux = required[i].parentElement.querySelector('.error-required'); 234 if (aux) { 235 aux.parentNode.removeChild(aux); 236 } 237 } 238 }); 239 break; 240 } 241 } 242} 243function ValidarEmail(email) { 244 var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 245 return regex.test(email); 246} 247function validateSelect() { 248 let isValid = true; 249 var required = document.querySelectorAll('select[ax-required=true]'); 250 if (required.length > 0) { 251 for (var i = 0; i < required.length; i++) { 252 if (required[i].value === "0") { 253 switch (settings.requiredMode) { 254 case 'span': 255 createRequired(required, i); 256 break; 257 case 'modal': 258 break; 259 } 260 261 isValid = false; 262 } 263 } 264 } 265 return isValid; 266} 267 268function showAlert(message, type) { 269 let alertExist = document.querySelector('.custom-alert'); 270 if (alertExist) { 271 alertExist.parentNode.removeChild(alertExist); 272 } 273 274 let body = document.querySelector('body'); 275 let html = document.createElement('div'); 276 html.setAttribute('class', 'custom-alert ' + type); 277 html.innerHTML = message; 278 body.appendChild(html); 279 280 setTimeout(function () { 281 let alertExist = document.querySelector('.custom-alert'); 282 if (alertExist) { 283 alertExist.parentNode.removeChild(alertExist); 284 } 285 }, 3000); 286} 287function showLoading() { 288 let aux = document.querySelector('#panelCargando'); 289 if (!aux) { 290 let html = document.createElement('div'); 291 html.id = 'panelCargando'; 292 let span = document.createElement('span'); 293 span.innerHTML = 'Cargando...'; 294 let backgorund = document.createElement('div'); 295 backgorund.setAttribute('class', 'background'); 296 html.appendChild(backgorund); 297 html.appendChild(span); 298 document.querySelector('body').appendChild(html); 299 } 300} 301 302function hideLoading() { 303 let aux = document.querySelector('#panelCargando'); 304 if (aux) { 305 aux.parentNode.removeChild(aux); 306 } 307} 308 309 310function sendCampaing(tipo) { 311 var campaing = ''; 312 //saca los atributos del formulario 313 var atributos = { 314 315 email: document.getElementById("Correo").value, 316 tipo_documento: document.getElementById("TipoDocumento").value, 317 numero_documento: document.getElementById("NroDocumento").value, 318 nombre: document.getElementById("Nombres").value, 319 apellidos: document.getElementById("Apellidos").value, 320 //campania: "Si", 321 //aca van los datos que necesitas. Incluir el mail si es necesario 322 323 }; 324 switch (tipo) { 325 case '1': 326 campaing = 'mirringo_ideal'; 327 atributos.mirringo_ideal = "Si"; 328 break; 329 case '2': 330 campaing = 'ringo_ideal'; 331 atributos.ringo_ideal = "Si"; 332 break; 333 default: 334 } 335 336 //genera el evento 337 console.log(atributos); 338 var evento = { 339 "eventName": campaing,//aca va el nombre del evento predefinido en emBlue 340 "email": document.getElementById("Correo").value, 341 "attributes": atributos 342 }; 343 344 var origin = location.origin; 345 346 Authorization = (origin.includes(".com.pa")) ? "YmU1YTcxYzE4NDBjNDMzMGJkZWEwMjAwYTY4ODAxNTc=" : "ZjhlOGE0YzRlY2RjNGY5MmFjNDcyNTY0NGFkZGM2MzU="; 347 348 $.ajax({
349 url: "https://track.embluemail.com/contacts/event", 350 headers: { 351 "Authorization": "Basic "+Authorization 352 }, 353 data: JSON.stringify(evento), 354 contentType: "application/json", 355 dataType: "json", 356 type: "POST", 357 358 }).done(function (data) { 359 console.log(data); 360 }).fail(function (data) { 361 console.log(data); 362 }); 363 364 365 366} 367 368function SoloNumeros(e) { 369 var keynum = window.event ? window.event.keyCode : e.which; 370 if ((keynum === 8) || (keynum === 47)) 371 return true; 372 return /\d/.test(String.fromCharCode(keynum)); 373} 374 375 376function SoloLetras(e) { 377 key = e.keyCode || e.which; 378 tecla = String.fromCharCode(key).toLowerCase(); 379 letras = " áéÃóúabcdefghijklmnñopqrstuvwxyz"; 380 especiales = "8-37-39-46"; 381 382 tecla_especial = false; 383 for (var i in especiales) { 384 if (key === especiales[i]) { 385 tecla_especial = true; 386 break; 387 } 388 } 389 390 if (letras.indexOf(tecla) === -1 && !tecla_especial) { 391 return false; 392 } 393} 394 395function SoloLetrasYNumeros(e) { 396 tecla = (document.all) ? e.keyCode : e.which; 397 if (tecla === 8) return true; 398 if (tecla === 9) return true; 399 if (tecla === 11) return true; 400 patron = /[0-9A-Za-zñÃ'áéÃóúÃÃÃÃÃà èìòùÃÃÃÃÃâêîôûÃÃÃÃÃÃñäëïöüÃÃÃÃÃ\s\t]/; 401 te = String.fromCharCode(tecla); 402 return patron.test(te); 403} 404 405//Valida el estado de la página, que cumpla con: requeridos, campo email, campo solo número, entre otros. 406pageIsValid = function (contenedor) { 407 let inputValid = validateInput(contenedor); 408 let selectValid = validateSelect(contenedor); 409 let emailInput = validaEmailInput(contenedor); 410 let numberInput = validateNumberInput(contenedor); 411 let checkboxValid = validateCheckbox(contenedor); 412 console.log(inputValid) 413 console.log(selectValid) 414 console.log(emailInput) 415 console.log(numberInput) 416 console.log(checkboxValid) 417 418 return inputValid && selectValid && emailInput && numberInput && checkboxValid; 419}; 420 421validaEmailInput = function (contenedor) { 422 let isValid = true; 423 var required = document.querySelectorAll(`#${contenedor} input[type=email]`); 424 if (required.length > 0) { 425 for (var i = 0; i < required.length; i++) { 426 if (required[i].value != '') { 427 if (ValidarEmail(required[i].value)) { 428 isValid = true; 429 } else { 430 createRequired(required, i); 431 isValid = false; 432 } 433 } 434 } 435 } 436 return isValid; 437} 438 439function ValidarEmail(email) { 440 var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 441 return regex.test(email); 442} 443 444//Manejador de los campos input 445validateInput = function (contenedor) { 446 let isValid = true; 447 var inputs = document.querySelectorAll(`#${contenedor} input[ax-required=true]`); 448 var textArea = document.querySelectorAll(`#${contenedor} textarea[ax-required=true]`); 449 var inputsArray = Array.prototype.slice.call(inputs); 450 var textAreaArray = Array.prototype.slice.call(textArea); 451 var required = inputsArray.concat(textAreaArray); 452 if (required.length > 0) { 453 for (var i = 0; i < required.length; i++) { 454 // Saltar checkbox y number, se validan en funciones especÃficas 455 if (required[i].type === 'checkbox' || required[i].type === 'number') { 456 continue; 457 } 458 459 if (required[i].type === 'radio') { 460 if (!$(required[i]).parent().parent().find(`#${contenedor} input[type=radio]:checked`).val()) { 461 switch (settings.requiredMode) { 462 case 'span': 463 createRequired(required, i); 464 break; 465 case 'modal': 466 break; 467 } 468 469 isValid = false; 470 } 471 } 472 473 if (!required[i].value) { 474 switch (settings.requiredMode) { 475 case 'span': 476 createRequired(required, i); 477 break; 478 case 'modal': 479 break; 480 } 481 482 isValid = false; 483 } 484 } 485 } 486 return isValid; 487} 488 489//Crea el texto "Campo requerido" en el documento. 490createRequired = function (required, i, customMessage) { 491 let messageExist = required[i].parentElement.querySelector('.error-required'); 492 let requiredMessage = customMessage || required[i].getAttribute('ax-required-text') || 'Este campo es requerido'; 493 494 if (!messageExist) { 495 let span = document.createElement('span'); 496 span.innerText = requiredMessage; 497 span.setAttribute('class', 'error-required'); 498 499 // Determinar posición del mensaje 500 let position = required[i].getAttribute('ax-required-position') || 'bottom'; 501 if (position === 'bottom') { 502 required[i].parentElement.appendChild(span); 503 } else if (position === 'top') { 504 required[i].parentElement.insertBefore(span, required[i].parentElement.firstChild); 505 } else { 506 required[i].parentElement.appendChild(span); 507 } 508 } else { 509 messageExist.innerText = requiredMessage; 510 } 511 512 // Limpiar listeners previos si existen para evitar duplicados 513 var input = required[i]; 514 var eventType = ''; 515 var handler = null; 516 517 switch (required[i].type) { 518 case 'text': 519 case 'email': 520 eventType = 'keyup'; 521 handler = function (e) { 522 if (e.currentTarget.value) { 523 let aux = input.parentElement.querySelector('.error-required'); 524 if (aux) { 525 aux.parentNode.removeChild(aux); 526 } 527 } 528 }; 529 break; 530 case 'number': 531 eventType = 'input'; 532 handler = function (e) { 533 var value = e.currentTarget.value; 534 if (value && !isNaN(parseFloat(value))) { 535 let aux = input.parentElement.querySelector('.error-required'); 536 if (aux) { 537 aux.parentNode.removeChild(aux); 538 } 539 } 540 }; 541 break; 542 case 'checkbox': 543 eventType = 'change'; 544 handler = function (e) { 545 if (e.currentTarget.checked) { 546 let aux = input.parentElement.querySelector('.error-required'); 547 if (aux) { 548 aux.parentNode.removeChild(aux); 549 } 550 } 551 }; 552 break; 553 case 'select-one': 554 case 'select': 555 case 'date': 556 eventType = 'change'; 557 handler = function (e) { 558 if (e.currentTarget.value) { 559 let aux = input.parentElement.querySelector('.error-required'); 560 if (aux) { 561 aux.parentNode.removeChild(aux); 562 } 563 } 564 }; 565 break; 566 } 567 568 if (eventType && handler) { 569 // Remover listener previo si existe 570 input.removeEventListener(eventType, handler); 571 // Agregar nuevo listener 572 input.addEventListener(eventType, handler); 573 } 574} 575 576validateSelect = function (contenedor) { 577 let isValid = true; 578 var required = document.querySelectorAll(`#${contenedor} select[ax-required=true]`); 579 if (required.length > 0) { 580 for (var i = 0; i < required.length; i++) { 581 if (!required[i].value) { 582 switch (settings.requiredMode) { 583 case 'span': 584 createRequired(required, i); 585 break; 586 case 'modal': 587 break; 588 } 589 590 isValid = false; 591 } 592 } 593 } 594 return isValid; 595} 596
597//Valida inputs tipo number 598validateNumberInput = function (contenedor) { 599 let isValid = true; 600 var numberInputs = document.querySelectorAll(`#${contenedor} input[type=number][ax-required=true]`); 601 if (numberInputs.length > 0) { 602 for (var i = 0; i < numberInputs.length; i++) { 603 var input = numberInputs[i]; 604 var value = input.value; 605 var isEmpty = value === '' || value === null || value === undefined; 606 607 // Validar que tenga valor si es requerido 608 if (isEmpty) { 609 switch (settings.requiredMode) { 610 case 'span': 611 createRequired(numberInputs, i); 612 break; 613 case 'modal': 614 break; 615 } 616 isValid = false; 617 continue; 618 } 619 620 // Convertir a número 621 var numValue = parseFloat(value); 622 623 // Validar que sea un número válido 624 if (isNaN(numValue)) { 625 switch (settings.requiredMode) { 626 case 'span': 627 createRequired(numberInputs, i, 'Debe ingresar un número válido'); 628 break; 629 case 'modal': 630 break; 631 } 632 isValid = false; 633 continue; 634 } 635 636 // Validar min si existe 637 if (input.hasAttribute('min')) { 638 var minValue = parseFloat(input.getAttribute('min')); 639 if (!isNaN(minValue) && numValue < minValue) { 640 switch (settings.requiredMode) { 641 case 'span': 642 var minMessage = input.getAttribute('ax-min-text') || `El valor mÃnimo es ${minValue}`; 643 createRequired(numberInputs, i, minMessage); 644 break; 645 case 'modal': 646 break; 647 } 648 isValid = false; 649 continue; 650 } 651 } 652 653 // Validar max si existe 654 if (input.hasAttribute('max')) { 655 var maxValue = parseFloat(input.getAttribute('max')); 656 if (!isNaN(maxValue) && numValue > maxValue) { 657 switch (settings.requiredMode) { 658 case 'span': 659 var maxMessage = input.getAttribute('ax-max-text') || `El valor máximo es ${maxValue}`; 660 createRequired(numberInputs, i, maxMessage); 661 break; 662 case 'modal': 663 break; 664 } 665 isValid = false; 666 continue; 667 } 668 } 669 670 // Validar step si existe 671 if (input.hasAttribute('step')) { 672 var stepValue = parseFloat(input.getAttribute('step')); 673 if (!isNaN(stepValue) && stepValue > 0) { 674 var remainder = (numValue - (input.hasAttribute('min') ? parseFloat(input.getAttribute('min')) : 0)) % stepValue; 675 // Permitir pequeñas diferencias por precisión de punto flotante 676 if (Math.abs(remainder) > 0.0001 && Math.abs(remainder - stepValue) > 0.0001) { 677 switch (settings.requiredMode) { 678 case 'span': 679 var stepMessage = input.getAttribute('ax-step-text') || `El valor debe ser múltiplo de ${stepValue}`; 680 createRequired(numberInputs, i, stepMessage); 681 break; 682 case 'modal': 683 break; 684 } 685 isValid = false; 686 continue; 687 } 688 } 689 } 690 } 691 } 692 return isValid; 693} 694 695//Valida checkboxes 696validateCheckbox = function (contenedor) { 697 let isValid = true; 698 var checkboxes = document.querySelectorAll(`#${contenedor} input[type=checkbox][ax-required=true]`); 699 if (checkboxes.length > 0) { 700 for (var i = 0; i < checkboxes.length; i++) { 701 if (!checkboxes[i].checked) { 702 switch (settings.requiredMode) { 703 case 'span': 704 createRequired(checkboxes, i); 705 break; 706 case 'modal': 707 break; 708 } 709 isValid = false; 710 } 711 } 712 } 713 return isValid; 714}
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.