1 2svDocReady(function () { 3 var $ = $svjq; 4 5 // Vänta tills länsväljaren finns 6 waitForElement('.select-lan', function () { 7 initLanSelector(); 8 }); 9 10 /* =========================== 11 Wait for element helper 12 =========================== */ 13 function waitForElement(selector, callback) { 14 var checkExist = setInterval(function () { 15 if ($(selector).length) { 16 clearInterval(checkExist); 17 callback(); 18 } 19 }, 50); 20 } 21 22 /* =========================== 23 Init all logic 24 =========================== */ 25 function initLanSelector() { 26 var $select = $('.select-lan'); 27 var selected_lan = localStorage.getItem('selected_lan'); 28 29 // Tidigare valt län eller Stockholm som standard 30 if (selected_lan) { 31 setSelectValue(selected_lan); 32 } else { 33 selected_lan = 'Stockholms län'; 34 } 35 36 updateCurrentLanText(selected_lan); 37 updateLanLinks(selected_lan); 38 39 // Vid ändring av län 40 $select.on('change', function () { 41 selected_lan = $(this).val(); 42 43 if (!selected_lan) { 44 localStorage.removeItem('selected_lan'); 45 selected_lan = 'Stockholms län'; 46 } else { 47 localStorage.setItem('selected_lan', selected_lan); 48 } 49 50 updateCurrentLanText(selected_lan); 51 updateLanLinks(selected_lan); 52 }); 53 } 54 55 /* =========================== 56 Helper functions 57 =========================== */ 58 59 function setSelectValue(value) { 60 var $select = $('.select-lan'); 61 $select.val(value); 62 63 if (!$select.val()) { 64 console.warn('Ingen matchande option för:', value); 65 } 66 } 67 68 function updateCurrentLanText(selected_lan) { 69 if (selected_lan) { 70 $('#currentLan').text('i ' + selected_lan); 71 } 72 } 73 74 // Omvandla länsnamn till URL-format 75 function getLanSlug(selected_lan) { 76 var slug = selected_lan 77 .replace(/ län$/i, '') 78 .trim() 79 .toLowerCase() 80 .replace(/å/g, 'a') 81 .replace(/ä/g, 'a') 82 .replace(/ö/g, 'o') 83 .replace(/\s+/g, '-'); 84 85 // Exempel: Dalarnas -> Dalarna 86 if (slug.endsWith('s')) { 87 slug = slug.slice(0, -1); 88 } 89 90 return slug; 91 } 92 93 /* =========================== 94 Hitta rätt puff 95 =========================== */ 96 function getPuffLink(title, originalHref) { 97 // Försök först hitta den ursprungliga länken 98 var $link = $('.gre-image-card__item-link').filter(function () { 99 return $(this).attr('href') === originalHref; 100 }); 101 102 if ($link.length) { 103 return $link; 104 } 105 106 // Om länken redan är ändrad: 107 // identifiera puffen med hjälp av rubriken 108 $link = $('.gre-image-card__item-link').filter(function () { 109 var $this = $(this); 110 var $card = $this.closest('.gre-image-card__item'); 111 112 var text = $this.text(); 113 114 if ($card.length) { 115 text += ' ' + $card.text(); 116 } else { 117 text += ' ' + $this.parent().text(); 118 } 119 120 text += ' ' + ($this.attr('aria-label') || ''); 121 text += ' ' + ($this.attr('title') || ''); 122 123 return text.toLowerCase().indexOf(title.toLowerCase()) !== -1; 124 }); 125 126 return $link; 127 } 128 129 /* =========================== 130 Uppdatera länkar 131 =========================== */ 132 function updateLanLinks(selected_lan) { 133 if (!selected_lan) return; 134 135 var linkName = getLanSlug(selected_lan); 136 137 // Greppa Näringen - länssida 138 var dittlan = 'https://greppa.nu/ditt-lan/' + linkName; 139 140 // Länsstyrelsens kalender 141 var calendar = 'https://www.lansstyrelsen.se/' + 142 linkName + '/om-oss/kalender.html'; 143 144 // Hitta Greppa Näringen-puffen 145 var $dittlanLink = getPuffLink(
146 'Greppa Näringen i ditt län', 147 '//#dittlan' 148 ); 149 150 // Hitta kalenderpuffen 151 var $calendarLink = getPuffLink( 152 'Länsstyrelsens kalender', 153 '//#kalender' 154 ); 155 156 // Uppdatera länssidan 157 if ($dittlanLink.length) { 158 $dittlanLink.attr('href', dittlan); 159 } else { 160 console.warn('Hittade inte puffen Greppa Näringen i ditt län'); 161 } 162 163 // Uppdatera kalendern 164 if ($calendarLink.length) { 165 $calendarLink.attr('href', calendar); 166 } else { 167 console.warn('Hittade inte kalenderpuffen'); 168 } 169 } 170 171});
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.