PageSourceSearch

https://greppa.nu/download/18.a512ce719ab8f7aabff22f/1790931032558/gre-lansvaljare.js

js greppa.nu collected 2026-10-03 19:47:07 UTC 4,486 bytes, 171 lines download raw bytes

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.