horarios-v1/process.min.js

1 line
8.8 KiB
JavaScript

let laData,datosUsuario={ocultarCursosSolapan:!0,escribirCursosSeleccionados:!0},ajax=new XMLHttpRequest,miHorario={};function crearDatos(e,t,...a){if(void 0===e&&(e=laData),void 0!==a)for(const e in a)limpiarTabla(e),limpiarDescripciones(e);for(let a in e){let r=e[a];for(let e in r){let o=r[e];if(void 0!==o.oculto&&!0===o.oculto)continue;let n=document.createElement("div");n.className="cursoDataDiv descrCurso--Light--On",n.setAttribute("req","");let i=document.createElement("span");i.style.fontWeight="bold",i.appendChild(document.createTextNode(e.substring(0,e.search("->"))+" - "+e.substring(e.search("->")+2)+" ")),n.appendChild(i);let l=document.createElement("input");l.type="checkbox",l.checked="checked",l.addEventListener("click",()=>{ocultarCurso(l.checked,n,e.substring(e.search("->")+2),a)}),n.appendChild(l);for(let r in o){if("oculto"===r)continue;n.appendChild(document.createElement("br"));let i=document.createElement("span");i.innerText=r+" = ",n.appendChild(i);let l={},c=o[r];for(let o in c){let i=c[o];void 0===l[i.Docente]?l[i.Docente]=o.substring(o.indexOf(" ")+1):l[i.Docente]+=","+o.substring(o.indexOf(" ")+1);for(let l in i.Horas){let c=i.Horas[l],s=document.getElementById(c+a),d=e.substring(e.search("->")+2)+r+o.substring(o.indexOf(" ")+1)+a,u=e.substring(e.search("->")+2)+a;n.id=`descr${u}`;let m=e.substring(e.search("->")+2)+r+a,p=document.createElement("div");p.className="nombreCursoTeoriaLight dropdown "+d+" "+u+" "+m,p.addEventListener("mouseover",()=>{cambiarBack(d,!0)}),p.addEventListener("mouseout",()=>{cambiarBack(d,!1)});let b=document.createElement("div");b.className="dropdown-content";let h=document.createElement("span");if(h.style.fontWeight="bold",b.appendChild(h),b.appendChild(document.createElement("hr")),"Laboratorio"===r){if(n.setAttribute("req",n.getAttribute("req")+"L"),t){let t=document.createElement("span");p.className=p.className.replace(/Teoria/,"Lab"),t.appendChild(document.createTextNode(e.substring(0,e.search("->"))+o.substring(o.search(" "))+" (L)")),p.appendChild(t),h.innerText=e.substring(0,e.search("->"))}else{let t=document.createElement("span");p.className=p.className.replace(/Teoria/,"Lab"),t.appendChild(document.createTextNode(e.substring(e.search("->")+2)+o.substring(o.search(" "))+" (L)")),p.appendChild(t),h.innerText=e.substring(0,e.search("->"))}b.appendChild(document.createTextNode(o+" (Lab)"))}else n.setAttribute("req",n.getAttribute("req")+"T"),t?(p.appendChild(document.createTextNode(e.substring(0,e.search("->"))+o.substring(o.search(" ")))),h.innerText=e.substring(0,e.search("->"))):(p.appendChild(document.createTextNode(e.substring(e.search("->")+2)+o.substring(o.search(" ")))),h.innerText=e.substring(0,e.search("->"))),b.appendChild(document.createTextNode(o));if(b.appendChild(document.createElement("br")),b.appendChild(document.createTextNode(i.Docente)),"0"!==a.substring(0,1)){b.appendChild(document.createElement("hr"));let t=document.createElement("span");t.style.textDecoration="underline",t.style.color="blue",t.style.cursor="pointer",t.appendChild(document.createTextNode("Añadir a mi Horario")),t.addEventListener("click",()=>{anadirAMiHorario(a,e,r,o)}),b.appendChild(t)}p.appendChild(b);let g=document.createTextNode(" | ");try{s.appendChild(p),s.appendChild(g)}catch(t){console.log("El Div "+c+a+" no existe | "+e+" "+r+" "+o+"\n\n"+t.stack)}}}for(let e in l){let t=" ("+l[e]+") ",a=document.createElement("span");a.innerText=t+e+",",i.appendChild(a)}}document.getElementById("Horario"+a.substring(0,1)+"anio").appendChild(n)}}}function limpiarTabla(e){let t=document.querySelector("#tablaHorario"+e+"anio").rows;for(let e of t)for(let t of e.cells)""!==t.id&&(t.innerHTML="")}function limpiarDescripciones(e){let t=document.getElementById("Horario"+e+"anio"),a=t.children;for(let e=0;e<a.length;e++){let r=a[e];/cursoDataDiv/.test(r.className)&&(t.removeChild(r),e--)}}function ocultarTabla(e){let t=document.getElementById("Horario"+e+"anio");"true"===t.getAttribute("data-collapsed")?(expandSection(t),t.setAttribute("data-collapsed","false")):collapseSection(t)}function cambiarBack(e,t){let a=document.querySelectorAll("."+e);if(t)for(let e=0;e<a.length;e++){a[e].style.color="black",chechAttribute(a[e].parentNode,!1,0)}else for(let e=0;e<a.length;e++){a[e].style="",chechAttribute(a[e].parentNode,!1,-1,!0)}}function collapseSection(e){let t=e.scrollHeight,a=e.style.transition;e.style.transition="",requestAnimationFrame(function(){e.style.height=t+"px",e.style.transition=a,requestAnimationFrame(function(){e.style.height="0px"})}),e.setAttribute("data-collapsed","true")}function expandSection(e){let t=e.scrollHeight;e.style.height=t+"px",e.addEventListener("transitionend",function(t){e.removeEventListener("transitionend",arguments.callee),e.style.height=null}),e.setAttribute("data-collapsed","false")}function anadirAMiHorario(e,t,a,r){const o="descr"+t.substring(t.search("->")+2)+e;void 0===miHorario["0_anio"]&&(miHorario["0_anio"]={}),void 0===miHorario["0_anio"][t]?(miHorario["0_anio"][t]=JSON.parse('{"'+a+'" : { "'+r+'" : {}}}'),miHorario["0_anio"][t][a][r]=laData[e][t][a][r],reservarCeldas(a,o,...miHorario["0_anio"][t][a][r].Horas)):void 0===miHorario["0_anio"][t][a]?(miHorario["0_anio"][t][a]=JSON.parse('{ "'+r+'" : {}}'),miHorario["0_anio"][t][a][r]=laData[e][t][a][r],reservarCeldas(a,o,...miHorario["0_anio"][t][a][r].Horas)):void 0===miHorario["0_anio"][t][a][r]&&confirm("¿Quieres añadir otro grupo de este curso?")?(miHorario["0_anio"][t][a][r]=laData[e][t][a][r],reservarCeldas(void 0,void 0,...miHorario["0_anio"][t][a][r].Horas)):alert("Este curso ya existe."),crearDatos(miHorario,!1,0)}function reservarCeldas(e,t,...a){if(void 0!==e&&void 0!==t){console.log(t);const a=document.getElementById(t);a.setAttribute(e,"true");let r=!1;/T/.test(a.getAttribute("req"))?r=/L/.test(a.getAttribute("req"))?"true"===a.getAttribute("Teoria")&&"true"===a.getAttribute("Laboratorio"):"true"===a.getAttribute("Teoria"):/L/.test(a.getAttribute("req"))&&(r="true"===a.getAttribute("Laboratorio")),r&&(a.className=a.className.replace(/On/,"OK"),a.className=a.className.replace(/Off/,"OK"))}for(let e in a){let t,r=a[e],o=document.querySelectorAll("."+r);for(let e=0;o.length,t=o[e];e++)chechAttribute(t,!0)}}function chechAttribute(e,t=!1,a=0,r=!1){const o=["#ABE77E","#ffcb6b","#b74d33","#ff002f","#454545","#454545"];"1"===e.getAttribute("hora-ocupada")?(t&&e.setAttribute("hora-ocupada","2"),e.style.backgroundColor=o[1+a]):"2"===e.getAttribute("hora-ocupada")?(t&&e.setAttribute("hora-ocupada","3"),e.style.backgroundColor=o[2+a]):"3"===e.getAttribute("hora-ocupada")?(t&&e.setAttribute("hora-ocupada","4"),e.style.backgroundColor=o[3+a]):!isNaN(parseInt(e.getAttribute("hora-ocupada")))&&parseInt(e.getAttribute("hora-ocupada"))>3?(t&&e.setAttribute("hora-ocupada","5"),e.style.backgroundColor=o[4+a]):(t&&e.setAttribute("hora-ocupada","1"),e.style.backgroundColor=r?"transparent":o[0])}function crearTablas(e,t,a=["Hora","Lunes","Martes","Miercoles","Jueves","Viernes"],r=["07:00","07:50",["08:40"],"08:50","09:40",["10:30"],"10:40","11:30","12:20","13:10","14:00","14:50",["15:40"],"15:50","16:40",["17:30"],"17:40","18:30","19:20"]){const o=["0_anio","1er_anio","2do_anio","3er_anio","4to_anio","5to_anio"][e];let n=document.createElement("table");n.id="tablaHorario"+e+"anio",n.className="striped";let i=document.createElement("thead"),l=document.createElement("tr");for(let e in a){let t=a[e],r=document.createElement("td");r.innerText=t,l.appendChild(r)}i.appendChild(l),n.appendChild(i);let c=document.createElement("tbody");for(let e in r){let t=r[e],n=document.createElement("tr"),i=!1;"object"==typeof t&&(t=t[0],n.className="trDescansoLight",i=!0);for(let e in a){let r=document.createElement("td");"0"===e?r.innerText=t:i||(r.id=a[e].substring(0,2)+t.replace(":","")+o,r.className=a[e].substring(0,2)+t.replace(":","")),n.appendChild(r)}c.appendChild(n)}n.appendChild(c),t.appendChild(n)}function ocultarCurso(e,t,a,r){if(e){t.className=t.className.replace(/Off/,"On");let e,o=document.querySelectorAll("."+a+r);for(let t=0;o.length,e=o[t];t++)e.style.display="inline-block"}else{t.className=t.className.replace(/On/,"Off");let e,o=document.querySelectorAll("."+a+r);console.log("Query: ."+a+r);for(let t=0;t<o.length;t++)(e=o[t]).style.display="none"}}function ocultarVariante(e,t,a,r,o){}function ocultarGrupo(e,t,a,r,o,n){}ajax.onreadystatechange=(()=>{200===ajax.status&&4===ajax.readyState&&(laData=JSON.parse(ajax.responseText),crearTablas(0,document.getElementById("Horario0anio")),crearTablas(1,document.getElementById("Horario1anio")),crearTablas(2,document.getElementById("Horario2anio")),crearTablas(3,document.getElementById("Horario3anio")),crearTablas(4,document.getElementById("Horario4anio")),crearTablas(5,document.getElementById("Horario5anio")),ocultarTabla(0),ocultarTabla(2),ocultarTabla(3),ocultarTabla(4),ocultarTabla(5),crearDatos(laData,!1))}),ajax.open("GET","./data.json",!0),ajax.send();