snaper.js 3.72 KB
window.allFieldsToJson = function allFieldsToJson() {
    const data = {};
    const fields = document.querySelectorAll('input, select, textarea');

    fields.forEach(field => {
        const key = field.name;// || field.id; // Usa el nombre del campo, o su ID si no tiene nombre
        const value = field.value;
        const ignorar = ["?","","---",false,"-",]
        if (!ignorar.includes(value)){
            // Si la clave ya existe (por ejemplo, en caso de checkboxes o radios con el mismo nombre)
            if (data.hasOwnProperty(key)) {
                //if (Array.isArray(data[key])) {
                //    data[key].push(value);
                //} else {
                //    data[key] = [data[key], value];
                //}
            } else {
                data[key] = value;
            }
        }
    });

    //return JSON.stringify(data);
    return data;
}

window.populateFieldsFromJson = function populateFieldsFromJson(data) {
    Object.keys(data).forEach(key => {
        const fields = document.querySelectorAll(`[name="${key}"], [id="${key}"]`);
        
        fields.forEach(field => {
            const value = data[key];

            if (field.type === 'checkbox' || field.type === 'radio') {
                // Marcar checkboxes/radios según el valor (asumimos booleano o comparación de string)
                field.checked = Array.isArray(value) ? value.includes(field.value) : field.value === String(value);
            } else if (field.tagName === 'SELECT' && Array.isArray(value)) {
                // Seleccionar múltiples opciones si es un select múltiple
                Array.from(field.options).forEach(option => {
                    option.selected = value.includes(option.value);
                });
            } else {
                // Asignar valor a otros tipos de campos
                field.value = value;
            }
        });
    });
}

window.watchForChanges = function watchForChanges() {
    console.log("Observando")
    // Selecciona todos los campos de entrada, selectores y áreas de texto en el documento
    const fields = document.querySelectorAll('input, select, textarea');
    const snapearField = document.getElementById('snapear');
    
    // Verifica si existe el campo "snapear" en el documento
    if (!snapearField) {
        console.warn('El campo con id="snapear" no existe en el documento.');
        return;
    }

    fields.forEach(field => {
        // Agrega un evento 'change' a cada campo
        field.addEventListener('change', () => {
            snapearField.value = "1";
            console.log("Se encontro cambio se programa generer snap")
        });
    });
}

window.Snapeador = function Sanapeador(){
    const valor = document.getElementById('snapear').value;
    if (valor === "0"){
        return;
    }
    const data = allFieldsToJson()
    this.SubirSnap(data)
    document.getElementById('snapear').value = 0
}

function SubirSnap(data) {
    //API KET
    const requestData = {
        "token": "sdñÑREgerqw3$E#]ÑgdfbversdfFfew435",
        "url": "https://hgt.hgt.com.ar/api_rto/snaper",
        //"url": "https://validacion.hgtsa.com.ar/api_rto/snaper",
        "clear": true,
        "params": {
            "ApiKey": "sdñÑREgerqw3$E#]ÑgdfbversdfFfew435",
            "id_cent": "61",
            "data_snap": data
        }
    };

    fetch('https://api.hgt.com.ar/redirect', {
        method: 'POST',
       headers: {
                    'Accept': 'application/json',
                    "Content-Type": "application/json"
                },
        body: JSON.stringify(requestData)
    })
    .then(response => response.json())
    .then(data => {
        //createHistoricoList(data);
    })
    .catch(error => {
        console.error('Error:', error);
    });
};