main.js 4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
var cont_experiencia = 0;
let cont_estudios = 0;
let cont_tecnologia = 0;
function agregarFieldExpierncia(evt){
    
    const btn = evt.target
    cont_experiencia++;
    
    const nee = document.createElement("div")
    nee.innerHTML = `
    <label for="institucion" class="form-label">Institucion</label>
    <input type="text" class="form-control  " name="experiencia-${cont_experiencia}-institucion" id="institucion" >
    <label for="fechaDesde" class="form-label">FechaDesde</label>
    <input type="date" class="form-control  " name="experiencia-${cont_experiencia}-fechaDesde" id="fechaDesde" >
    <label for="fechaHasta" class="form-label">Fecha Hasta</label>
    <input type="date" class="form-control  " name="experiencia-${cont_experiencia}-fechaHasta" id="fechaHasta" >
    <label for="cargo" class="form-label">Cargo</label>
    <input type="cargo" class="form-control  " name="experiencia-${cont_experiencia}-cargo" id="cargo" >
    <label for="refNombre" class="form-label">Referencia Nombre</label>
    <input type="text" class="form-control  " name="experiencia-${cont_experiencia}-referencias" id="refNombre" >
    `;
    nee.className = "mb-3 col-5"
    form.insertBefore(nee,btn)
}
function serializeJSON (form) {
    // Create a new FormData object
    const formData = new FormData(form);

    // Create an object to hold the name/value pairs
    const pairs = {};
    const experiencias = [{}];
    const estudios = [{}];
    const tecnologias = [{}];

    // Add each name/value pair to the object
    for (const [name, value] of formData) {
        //los atributos no primitivos tiene una nomenclatura distinta en sus names
        //ej.: experiencia-4-institucion == experencias[4].institucion
        let codificacion = name.split("-")
        if(codificacion.length==1){
            pairs[name] = value
        }
        else{
            switch (codificacion[0]) {
                case "experiencia":
                    if(experiencias[codificacion[1]]==null) experiencias[codificacion[1]]={};
                    experiencias[codificacion[1]][codificacion[2]] = value
                    break;
                case "estudio":
                    if(estudios[codificacion[1]]==null) estudios[codificacion[1]]={};
                    estudios[codificacion[1]][codificacion[2]] = value
                    break;
                case "tecnologia":
                    if(tecnologias[codificacion[1]]==null) tecnologias[codificacion[1]]={};
                    tecnologias[codificacion[1]][codificacion[2]] = value
                    break;
            
                default:
                    break;
            }
        }
    }
    pairs["experiencias"] = experiencias
    pairs["estudios"] = estudios
    pairs["tecnologias"] = tecnologias
    
    // Return the JSON string
    return JSON.stringify(pairs, null, 2);
}

async function postData(url = '', data = {}) {
    // Default options are marked with *
    const response = await fetch(url, {
        method: 'POST', // *GET, POST, PUT, DELETE, etc.
        mode: 'cors', // no-cors, *cors, same-origin
        cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
        credentials: 'same-origin', // include, *same-origin, omit
        headers: {
        'Content-Type': 'application/json'
        // 'Content-Type': 'application/x-www-form-urlencoded',
        },
        redirect: 'follow', // manual, *follow, error
        referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
        body: data // body data type must match "Content-Type" header
    });
    return response; // parses JSON response into native JavaScript objects
}

form = document.querySelector("form");
form.addEventListener("submit",(evt)=>{
    
    postData('postulante', serializeJSON(form))
    .then(response => {
        console.log(response); // JSON data parsed by `data.json()` call
        location.replace(response.url);
    });
    evt.preventDefault();
} );