Spaces:
Running
Running
if (document.location.search.includes('dark-theme=true')) { | |
document.body.classList.add('dark-theme'); | |
} | |
let cursor = 0; | |
const RANGE = 5; | |
const LIMIT = 16_000; | |
const textToImage = async (text) => { | |
const inferenceResponse = await fetch(`infer_biggan?input=${text}`); | |
const inferenceBlob = await inferenceResponse.blob(); | |
return URL.createObjectURL(inferenceBlob); | |
}; | |
const translateText = async (text) => { | |
const inferResponse = await fetch(`infer_t5?input=${text}`); | |
const inferJson = await inferResponse.json(); | |
return inferJson.output; | |
}; | |
const queryDataset = async (start, end) => { | |
const queryResponse = await fetch(`query_emotion?start=${start}&end=${end}`); | |
const queryJson = await queryResponse.json(); | |
return queryJson.output; | |
}; | |
const updateTable = async (cursor, range = RANGE) => { | |
const table = document.querySelector('.dataset-output'); | |
const fragment = new DocumentFragment(); | |
const observations = await queryDataset(cursor, cursor + range); | |
for (const observation of observations) { | |
let row = document.createElement('tr'); | |
let text = document.createElement('td'); | |
let emotion = document.createElement('td'); | |
text.textContent = observation.text; | |
emotion.textContent = observation.emotion; | |
row.appendChild(text); | |
row.appendChild(emotion); | |
fragment.appendChild(row); | |
} | |
table.innerHTML = ''; | |
table.appendChild(fragment); | |
table.insertAdjacentHTML( | |
'afterbegin', | |
`<thead> | |
<tr> | |
<td>text</td> | |
<td>emotion</td> | |
</tr> | |
</thead>` | |
); | |
}; | |
const imageGenSelect = document.getElementById('image-gen-input'); | |
const imageGenImage = document.querySelector('.image-gen-output'); | |
const textGenForm = document.querySelector('.text-gen-form'); | |
const tableButtonPrev = document.querySelector('.table-previous'); | |
const tableButtonNext = document.querySelector('.table-next'); | |
imageGenSelect.addEventListener('change', async (event) => { | |
const value = event.target.value; | |
try { | |
imageGenImage.src = await textToImage(value); | |
imageGenImage.alt = value + ' generated from BigGAN AI model'; | |
} catch (err) { | |
console.error(err); | |
} | |
}); | |
textGenForm.addEventListener('submit', async (event) => { | |
event.preventDefault(); | |
const textGenInput = document.getElementById('text-gen-input'); | |
const textGenParagraph = document.querySelector('.text-gen-output'); | |
try { | |
textGenParagraph.textContent = await translateText(textGenInput.value); | |
} catch (err) { | |
console.error(err); | |
} | |
}); | |
tableButtonPrev.addEventListener('click', () => { | |
cursor = cursor > RANGE ? cursor - RANGE : 0; | |
if (cursor < RANGE) { | |
tableButtonPrev.classList.add('hidden'); | |
} | |
if (cursor < LIMIT - RANGE) { | |
tableButtonNext.classList.remove('hidden'); | |
} | |
updateTable(cursor); | |
}); | |
tableButtonNext.addEventListener('click', () => { | |
cursor = cursor < LIMIT - RANGE ? cursor + RANGE : cursor; | |
if (cursor >= RANGE) { | |
tableButtonPrev.classList.remove('hidden'); | |
} | |
if (cursor >= LIMIT - RANGE) { | |
tableButtonNext.classList.add('hidden'); | |
} | |
updateTable(cursor); | |
}); | |
textToImage(imageGenSelect.value) | |
.then((image) => (imageGenImage.src = image)) | |
.catch(console.error); | |
updateTable(cursor) | |
.catch(console.error); | |