| 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('selectedKlein9').checked && !element.klein9) { |
| 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('selectedKlein9').checked && element.klein9) { |
| 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> |
| Klein9: ${yesNo(element.klein9)} ${linkPrefix(element.klein9HFLink)}HF: ${yesNo( |
| element.klein9HF, |
| )}${linkSuffix(element.klein9HFLink)}<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; |
| } |
|
|