1const val_predict = 'predict', val_week_slider = 'week_slider'; 2 3(function(){ 4 5 htmx.on("htmx:after:init", function(evt) { 6 slideInit(); 7 ecalWidgetBootstrap(); 8 }); 9 10 slideInit(); 11 htmx.on("htmx:before:request", function(evt) { 12 if(evt.detail.ctx.sourceElement.classList.contains('tab-primary')){ 13 if(evt.detail.ctx.target.hasChildNodes()){ 14 // prevent another request if tab has content 15 evt.detail.ctx.sourceElement.dataset.once = true 16 evt.preventDefault(); 17 } 18 } 19 20 if(evt.detail.ctx.sourceElement.dataset.hidden&&evt.detail.ctx.sourceElement.dataset.shown){ 21 togglePlaceholder(evt.detail.ctx.sourceElement.dataset,true); 22 } 23 }); 24 25 htmx.on("htmx:after:request", function(evt) { 26 if(evt.detail.ctx.sourceElement.classList.contains('tab-primary')||evt.detail.ctx.sourceElement.classList.contains('tab-pane')){ 27 slideInit(); 28 } 29 if (evt.detail.ctx.event && evt.detail.ctx.event === val_week_slider) { 30 togglePlaceholder(evt.detail.ctx.values); 31 } 32 if(evt.detail.ctx.sourceElement.dataset.hidden&&evt.detail.ctx.sourceElement.dataset.shown){ 33 togglePlaceholder(evt.detail.ctx.sourceElement.dataset); 34 } 35 }); 36 37 htmx.on('htmx:after:swap', (evt) => { 38 if (evt.detail.ctx.event && evt.detail.ctx.event === val_predict) { 39 loginToPredict(); 40 } 41 }); 42 43 // const userProfileDropdown = document.getElementById('page-header-user-dropdown'); 44 // if (userProfileDropdown) { 45 // userProfileDropdown.addEventListener('hide.bs.dropdown', event => { 46 // // event.relatedTarget.nextSibling.nextSibling.classList.remove('show'); 47 // console.log(event.relatedTarget.nextSibling); 48 49 // event.relatedTarget.nextSibling.classList.remove('show'); 50 // }); 51 // } 52 // const userLogout = document.querySelector('[data-href="user-auth-logout"]'); 53 // if (userLogout) { 54 // userLogout.addEventListener('click',event => { 55 // const dhref = event.target.dataset.href; 56 // let object = {}; 57 // object[dhref] = 1; 58 // htmx.ajax('POST', '', {values:object,swap:'none'}); 59 // }); 60 // } 61})(); 62 63function calculateValue(defaults){ 64 let object = { 65 filter: 'matches' 66 } 67 object['cat'] = defaults; 68 if (document.getElementById('reset')) { 69 object['reset'] = document.getElementById('reset').value; 70 } 71 return object; 72} 73 74function slideInit(){ 75 let carouselElement = document.querySelectorAll('.weeks-carousel') 76 carouselElement.forEach(element => { 77 element.addEventListener('slide.bs.carousel', event => { 78 event.stopImmediatePropagation() 79 weeksValues(event); 80 }); 81 }); 82 loginToPredict(); 83} 84 85function weeksValues(event){ 86 let el = event.relatedTarget; 87 let object = {} 88 if (el.dataset !== undefined) { 89 object = el.dataset; 90 for (const [key, val] of Object.entries(el.dataset)) { 91 object[key] = val; 92 } 93 } 94 /* show placeholder */ 95 togglePlaceholder(object,true); 96 97 htmx.ajax('GET', '', {target:`${object.target}`, values: object, select: `${object.swap}`, swap:'innerHTML',event:val_week_slider}).then(() => { 98 }); 99 100} 101 102function togglePlaceholder(obj,visibility=false){ 103 104 const hidden = document.getElementById(obj.hidden); 105 const shown = document.getElementById(obj.shown); 106 107 if (null === obj.once || obj.once === undefined) { 108 if(visibility) { 109 110 shown.style.display = 'block'; 111 hidden.style.display = 'none'; 112 113 }else{ 114 115 shown.style.display = 'none'; 116 hidden.style.display = hidden.classList.contains('tab-pane') ? '' : 'block'; 117 } 118 } 119} 120 121function resetValues(el){ 122 const selectedOption = el.options[el.selectedIndex]; 123 if (selectedOption.dataset.reset !== undefined) { 124 if (document.getElementById('reset')) { 125 document.getElementById('reset').value = selectedOption.dataset.reset; 126 } 127 } 128} 129 130function loginToPredict(){ 131 132 let divs = document.querySelectorAll('[data-class="login-to-predict"]');
133 divs.forEach(element=> { 134 const target = element.dataset.target; 135 element.addEventListener('click',e=>{ 136 e.preventDefault(); 137 Swal.fire({ 138 title: 'Please login to predict.', 139 text: "You need to login/register to your RL1 account.", 140 icon: 'info', 141 showCancelButton: true, 142 confirmButtonColor: '#272a4a', 143 cancelButtonColor: '#d33', 144 confirmButtonText: 'Login' 145 }).then((result) => { 146 147 if (result.isConfirmed) { 148 const vals = document.getElementById(target).dataset.val; 149 let object = JSON.parse(vals); 150 object['type'] = 'login'; 151 htmx.ajax('POST', '', {values:object,swap:'none',event:'loginToPredict'}); 152 } 153 154 }); 155 }); 156 }) 157 158 let radios = document.querySelectorAll('[data-predict]'); 159 radios.forEach(element=> { 160 element.addEventListener('click',e=>{ 161 e.preventDefault(); 162 e.stopImmediatePropagation(); 163 let object = {}; 164 if (element.dataset !== undefined) { 165 object = element.dataset; 166 for (const [key, val] of Object.entries(element.dataset)) { 167 object[key] = val; 168 } 169 } 170 object['prediction'] = element.value; 171 const parentElID = e.target.closest('.prediction-button-holder').getAttribute("id"); 172 htmx.ajax('POST', '', {target:`#${parentElID}`,values:object,swap:'outerHTML',event:val_predict}); 173 }); 174 }); 175} 176 177function loadDefaults(){ 178 let object = { 179 load: 'true' 180 } 181 object['window_size'] = window.windowSize; 182 183 return object; 184} 185 186function responsiveObserver(){ 187 const divElem = document.querySelector("body"); 188 const resizeObserver = new ResizeObserver((entries) => { 189 for (const entry of entries) { 190 if (entry.contentBoxSize) { 191 const contentBoxSize = entry.contentBoxSize[0]; 192 window.windowSize = Math.round(contentBoxSize.inlineSize); 193 if (window.windowSize < 600) { 194 console.log('reload needed'); 195 } 196 } 197 } 198 }); 199 resizeObserver.observe(divElem); 200} 201window.addEventListener("load", (event) => { 202 203 const userProfileDropdown = document.getElementById('page-header-user-dropdown'); 204 if (userProfileDropdown) { 205 userProfileDropdown.addEventListener('hide.bs.dropdown', event => { 206 event.relatedTarget.nextSibling.nextSibling.classList.remove('show'); 207 }); 208 } 209 // ecalWidgetBootstrap(); 210 211}); 212 213function ecalWidgetBootstrap () { 214 /* update version whenever we updated something related to the embed scripts functionality */ 215 var version = '2.011'; 216 var apiKey = 'cTEpANvoLj1JF7SzDtgy7Hlbx7PuEsBCswsoJkqM68db1ec380'; 217 var bootSrc = '//sync.ecal.com/v2/ecal.widget.js'; 218 var ecalAlias = ''; 219 var autoBoot = true; 220 221 bootSrc = bootSrc.split('/v2/ecal.widget')[0]; 222 window.EcalWidgetAPIKey = apiKey; 223 224 function initialized () { 225 window.EcalWidget.host = bootSrc; 226 window[ecalAlias] = window.EcalWidget; 227 if (!autoBoot) return; 228 window.EcalWidget.boot(apiKey); 229 } 230 231 function loadScript () { 232 var escr = document.createElement('script'); 233 escr.onload = function (e) { 234 initialized(); 235 } 236 var src = `${bootSrc}/v2/widget.min.js?v=${version}`; 237 escr.setAttribute('src', src); 238 escr.setAttribute('type', 'text/javascript'); 239 var head = document.getElementsByTagName('head')[0]; 240 head.appendChild(escr); 241 } 242 243 function loadCSS () { 244 // <link rel="stylesheet" href="styles.css"></link> 245 246 var linkcss = document.createElement('link'); 247 linkcss.onload = function (e) { 248 loadScript(); 249 } 250 linkcss.setAttribute('rel', 'stylesheet'); 251 linkcss.setAttribute('href', `${bootSrc}/v2/widget.min.css`); 252 var head = document.getElementsByTagName('head')[0]; 253 head.appendChild(linkcss); 254 } 255 256 loadCSS(); 257}
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.