PageSourceSearch

https://matras-vladimir.ru/js/good_size_popup_module.js?r=0

js matras-vladimir.ru collected 2026-09-28 23:15:13 UTC 5,182 bytes, 185 lines download raw bytes

1
2
3var size_selector_timeout = null;
4
5function show_good_size_selector_popup(in_options)
6{
7    if(size_selector_timeout)
8        return;
9    
10    size_selector_timeout = setTimeout(function()
11    {
12        size_selector_loading = false;
13        size_selector_timeout = null;
14    }, 10000);
15    
16    var options = $.extend({idgood: 0, size:0, modal_callback:0, 
17        input: 0, size_span: 0, select_callback: 0, extra_params: 0,
18            ajax_url: '/shop/good_ajax.php'}, in_options);
19
20    function show_grouped_colors_loader(modal_id)
21    {
22        var loader = $(modal_id);
23
24        if(loader.length)
25            loader.remove();
26
27        var src = '<div class="modal fade vp-modal vp-color-select-dialog" id="' + modal_id.replace('#', '') + '" tabindex="-1" role="dialog">' +
28            '<div class="modal-dialog" role="document">' +
29                '<div class="modal-content">' +
30                    '<div class="modal-body" style="text-align: center; padding: 20px 0">' +
31                        '<img src="/i/catalog-spinner.svg" />' +
32                    '</div>' +
33                '</div>' +
34            '</div>' +
35        '</div>';
36
37        $('body').append(src);
38
39        loader = $(modal_id);
40
41        loader.modal_bring_to_front();
42
43        $(loader).on('hidden.bs.modal', function() {
44            $(loader).remove();
45        });
46
47        return loader;
48    }
49
50    if(!options.size && options.input)
51        options.size = $(options.input).val();
52
53    var data = {'id': options.idgood, 'sizes': options.size, 'popup': true };
54    
55    if(options.extra_params)
56        data = $.extend(options.extra_params, data);
57
58    if(location.search.indexOf('cache-disabled') > 0)
59        data['cache-disabled'] = true;
60    
61    var modal_id = '#good-size-selector-modal';
62     
63    var loader_modal = show_grouped_colors_loader(modal_id);
64     
65    function on_size_select_click(event)
66    {
67        var target = $(this);
68        
69        var modal = $(target).closest('#good-size-selector-modal');
70        
71        var value = target.attr('value');
72        var name = target.attr('data-size');
73        
74        if(options.input)
75            $(options.input).val(value);
76        
77        if(options.size_span)
78            $(options.size_span).html(name);
79
80        if(typeof(options.select_callback) === 'function')
81            options.select_callback(target, modal, event);
82        
83        modal.modal('hide');
84    }
85
86    $.get(options.ajax_url, data, function(res) 
87    {
88        if(size_selector_timeout)
89        {
90            clearTimeout(size_selector_timeout);
91            size_selector_timeout = null;
92        }
93        
94        var modal = loader_modal;
95
96        $('.modal-dialog', modal).replaceWith(res);
97        
98        $('.popup-size-item', modal).click(on_size_select_click);
99
100        if(typeof(options.modal_callback) === 'function')
101            options.modal_callback(modal);
102    });
103    
104    window.cat_size_popup_modal = loader_modal;
105}
106
107function show_catalog_size_popup()
108{
109    show_good_size_selector_popup({ajax_url: location, extra_params: {size_popup: true}, select_callback: function(target, modal, event)
110    {
111        var href = target.attr('href');
112        
113        if(href)
114        {
115            var query = $('#search-form input').not('[name="size"]').serialize();
116            
117            if(query)
118            {
119                event.preventDefault();
120                location = href + (href.indexOf('?') !== -1 ? '&' : '?') + query;
121            }
122        }
123    }});
124}
125
126function show_catalog_good_size_popup()
127{
128    var sender = $(this);
129    
130    function good_dropdown_set_value(parent, target, selector_type) 
131    {
132        var data = $(target).attr('data');
133         
134        if(data)
135            good_dropdown_set_size(parent, JSON.parse(data));
136    }
137
138    var good = $(sender).closest('.good-layout');
139    var size = good.find('input[name=size]').val();
140    var id = good.find('input[name=id]').val();
141    
142    show_good_size_selector_popup({idgood: id, size: size,
143        modal_callback: function(modal) {
144            modal.data('good', good);
145        }, 
146        select_callback: function(target, modal) {
147            good_dropdown_set_value(modal.data('good'), target, 'size');
148        }
149    });
150}
151
152function show_listorder_size_popup(sender, oi_id)
153{
154    var size_input = $(sender).find('input');
155    
156    var id = $(sender).attr('data-idgood');
157
158    show_good_size_selector_popup({idgood: id, size: size_input.val(),
159        modal_callback: function(modal) {
160            
161        }, 
162        select_callback: function(target, modal) 
163        {
164            var data = JSON.parse(target.attr('data'));
165            
166            size_input.val(data.idsize);
167            
168            $(sender).closest('.lo-good-row')
169                .find('.lo-size-name').html(data.size);
170            
171            loUpdateOrderItem(oi_id);
172        }
173    });
174}
175
176function show_listcart_size_popup(oi_id, id, size)
177{
178    show_good_size_selector_popup({idgood: id, size: size,
179        select_callback: function(target, modal) 
180        {
181            var data = JSON.parse(target.attr('data'));
182            ItemChangeSize(oi_id, data.idsize);
183        }
184    });
185}

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.