|
|
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 = ''; |
|
|
|
|
|
|
|
|
const url = new URL(window.location.href); |
|
|
url.searchParams.delete('personcode'); |
|
|
window.history.replaceState({}, '', url.toString()); |
|
|
} |
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
if (document.getElementById('selectedWan').checked && !element.wan) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
if (document.getElementById('selectedSdxl').checked && !element.sdxl) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
if (document.getElementById('selectedZimage').checked && !element.zimage) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
if (document.getElementById('selectedQwen').checked && !element.qwen) { |
|
|
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; |
|
|
} |
|
|
|
|
|
if (document.getElementById('selectedWan').checked && element.wan) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
if (document.getElementById('selectedSdxl').checked && element.sdxl) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
if (document.getElementById('selectedZimage').checked && element.zimage) { |
|
|
return false; |
|
|
} |
|
|
|
|
|
if (document.getElementById('selectedQwen').checked && element.qwen) { |
|
|
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)}<br> |
|
|
Embedding: ${yesNo(element.embedding)} |
|
|
${linkPrefix(element.embeddingHFLink)}HF: ${yesNo( |
|
|
element.embeddingHF, |
|
|
)}${linkSuffix(element.embeddingHFLink)}<br> |
|
|
Flux: ${yesNo(element.flux)} ${linkPrefix(element.fluxHFLink)}HF: ${yesNo( |
|
|
element.fluxHF, |
|
|
)}${linkSuffix(element.fluxHFLink)}<br> |
|
|
WAN: ${yesNo(element.wan)} ${linkPrefix(element.wanHFLink)}HF: ${yesNo( |
|
|
element.wanHF, |
|
|
)}${linkSuffix(element.wanHFLink)}<br> |
|
|
SDXL: ${yesNo(element.sdxl)} ${linkPrefix(element.sdxlHFLink)}HF: ${yesNo( |
|
|
element.sdxlHF, |
|
|
)}${linkSuffix(element.sdxlHFLink)}<br> |
|
|
ZImage: ${yesNo(element.zimage)} ${linkPrefix(element.zimageHFLink)}HF: ${yesNo( |
|
|
element.zimageHF, |
|
|
)}${linkSuffix(element.zimageHFLink)} |
|
|
</div> |
|
|
</div>`; |
|
|
}); |
|
|
|
|
|
console.log('keys', keys); |
|
|
|
|
|
contentDiv.innerHTML = htmlContent; |
|
|
} |
|
|
|