Files
Daniel Fernandez Sotolongo 1338bdd211 documentacion del articulo
2025-09-15 13:27:59 -04:00

199 lines
6.0 KiB
JavaScript

var request = null;
/* Construcción de una petición
* Parámetros:
* reqType: el tipo de request GET or POST
* url: la URL a invocar
* asynch: Para indicar si ejecutamos la petición de forma asíncrona
* funcion: funcion que se registra para onreadystatechange
*/
function httpRequest(reqType, url, parametros, asynch, funcion) {
//mozilla based
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType("text/xml");
}
} else if(window.ActiveXObject) {
request = new ActiveXObject("Msxml2.XMLHTTP");
if(!request) {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
}
//comprueba que request se ha creado ok
if(request) {
initReq(reqType, url, parametros, asynch, funcion);
} else {
alert("Su navegador no es compatible con esta aplicación");
}
}
//Inicializa una petición y la envía
function initReq(reqType, url, parametros, bool, funcion) {
try {
request.onreadystatechange = funcion
request.open(reqType, url, bool);
if(parametros != null) {
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
}
request.send(parametros);
} catch (errv) {
alert("No se pudo contactar con el servidor\nPor favor, vuelva a intentarlo");
alert(errv);
}
}
function addEvent(obj, evType, fn){
if (obj.addEventListener){
obj.addEventListener(evType, fn, false);
return true;
} else if (obj.attachEvent){
var r = obj.attachEvent("on" + evType, fn);
return r;
} else {
return false;
}
}
addEvent(window, 'load', onLoadParaSeleccionarArticulo);
//manejadores de eventos del formulario
function onLoadParaSeleccionarArticulo() {
var checkDeArticulo = getCheckDeArticulo();
if(checkDeArticulo != null) {
checkDeArticulo.onclick = function() {
enviarMarcadoDeArticulo(this);
}
checkDeArticulo.disabled = false;
}
}
function enviarMarcadoDeArticulo(checkDeArticulo) {
if(checkDeArticulo != null) {
var url = new Array();
var accion = "";
if(checkDeArticulo.checked) {
//Marcarlo
accion = "seleccionar";
} else {
//Desmarcarlo
accion = "deseleccionar";
}
url.push("/servlet/seleccionarArticulo?accion=");
url.push(accion);
url.push("&codigoDeArticulo=");
url.push(encodeURIComponent(checkDeArticulo.getAttribute("value")));
httpRequest("GET", url.join(""), null, true, manejarRespuestaDeMarcadoDeArticulo);
}
}
//manejador de la respuesta de XMLHttpRequest
function manejarRespuestaDeMarcadoDeArticulo() {
try {
if(request.readyState == 4) {
if(request.status == 200) {
var respuesta = request.responseXML.documentElement;
if(respuesta != null) {
if(respuesta.nodeName == "respuesta") {
var estado = respuesta.getElementsByTagName("estado");
if(estado[0].getAttribute("valor") == "ok") {
redibujarArticulo(respuesta);
}
}
} else {
alert("Tipo de respuesta no esperada\nPor favor, vuelva a intentarlo");
}
} else {
alert("Ha ocurrido un problema comunicando con el servidor\nPor favor, vuelva a intentarlo");
}
}
} catch (err) {
alert("Ha ocurrido un error procesando su petición\nPor favor, vuelva a intentarlo");
}
}
function redibujarArticulo(respuesta) {
var seleccionar = true;
var conjuntoDeArticulos = respuesta.getElementsByTagName("documentos-seleccionados");
var articulo = null;
if(conjuntoDeArticulos.length == 1) {
//Marcar como seleccionado
seleccionar = true;
articulo = conjuntoDeArticulos[0].childNodes[0];
} else {
conjuntoDeArticulos = respuesta.getElementsByTagName("documentos-deseleccionados");
if(conjuntoDeArticulos.length != 0) {
//Marcar como deseleccionados
seleccionar = false;
articulo = conjuntoDeArticulos[0].childNodes[0];
}
}
if(articulo != null) {
actualizarDivDeSuscribirArticulo(articulo.getAttribute("codigo"),articulo.getAttribute("tipo"), seleccionar);
}
}
function actualizarDivDeSuscribirArticulo(codigoDeArticulo,tipoDeDocumento, seleccionar) {
var labelDeSelecionarArticulo = document.getElementById("labelDeSeleccion-" + tipoDeDocumento +"-" + codigoDeArticulo);
if(labelDeSelecionarArticulo != null) {
//Cambio la clase del label del articulo
var divDeSeleccionarArticulo = labelDeSelecionarArticulo.parentNode.parentNode.parentNode;
var classDeSeleccionarArticulo = divDeSeleccionarArticulo.className;
if(seleccionar) {
if(classDeSeleccionarArticulo == null) {
divDeSeleccionarArticulo.className = "seleccionado";
} else {
divDeSeleccionarArticulo.className = classDeSeleccionarArticulo + " " + "seleccionado";
}
} else {
if(classDeSeleccionarArticulo != null) {
divDeSeleccionarArticulo.className = classDeSeleccionarArticulo.replace("seleccionado", "");
}
}
}
}
function getCheckDeArticulo() {
var resultado = null;
var encontrado = false;
var todosLosInputs = document.getElementsByTagName("input");
var inputActual = null;
var i = 0;
while(i < todosLosInputs.length && !encontrado) {
inputActual = todosLosInputs[i];
if(inputActual.type == "checkbox" && inputActual.id.substring(0, 23) == "checkDePortadaSeleccion") {
resultado = inputActual;
encontrado = true;
}
i++;
}
return(resultado);
}