PageSourceSearch

https://www.ccpom.fr/wp-content/themes/ccpom/modules/events/assets/js/events-script.js?ver=1790969084

js ccpom.fr collected 2026-10-02 19:25:13 UTC 6,757 bytes, 222 lines download raw bytes

1jQuery(document).ready(function ($) {
2
3    var freezeScroll = false;
4
5    initFitImgSize();
6
7    function initFitImgSize() {
8        $('.size-fit-image').each(function () {
9            var imgEl = $('img', $(this));
10            if (imgEl.length > 0) {
11                var imgWidth = imgEl.width();
12                $(this).width(imgWidth);
13            }
14        });
15    }
16
17    function initMasonry(appendItems) {
18
19        var gridEl = $('.grid');
20        var gridElData = gridEl.data();
21
22        if ($(window).width() < 480) {
23            gridEl.masonry('destroy');
24            gridEl.removeData('masonry');
25        } else {
26
27            setTimeout(function () {
28
29                if (appendItems) {
30                    gridEl.masonry('appended', appendItems);
31                } else {
32                    if (gridElData && gridElData.masonry) {
33                        gridEl.masonry('destroy');
34                        gridEl.removeData('masonry');
35
36                    }
37                    gridEl.masonry({
38                        itemSelector: '.grid-item',
39                        columnWidth: '.grid-sizer',
40                        percentPosition: true
41                    });
42                }
43
44            }, 300);
45        }
46    }
47
48    $(window).resize(function () {
49        initMasonry();
50        initFitImgSize();
51    });
52
53    var EventsFilterProcessor = {
54
55        current_page: 1,
56        max_num_pages: 0,
57
58        loadMore: function () {
59            if (EventsFilterProcessor.current_page + 1 <= EventsFilterProcessor.max_num_pages) {
60                EventsFilterProcessor.current_page++;
61                EventsFilterProcessor.processFilter();
62            }
63        },
64        processFilter: function (formElement) {
65
66            var events_labels = $('[name="event-label"]').val();
67
68            var requestData = {
69                action: 'ajax_filter_events',
70                current_page: EventsFilterProcessor.current_page
71            };
72
73            if (events_labels) {
74                requestData.events_labels = events_labels;
75            }
76
77            var dateStart = '';
78            var dateEnd = '';
79
80            if ($('.event-filter-button.active').length > 0) {
81
82                dateStart = $('.event-filter-button.active').attr('data-date-start');
83                dateEnd = $('.event-filter-button.active').attr('data-date-end');
84
85                if (dateStart) {
86                    requestData.after = dateStart;
87                }
88                if (dateEnd) {
89                    requestData.before = dateEnd;
90                }
91            }
92
93            //  console.log(requestData)
94
95            $.ajax({
96                url: EVENTS_FILTER_PROCESSOR.ajaxUrl,
97                type: 'POST',
98                dataType: 'json',
99                data: requestData,
100                success: function (response) {
101
102                    //         console.log(response)
103                    if (response && response.view) {
104
105                        $('.no-results').hide();
106                        $('.events_list').fadeTo(250, 1);
107
108                        if (EventsFilterProcessor.current_page == 1) {
109                            response.view = '<div class="grid-sizer"></div>' + response.view;
110                            $('.ajax-list-results').html(response.view);
111                            EventsFilterProcessor.max_num_pages = response.max_num_pages;
112
113                            initMasonry();
114                        } else {
115                            var viewEl = $(response.view);
116                            $('.ajax-list-results').append(viewEl);
117                            initMasonry(viewEl);
118                        }
119
120                        $('.ajax-list-results .card').fadeTo(250, 1);
121
122                    } else if (EventsFilterProcessor.current_page == 1) {
123                        $('.events_list').hide();
124                        $('.no-results').fadeIn(250);
125                    }
126                },
127                error: function (response) {
128                    console.warn(response);
129                },
130                complete: function (response) {
131                }
132            });
133        },
134        init: function () {
135            $('[name="event-label"]').change(function () {
136                EventsFilterProcessor.current_page = 1;
137                EventsFilterProcessor.processFilter();
138            });
139            $('.event-filter-button').click(function (e) {
140
141                e.preventDefault();
142
143                if ($(this).hasClass('active')) {
144                    return;
145                }
146
147                $('.event-filter-button').removeClass('active');
148                $(this).addClass('active');
149
150                EventsFilterProcessor.current_page = 1;
151                EventsFilterProcessor.processFilter();
152            });
153
154            $(window).on("scroll", function () {
155
156                if (freezeScroll) {
157                    return;
158                }
159
160                freezeScroll = true;
161
162                setTimeout(function () {
163                    freezeScroll = false;
164                }, 1000);
165
166                if (EventsFilterProcessor.max_num_pages <= EventsFilterProcessor.current_page) {
167                    return;
168                }
169
170                var lastElement = $('.ajax-list-results .result-item').last();
171
172                if (lastElement.length > 0) {
173
174                    var lastElementOffsset = lastElement.offset().top;
175                    var lastElementHeight = lastElement.height();
176
177                    var scrollPos = Math.floor($(window).height() + $(window).scrollTop());
178
179                    var isBottom = scrollPos > lastElementOffsset + lastElementHeight - 100;
180                    if (isBottom) {
181                        EventsFilterProcessor.loadMore()
182                    }
183                }
184            });
185        }
186    }
187
188    EventsFilterProcessor.init();
189    EventsFilterProcessor.processFilter();
190
191    if ($('.events-carousel.swiper').length > 0) {
192        const swiper = new Swiper('.events-carousel.swiper', {
193            loop: true,
194            slidesPerView: 4,
195            spaceBetween: 20,
196
197            breakpoints: {
198                '320': {
199                    slidesPerView: 1,
200                },
201                '480': {
202                    slidesPerView: 2,
203                },
204                '960': {
205                    slidesPerView: 3,
206                },
207                '1199': {
208                    slidesPerView: 4,
209                }
210            },
211
212            navigation: {
213                nextEl: '.swiper-button-next',
214                prevEl: '.swiper-button-prev',
215            },
216        });
217
218        setTimeout(function () {
219            $('.events-carousel.swiper').fadeTo('slow', 1);
220        }, 250);
221    }
222});

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.