1$(document).ready(function () { 2 3 const setSpanish = function () { 4 localStorage.setItem('lang', 'span'); 5 $('.lang-btn.eng').removeClass('active'); 6 $('.span.lang-btn').addClass('active'); 7 8 $('.lang-text.eng').removeClass('active'); 9 $('.lang-text.span').addClass('active'); 10 } 11 12 const setEnglish = function () { 13 localStorage.setItem('lang', 'eng'); 14 $('.span.lang-btn').removeClass('active'); 15 $('.lang-btn.eng').addClass('active'); 16 17 $('.lang-text.span').removeClass('active'); 18 $('.lang-text.eng').addClass('active'); 19 }; 20 21 const getDefaultLanguage = function () { 22 // determine default language from navigator.languages 23 return navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage); 24 } 25 26 // set language based on local storage / navigator.language(s) 27 if (localStorage.getItem('lang') !== null) { 28 if (localStorage.getItem('lang') === 'span') { 29 // set spanish 30 setSpanish(); 31 } 32 else if (localStorage.getItem('lang') == 'eng') { 33 // set english 34 setEnglish(); 35 } 36 } else { 37 const defaultLanguage = getDefaultLanguage(); 38 if (defaultLanguage.startsWith('es')) { 39 // set spanish 40 setSpanish(); 41 } else { 42 // set english 43 setEnglish(); 44 } 45 } 46 47 // populate requests counter on homepage by fetching data from a JSON file on Digital Ocean Spaces. 48 const openRequestsURL = "https://file.baml.ink/website-data/open-requests.json"; 49 var openRequestsDiv = document.getElementById("requests-counter-container"); 50 if (openRequestsDiv != null) { 51 $.getJSON(openRequestsURL, function (data) { 52 // Filter out groceries from metrics since we no longer offer that service 53 var metrics = data.metrics.filter(function(metric) { 54 return metric.translations.eng.toLowerCase() !== 'groceries'; 55 }); 56 var nMetrics = metrics.length; 57 var half = Math.ceil(nMetrics / 2); 58 var firstHalf = metrics.slice(0, half); 59 var secondHalf = metrics.slice(half, nMetrics); 60 var halves = [firstHalf, secondHalf]; 61 var html = ''; 62 $.each(halves, function (key, half) { 63 html += '<div class="request-column">'; 64 for (var i = 0; i < half.length; i++) { 65 var request = half[i]; 66 html += "<div class='request-entry'>"; 67 html += "<h2 style='display: inline;' class='request-count'>" + request.value + " </h2>"; 68 if (localStorage.getItem('lang') === 'span') { 69 html += "<span class='span request-category lang-text active'>para " + request.translations.span + "</span>"; 70 html += "<span class='eng request-category lang-text'>for " + request.translations.eng + "</span>"; 71 } else { 72 html += "<span class='span request-category lang-text'>para " + request.translations.span + "</span>"; 73 html += "<span class='eng request-category lang-text active'>for " + request.translations.eng + "</span>"; 74 } 75 html += "</div>"; 76 } 77 html += "</div>"; 78 }); 79 openRequestsDiv.innerHTML = html; 80 }); 81 }; 82 83 // populate requests counter on homepage by fetching data from a JSON file on Digital Ocean Spaces. 84 const fulfilledRequestsURL = "https://file.baml.ink/website-data/fulfilled-requests.json"; 85 var fulfilledRequestsDiv = document.getElementById("fulfilled-requests-counter-container"); 86 if (fulfilledRequestsDiv != null) { 87 $.getJSON(fulfilledRequestsURL, function (data) { 88 // Filter out groceries from metrics since we no longer offer that service 89 var metrics = data.metrics.filter(function(metric) { 90 return metric.translations.eng.toLowerCase() !== 'groceries'; 91 }); 92 var nMetrics = metrics.length;
93 var half = Math.ceil(nMetrics / 2); 94 var firstHalf = metrics.slice(0, half); 95 var secondHalf = metrics.slice(half, nMetrics); 96 var halves = [firstHalf, secondHalf]; 97 var html = ''; 98 $.each(halves, function (key, half) { 99 html += '<div class="request-column">'; 100 for (var i = 0; i < half.length; i++) { 101 var request = half[i]; 102 html += "<div class='request-entry'>"; 103 html += "<h2 style='display: inline;' class='request-count'>" + request.value + " </h2>"; 104 if (localStorage.getItem('lang') === 'span') { 105 html += "<span class='span request-category lang-text active'> " + request.translations.span + "</span>"; 106 html += "<span class='eng request-category lang-text'> " + request.translations.eng + "</span>"; 107 } else { 108 html += "<span class='span request-category lang-text'> " + request.translations.span + "</span>"; 109 html += "<span class='eng request-category lang-text active'> " + request.translations.eng + "</span>"; 110 } 111 html += "</div>"; 112 } 113 html += "</div>"; 114 }); 115 fulfilledRequestsDiv.innerHTML = html; 116 }); 117 }; 118 119 var imgPromises = []; 120 $('#pics_carousel .img-outer-container img').each(function () { 121 const elem = $(this); 122 const img = new Image(); 123 const src = elem.data('src'); 124 const p = new Promise((resolve, reject) => { 125 img.onload = function () { 126 elem.attr('src', this.src); 127 resolve(); 128 }; 129 }); 130 imgPromises.push(p); 131 132 img.src = src; 133 }); 134 Promise.all(imgPromises).then(() => { 135 $('#pics_spinner').css('display', 'none'); 136 $('#pics_carousel').css('display', 'block'); 137 }); 138 139 //BG Hover animation 140 // $(window).on('mousemove', function(event) { 141 // const blueCircle = $('.circle.blue'); 142 // const orangeCircle = $('.circle.orange'); 143 144 // const x = (window.innerWidth - event.clientX)/10; 145 // const y = (window.innerHeight - event.clientY)/10; 146 147 // blueCircle.css('transform', `translateX(${x}px) translateY(${y}px) skew(70deg, 78deg)`); 148 // orangeCircle.css('transform', `translateX(${x}px) translateY(${y}px) skew(70deg, 78deg)`); 149 // // blueCircle.css('transform', `translateX(${x*.2}px) translateY(${y*.2}px) skew(25deg, -25deg)`); 150 // // orangeCircle.css('transform', `translateX(${x*.2}px) translateY(${y*.2}px) skew(25deg, -25deg)`); 151 // }); 152 153 $(window).on('scroll', function () { 154 //Neighbors scroll animation 155 $.each($('#neighbors_ticker .item'), (i, value) => { 156 $(value).css('transform', `translateX(-${window.pageYOffset}px) translateY(0)`); 157 }) 158 159 //Shrink logo on scroll 160 // if (document.body.scrollTop > 0) { 161 // $('#logo_main').removeClass('active'); 162 // $('#logo_hands').addClass('active'); 163 // $('#logo_container').addClass('scrolled'); 164 // $('nav').addClass('scrolled'); 165 166 // } else { 167 // $('#logo_hands').removeClass('active'); 168 // $('#logo_main').addClass('active'); 169 // $('#logo_container').removeClass('scrolled'); 170 // $('nav').removeClass('scrolled'); 171 // } 172 }); 173 174 //Picture carousel 175 $('#pics_carousel').owlCarousel({ 176 loop: true, 177 lazyLoad: true, 178 margin: 10, 179 responsiveClass: true, 180 nav: true, 181 autoHeight: true, 182 navText: ["<img src='./assets/images/left.svg'>", "<img src='./assets/images/right.svg'>"], 183 responsive: { 184 0: { 185 items: 1, 186 }, 187 600: { 188 autoHeight: false, 189 items: 3, 190 }, 191 1000: { 192 autoHeight: false, 193 items: 3, 194 loop: false 195 } 196 } 197 });
198 199 //Testimony Carousel 200 $('#testimony_carousel').owlCarousel({ 201 items: 1, 202 nav: true, 203 navText: ["<img src='./assets/images/left.svg'>", "<img src='./assets/images/right.svg'>"], 204 loop: true, 205 center: true, 206 startPosition: 1, 207 dots: true, 208 autoHeight: false, 209 responsive: { 210 1600: { 211 stagePadding: 325 212 } 213 } 214 }); 215 216 //About collapse show/hide minus/plus buttons 217 $('.about-content').on('show.bs.collapse', function () { 218 $('.about-content').each(function () { 219 $(this).collapse('hide'); 220 }); 221 }); 222 223 //English/Spanish toggle 224 $('.eng.lang-btn').on('click', () => { 225 setEnglish(); 226 }); 227 228 $('.span.lang-btn').on('click', () => { 229 setSpanish(); 230 }); 231 232 //Nav dropdown 233 $('.nav-dropdown').on('mouseover', () => { 234 $('.nav-dropdown__menu').addClass('active'); 235 }); 236 $('.nav-dropdown').on('mouseleave', () => { 237 $('.nav-dropdown__menu').removeClass('active'); 238 }); 239 240});
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.