PageSourceSearch

https://pucv.cl/pucv/js-local/FiltroFacultad.class.js

js pucv.cl collected 2026-09-24 08:37:05 UTC 7,853 bytes, 169 lines download raw bytes

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.