Spaces:
Running
Running
const unknownImage = | |
'https://mohitpawar.com/wp-content/uploads/2010/10/unknown.jpg'; | |
function handleKnownKeyExceptions(key) { | |
switch (key) { | |
case 'danika"cbg19"leemassey': | |
return 'cbg'; | |
case 'joannarudaxsh': | |
return 'rudaxsh'; | |
case 'cyberpunk2077:v': | |
return 'v'; | |
case 'character:danascully': | |
return 'gilliananderson'; | |
default: | |
return key; | |
} | |
} | |
function isKnownSkippableKey(key) { | |
if (key.startsWith('concept:') | |
|| key.startsWith('style:') | |
|| key.startsWith('clothing:')) { | |
return true; | |
} | |
switch (key) { | |
case "sdxl0.9betatests:famouspeople": | |
return true; | |
default: | |
return false; | |
} | |
} | |
function prepareKey(name) { | |
return handleKnownKeyExceptions( | |
name | |
.toLowerCase() | |
.replaceAll(' ', '') | |
.replaceAll('-', '') | |
.replaceAll("'", '') | |
.replaceAll('ł', 'l') | |
.normalize('NFD') | |
.replace(/\p{Diacritic}/gu, ''), | |
); | |
} | |
function setImageUrl(key, imageUrl) { | |
if (!presence[key].imageUrl) { | |
presence[key].imageUrl = imageUrl; | |
} | |
} | |
function clearCurrentSearchValue() { | |
document.getElementById('search').value = ''; | |
} | |
function getCurrentSearchValue() { | |
return document.getElementById('search').value; | |
} | |
function getCurrentSearchMode() { | |
return document.getElementById('searchMode').value; | |
} | |
function escapeHtml(unsafe) { | |
return unsafe | |
.replace(/&/g, '&') | |
.replace(/</g, '<') | |
.replace(/>/g, '>') | |
.replace(/"/g, '"') | |
.replace(/'/g, '''); | |
} | |
function formatNumber(num) { | |
return Math.abs(num) > 999 | |
? `${Math.sign(num) * (Math.abs(num) / 1000).toFixed(1)}k` | |
: Math.sign(num) * Math.abs(num); | |
} | |
function compare(a, b) { | |
if (a.name < b.name) { | |
return -1; | |
} | |
if (a.name > b.name) { | |
return 1; | |
} | |
return 0; | |
} | |
function linkPrefix(url) { | |
if (!url) return ''; | |
return `<a href='${url}' target='_blank'>`; | |
} | |
function linkSuffix(url) { | |
if (!url) return ''; | |
return '</a>'; | |
} | |
function filterByType(element) { | |
switch (getCurrentSearchMode()) { | |
case 'available': | |
if (document.getElementById('selectedLocon').checked && !element.locon) { | |
return false; | |
} | |
if (document.getElementById('selectedLora').checked && !element.lora) { | |
return false; | |
} | |
if ( | |
document.getElementById('selectedEmbedding').checked && | |
!element.embedding | |
) { | |
return false; | |
} | |
if (document.getElementById('selectedFlux').checked && !element.flux) { | |
return false; | |
} | |
break; | |
case 'missing': { | |
if (document.getElementById('selectedLocon').checked && element.locon) { | |
return false; | |
} | |
if (document.getElementById('selectedLora').checked && element.lora) { | |
return false; | |
} | |
if ( | |
document.getElementById('selectedEmbedding').checked && | |
element.embedding | |
) { | |
return false; | |
} | |
if (document.getElementById('selectedFlux').checked && element.flux) { | |
return false; | |
} | |
break; | |
} | |
} | |
return true; | |
} | |
function searchModels(value) { | |
const lowerCaseValue = value.toLowerCase(); | |
const filtered = presenceModels.filter((element) => { | |
return ( | |
(element.key.toLowerCase().includes(lowerCaseValue) || value === '*') && | |
filterByType(element) | |
); | |
}); | |
document.getElementById('found').value = filtered.length; | |
let htmlContent = ''; | |
const contentDiv = document.getElementById('mainContent'); | |
let keys = []; | |
filtered.forEach((element) => { | |
keys.push(element.key); | |
htmlContent += `<div class="element"> | |
<div class="modelName" title="${escapeHtml(element.key)}">${ | |
element.key | |
}</div> | |
<div><img src='${ | |
element.imageUrl ?? unknownImage | |
}' height="264" width="192"'/> | |
</div> | |
<div class="statsBox"> | |
Locon: ${yesNo(element.locon)} | |
${linkPrefix(element.loconHFLink)} HF: ${yesNo( | |
element.loconHF, | |
)}${linkSuffix(element.loconHFLink)}<br> | |
Lora: ${yesNo(element.lora)} | |
${linkPrefix(element.loraHFLink)}HF: ${yesNo( | |
element.loraHF, | |
)}${linkSuffix(element.loraHFLink)} | |
Embedding: ${yesNo(element.embedding)} | |
${linkPrefix(element.embeddingHFLink)}HF: ${yesNo( | |
element.embeddingHF, | |
)}${linkSuffix(element.embeddingHFLink)} | |
Flux: ${yesNo(element.flux)} ${linkPrefix(element.fluxHFLink)}HF: ${yesNo( | |
element.fluxHF, | |
)}${linkSuffix(element.fluxHFLink)} | |
</div> | |
</div>`; | |
}); | |
console.log('keys', keys); | |
contentDiv.innerHTML = htmlContent; | |
} | |