|
|
<!DOCTYPE html> |
|
|
<html> |
|
|
|
|
|
<head> |
|
|
<style> |
|
|
.container { |
|
|
max-width: 768px; |
|
|
display: flex; |
|
|
flex-direction: row; |
|
|
flex-wrap: wrap; |
|
|
margin: 0 auto; |
|
|
} |
|
|
|
|
|
.color-picker { |
|
|
position: sticky; |
|
|
top: 20px; |
|
|
height: 50px; |
|
|
} |
|
|
|
|
|
.img-img { |
|
|
width: 128px; |
|
|
} |
|
|
</style> |
|
|
|
|
|
<script> |
|
|
let mClient; |
|
|
async function preload() { |
|
|
const Gradio = await import("https://cdn.jsdelivr.net/npm/@gradio/client/dist/index.min.js"); |
|
|
mClient = await Gradio.Client.connect("visualizedata/PSAM5020-ColorSort-Gradio"); |
|
|
document.getElementById("color-picker").dispatchEvent(new Event('change')); |
|
|
} |
|
|
preload(); |
|
|
|
|
|
const IMGS_URL = "https://raw.githubusercontent.com/PSAM-5020-2025F-A/5020-utils/main/datasets/image/flowers"; |
|
|
|
|
|
function orderImages(imageFiles) { |
|
|
const container = document.getElementById('main-container'); |
|
|
container.innerHTML = ""; |
|
|
|
|
|
imageFiles.forEach((fname, i) => { |
|
|
const imgDivEl = document.createElement("div"); |
|
|
imgDivEl.classList.add("img-container"); |
|
|
container.appendChild(imgDivEl); |
|
|
|
|
|
const imgEl = document.createElement("img"); |
|
|
imgEl.setAttribute("src", `${IMGS_URL}/${fname}`); |
|
|
imgEl.classList.add("img-img"); |
|
|
imgDivEl.appendChild(imgEl); |
|
|
}); |
|
|
} |
|
|
|
|
|
window.addEventListener("load", (event) => { |
|
|
const colorEl = document.getElementById("color-picker"); |
|
|
colorEl.addEventListener("change", async (event) => { |
|
|
document.getElementById('main-container').innerHTML = "Loading..."; |
|
|
const result = await mClient.predict("/order_by_color", { |
|
|
center_color_str: event.target.value |
|
|
}); |
|
|
orderImages(result.data[0].files); |
|
|
}); |
|
|
}); |
|
|
</script> |
|
|
</head> |
|
|
|
|
|
<body> |
|
|
<input type="color" id="color-picker" class="color-picker" value="#fffffe"> |
|
|
<div id="main-container" class="container"></div> |
|
|
</body> |
|
|
|
|
|
</html> |
|
|
|