@@ -86,6 +86,35 @@ function parseLocation(breed) {
8686 return m ? m [ 1 ] . trim ( ) : '' ;
8787}
8888
89+ /** Map specific campus locations to general area groups for filtering */
90+ const LOCATION_GROUP_MAP = {
91+ 'Gate 1' : 'Gate 1' ,
92+ 'Gate 1/Gate 2' : 'Gate 1' ,
93+ 'Gate 2' : 'Gate 2' ,
94+ 'Gate 2/Antil Dhaba' : 'Gate 2' ,
95+ 'Gate 2/WUD' : 'Gate 2' ,
96+ 'Opposite Gate 2' : 'Gate 2' ,
97+ 'Gate 3' : 'Gate 3' ,
98+ 'Gate 3 Construction' : 'Gate 3' ,
99+ 'Around Gate 3' : 'Gate 3' ,
100+ 'ASG' : 'ASG' ,
101+ 'Morriko/ASG' : 'ASG' ,
102+ 'Beyond Morriko/ASG' : 'ASG' ,
103+ 'Police Station/ASG' : 'Police Station' ,
104+ 'Tapri' : 'Tapri' ,
105+ 'Next to Roti Boti' : 'Tapri' ,
106+ 'Next to WUD' : 'WUD' ,
107+ 'Near WUD' : 'WUD' ,
108+ 'Commissioner\'s Office' : 'Commissioner\'s Office' ,
109+ 'Police Station' : 'Police Station' ,
110+ 'Shelter' : 'Shelter' ,
111+ } ;
112+
113+ function toGeneralLocation ( specific ) {
114+ if ( ! specific ) return '' ;
115+ return LOCATION_GROUP_MAP [ specific ] || specific ;
116+ }
117+
89118/** Extract gender from breed string: ♀ → 'female', ♂ → 'male' */
90119function parseGender ( breed ) {
91120 if ( ! breed ) return '' ;
@@ -148,7 +177,7 @@ function buildDogCard(meta, body) {
148177 data-bg-dark="${ esc ( meta . bgDark ) } "
149178 data-sterilized="${ esc ( meta . sterilized || '' ) } "
150179 data-vaccinated="${ esc ( meta . vaccinated || '' ) } "
151- data-location="${ esc ( parseLocation ( meta . breed ) ) } "
180+ data-location="${ esc ( toGeneralLocation ( parseLocation ( meta . breed ) ) ) } "
152181 data-gender="${ esc ( parseGender ( meta . breed ) ) } "
153182 data-age-months="${ calcAgeMonths ( meta . born ) } ">
154183 ${ photoArea }
@@ -365,24 +394,24 @@ function initDogFilters() {
365394 <div class="dogs-filter-backdrop" id="dogs-filter-backdrop"></div>
366395 <aside class="dogs-filter-panel" id="dogs-filter-panel" aria-label="Filter dogs">
367396 <div class="dogs-filter-header">
368- <span class="dogs-filter-title">🐾 filters</span>
397+ <span class="dogs-filter-title">filters</span>
369398 <button class="dogs-filter-close" id="dogs-filter-close" aria-label="Close filters">✕</button>
370399 </div>
371400 <div class="dogs-filter-body">
372401 <div class="dogs-filter-section">
373- <div class="dogs-filter-label">📍 location</div>
402+ <div class="dogs-filter-label">location</div>
374403 <div class="dogs-filter-chips" id="filter-locations">${ locationChips } </div>
375404 </div>
376405 <div class="dogs-filter-section">
377- <div class="dogs-filter-label">🚻 gender</div>
406+ <div class="dogs-filter-label">gender</div>
378407 <div class="dogs-filter-toggle-group" id="filter-gender">
379408 <button class="dogs-filter-toggle active" data-val="all">all</button>
380409 <button class="dogs-filter-toggle" data-val="female">♀ female</button>
381410 <button class="dogs-filter-toggle" data-val="male">♂ male</button>
382411 </div>
383412 </div>
384413 <div class="dogs-filter-section">
385- <div class="dogs-filter-label">🎂 age</div>
414+ <div class="dogs-filter-label">age</div>
386415 <div class="dogs-age-slider-wrap">
387416 <div class="dogs-age-track"><div class="dogs-age-fill" id="dogs-age-fill"></div></div>
388417 <input type="range" id="age-min" class="dogs-age-range" min="${ dataMin } " max="${ dataMax } " value="${ dataMin } " step="1">
@@ -391,17 +420,17 @@ function initDogFilters() {
391420 <div class="dogs-age-label" id="dogs-age-label">${ fmtAge ( dataMin ) } → ${ fmtAge ( dataMax ) } </div>
392421 </div>
393422 <div class="dogs-filter-section">
394- <div class="dogs-filter-label">✅ sterilisation</div>
423+ <div class="dogs-filter-label">sterilisation</div>
395424 <div class="dogs-filter-toggle-group" id="filter-sterilized">
396- <button class="dogs-filter-toggle active" data-val="all">all</button>
425+ <button class="dogs-filter-toggle active" data-val="all">all (confirmed & unconfirmed) </button>
397426 <button class="dogs-filter-toggle" data-val="yes">yes</button>
398427 <button class="dogs-filter-toggle" data-val="no">not confirmed</button>
399428 </div>
400429 </div>
401430 <div class="dogs-filter-section">
402- <div class="dogs-filter-label">💉 vaccination</div>
431+ <div class="dogs-filter-label">vaccination</div>
403432 <div class="dogs-filter-toggle-group" id="filter-vaccinated">
404- <button class="dogs-filter-toggle active" data-val="all">all</button>
433+ <button class="dogs-filter-toggle active" data-val="all">all (confirmed & unconfirmed) </button>
405434 <button class="dogs-filter-toggle" data-val="yes">yes</button>
406435 <button class="dogs-filter-toggle" data-val="no">not confirmed</button>
407436 </div>
0 commit comments