1'use strict'; 2(function(window) { 3 var _self; 4 var FiltroFacultad = { 5 vars: { 6 postgrado : { 7 idarray_magisteres : [], 8 idarray_doctorados : [], 9 idarray_postitulos : [], 10 }, 11 pregrado : { 12 idarray_carreras : [], 13 } 14 }, 15 init: function() { 16 _self = this; 17 _self.ui.getElements(); 18 _self.ui.setEvents(); 19 }, 20 ui: { 21 elements: { 22 cmb_facultades: undefined, 23 postgrado : { 24 doctorados : undefined, 25 magisteres : undefined, 26 postitulos : undefined, 27 }, 28 pregrado: { 29 article_container : undefined, 30 } 31 }, 32 getElements: function() { 33 _self.ui.elements.cmb_facultades = $('.cmb_filtro_facultad') 34 _self.actions.init_pregrado_carreras() 35 _self.actions.init_postgrado_carreras() 36 _self.actions.filtrar_carreras_cmb() 37 }, 38 setEvents: function() { 39 _self.ui.elements.cmb_facultades.change(function(e){ 40 if($(this).parents("section.sec-listado").length) _self.callbacks.pregrado_change(e.target) 41 if($(this).parents("section.sec-informacion").length) _self.callbacks.postgrado_change(e.target) 42 }) 43 }, 44 }, 45 callbacks:{ 46 postgrado_change: function(cmb){ 47 let parent_id = $(cmb).parents(".tab-pane2").attr('id') 48 if(!parent_id) return false 49 let container_articulos = $("#"+parent_id).find(".row") 50 let articulos = _self.helper.get_postgrado_array(parent_id,"articles") 51 if(!cmb.value) { 52 container_articulos.append(articulos) 53 return false 54 } 55 //si se aplica filtro, se borran elementos y se agregan los que pasan el filtro 56 let filtrado = articulos.filter(function(a,b){ 57 return $(b).data("facultad_id") == cmb.value 58 }) 59 container_articulos.empty().append(filtrado) 60 }, 61 pregrado_change: function(cmb){ 62 $.each(_self.ui.elements.pregrado.articles, function(index,article){ 63 if(!cmb.value) { 64 $(article).fadeIn(200) 65 return 66 } 67 let article_id = $(article).data("facultad_id") 68 if(cmb.value == article_id) $(article).fadeIn(200) 69 else $(article).hide() 70 }) 71 } 72 }, 73 actions:{ 74 init_pregrado_carreras: function(){
75 _self.ui.elements.pregrado.article_container = $("section.sec-listado").find(".row") 76 _self.ui.elements.pregrado.articles = _self.ui.elements.pregrado.article_container.find("articles") 77 //se pasa id al padre, segun data del primer hijo encontrado 78 _self.ui.elements.pregrado.articles.each(function(index,article){ 79 let anchors = $(article).find("a") 80 let facultad_id 81 anchors.each(function(index,anchor){ 82 if($(anchor).data("facultad_id")) { 83 facultad_id = $(anchor).data("facultad_id") 84 return false 85 } 86 }) 87 if(!facultad_id) facultad_id = "" 88 $(article).attr("data-facultad_id",facultad_id) 89 //creamos arreglos para posterior filtrado 90 if(!_self.vars.pregrado.idarray_carreras.includes(facultad_id)) 91 _self.vars.pregrado.idarray_carreras.push(facultad_id) 92 }) 93 }, 94 init_postgrado_carreras: function(){ 95 _self.ui.elements.postgrado.doctorados = $("#tab1bB").find("articles") 96 _self.ui.elements.postgrado.magisteres = $("#tab2bB").find("articles") 97 _self.ui.elements.postgrado.postitulos = $("#tab3bB").find("articles") 98 //creamos arreglos para posterior filtrado 99 _self.ui.elements.postgrado.doctorados.each(function(id,element){ 100 let facultad_id = $(element).data("facultad_id") 101 if(!_self.vars.postgrado.idarray_doctorados.includes(facultad_id)) 102 _self.vars.postgrado.idarray_doctorados.push(facultad_id) 103 }) 104 _self.ui.elements.postgrado.magisteres.each(function(id,element){ 105 let facultad_id = $(element).data("facultad_id") 106 if(!_self.vars.postgrado.idarray_magisteres.includes(facultad_id)) 107 _self.vars.postgrado.idarray_magisteres.push(facultad_id) 108 }) 109 _self.ui.elements.postgrado.postitulos.each(function(id,element){ 110 let facultad_id = $(element).data("facultad_id") 111 if(!_self.vars.postgrado.idarray_postitulos.includes(facultad_id)) 112 _self.vars.postgrado.idarray_postitulos.push(facultad_id) 113 }) 114 }, 115 filtrar_carreras_cmb: function(){ 116 _self.ui.elements.cmb_facultades.each(function(index,cmb_facultad){ 117 if($(cmb_facultad).parents("section.sec-listado").length) _self.actions.filtrar_pregrado_cmb(cmb_facultad) 118 if($(cmb_facultad).parents("section.sec-informacion").length) _self.actions.filtrar_postgrado_cmb(cmb_facultad) 119 }) 120 }, 121 filtrar_pregrado_cmb: function(cmb){ 122 let id_array = _self.vars.pregrado.idarray_carreras 123 _self.helper.filtrar_options(cmb,id_array) 124 }, 125 filtrar_postgrado_cmb: function(cmb){ 126 let parent_id = $(cmb).parents(".tab-pane2").attr('id') 127 if(!parent_id) return 128 let id_array = _self.helper.get_postgrado_array(parent_id,"ids") 129 _self.helper.filtrar_options(cmb,id_array) 130 }, 131 }, 132 helper: { 133 filtrar_options: function(cmb,array) { 134 $(cmb).find("option").each(function(id,option){ 135 let val = parseInt($(option).val()) 136 if(val && !array.includes(val)) { 137 option.remove() 138 } 139 }) 140 }, 141 get_postgrado_array(parent_id,type) { 142 switch(parent_id){ 143 case "tab1bB": 144 if(type == "articles") return _self.ui.elements.postgrado.doctorados 145 if(type == "ids") return _self.vars.postgrado.idarray_doctorados 146 break; 147 case "tab2bB": 148 if(type == "articles") return _self.ui.elements.postgrado.magisteres 149 if(type == "ids") return _self.vars.postgrado.idarray_magisteres 150 break; 151 case "tab3bB": 152 if(type == "articles") return _self.ui.elements.postgrado.postitulos 153 if(type == "ids") return _self.vars.postgrado.idarray_postitulos 154 break; 155 default: 156 return 157 } 158 }, 159 }, 160 controls:{ 161 162 }, 163 }; 164 window.FiltroFacultad = FiltroFacultad; // entregamos la referencia al dom principal 165})(window); 166// se inicializa el objeto 167$(window).ready(function(){ 168 FiltroFacultad.init(); 169});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.