cargarapida.js 10.2 KB
// Función para obtener el valor de un parámetro de URL por nombre
function getParameterByName(name, url = window.location.href) {
    name = name.replace(/[\[\]]/g, '\\$&');
    const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');
    const results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

// Función que se ejecuta cuando la página se carga
window.onload = function() {
    // Extrae el valor de planilla_cent de la URL
    const planillaCentValue = getParameterByName('planilla_cent');
    // Si el parámetro existe, se puede usar en otra función
    if (planillaCentValue) {
        console.log('Valor de planilla_cent:', planillaCentValue);
        // Llama a otra función con el valor del parámetro
        usePlanillaCentValue(planillaCentValue);
        window.watchForChanges();//Desde snaper observo si cambia algun dato y marco para guardar
    } 
    cargarPesoMitadFrenos();
};


function cargarPesoMitadFrenos() {     
    setTimeout(function() {
        dividirPesoId("peso_estatico_general", "peso_izquierda_freno_mano", "peso_derecho_freno_mano");
        calcularDiferenciaPorcentaje('2fuerza_izquierda_freno_mano', '2fuerza_derecha_freno_mano', "diferencia_freno_mano");
    }, 500);
}

function calcularDiferenciaAbsoluta(campo1_id, campo2_id, resultado_id) {
    // Obtén los valores de los campos, reemplaza coma por punto y conviértelos a números flotantes
    const valor1 = parseFloat(document.getElementById(campo1_id).value.replace(',', '.')) || 0;
    const valor2 = parseFloat(document.getElementById(campo2_id).value.replace(',', '.')) || 0;
    
    // Calcula la diferencia absoluta con precisión decimal
    const diferencia = Math.abs(valor1 - valor2).toFixed(2); // Redondea a 2 decimales
    
    // Coloca el resultado en el campo de resultado
    document.getElementById(resultado_id).value = diferencia;
}


function dividirPesoName(pesoTotalName, pesoIzqName, pesoDerName) {
    console.log("Cragando pesos medios Name"+ pesoTotalName)
    try{
        // Obtener el elemento de peso total y convertir su valor a número entero
        const pesoTotalInput = document.getElementsByName(pesoTotalName)[0];
        const pesoTotal = parseInt(pesoTotalInput.value) || 0;
    
        // Calcular la mitad y redondear a números enteros
        const pesoMitad = Math.floor(pesoTotal / 2);
    
        // Asignar la mitad a ambos campos de peso izquierdo y derecho
        document.getElementsByName(pesoIzqName)[0].value = pesoMitad;
        document.getElementsByName(pesoDerName)[0].value = pesoMitad;
    }catch{
        console.log("No se pudo cargar mitad de peso " +pesoTotalName)
    }
}

function dividirPesoId(pesoTotalId, pesoIzqId, pesoDerId) {
    console.log("Cragando pesos medios Id: "+ pesoTotalId)
    try {
        // Obtener el elemento de peso total y convertir su valor a número entero
        const pesoTotalInput = document.getElementById(pesoTotalId);
        const pesoTotal = parseInt(pesoTotalInput.value) || 0;
        console.log(pesoTotal);
    
        // Calcular la mitad y redondear a números enteros
        const pesoMitad = Math.floor(pesoTotal / 2);
        console.log(pesoMitad);
        
        // Asignar la mitad a ambos campos de peso izquierdo y derecho
        document.getElementById(pesoIzqId).value = pesoMitad;
        document.getElementById(pesoDerId).value = pesoMitad;
    } catch (error) {
        console.log(error)
    }
}

function calcularDiferenciaPorcentaje(campo1_id, campo2_id, resultado_id) {
    // Obtén los valores de los campos, reemplaza coma por punto y conviértelos a números flotantes
    const valor1 = parseFloat(document.getElementById(campo1_id).value.replace(',', '.')) || 0;
    const valor2 = parseFloat(document.getElementById(campo2_id).value.replace(',', '.')) || 0;

    // Determina el mayor y el menor valor
    const mayor = Math.max(valor1, valor2);
    const menor = Math.min(valor1, valor2);

    // Calcula la diferencia porcentual con respecto al mayor valor
    const porcentajeDiferencia = mayor !== 0 ? ((mayor - menor) / mayor * 100).toFixed(2) : 0;

    // Coloca el resultado en el campo de resultado
    document.getElementById(resultado_id).value = porcentajeDiferencia;
}

function isStatusActive(status) {
    return status === 'Anulado' || status === 'No Inspeccionado';
}


// Ejemplo de una función que utiliza el valor del parámetro
function usePlanillaCentValue(planillaCentValue) {
    // Aquí puedes implementar la lógica que desees con el valor
    console.log('Usando el valor de planilla_cent:', planillaCentValue);
    // Por ejemplo, podrías hacer una solicitud a un servidor, mostrar un mensaje, etc.
    fetch('/planilla', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({planilla:planillaCentValue})
    })
    .then(response => {
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        return response.json();
    })
    .then(data => {
        // Asume que el servidor devuelve una URL para la página generada
        //window.location.href = data.url;
        llendoTentativo(data);
        //CargaDetalles(data);
        recuperandoSnap(data);
    })
    .catch(error => {
        console.log('There has been a problem with your fetch operation:', error);
    });
}
function recuperandoSnap(data){
    if (!data.snaper){
        return
    }
    console.log("Cargando snap")
    const objeto = JSON.parse(data.snap);
    const snap = JSON.parse(objeto.data);
    //Limpio los datos del formulario
    console.log(snap)
    window.populateFieldsFromJson(snap)
}

function CargaDetalles(data){
    //Aca elejir segun ejes 2 o -1
    console.log("Correccion de carga")
    let linea = JSON.parse(data.json_cent);
    console.log(linea.rta.frenos)
    document.getElementById('peso_estatico_freno_mano').value = linea.rta.frenos.peso_estatico_2
}

function llendoTentativo(data) {
    //console.log(data)
    //const patenteField = document.querySelector('input[name="patente"]');

    // Establece el valor del campo de entrada con data.name
    //console.log(data)
    const patenteFields = document.querySelectorAll('input[name="patente"]');
    patenteFields.forEach(field => {
            field.value = data.name;
        });
    if (isStatusActive(name.resultado)) {
        return None
    } else {
        document.getElementById("report").style.display = "block";
        document.getElementById("form").style.display = "none";
        let linea = JSON.parse(data.json_cent);
        let inspaccion = linea.rta
        //console.log(inspaccion)
        fillResults(inspaccion);
        LLenarDatosAuxiliareas(data,inspaccion)

    };
}
function LLenarDatosAuxiliareas(data,inspeccion) {
    console.log(data)
    let linea = JSON.parse(data.linea_excel);
    let conbustible =  "Gas Oil";
    console.log(inspeccion)
    EscribirValores('input[name="fecha"]',formatDateToHuman(data.fecha));
    EscribirValores('input[name="hora"]',linea.fin);
    EscribirValores('input[name="ingeniero"]',inspeccion.header.ingeniero);
    EscribirValores('input[name="linea_numero"]',data.linea);

    EscribirValores('input[name="vehiculo_tipo"]',data.categoria);
    EscribirValores('input[name="CodigoTaller"]',linea.codigoTaller);
    EscribirValores('input[name="numeroplanilla"]',data.numeroplanilla);
    EscribirValores('input[name="peso_estatico"]',inspeccion.frenos.pesoTotalFreno);
    ControlEjesCantidad();
    //const ejes = document.querySelectorAll('input[name="cantidad_ejes"]');
    if (inspeccion.gaseshumos.opacidad_logaritmica === "?"){
        if (inspeccion.gaseshumos.co === "?" && inspeccion.gaseshumos.hc === "?"){
            conbustible = "";
        }else{
            conbustible = "Nafta";
        };
    };
    EscribirValores('input[name="conbustible"]', conbustible);
    ReporteTipo(conbustible,data.linea,data.categoria)
    //const reporte = document.querySelectorAll('input[name="ReporteInspeccion"]');
}

function ControlEjesCantidad() {
    const ect_3= document.getElementById('eficacia_freno_3');
    const ect_4= document.getElementById('eficacia_freno_4');
    const selectElement = document.getElementById('cantidad_ejes');
    if (ect_3.value !== "?") {
        selectElement.value = "3";
    };
    if (ect_4.value !== "?") {
        selectElement.value = "4";
    };
}

function ReporteTipo(conbustible,linea,categoria) {
    let ejes = getSelectedEjes();
    const consulta = {
        linea:linea,
        tipo:categoria,
        cantidadEjes:ejes,
        conbustible:conbustible
    };
    fetch('/reporte_doc', {
        method: 'POST',
        headers: {
                    'Accept': 'application/json',
                    "Content-Type": "application/json"
                },
        body: JSON.stringify(consulta)
    })
    .then(response => response.json())
    .then(data => {
        EscribirValores('input[name="ReporteInspeccion"]',data.reporte)
    })
    .catch(error => {
        console.error('Error:', error);
    })
    
}


function EscribirValores(query,valor) {
    console.log(query + " " + valor)
    const campo= document.querySelectorAll(query);
    campo.forEach(field => {
        field.value = valor;
    });
}

// Función para obtener el valor seleccionado del select
function getSelectedEjes() {
    // Selecciona el elemento select por su id
    const selectElement = document.getElementById('cantidad_ejes');
    
    // Obtiene el valor seleccionado
    const selectedValue = selectElement.value;
    
    // Retorna o utiliza el valor seleccionado
    return selectedValue;
}



function fillResults(results) {
	const r = document.getElementById("report")
	const inputs = r.getElementsByTagName("input");

	Array.from(inputs).forEach(input => {
		if (input.name == "defecto") return;

		const sub = input.getAttribute("sub");
		const value = results[sub] && results[sub][input.name] !== undefined ? results[sub][input.name] : "?";
		input.value = value;
	});
}

function formatDateToHuman(dateString) {
    // Dividir la fecha en año, mes y día
    const [year, month, day] = dateString.split('-');

    // Devolver la fecha en formato DD/MM/YYYY
    return `${day}/${month}/${year}`;
}