1$(function () { 2 var calendar 3 4 function getView() { 5 return window.innerWidth >= 768 ? "timeGridWeek" : "listWeek" 6 } 7 8 // function getTheadTop() { 9 // var offset = $(".fc-scrollgrid-section-sticky").offset() 10 // if (offset) { 11 // return offset.top 12 // } 13 // return 115 14 // } 15 16 $document.on("tcf.render", function () { 17 if (calendar && typeof calendar.destroy === "function") { 18 calendar.destroy() 19 } 20 var calendarEl = document.getElementById("calendar") 21 $(calendarEl).closest(".leaf").removeClass("leaf") 22 23 if (calendarEl) { 24 calendar = new FullCalendar.Calendar(calendarEl, { 25 initialView: getView(), 26 27 listDaySideFormat: false, 28 29 height: "auto", 30 31 allDaySlot: false, 32 // slotDuration: { minutes: 2.5 }, 33 slotDuration: { minutes: 2.5 }, 34 // slotDuration: { minutes: 15 }, 35 slotLabelInterval: { minutes: 15 }, 36 slotLabelFormat: { 37 hour: "numeric", 38 minute: "2-digit", 39 omitZeroMinute: false, 40 meridiem: "short", 41 }, 42 43 droppable: false, 44 editable: false, 45 timeZone: "UTC", 46 47 headerToolbar: false, 48 validRange: { 49 start: "1900-01-01", 50 end: "1900-01-08", 51 }, 52 53 // slotMinTime: "08:30", 54 slotMinTime: "00:00", 55 // slotMaxTime: "22:15", 56 // slotMaxTime: "24:15", 57 slotMaxTime: "24:00", 58 59 dayHeaderFormat: { weekday: "short" }, 60 locale: "fr", 61 62 windowResize: function () { 63 // getTheadTop() 64 calendar.changeView(getView()) 65 }, 66 67 eventClick: function (info) { 68 info.jsEvent.preventDefault() 69 info.jsEvent.stopPropagation() 70 if (info.event.url) { 71 try { 72 var url = new URL(info.event.url) 73 var pathname = url.pathname 74 go(pathname) 75 } catch (e) {} 76 } 77 }, 78 79 eventMouseEnter: function (info) { 80 var $el = $(info.el) 81 $el.css({ 82 "min-height": $el.outerHeight() + "px", 83 height: "auto", 84 position: "relative", 85 }) 86 }, 87 eventMouseLeave: function (info) { 88 var $el = $(info.el) 89 $el.css({ 90 "min-height": "", 91 height: "", 92 position: "", 93 }) 94 }, 95 96 eventDidMount: function (info) { 97 info.el.id = info.event.id 98 }, 99 eventContent: function (info) { 100 var dom = [] 101 102 var time = document.createElement("div") 103 104 time.className = "fc-event-time" 105 time.innerHTML = info.timeText 106 dom.push(time) 107 108 var title = document.createElement("strong") 109 title.innerHTML = info.event.title 110 dom.push(title) 111 112 if (info.event.extendedProps.type === "podcasts") { 113 title.innerHTML += " " 114 var redif = document.createElement("abbr") 115 redif.title = "Rediffusion du " + info.event.extendedProps.published 116 redif.innerHTML = "*" 117 title.append(redif) 118 } 119 120 if (info.event.extendedProps.description) { 121 var desc = document.createElement("div") 122 desc.innerHTML = info.event.extendedProps.description 123 dom.push(desc) 124 } 125 126 if (info.event.extendedProps.authors) { 127 var em = document.createElement("em") 128 var authors = info.event.extendedProps.authors.map(function (item) { 129 return item.name 130 }) 131 if (authors.length) { 132 em.innerHTML = "par " + authors.join(", ") 133 dom.push(document.createTextNode(" ")) 134 dom.push(em) 135 } 136 } 137 138 if (info.backgroundColor === "#ffffff") { 139 info.borderColor = info.textColor 140 } else { 141 info.borderColor = info.backgroundColor 142 } 143 144 return { domNodes: dom } 145 }, 146 147 events: calData, 148 }) 149 calendar.render() 150 // getTheadTop() 151 } 152 }) 153})
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.