PageSourceSearch

https://challenges.tekuoia.com/lib/filter/filter.view.js?v=8.8.81

js tekuoia.com collected 2026-09-29 09:39:03 UTC 16,652 bytes, 394 lines download raw bytes

1/**
2 * Have default functions to manage view
3 * @pakage filter.view.js
4 * @author Eduardo Aparicio Cardenes
5 * @version 1.2
6 **/
7/**
8 * Load the boxes of filter
9 * @param callback: the funcion called after load boxes
10 */
11Filter.method('view_printFiltersBox', function(callback) {
12    var _self = this;
13    var id = 0;
14    var elements_filters = {
15        search: false,
16        pager: false,
17        boxes: []
18    };
19
20    var box_to_insert = {};
21    var insert = false;
22
23    if (_self.getVirtualMode() == 0) {
24        //    _self.data_internal = _self.operations_dimensionalCompresion(_self.filtersBox,_self.data);
25        _self.data_internal = $.merge([], _self.data);
26        //    var unprint = _self.operations_dimensionalUncompresion(_self.data_internal,_self.data);
27        $.each(_self.filtersBox, function(ky, filter) {
28
29            //Create filter that use into the data type
30            if ($.isFunction(_self['data_type.' + filter.type + '.create_data_box'])) {
31                box_to_insert = _self['data_type.' + filter.type + '.create_data_box'](id, filter, _self.data_internal);
32                elements_filters.boxes[elements_filters.boxes.length] = box_to_insert;
33            } else {
34                box_to_insert = _self['data_type.common.create_data_box'](id, filter, _self.data_internal);
35                insert = false;
36                switch (filter.type) {
37                    case "search":
38                        elements_filters.search = true;
39                        insert = true;
40                        break;
41                    case "quick_search":
42                        elements_filters.quick_search = true;
43                        insert = true;
44                        break;
45                    default:
46                        break;
47                }
48                //Have box to show it
49                if (insert) {
50                    elements_filters.boxes[elements_filters.boxes.length] = box_to_insert;
51                }
52            }
53            filter.el_id = id;
54            id++;
55        });
56    } else {
57        elements_filters.search = true;
58        elements_filters.quick_search = true;
59        elements_filters.boxes = (_self.filtersBox) ? _self.filtersBox : [];
60        $.each(_self.filtersBox, function(ky, el) {
61
62            if (typeof el.lang != undefined &&
63                el.lang == 1 &&
64                typeof el.title != "undefined") {
65                el.title = internationalize(el.title);
66            }
67            if (el.elements_count === undefined) {
68                el.elements_count = 0;
69            }
70            if (el.type == "numeric") {
71                if (typeof el.step == "undefined" || isNaN(el.step)) {
72                    el.step = 1;
73                }
74            }
75            if (typeof el.charttype === "undefined") {
76                el.charttype = 0;
77            }
78            if (typeof el.elements != "undefined" &&
79                typeof el.forder != "undefined" &&
80                el.forder > 0) {
81                var order = {};
82                switch (el.forder) {
83                    case 1:
84                        order.target = 'c';
85                        order.ctxt = 'asc';
86                        break;
87                    case 2:
88                        order.target = 'name';
89                        order.ctxt = 'asc';
90                        break;
91                    case 3:
92                        order.target = 'name';
93                        order.ctxt = 'desc';
94                        break;
95                }
96                el.elements = _self.sort_elements(order, el.elements);
97            }
98            el.el_id = id;
99            id++;
100        });
101    }
102    //Initialize internal data filtersBox with all internal info
103    _self.filtersBox_internal = $.merge([], elements_filters.boxes);
104
105    //Load template boxes
106    getTemplate('lib/js/components/filter2/view/templates/_boxes.php?section=' + _self.section + '&skip_logout=true&bp=' + app_context_id,
107        function(tmpl_filterbox_check) {
108            elements_filters.section = _self.section;
109            var filter_boxs;
110            try {
111                filter_boxs = $.tmpl(tmpl_filterbox_check, elements_filters);
112                filter_boxs.attr('id', 'contacts-filterscolumn-' + _self.unique);
113                filter_boxs.attr('class', 'contacts-filterscolumn-class');
114
115            } catch (e) {
116                console.log("Have an error on the elements_filters to fill template");
117                console.log(elements_filters);
118                console.log(e.message);
119                return;
120            }
121
122            _self.events_initialize_printFilterBox(_self, filter_boxs);
123
124            _self.pv_filters_col = filter_boxs;
125
126            $.each(elements_filters.boxes, function(ky, box) {
127                if (typeof(box.type_cal) != 'undefined' && box.type_cal == 3 && typeof(_self.filter_on_view_callback) == 'function') {
128                    var box_wrapper = filter_boxs.find('.box_filter_' + box.field.replace(/[.]/g, '_-_') + '_');
129                    box_wrapper.find('.filter-tab-2-body:first').empty().append(getLoaderComponent('h', 'c'));
130                    _self.filter_on_view_callback(box, box_wrapper, function(filter) {
131
132                        if (typeof filter.elements != "undefined" &&
133                            typeof filter.forder != "undefined" &&
134                            filter.forder > 0) {
135                            var order = {};
136                            switch (filter.forder) {
137                                case 1:
138                                    order.target = 'c';
139                                    order.ctxt = 'asc';
140                                    break;
141                                case 2:
142                                    order.target = 'name';
143                                    order.ctxt = 'asc';
144                                    break;
145                                case 3:
146                                    order.target = 'name';
147                                    order.ctxt = 'desc';
148                                    break;
149                            }
150                            filter.elements = _self.sort_elements(order, filter.elements);
151                        }
152
153                        try {
154                            var filter_boxs_aux = $.tmpl(tmpl_filterbox_check, { boxes: [filter] });
155                            filter_boxs_aux.attr('id', 'contacts-filterscolumn-' + _self.unique);
156                            filter_boxs_aux.attr('class', 'contacts-filterscolumn-class');
157
158                        } catch (e) {
159                            console.log("Have an error on the elements_filters to fill template");
160                            console.log({ boxes: [filter] });
161                            console.log(e.message);
162                            return;
163                        }
164
165                        _self.events_initialize_printFilterBox(_self, filter_boxs_aux);
166                        box_wrapper.parents('.box_filter_wrapper:first').replaceWith(filter_boxs_aux.find('.box_filter_wrapper:first'));
167
168                    });
169                }
170            });
171
172
173            if (callback && typeof(callback) == "function") {
174                callback(_self.pv_filters_col);
175            }
176
177            filter_boxs.find('.sort-option')
178                .on('click', function(ev) {
179                    ev.stopPropagation();
180                    if ($(this).hasClass('sort-asc-enabled')) {
181                        _self.addOrder($(this).parent().find(".filter-field-value").val(), "asc");
182                        $(this).addClass('sort-desc-enabled');
183                        $(this).removeClass('sort-asc-enabled');
184                        $(this).attr('src', app_base_url + '/pix/gi_filters/sort_desc.png');
185                        $(this).attr('title', 'sort_descending');
186                    } else {
187                        _self.addOrder($(this).parent().find(".filter-field-value").val(), "desc");
188                        $(this).addClass('sort-asc-enabled');
189                        $(this).removeClass('sort-desc-enabled');
190                        $(this).attr('src', app_base_url + '/pix/gi_filters/sort_asc.png');
191                        $(this).attr('title', 'sort_ascending');
192                    }
193                    if (_self.filter_callback && typeof(_self.filter_callback) == "function") {
194                        var applyOrder = _self.applyOrder();
195                        if (_self.caller_obj) {
196                            _self.filter_callback(applyOrder, _self.filtersBox, _self.caller_obj);
197                        } else {
198                            _self.filter_callback(applyOrder, _self.filtersBox);
199                        }
200
201                    }
202                    ev.stopPropagation();
203                });
204        }, '_boxes.php', false);
205});
206
207Filter.method('view_printFiltersSavedBox', function(section, options, callback) {
208    var _self = this;
209    _self.options = options;
210    getTemplate('lib/js/components/filter2/view/templates/_panorama.php?s=' + section + "&bp=" + app_context_id, function(tmpl_filters_saved) {
211        var saved_filters_box = $.tmpl(tmpl_filters_saved, {
212            id: 'contacts-actualFilter-' + _self.unique
213        });
214
215        if (saved_filters_box.length == 0)
216            return;
217
218        saved_filters_box.find(".manage-filters-img").on('click', function() {
219            manageFilters(section, saved_filters_box);
220        });
221
222        saved_filters_box.find('.advanced_filters_opt:first')
223            .on('click', function() {
224                if (_self.pv_filters_col) {
225                    if (_self.pv_filters_col.is(':visible')) {
226                        _self.pv_filters_col.parent().hide();
227                        _self.pv_filters_col.hide();
228                    } else {
229                        _self.pv_filters_col.parent().show();
230                        _self.pv_filters_col.show();
231                    }
232                }
233            });
234
235        _self.pv_filters_saved = saved_filters_box;
236
237        //Create config panorama
238        _self.create_config_panorama(_self.pv_filters_saved, options);
239
240        /**
241         * Load filter to see on the panorama by section filter
242         **/
243        _self.pv_filters_array = [];
244        getServiceResponse("lib/util/filters/loadFilters.php", {
245                section: section,
246                bp_id: app_context_id,
247                test_logout: false
248            }, function(filters_) {
249                if (filters_.length > 0) {
250                    saved_filters_box.find("#actual_filter option:first").remove();
251                    $.each(filters_, function(ky, fil) {
252                        var selected = "";
253
254                        if (!options || (options && !options.panorama_selected)) {
255                            if (fil.selected) {
256                                selected = 'selected="selected"';
257                            }
258                        } else {
259                            if (options.panorama_selected == fil.id) {
260                                selected = 'selected="selected"';
261                            }
262                        }
263
264                        var can_edit = fil.perms && fil.perms.can_edit ? true : false;
265                        var can_manage = fil.perms && fil.perms.can_manage ? true : false;
266
267                        saved_filters_box.find("#actual_filter")
268                            .append($('<option ' + selected + ' class="my-filters" id="filter_' + fil.id + '" value=\'{' + '"id":"' + fil.id + '","name":"' + fil.name + '","description":"' + fil.description + '","aml":"' + fil.aml + '","filters":' + fil.filters + ',"can_edit":' + can_edit + ',"can_manage":' + can_manage + ',"columns":' + fil.columns + ',"filter_view":' + '[]' + ',"mass_actions":' + fil.mass_actions + ',"columns_download":' + fil.columns_download + '}\'>' + decodeURIComponent(fil.name) + '</option>')); //'<div style="display:none;" id="filter_'+fil.id+'">{"id":' + fil.id + ',"name":"'+fil.name+'","description":"'+fil.description+'","aml":"'+fil.aml+'","selected":' + false + ',"filters":'+fil.filters+',"filter_view":'+fil.filter_view+',"mass_actions":'+fil.mass_actions+',"columns":'+fil.columns+',"can_edit":'+false+',"can_manage":'+false+',"order":'+((!fil.order)?'""':fil.order)+'}</div>' +
269                    });
270                }
271                _self.pv_filters_array = filters_;
272                if (callback && (typeof(callback) == 'function')) {
273                    //                _self.onReadyFlag = true;
274                    _self.setOnReadyFlag(true);
275                    callback(saved_filters_box, filters_);
276                }
277
278                //            if(!options || (options && !options.no_execute_onchange)){
279                //                _self.pv_filters_saved.find("#actual_filter option:selected").trigger('change');
280                //            }
281
282            }, 'noloader',
283            function(xhr) {
284                showModalError(xhr.responseText);
285            });
286    }, '_panorama.php', true);
287});
288/**
289 * Render view execute loaded view
290 * @param filter_boxes the boxes array view -> _boxes.php
291 * @param panorama the panorama view -> _panorama.php
292 **/
293Filter.method('render_view', function(onReadyCallback, loadPrintFilterBox) {
294
295    var boxes = null;
296    var panoramas = null;
297    var _self = this;
298    _self.onReady = onReadyCallback; //Insercallback
299
300    // get filter panoramas
301    _self.printFiltersSavedBoxNew(_self.section, _self.options,
302        function(pano) {
303            panoramas = pano;
304            test_filter_load();
305        });
306
307    // get filter boxes
308    if (typeof loadPrintFilterBox === "boolean" && loadPrintFilterBox) {
309        _self.printFiltersBox(function(filter_boxes) {
310            boxes = filter_boxes;
311            test_filter_load();
312        });
313    }
314
315    /**
316     * test if all async resouces are loaded to proceed
317     */
318    function test_filter_load() {
319        if (panoramas) {
320            if (_self.onReady && typeof(_self.onReady) == 'function') {
321                _self.setOnReadyFlag(true);
322                //If have caller need to send info this object
323                if (_self.caller_obj) {
324                    _self.onReady(_self, boxes, panoramas, _self.caller_obj);
325                } else {
326                    _self.onReady(_self, boxes, panoramas);
327                }
328            }
329        }
330    }
331});
332//
333//Filter.method('view_make_resquests', function(onReadyCallback){
334//    var _self = this;
335//    getServiceResponse("lib/util/filters/loadFilters.php", {
336//            section: _self.section, 
337//            bp_id: $("#actual_bp_id").val()
338//        },
339//        function(filters_){
340//            _self.filter_load = filters_;
341//        });
342//    getTemplate('lib/js/components/filter2/view/templates/_panorama.php?bp=' + app_context_id + "&s=" + section,
343//        function (tmpl_filters_saved){
344//            _self.create_panorama_view(tmpl_filters_saved);
345//
346//        });
347//    //Load template boxes
348//    getTemplate('lib/js/components/filter2/view/templates/_boxes.php?section='+_self.section,
349//        function (tmpl_filterbox_check){
350//            _self.tmpl_boxes = tmpl_filterbox_check;
351//        });
352//
353//});
354
355//Filter.method('view_create_panorama_view', function(tmpl_filters_saved){
356//    var _self = this;
357//    var saved_filters_box = $.tmpl(tmpl_filters_saved, {
358//    id:'contacts-actualFilter-' + _self.unique
359//    });
360//
361//    var selected_item = saved_filters_box.find("#current_panorama_selected").empty();
362//    if(saved_filters_box.length == 0)
363//        return;
364//
365//    //Store panoramas in data filter information
366//    _self.pv_filters_saved = saved_filters_box;
367//
368//    /**
369//     * Configue toggle panorama and filter
370//     **/
371//    if(saved_filters_box.find('.toggle_advanced_filter_option')){
372//
373//        saved_filters_box.find('.toggle_advanced_filter_option')
374//        .on('click', function (){
375//            if(_self.pv_filters_col){
376//                if (_self.pv_filters_col.is(':visible')){
377//                    _self.pv_filters_col.parent().slideUp();
378//                    _self.pv_filters_saved.find("#actual_filter").slideDown();
379//                }else{
380//                    _self.pv_filters_saved.find("#actual_filter").slideUp();
381//                    _self.pv_filters_col.parent().slideDown();
382//                }
383//            }
384//        });
385//    }
386//
387//    /**
388//    * Load filter to see on the panorama by section filter
389//    **/
390//    _self.pv_filters_array = [];
391//});
392//Filter.method('view_create_panorama_view', function(){
393//    
394//});

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.