1function c(x, y = "all") { 2 z = x.match(/^#/) ? document.getElementById(x.replace(/^#/, "")) : x.match(/^\./) ? document.getElementsByClassName(x.replace(/^\./, "")) : document.getElementsByTagName(x); 3 z = x.match(/^#/) ? z : y != "all" ? z[parseInt(y)] : z; 4 return z; 5} 6 7function le(x, y = "", i = "all", z = "data-id") { 8 //linked element 9 var el = c(x, i); //element_list 10 var ei; //element item 11 var id; 12 for (var i = 0; i < el.length; i++) { 13 if (el[i].getAttribute(z) == y) { 14 ei = el[i]; 15 id = i; 16 } 17 } 18 var e = { 19 ei: ei, 20 id: id, 21 }; 22 return e; 23} 24 25function la(x) { 26 //legend active 27 if (x) { 28 li = x.getElementsByClassName("legend-item"); 29 a = []; 30 for (var i = 0; i < li.length; i++) { 31 if (li[i].getAttribute("data-value") == 1) { 32 a.push(li[i].getAttribute("data-group")); 33 } 34 } 35 return a; 36 } else { 37 return false; 38 } 39} 40 41function ia(x, y) { 42 if (!Array.isArray(y)) { 43 return true; 44 } else { 45 if (Array.isArray(x)) { 46 for (var i in y) { 47 for (var j in x) { 48 if (x[j] == y[i]) { 49 return true; 50 } 51 } 52 } 53 } else { 54 for (var i in y) { 55 if (x == y[i]) { 56 return true; 57 } 58 } 59 } 60 } 61 return false; 62} 63 64document.addEventListener("DOMContentLoaded", function () { 65 var calendars = document.getElementsByClassName("calendar"); /////var 66 var calendar = []; 67 //console.log(events_json); 68 for (ci = 0; ci < calendars.length; ci++) { 69 calendar[ci] = new FullCalendar.Calendar(calendars[ci], { 70 plugins: ["interaction", "dayGrid", "timeGrid", "list", "rrule"], 71 locale: "cs", 72 header: { 73 left: "prev,next today", 74 center: "title", 75 right: "dayGridMonth,timeGridWeek,listWeek", 76 }, 77 allDayText: "celý den", 78 defaultView: "dayGridMonth", //////var 79 views: { 80 dayGridMonth: { buttonText: "mÄsÃc" }, 81 timeGridWeek: { buttonText: "týden" }, 82 listWeek: { buttonText: "program týden" }, 83 }, 84 buttonText: { today: "dnes" }, 85 eventTimeFormat: { 86 // ZmÄna formátu Äasu pro události 87 hour: "2-digit", // DvÄ cifry pro hodinu 88 minute: "2-digit", // DvÄ cifry pro minuty 89 meridiem: false, // Skrytà AM/PM (formát 24 hodin) 90 }, 91 validRange: { 92 start: calendarData.startDate, // Dynamický zaÄátek z PHP 93 end: calendarData.endDate, // Dynamický konec z PHP 94 }, 95 96 height: "auto", 97 //defaultDate: "2019-08-12", 98 navLinks: true, 99 //(is_user_logged_in()?'editable: true,':''). /////////var 100 eventLimit: false, 101 allDaySlot: false, 102 firstDay: 1, 103 minTime: "07:00:00", 104 maxTime: "22:00:00", 105 events: events_json[ci], 106 eventRender: function (e) { 107 var tooltip = new Tooltip(e.el, { 108 title: e.event.title, 109 template: 110 '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div><div class="aci-tooltip">' + 111 e.event.extendedProps.tooltip + 112 "</div></div>", 113 html: true, 114 placement: "bottom", 115 trigger: "hover", 116 closeOnClickOutside: true, 117 container: "body", 118 }); 119 /*if(e.el.getElementsByClassName("fc-title")[0]){ 120 e.el.getElementsByClassName("fc-title")[0].innerHTML = e.el.getElementsByClassName("fc-title")[0].innerHTML+'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'+e.event.extendedProps.description; 121 } 122 if(e.el.getElementsByClassName("fc-list-item-title")[0]){ 123 e.el.getElementsByClassName("fc-list-item-title")[0].parentElement.innerHTML = e.event.extendedProps.description_list; 124 }*/ 125 126 // PÅidánà mÃsta (venue) k události 127 128 var venue = e.event.extendedProps.venue ? "<div>" + e.event.extendedProps.venue + "</div>" : ""; 129 if (e.el.getElementsByClassName("fc-title")[0]) { 130 e.el.getElementsByClassName("fc-title")[0].innerHTML += venue; 131 } 132 if (e.el.getElementsByClassName("fc-list-item-title")[0]) { 133 e.el.getElementsByClassName("fc-list-item-title")[0].innerHTML += venue; 134 } 135 136 var group_keys = e.event.extendedProps.group_keys; 137 var cat_keys = e.event.extendedProps.cat_keys; 138 var group_check = false;
139 var cat_check = false; 140 141 var legend_g = le(".legend-group", this.el.getAttribute("data-id")).ei 142 ? le(".legend-group", this.el.getAttribute("data-id")).ei.getElementsByClassName("legend-item-group") 143 : ""; 144 var legend_c = le(".legend-cat", this.el.getAttribute("data-id")).ei ? le(".legend-cat", this.el.getAttribute("data-id")).ei.getElementsByClassName("legend-item-cat") : ""; 145 146 for (i = 0; i < group_keys.length; i++) { 147 for (j = 0; j < legend_g.length; j++) { 148 if (group_keys[i] == legend_g[j].getAttribute("data-group") && legend_g[j].getAttribute("data-value") == 1) { 149 group_check = true; 150 } 151 } 152 } 153 for (i = 0; i < cat_keys.length; i++) { 154 for (j = 0; j < legend_c.length; j++) { 155 if (cat_keys[i] == legend_c[j].getAttribute("data-group") && legend_c[j].getAttribute("data-value") == 1) { 156 cat_check = true; 157 } 158 } 159 } 160 if (legend_g == "") { 161 group_check = true; 162 } 163 if (legend_c == "") { 164 cat_check = true; 165 } 166 if (!group_check || !cat_check) { 167 e.el.style.display = "none"; 168 } 169 }, 170 }); 171 calendar[ci].render(); 172 } 173 174 if (document.getElementsByClassName("legend")[0]) { 175 var legends = document.getElementsByClassName("legend"); 176 for (i = 0; i < legends.length; i++) { 177 var legend = legends[i].getElementsByClassName("legend-item"); 178 for (j = 0; j < legend.length; j++) { 179 legend[j].onclick = function () { 180 var lis = this.parentElement.getElementsByClassName("legend-item"); 181 var cid = this.parentElement.getAttribute("data-id"); //current id 182 if (this.parentElement.getElementsByClassName("aci-group-filter")[0].value == "all") { 183 for (k = 0; k < lis.length; k++) { 184 lis[k].style.opacity = "0.3"; 185 lis[k].setAttribute("data-value", "0"); 186 } 187 } 188 if (this.getAttribute("data-value") == "0") { 189 this.style.opacity = "1"; 190 this.setAttribute("data-value", "1"); 191 } else { 192 this.style.opacity = "0.3"; 193 this.setAttribute("data-value", "0"); 194 } 195 this.parentElement.getElementsByClassName("aci-group-filter")[0].value = ""; 196 var id = le(".calendar", cid).id; 197 calendar[id].render("eventRender"); 198 }; 199 } 200 legends[i].getElementsByClassName("aci-group-filter")[0].onchange = function () { 201 var legend = this.parentElement.getElementsByClassName("legend-item"); 202 var cid = this.parentElement.getAttribute("data-id"); //current id 203 for (i = 0; i < legend.length; i++) { 204 if (this.value == "all" || legend[i].getAttribute("data-group") == this.value) { 205 legend[i].style.opacity = "1"; 206 legend[i].setAttribute("data-value", "1"); 207 } else { 208 legend[i].style.opacity = "0.3"; 209 legend[i].setAttribute("data-value", "0"); 210 } 211 } 212 var id = le(".calendar", cid).id; 213 calendar[id].render("eventRender"); 214 }; 215 } 216 } 217 218 var blobObject = null; 219 220 function createDownloadLink(anchorSelector, str, fileName) { 221 if (window.navigator.msSaveOrOpenBlob) { 222 var fileData = [str]; 223 blobObject = new Blob(fileData); 224 anchorSelector.onclick = function () { 225 window.navigator.msSaveOrOpenBlob(blobObject, fileName); 226 }; 227 } else { 228 var url = "data:text/plain;charset=utf-8," + encodeURIComponent(str); 229 anchorSelector.setAttribute("href", url); 230 anchorSelector.setAttribute("download", fileName); 231 } 232 } 233 234 eb = c(".export-button"); 235 for (i = 0; i < eb.length; i++) { 236 eb[i].onclick = function () { 237 var cid = this.getAttribute("data-id"); //current id 238 var id = le(".calendar", cid).id; 239 var legend_g = la(le(".legend-group", cid).ei) ? la(le(".legend-group", cid).ei) : ""; 240 var legend_c = la(le(".legend-cat", cid).ei) ? la(le(".legend-cat", cid).ei) : ""; 241 var str = ""; 242 str += "BEGIN:VCALENDAR\n"; 243 str += "VERSION:2.0\n"; 244 str += "PRODID:KalendáŠudálostÃ\n"; 245 str += "CALSCALE:GREGORIAN\n"; 246 str += "METHOD:PUBLISH\n"; 247 str += "\n"; 248 str += "BEGIN:VTIMEZONE\n";
249 str += "TZID:Europe/Prague\n"; 250 str += "BEGIN:STANDARD\n"; 251 str += "DTSTART:19691231T230000\n"; 252 str += "TZOFFSETTO:+0100\n"; 253 str += "TZOFFSETFROM:+0100\n"; 254 str += "END:STANDARD\n"; 255 str += "END:VTIMEZONE\n"; 256 str += "\n"; 257 258 for (j = 0; j < events_json[id].length; j++) { 259 //console.log(ia(events_json[id][j].group_keys,legend_g),ia(events_json[id][j].cat_keys,legend_c)); 260 //console.log(events_json[id][j].group_keys,legend_g,events_json[id][j].cat_keys,legend_c); 261 if (ia(events_json[id][j].group_keys, legend_g) && ia(events_json[id][j].cat_keys, legend_c)) { 262 //console.log(events_json[id][j]); 263 str += "BEGIN:VEVENT\n"; 264 str += "UID:" + events_json[id][j].uid + "\n"; 265 str += "DTSTART:" + events_json[id][j].start.replace(/-|:/g, "") + "Z\n"; 266 str += "DTEND:" + events_json[id][j].end.replace(/-|:/g, "") + "Z\n"; 267 str += "DTSTAMP:" + events_json[id][j].created.replace(/-|:/g, "") + "Z\n"; 268 str += "SUMMARY:" + events_json[id][j].title + "\n"; 269 str += "DESCRIPTION:Sportovnà událost\n"; 270 str += "STATUS:CONFIRMED\n"; 271 if (events_json[id][j].rrule) { 272 str += 273 events_json[id][j] 274 .rrule; /*'RRULE:FREQ='+events_json[id][j].rrule.freq.toUpperCase()+';INTERVAL='+events_json[id][j].rrule.interval+';UNTIL='+events_json[id][j].until.replace(/-|:/g, '')+'Z;BYDAY='+events_json[id][j].rrule.byweekday.join(',').toUpperCase()+'\n';*/ 275 } 276 str += "END:VEVENT\n"; 277 str += "\n"; 278 } 279 } 280 281 str += "END:VCALENDAR\n"; 282 createDownloadLink(this, str, "export-event-calendar.ics"); 283 }; 284 } 285});
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.