PageSourceSearch

https://www.ancom.ro/wp-content/plugins/custom-elementor-widgets/a…?ver=30908c078d62d131e6c31a1d04a49ea1

js ancom.ro collected 2026-10-02 04:20:07 UTC 8,140 bytes, 179 lines download raw bytes

1document.addEventListener('DOMContentLoaded', function () {
2    let calendarEl = document.getElementById('events-calendar');
3    let eventsContainer = document.querySelector('.events-calendar-items');
4
5    if (!calendarEl) return;
6
7    let selectedDate = null; // keep track of clicked date
8
9    let calendar = new FullCalendar.Calendar(calendarEl, {
10        initialView: 'dayGridMonth',
11        locale: 'RO',
12        firstDay: 1,
13        showNonCurrentDates: false,
14        contentHeight: 'auto',
15        dayMaxEvents: true,
16        events: [],
17        headerToolbar: {
18            left: 'title',
19            center: 'prevYear,prev,today,next,nextYear',
20            right: '',
21        },
22        buttonText: {
23            today: 'Astăzi',
24        },
25
26        // highlight clicked day + load events
27        dateClick: function (info) {
28            selectedDate = info.dateStr;
29            calendar.render();
30            displayEvents(info.dateStr);
31        },
32
33        // assign class to selected cell
34        dayCellClassNames: function (arg) {
35            const cellDate = arg.date.toLocaleDateString('en-CA'); // YYYY-MM-DD in local time
36            if (cellDate === selectedDate) {
37                return ['fc-day-selected'];
38            }
39            return [];
40        },
41
42        // detect navigation (today button included)
43        datesSet: function (info) {
44            const todayStr = new Date().toLocaleDateString('en-CA');
45
46            // if the view is exactly "today", reset selection
47            if (info.start <= new Date() && new Date() < info.end && selectedDate !== todayStr) {
48                selectedDate = todayStr;
49                displayEvents(todayStr);
50                calendar.render();
51            }
52        },
53
54        customButtons: {
55            prevYear: {
56                text: '«',
57                click: function () {
58                    calendar.incrementDate({ years: -1 }); // go back 1 year
59                }
60            },
61            nextYear: {
62                text: '»',
63                click: function () {
64                    calendar.incrementDate({ years: 1 }); // go forward 1 year
65                }
66            }
67        },
68    });
69
70    calendar.render();
71
72    // --- Function to display posts ---
73    function displayEvents(dateStr) {
74        fetch(`${calendarData.rest_url}&date=${dateStr}`)
75            .then(res => res.json())
76            .then(events => {
77                dateStrDisplayed = dateStr.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3.$2.$1')
78                eventsContainer.innerHTML = `<div class="events-calendar-date-header">${dateStrDisplayed}</div>`;
79                if (events.length) {
80                    events.forEach(ev => {
81                        date = ""
82                        date_start = ev.acf.data_inceput ? ev.acf.data_inceput.replace(/(\d{4})(\d{2})(\d{2})/, '$3.$2.$1') : ""
83                        date_end = ev.acf.data_final ? ev.acf.data_final.replace(/(\d{4})(\d{2})(\d{2})/, '$3.$2.$1') : ""
84                        let title = ev.title.rendered.charAt(0).toUpperCase() + ev.title.rendered.slice(1);
85                        if (ev.acf.data_inceput === ev.acf.data_final) {
86                            date = date_start ? date_start : date_end
87                        } else {
88                            date = `${date_start} ${(date_start && date_end) ? "-" : ""} ${date_end}`
89                        }
90                        details = ev.acf.detalii ? `<p><b>Detalii:</b> <br>${ev.acf.detalii}</p>` : '';
91
92                        /*                                    <div class="events-calendar-date-wrapper">
93                                        <span class="events-calendar-date">${date.trim()}</span>
94                                    </div> */
95                        eventsContainer.innerHTML += `
96                            <div class="events-calendar-item">
97                                <div class="events-calendar-header">
98                                    <h4>${title}</h4>
99                                </div>
100                                <div>
101                                    <p><b>Dată:</b> ${date.trim()}</p>
102                                    <p><b>Organizator:</b> ${ev.acf.organizator}</p>
103                                    <p><b>Locație:</b> ${ev.acf.loc_de_desfașurare}</p>
104                                    <p><b>Participanți:</b> ${(ev.acf.participa.split("\n").length > 1) ? '<br>' : ''}${ev.acf.participa}</p>
105                                    ${details}
106                                </div>
107                            </div>
108                        `;
109                    });
110                } else {
111                    eventsContainer.innerHTML += `<div class="events-calendar-item"><h5 class="events-calendar-no-events">Nu a fost găsit niciun eveniment în data selectată (${dateStrDisplayed}).</h5></div>`;
112                }
113            });
114    }
115
116    function displayLastEvents(numberOfEvents = 3, containerId = 'last-events-container') {
117        fetch(`${calendarData.rest_url}&last=${numberOfEvents}`)
118            .then(res => res.json())
119            .then(events => {
120                const container = document.getElementById(containerId);
121                if (!container) {
122                    console.error(`Container with ID '${containerId}' not found`);
123                    return;
124                }
125
126                container.innerHTML = `<div class="events-calendar-date-header">Ultimele evenimente</div>`;
127
128                if (events.length) {
129                    events.forEach(ev => {
130                        let date = "";
131                        let date_start = ev.acf.data_inceput ? ev.acf.data_inceput.replace(/(\d{4})(\d{2})(\d{2})/, '$3.$2.$1') : "";
132                        let date_end = ev.acf.data_final ? ev.acf.data_final.replace(/(\d{4})(\d{2})(\d{2})/, '$3.$2.$1') : "";
133                        let title = ev.title.rendered.charAt(0).toUpperCase() + ev.title.rendered.slice(1);
134
135                        if (ev.acf.data_inceput === ev.acf.data_final) {
136                            date = date_start ? date_start : date_end;
137                        } else {
138                            date = `${date_start} ${(date_start && date_end) ? "-" : ""} ${date_end}`;
139                        }
140
141                        details = ev.acf.detalii ? `<p><b>Detalii:</b> <br>${ev.acf.detalii}</p>` : '';
142
143                        container.innerHTML += `
144                            <div class="events-calendar-item">
145                                <div class="events-calendar-header">
146                                    <h4>${title}</h4>
147                                </div>
148                                <div>
149                                    <p><b>Dată:</b> ${date.trim()}</p>
150                                    <p><b>Organizator:</b> ${ev.acf.organizator}</p>
151                                    <p><b>Locație:</b> ${ev.acf.loc_de_desfașurare}</p>
152                                    <p><b>Participanți:</b> ${(ev.acf.participa.split("\n").length > 1) ? '<br>' : ''}${ev.acf.participa}</p>
153                                    ${details}
154                                </div>
155                            </div>
156                        `;
157                    });
158                } else {
159                    container.innerHTML += `<div class="events-calendar-item"><h5 class="events-calendar-no-events">Nu au fost găsite evenimente recente.</h5></div>`;
160                }
161            })
162            .catch(error => {
163                console.error(`Error fetching last ${numberOfEvents} events:`, error);
164                const container = document.getElementById(containerId);
165                if (container) {
166                    container.innerHTML = `<div class="events-calendar-item"><h5 class="events-calendar-no-events">Eroare la încărcarea evenimentelor.</h5></div>`;
167                }
168            });
169    }
170
171    // --- Highlight today + load events on page load ---
172    const todayStr = new Date().toLocaleDateString('en-CA');
173    selectedDate = todayStr;
174    displayEvents(todayStr);
175    displayLastEvents(3);
176    calendar.render();
177});
178
179

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.