Skip to content

Commit 5e2a1d3

Browse files
committed
Add color to labels
1 parent 7bf9c73 commit 5e2a1d3

1 file changed

Lines changed: 12 additions & 8 deletions

File tree

dfetch_hub/site/index.html

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,7 @@ <h2 class="aside-t">Found in</h2>
730730
<div class="toast" id="toast" role="status" aria-live="polite"></div>
731731
<script>
732732
'use strict';
733+
{{ /* djlint:off */ }}
733734
let RAW = {}; // catalog data
734735
let ALL = []; // this fixes the ReferenceError
735736
let curQ = '';
@@ -883,7 +884,7 @@ <h2 class="aside-t">Found in</h2>
883884
if(!hits.length){closeHAC();return}
884885
dd.innerHTML=hits.map(({c})=>{
885886
const ini=(c.name||'?').slice(0,2).toUpperCase();
886-
const lbls=(c.source_labels||[]).slice(0,2).map(l=>`<span class="lbl lbl-${slug(l)}">${esc(l)}</span>`).join('');
887+
const lbls=(c.source_labels||[]).slice(0,2).map(makeLbl).join('');
887888
const st=c.stars!=null?`<span style="font-size:.74rem;color:var(--subtle);flex-shrink:0">⭐ ${fmt(c.stars)}</span>`:'';
888889
return `<div class="acitem" data-id="${esc(c.id)}">
889890
<div class="acico">${ini}</div>
@@ -915,7 +916,7 @@ <h2 class="aside-t">Found in</h2>
915916
if(!hits.length){closeAC();return}
916917
dd.innerHTML=hits.map(({c})=>{
917918
const ini=(c.name||'?').slice(0,2).toUpperCase();
918-
const lbls=(c.source_labels||[]).slice(0,2).map(l=>`<span class="lbl lbl-${slug(l)}">${esc(l)}</span>`).join('');
919+
const lbls=(c.source_labels||[]).slice(0,2).map(makeLbl).join('');
919920
const st=c.stars!=null?`<span style="font-size:.74rem;color:var(--subtle);flex-shrink:0">⭐ ${fmt(c.stars)}</span>`:'';
920921
return `<div class="acitem" data-id="${esc(c.id)}">
921922
<div class="acico">${ini}</div>
@@ -968,7 +969,7 @@ <h2 class="aside-t">Found in</h2>
968969
document.getElementById('rcount').innerHTML=`Showing <strong>${start+1}${end}</strong> of <strong>${curRes.length}</strong> package${curRes.length!==1?'s':''}`;
969970
list.innerHTML=curRes.slice(start,end).map(c=>{
970971
const ver=ltag(c);
971-
const lbls=(c.source_labels||[]).map(l=>`<span class="lbl lbl-${slug(l)}">${esc(l)}</span>`).join('');
972+
const lbls=(c.source_labels||[]).map(makeLbl).join('');
972973
const added=MFS.has(c.id)?`<span class="added-ind">✓ In manifest</span>`:'';
973974
const stars=c.stars!=null?`<span class="pstat">⭐ ${fmt(c.stars)}</span>`:'';
974975
const upd=c.last_updated?`<span class="padded">${relt(c.last_updated)}</span>`:'';
@@ -1020,8 +1021,8 @@ <h2 class="aside-t">Found in</h2>
10201021
document.getElementById('dName').textContent=c.name;
10211022
document.getElementById('dVer').textContent=ver?ver:'';
10221023
document.getElementById('dDesc').textContent=c.description||'';
1023-
const lbls=(c.source_labels||[]).map(l=>`<span class="lbl lbl-${slug(l)}">${esc(l)}</span>`).join('');
1024-
document.getElementById('dBadges').innerHTML=lbls+`<span class="lbl lbl-${slug(c.source_type)}">${esc(c.source_type)}</span>`;
1024+
const lbls=(c.source_labels||[]).map(makeLbl).join('');
1025+
document.getElementById('dBadges').innerHTML=lbls+makeLbl(c.source_type);
10251026
const parts=[];
10261027
if(c.license&&c.license!=='UNKNOWN')parts.push(`<span class="pmi">⚖ ${esc(c.license)}</span>`);
10271028
if(c.stars!=null)parts.push(`<span class="pmi">⭐ ${fmt(c.stars)}</span>`);
@@ -1053,7 +1054,7 @@ <h2 class="aside-t">Found in</h2>
10531054
});
10541055
const aSrcs=document.getElementById('aSrcs');
10551056
aSrcs.innerHTML=(c.catalog_sources||[]).length?(c.catalog_sources||[]).map(cs=>{
1056-
const lbl=cs.label?`<span class="lbl lbl-${slug(cs.label)}">${esc(cs.label)}</span>`:'';
1057+
const lbl=cs.label?makeLbl(cs.label):'';
10571058
const p=cs.index_path?`<span style="font-size:.76rem;color:var(--subtle)"> ${esc(cs.index_path)}</span>`:'';
10581059
return `<div class="aside-src-row">${lbl}<span>${esc(cs.source_name)}${p}</span></div>`;
10591060
}).join(''):'<span style="font-size:.82rem;color:var(--subtle)">No registry info</span>';
@@ -1229,18 +1230,21 @@ <h2 class="aside-t">Found in</h2>
12291230
setTimeout(()=>URL.revokeObjectURL(url),10000);
12301231
}
12311232

1232-
{{ /* djlint:off */ }}
12331233
const _ESC={'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'};
1234-
{{ /* djlint:on */ }}
12351234
function esc(s){return String(s||'').replace(/[&<>"']/g,c=>_ESC[c]||c)}
12361235
function yamlQ(s){return"'"+String(s||'').replace(/'/g,"''")+"'"}
12371236
function slug(s){return String(s||'').toLowerCase().replace(/[^a-z0-9]/g,'-').replace(/-+/g,'-').replace(/^-|-$/g,'')}
1237+
const _LBL_KNOWN={'vcpkg':['#d6eaf8','#1a5276'],'conan':['#fef9e7','#7d6608'],'npm':['#fde8e4','#922b21'],'clib':['#e8d8f0','#4a235a'],'esp':['#d5f5e3','#1e8449'],'esp-idf':['#d5f5e3','#1e8449'],'github':['#eaecee','#2c3e50'],'gitlab':['#fde8f0','#7b241c'],'svn':['#fef5e7','#784212']};
1238+
const _LBL_PAL=[['#d6eaf8','#1a5276'],['#fde8e4','#922b21'],['#d5f5e3','#1e8449'],['#fef9e7','#7d6608'],['#e8d8f0','#4a235a'],['#fde8f0','#7b241c'],['#fef5e7','#784212'],['#d5eaff','#1a4080'],['#e4f4e8','#1b5e33'],['#ffe4f0','#7b0040'],['#fff0d5','#7a4000'],['#e8e4ff','#2c007a']];
1239+
function _lblColor(l){const k=slug(l);if(_LBL_KNOWN[k])return _LBL_KNOWN[k];let h=0;for(let i=0;i<k.length;i++)h=(h*31+k.charCodeAt(i))>>>0;return _LBL_PAL[h%_LBL_PAL.length]}
1240+
function makeLbl(l){const[bg,fg]=_lblColor(l);return`<span class="lbl" style="background:${bg};color:${fg}">${esc(l)}</span>`}
12381241
function fmt(n){if(n>=1000)return(n/1000).toFixed(1)+'k';return String(n)}
12391242
function isSafeHttpUrl(url){try{const u=new URL(String(url||''));return u.protocol==='http:'||u.protocol==='https:';}catch(e){return false;}}
12401243
function ltag(c){const tags=(c.tags||[]).filter(t=>t.name);if(!tags.length)return'';const vp=s=>String(s).replace(/^v/i,'').split('.').map(p=>{const n=parseInt(p,10);return isNaN(n)?p:n});return tags.reduce((b,t)=>{const bv=vp(b.name),tv=vp(t.name);for(let i=0;i<Math.max(bv.length,tv.length);i++){const bi=bv[i]??0,ti=tv[i]??0;if(typeof bi==='number'&&typeof ti==='number'){if(bi!==ti)return bi<ti?t:b}else{const sc=String(bi).localeCompare(String(ti));if(sc)return sc<0?t:b}}return b}).name}
12411244
function relt(iso){if(!iso)return'';const d=new Date(iso);const diff=Date.now()-d.getTime();const days=Math.floor(diff/86400000);if(days<1)return'today';if(days<7)return`${days}d ago`;if(days<30)return`${Math.floor(days/7)}w ago`;if(days<365)return`${Math.floor(days/30)}mo ago`;return`${Math.floor(days/365)}y ago`}
12421245
function cpTxt(t){if(navigator.clipboard)return navigator.clipboard.writeText(t);return new Promise((res,rej)=>{const ta=document.createElement('textarea');ta.value=t;document.body.appendChild(ta);ta.select();try{const ok=document.execCommand('copy');ok?res():rej(new Error('execCommand copy returned false'))}catch(e){rej(e)}finally{ta.remove()}})}
12431246
function showToast(msg){const t=document.getElementById('toast');t.textContent=msg;t.classList.add('show');clearTimeout(t._t);t._t=setTimeout(()=>t.classList.remove('show'),2200)}
1247+
{{ /* djlint:on */ }}
12441248
</script>
12451249
</body>
12461250
</html>

0 commit comments

Comments
 (0)