Spaces:
Running
Running
<head> | |
<meta charset="utf-8" /> | |
<script type="text/javascript" src="data-civitai.js"></script> | |
<script type="text/javascript" src="data-local.js"></script> | |
<script type="text/javascript" src="comparator.js"></script> | |
<style> | |
body { | |
color: whitesmoke; | |
background-color: rgb(13, 46, 11); | |
} | |
a { | |
text-decoration: none; | |
color: white; | |
} | |
.mainContent { | |
position: absolute; | |
margin-top: 20px; | |
display: flex; | |
justify-content: center; | |
flex-wrap: wrap; | |
} | |
.searchBox { | |
margin-top: 15px; | |
margin-left: 20px; | |
} | |
.found { | |
width: 30px; | |
} | |
.element { | |
padding: 0; | |
margin: 3px; | |
border: 1px solid rgb(5, 90, 0); | |
display: inline-block; | |
position: relative; | |
width: 192px; | |
height: 283px; | |
} | |
.element .modelType { | |
position: absolute; | |
padding: 2px; | |
padding-left: 4px; | |
padding-right: 4px; | |
right: 0; | |
background-color: rgba(0, 0, 0, 0.5); | |
bottom: 22px; | |
} | |
.element .modelName { | |
background-color: rgba(50, 217, 8, 0.15); | |
text-overflow: ellipsis; | |
overflow: hidden; | |
white-space: nowrap; | |
padding-left: 2px; | |
} | |
.element .modelCreator { | |
position: absolute; | |
background-color: rgba(0, 0, 0, 0.5); | |
padding: 2px; | |
padding-left: 4px; | |
padding-right: 4px; | |
bottom: 22px; | |
} | |
.statsBox { | |
position: relative; | |
top: -88px; | |
padding-left: 6px; | |
background-color: rgba(0, 0, 0, 0.5); | |
} | |
.statsBox .statsDownloadCount { | |
position: absolute; | |
top: 0; | |
left: 0; | |
} | |
.statsBox .statsFavoriteCount { | |
position: absolute; | |
top: 0; | |
left: 52px; | |
} | |
.statsBox .statsCommentCount { | |
position: absolute; | |
top: 0; | |
left: 105px; | |
} | |
.statsBox .statsRating { | |
position: absolute; | |
top: 0; | |
left: 141px; | |
} | |
</style> | |
</head> | |
<body> | |
<input | |
class="searchBox" | |
id="search" | |
type="text" | |
onkeyup="javascript:searchModels(this.value);" | |
placeholder="search" | |
/> | |
<button | |
onclick="javascript:clearCurrentSearchValue(); javascript:searchModels(getCurrentSearchValue())" | |
> | |
Clear | |
</button> | |
Found: <input class="found" id="found" type="text" readonly /> | |
<label for="searchMode">Mode</label> | |
<select | |
name="searchMode" | |
id="searchMode" | |
onchange="javascript:searchModels(getCurrentSearchValue());" | |
> | |
<option value="available">Available</option> | |
<option value="missing">Missing</option> | |
</select> | |
<label> | |
<input | |
id="selectedLora" | |
type="checkbox" | |
onclick="javascript:searchModels(getCurrentSearchValue());" | |
/> | |
LoRA | |
</label> | |
<label> | |
<input | |
id="selectedLocon" | |
type="checkbox" | |
onclick="javascript:searchModels(getCurrentSearchValue());" | |
/> | |
LoCon | |
</label> | |
<label> | |
<input | |
id="selectedEmbedding" | |
type="checkbox" | |
onclick="javascript:searchModels(getCurrentSearchValue());" | |
/> | |
Embedding | |
</label> | |
<label> | |
<input | |
id="selectedFlux" | |
type="checkbox" | |
onclick="javascript:searchModels(getCurrentSearchValue());" | |
/> | |
Flux | |
</label> | |
<div id="mainContent" class="mainContent"></div> | |
<script type="text/javascript"> | |
function yesNo(value) { | |
if (value === undefined) { | |
return 'β'; | |
} | |
return value ? 'β ' : 'β'; | |
} | |
const notMatched = { | |
lycoris: [], | |
lora: [], | |
embedding: [], | |
flux: [], | |
}; | |
models.lycorises.forEach((lycoris) => { | |
const key = prepareKey(lycoris.name); | |
if (presence[key] !== undefined) { | |
presence[key].loconCivitai = true; | |
setImageUrl(key, lycoris.imageUrl); | |
presence[key].loconCivitaiLink = lycoris.url; | |
} else if (!isKnownSkippableKey(key)) { | |
notMatched.lycoris.push(key); | |
} | |
}); | |
models.loras.forEach((lora) => { | |
const key = prepareKey(lora.name); | |
if (presence[key] !== undefined) { | |
presence[key].loraCivitai = true; | |
setImageUrl(key, lora.imageUrl); | |
presence[key].loraCivitaiLink = lora.url; | |
} else if (!isKnownSkippableKey(key)) { | |
notMatched.lora.push(key); | |
} | |
}); | |
models.embeddings.forEach((embedding) => { | |
const key = prepareKey(embedding.name); | |
if (presence[key] !== undefined) { | |
presence[key].embeddingCivitai = true; | |
setImageUrl(key, embedding.imageUrl); | |
presence[key].embeddingCivitaiLink = embedding.url; | |
} else if (!isKnownSkippableKey(key)) { | |
notMatched.embedding.push(key); | |
} | |
}); | |
console.log(notMatched); | |
const presenceModels = []; | |
for (const property in presence) { | |
const element = { | |
key: property, | |
locon: presence[property].locon, | |
lora: presence[property].lora, | |
embedding: presence[property].embedding, | |
flux: presence[property].flux, | |
mega: undefined, | |
imageUrl: presence[property]?.imageUrl ?? undefined, | |
}; | |
presenceModels.push(element); | |
} | |
searchModels(getCurrentSearchValue()); | |
</script> | |
</body> | |